Questions about calculating a transaction ID As I know, Transaction ID is calculated from

H( H(tx_prefix) || H(tx_stuff) || H(Signatures) )

Where

tx_prefix = {tx version || keyoffset || keyimage || one-time addresses || extra}
tx_stuff = {signature type || tx fee || pseudo output commitments || ecdhInfo || output commitments}
Signatures = {MLSAGs || range proofs}

So I test a example tx: b43a7ac21e1b60ad748ec905d6e03cf3165e5d8c9e1c61c263d328118c42eaa6
with MiniNero but failed nevertheless.

tx_version = "02"
key_offset = "c8e230afe12f958d49809d0dfaaf33"
key_image = "595a612d0df27181c46a8af70a9bd682f2a000124b873ba5d2b9f4b4e4efd672"

signature_type = "01"
ont_time_addr = "aa9595f55f2cfaed3bd2a67453bb064dc7fd454a09c2418d7338782790185fe30ccb48ed2ebbcaa8e8831111029f3300069cff0d1408acffbfc3810b362ea217"
extra = "02210081464dc2f85d185e0f6be900e552aff37b3acc87ab6465c02abb9da8de62c06e0101b957162674517c5544242ce5eb2e9f8b72ead332291c5c1af9b8e4c5408b05"
txnfee = "8088e2ed60"
ecdhInfo = "68f508c5515694ce5a33b316b990e8b67a944725c93d806767e61b2e0b13d300fbc3e5bdb36fc58e5800ffc549ab7bd533fadb7e6b64898c82ea620d749fc80e913372a2424b22bd9712183f5a7c8027c8d9af89b52d1e7d06fd1f87a1e5d20db9335c3dc0afb774f812f9f58a412c849f3c828d873f1c16ab102963799d9809"
output_commitment = "cf141f5dfe04df14afad6b451d600aa5826a9be44a76a1630850c1d5951d482ee10bb69b66af5dabec765c7f5f7528926088877fa36746833828a0575896ae57"
MLSAG = ""a8120b96f5f2a...611e395a409""
range_proof = "b9b544a75ad5a4df48156aff...16119b7a023303a6752"

L = MiniNero.cn_fast_hash(tx_version+key_offset+key_image+ont_time_addr+extra)
M = MiniNero.cn_fast_hash(signature_type+txnfee+ecdhInfo+output_commitment)
R = MiniNero.cn_fast_hash(MLSAG+range_proof)
result = MiniNero.cn_fast_hash(L+M+R)

What I get is 60f983800f9791b97368318d21924f8e7ec63012af70db4b45dc831528e28e20. Not the right transaction id.
Is there any wrong with my thought? Many thanks!

Where are you getting your information about the structure of a transaction?

You forgot to include the hex 0001020005, which consists of the unlock time 00, the number of real inputs in the transaction 01, the input type of the first real input 02, the input amount 00 (0 to indicate it's an encrypted amount), and 05 indicating the number of key offsets that are listed.

You also forgot the hex 020002 which is the number of outputs 02, the amount of the first output 00, the type of the first output 02. Then you're missing the hex 0002 prior to the second output public key, which again indicates the output amount and type.

Then, you've not specified the size of the tx_extra field as 44. I'm sure there is much more.

Please cross check your work with the C source code, then you'll have a definitive list of things you need to include. At the very least, you should know something is wrong if you're missing out things which you can obviously observe are part of the raw hex of the transaction. The JSON summary of a transaction is not the same as the raw bytes of the transaction, as it excludes things such as the hex of the field lengths and input counts etc.


My monerod server will not sync fully Title says, my server is stuck between 100-300 blocks behind. It has been oscillating for days like this. Here is a custom log output of how many blocks behind I am:
time:14:36:11 block:150
time:14:37:03 block:147
time:14:38:52 block:147
time:14:39:16 block:148
time:14:40:05 block:149
time:14:41:00 block:147
time:14:43:33 block:147
time:14:48:13 block:147
time:14:48:26 block:147
time:14:51:01 block:142
time:14:51:32 block:147
time:14:51:41 block:150
time:14:52:20 block:150
time:14:53:46 block:151
time:14:54:19 block:152
time:14:54:59 block:153
time:14:57:04 block:151
time:14:57:49 block:151
time:14:58:57 block:151
time:14:58:58 block:151
time:15:02:44 block:155
time:15:04:31 block:155
time:15:06:56 block:154
time:15:07:32 block:154
time:15:08:02 block:154
time:15:10:23 block:156
time:15:10:30 block:156
time:15:13:03 block:158
time:15:14:02 block:159
time:15:14:15 block:159
time:15:14:58 block:160
time:15:15:38 block:157
time:15:18:44 block:155
time:15:18:50 block:155
time:15:19:45 block:156
time:15:19:51 block:156
time:15:20:36 block:155
time:15:22:59 block:157
time:15:23:09 block:157
time:15:23:37 block:157
time:15:25:03 block:158
time:15:25:37 block:156
time:15:26:10 block:156
time:15:27:14 block:156
time:15:28:53 block:157
time:15:29:39 block:157
time:15:31:50 block:155
time:15:31:53 block:155
time:15:33:25 block:157

Things I tried to fix this are add  --block-sync-size 10 to the service startup, and I also deleted the last 1000 blocks and resynced them using, monero-blockchain-import --pop-blocks 1000.
Any suggestions on what else to do?
update
I notice this error is common:
2017-12-28 15:57:30.056 [P2P0]  ERROR   verify  src/cryptonote_core/blockchain.cpp:3042 Timestamp of block with id: <42ef1903bfb1677b7d2cf7eac866654a9b0e8cf0fc29bea9b9cf5165ee42cb12>, 1514484069, bigger than adjusted time + 2 hours
2017-12-28 15:57:30.056 [P2P0]  ERROR   verify  src/cryptonote_core/blockchain.cpp:3153 Block with id: <42ef1903bfb1677b7d2cf7eac866654a9b0e8cf0fc29bea9b9cf5165ee42cb12>
has invalid timestamp: 1514484069

paraphrased: Timestamp of block bigger than adjusted time + 2 hours: block has invalid timestamp.

scoobybejesus recommended I make sure the server time was correct.
I am on Arch Linux, so I ran timedatectl set-ntp true to sync my clock and the Monero server synced within a minute.

Looks like I forgot to run that when I installed the OS a few days ago.


In 2021 when the xmr algo is RandomX which hardware is most efficient i am just mining on cpu thats an xeon 1230 and i get around 1.2KHs i am thinking to scale it up and looking for an appropriate hardware but i see that gpus arent that efficient to mine xmr
please help electricity is not an issue

You can find here a compilation of some hardware mining specific for monero:
https://monerobenchmarks.info/


Why does Monero create two or more inputs for transactions? I have been playing around with a private Monero test network and I noticed that the transactions always have two or more inputs. When I inspected the true inputs of a transaction, I observed that one input has more value than the total transaction value. So it is not the case that Monero is combining multiple inputs to send a large amount of XMR.

Why does Monero create two or more inputs for transactions?

This is done to try and make more transactions look the same. An attempt is made to make the transactions a 2/2 (2 input, 2 output transaction). Therefore, even if one of your inputs has enough to fund the output(s), the wallet will attempt to add another input as well.

Source comment(s):

wallet2.cpp#L9315

// for rct, since we don't see the amounts, we will try to make all transactions
// look the same, with 1 or 2 inputs, and 2 outputs. One input is preferable, as
// this prevents linking to another by provenance analysis, but two is ok if we
// try to pick outputs not from the same block. We will get two outputs, one for
// the destination, and one for change.

Then later:

wallet2.cpp#L9361

// while:
// - we have something to send
// - or we need to gather more fee
// - or we have just one input in that tx, which is rct (to try and make all/most rct txes 2/2)

  So it is not the case that Monero is combining multiple inputs to send a large amount of XMR.

This is a slightly different question/observation and is incorrect. Monero absolutely uses multiple inputs to fund a large output. For example, if you own three outputs with values 10, 50 and 100 XMR and want to spend 130 XMR, the wallet will create a transaction with two inputs (your owned outputs that have 100 and 50), and two new outputs (with 130 and 20). The 2nd output is your change.


Can I use a copy of a blockchain created on Mac OS X, on an offline Ubuntu (ARMv7) box? I created a wallet on an offline/air-gapped Ubuntu box, but my main computer is a Mac. If I want to sync the offline Ubuntu wallet to check the balance, can I use the blockchain created on my Mac?

If so:

which folders/files to I copy from my Mac?
where do I copy/put them in Ubuntu prior to import?
what are the commands I use once I copy it over to Ubuntu?

The answer to the subject is already here Is the raw Monero blockchain file different for Linux, Windows, or Mac?

There is nothing to import if you just copy the monero data directly.


Claymore Mining (CANNOT ALLOCATE MEMORY) I recently started using Claymore Miner CPU.

I've set up everything and it runs fine, it just runs in slow mode.

At the beginning of mining it says: "CANNNOT ALLOCATE MEMORY! Error #103-1-1"
I use Windows 10 and have a Intel(R) Core(TM) i5-6300HQ CPU @ 2.30GHz processor.

Would love the help so I can mine faster!

This sounds like you have not enabled huge pages on Windows 10. You can follow the directions on my website: https://www.cryptocurrencyfreak.com/2017/08/29/monero-mining-xmr-stak-cpu-windows-10/ at the end of the article to enable huge pages.

I also recommend giving xmr-stak-cpu a try. I have always had better luck with it than Claymore.


If I update the Monero GUI, do I need reinstall the blockchain? I'm having trouble seeing the funds in my wallet so I want to update to a newer version. However the 90GB blockchain is quite large and I'm wondering if I need to install the blockchain again or does it just reuse the old one?

You can update the GUI and continue to use the blockchain already downloaded.


How to communicate programmatically with the Monero CLI wallet using php? I have installed my Monero CLI wallet on my Amazon server with this help.

I want to communicate with this wallet using php. I tried with this library but it is not connecting properly.

Can anyone please help me make it work or find another library?

In order to communicate via php with a Monero wallet you have to run Monero Wallet RPC.

monero-wallet-rpc --rpc-bind-port 18082 --disable-rpc-login --wallet-file /path/walletfile

If you are using a remote node, simply add to command the --daemon-host node.moneroworld.com:18089 flag.

That command will build a JSON API avaiable on the 18082 port. You can check if that works by typing http://127.0.0.1:18082/json_rpc in your browser.

Let's use the Monero PHP library in order to call some functions in your wallet.

<?php
// Example of Monero RPC Connection
require_once('src/jsonRPCClient.php');
require_once('src/Monero_Payments.php');

// Edit it with your ip and your port of Monero RPC
$monero_rpc = new Monero_Payments('127.0.0.1','18082');

In this way, you created the instance of Monero PHP library.
All the calls are in details on this page.

For each call of Monero Wallet RPC, there is one function in the Monero PHP library.

Example:

Calling getaddress function

// Get address from Monero RPC
$address = $monero_rpc->getaddress();
// Print the RPC Response
$monero_rpc->print($address);

The RPC response will be printed as JSON. For getaddress call, it's

{
    "id": 0,
    "jsonrpc": "2.0",
    "result": {
        "address": "42uMGYwvLuUGJzqdWZvr47CGCBz1qNNExZeegcjLPMbaFkBb3XGg6Y1bUwaMbovzGWDXtaASxSBYtaiBB4wuDmrAMCygexH",
        "addresses": [
            {
                "address": "42uMGYwvLuUGJzqdWZvr47CGCBz1qNNExZeegcjLPMbaFkBb3XGg6Y1bUwaMbovzGWDXtaASxSBYtaiBB4wuDmrAMCygexH",
                "address_index": 0,
                "label": "Primary account",
                "used": false
            },
            {
                "address": "82qL8g5h9jvQGroSuDxZASAERKZPf7DQC8784YGmUPrdRp4TTo4KdruDfWUZkmWwWtCzP6buA9yYaWRmXXH7JkAPFXDtwuQ",
                "address_index": 1,
                "label": "",
                "used": false
            }
        ]
    }
}

If you don't understand PHP library, you can try to call getaddress by curl.

$ curl -X POST http://127.0.0.1:18082/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"getaddress"}' -H 'Content-Type: application/json'


How to convert curl to http url How do i convert this curl command:

  curl -X POST http://127.0.0.1:18082/json_rpc -d
  '{"jsonrpc":"2.0","id":"0","method":"getbalance"}' -H 'Content-Type:
  application/json'

Into a normal http url?

The HTTP url is: http://127.0.0.1:18082/json_rpc

When you mean with HTTP url, a url that you can type into your browser, than its not possible to achieve the same request with only the HTTP url.
Alternative to curl you could use the chrome App Postman to play around with the json_rpc api. Postman

Post is the called HTTP method.

The -d is the payload, in this case the data that is send as Post request to that HTTP url.

The -H defines a HTTP header that is also send. In this case "Content-Type" is set, it describes the format the POST data is in. Its JSON.

Here is more information about curl. Link


Daemon after update to v0.13.0.3 gives ERROR output I'm getting the following error in the daemon after the update:

  2018-10-17
  23:36:03.705  [RPC1]  ERROR   cn  src/cryptonote_basic/cryptonote_format_utils.cpp:185    Failed
  to parse transaction from blob

Everything appears to be fine except this error is in red. All of the google searches tell me something is possibly wrong with the blockchain database locally but I just updated and everything seems fine.

This is a known bug to do with wallet/daemon communication when the wallet tries to read the txpool. It is fixed on github (https://github.com/monero-project/monero/pull/4636), and will be fixed in 0.13.0.4 soon.

It does not mean your blockchain is corrupted, and you do not need to resync it or otherwise fix it. Either apply the patch above if you can, or wait for 0.13.0.4.


Is a mnemonic seed wallet just as secure (random) I understand you can use a 24+1 word mnemonic seed to generate your 256 bit private key.

Is the number of possibilties of the 24 words the same as the 256 bits? So: are there 2^255 possible 24 word combinations or is it only a subset of the possibilities?

If it is just a subset, it would be less secure I think. It would be more open to brute force attacks.

An other way of asking the question would be: is there a unique 24 word seed for every possible 256 bit private key?

Is the number of possibilties of the 24 words the same as the 256 bits? So: are there 2^255 possible 24 word combinations or is it only a subset of the possibilities?

Actually, it's just a little bit more than needed to encode a 256-bit number. Possible 24 word combinations (=1626^24) > possible 256 bits combinations (=2^256).

  If it is just a subset, it would be less secure I think. It would be more open to brute force attacks.

It depends. I mean, it's like comparing a really huge number with a really huge number - a relatively small number. Both can be secure. Anyways, it's not a subset but there's one other detail. Not every 256 bits is a valid private key. Anything bigger than approx 252 bits gets "wrapped around" so you can have 2 mnemonics resulting in a same wallet, and the brute-force space would be this 252 bits. I believe it's "easier" to break EC crypto by solving discrete log problem, ie derive your private key from the public key instead of brute-forcing it. It's still "impossible", at least until QC :)

  An other way of asking the question would be: is there a unique 24 word seed for every possible 256 bit private key?

Yes.

More info on the subject: Can you choose the mnemonic seed to create a wallet?


What is the difference between transfer_split and transfer? Using the monero-wallet-rpc program, from the documentation, I can't understand the difference between transfer and transfer_split. When should I use transfer and  when should I use transfer_split? Please help me.

transfer
Send monero to a number of recipients.

transfer_split
Same as transfer, but can split into more than one tx if necessary.

transfer, the older of the two commands, creates a single transaction. This can fail if you try to create a transaction with too many destinations / the transaction becomes too large.

transfer_split may create more than one transaction. This is useful if you are wanting to create transactions with a higher number of destinations as it can efficiently split the the transfer, as necessary, into multiple transactions.

If you are only ever doing single destination transfers, you can safely use either. If you need to create transfers to multiple destinations, it's safer to just use transfer_split.

IIRC, the only reason transfer still exists is for backwards compatibility, i.e. to not break existing applications that were built before transfer_split was added.


Where is the public key/output for the miner reflected on the blockchain? One of the ways that I can understand how Monero demonstrably works, despite the opacity of the blockchain, is that the inputs used in transactions (whether mixin decoys, or the actual one-time public key being spent) are always visibly created in a prior block.

When looking at a block explorer (moneroblocks.info, in this case), it appears that I can only see the outputs created for the recipient(s) and change.  I do not see an output of transaction fees created for the miner.  A miner must receive the fees in form of a spendable output somehow, I would think.

Where is the miner's missing output?  Is there something I may be misunderstanding about the process?  I mean, I can see a coinbase transaction for that block, but doesn't the coinbase transaction only reflect the newly mined monero?  Or are the transaction fees included in coinbase output(s)?

(Not that it necessarily matters, but I figure I should clarify that I added up the inputs, and I added up the outputs - of a pre-RingCT transaction - and found that the outputs add up to less than the inputs by the amount of the transaction fee.)

Transaction fees and block reward are sent together as the miner reward. For example, the block 1229239 has one non-coinbase transaction whose fee is 0.01. The block reward is 8.8642, so the miner reward is 0.01 + 8.8642 = 8.8742.


How to create my own miner? I am thinking to create my own miner for Monero just for research purpose and understand how is the mining process.

First of all, I red the cn008 document and I understand almost everything but I don't know what should I put in the input string.

In the other hand, I also red the cn010 document but I don't know how is related with cn008 document. I think that DiffCut is (or is related with) the maturity which can be see in every single pool.

Please, can someone help me to understand all of this that apparently is unrelated? Thank you in advance

There's already some answer here: Where can I find a description of the CryptoNight hash algorithm?

Here's a schematic of CryptoNight algorithm: Source

In the node software, the hash function is called cn_slow_hash, see here. Also, there's a JavaScript implementation as well which may be easier to study.

Looking into code of some existing miners should help you as well:

https://github.com/OhGodAPet/wolf-xmr-miner/releases

https://github.com/fireice-uk/xmr-stak-cpu/releases

https://github.com/xmrig/xmrig/releases


Do signed exported key images prove that the key images provided are legitimate? When key images are exported using the export_key_images command, each key image is signed using the private key of the output corresponding to each respective key image.

This signature will prove that the signer knew the private key for the output.

However, does it prove that the key image being signed really is the correct key image for that output?

This has implications for an auditor that wants assurance that the key images provided are not made up in order to conceal the spending of a view-only wallet's outputs.

When exporting signed key images, the signature of each key image is in fact a ring signature with the output public key P and the key image I as parameters.

Therefore it proves that the signer knows the output secret key x such that P = x·G and I = x·Hp(P) (see ring signature algorithm), which means that I is the correct key image of P.

In the source code of Monero, the function doing this is wallet2::export_key_images() in src/wallet/wallet2.cpp.


What is elliptic curve cryptography and why is it important to Monero? What is elliptic curve cryptography and why is it important to Monero?

Please provide both a basic description and an in depth description of the type found on Moneropedia

Elliptic curve cryptography (ECC) is a form of public-key cryptography where mathematical properties of elliptic curves are used to ensure security of cryptographic methods used. This allows to perform the following in a secure way:

Public key encryption, where the sender can encrypt a message using the recipient's public key, and the recipient can decrypt it using his private key.
Signature, where the signer can sign a message using his private key, and anyone can verify the signature using the signer's public key.
Shared secret key, where any 2 parties can securely agree upon a shared secret key, which is then normally used as the key for symetric encryption to encrypt any further messages between the 2 parties.

It is important to Monero, because it facilitates important operations such as key-pair creation (used for generating Monero addresses), Elliptic curve Diffie-Hellman (used in the Monero stealth-address scheme), and signing and verifying transactions. The curve used by Monero is one of the SafeCurves, and is the Curve25519, widely used for many other secure applications.

For further reading on ECC, here's my go-to link.


Deposit to Binance with version 15.0.1 The GUI wallet doesn't give me an option to include a payment ID and Binance requires it. Possible settings like those in version 14 no longer show. How do I send XMR to Binance now? Thanks in advance.

Long, unencrypted payment IDs have been removed from Monero since v0.15. Only standard addresses, subaddresses and integrated addresses (which embed an encrypted payment ID), can be used now.

Binance have announced (2019/11/28) that they will be supporting the update and will be following up with further details when they reopen deposits and withdrawals for XMR.


Generate a integrated address using a subaddress How do you generate an integrated address using a subaddress? I'm getting

Error: usage: integrated_address [payment ID]

It was decided that there should not be such a thing as an integrated subaddress. Only your main Monero address can become an integrated address (this functionality is retained for backwards compatibility).

The reason for this is that integrated addresses stand out on the blockchain. It is possible to see the difference between a payment sent to a standard Monero address vs an integrated address. This is because when an integrated address is used, an encrypted payment id appears in the "tx_extra" part of the transaction, and that makes the transaction stand out.

Since you can create as many subaddresses as you want, you can create an entire subaddress just for a particular sender. This means that you don't need to rely on a special payment id to identify the sender, because your wallet is able to correlate funds received to the subaddresses that you have given out.


Why does a node try all grey peers to create a connection? I am currently analysing the source code of Monero. If a node makes a new connection, it first checks what fraction of its current outgoing connections are to nodes in its white list. If it is above an expected fraction (default is 70 percent), then it attempts to connect to grey-listed peers and then (if necessary) white-listed peers. However, If I understand that part of the code correctly, it will try all grey peers to create a connection. In case we want to connect to a white peer, we will try a limited (probably 3 iteration and we try 20 peers per iteration) number of peers.

Has anybody an idea why the developers chose to do it that way? Isn't it wasteful to try the whole grey list (up to 5,000 entries)? Where at the same time we maintain a white list of probably online peers?

This does not try all entries in the set, it picks one entry in that set.


GUI adress and Integrated adress are 79 Characters My Exchange asks for 64 character address that I can send to my GUI. A newly generated Payment ID is 16 characters. How can I get 64 character address to withdraw from my Exchange?

A regular Monero address is 95 characters long.
An integrated address is 106 characters long.

As far as I know there is no Monero address format having 79 characters.

When withdrawing from an exchange to your own wallet, you don't even need to use a payment ID. But if you want to use one, or if your exchange requires one, you can use any hexadecimal string you want (either 16 hexadecimal characters for a short payment ID, or 64 hexadecimal characters for a long payment id).


My antivirus (AV) software blocks / quarantines the Monero GUI wallet, is there a work around I can utilize? I downloaded the Monero GUI wallet. However, my antivirus (AV) software blocks / quarantines the Monero GUI wallet. Is there a work around I can utilize?

A miner is included in the Monero GUI software and, as a result, most anti virus software flags the Monero GUI files as malware and subsequently quarantines them. Fortunately, however, there's a fairly trivial work around you can use. That is:

Create a new directory / folder.

Open your AV software.

Add an exception for the newly created directory / folder. Put differently, you have to whitelist the newly created directory / folder. A guide for Windows Defender can be found here.

Extract the .zip file (in case of Windows) or the .tar.bz2 file (in case of Linux or Mac OS X) to the whitelisted directory / folder.

Note that if you're using Windows and did not install custom anti virus software, Windows Defender is, most likely, acting as active anti virus software.
P.S. We encourage users to check the integrity of the binaries and verify that they were signed by BinaryFate's GPG key. A guide that walks you through this process can be found here for Windows and here for Linux and Mac OS X.


Recent Transaction Cannot Be Found I recently sent Monero from my GUI wallet to an associates GUI wallet and the funds never arrived. I followed all the processes on your thread here:

How do I, as a sender, verify that my transaction actually arrived?

and the funds STILL do not show in the recipients wallet. I have deleted the blockchain, resynced the whole blockchain, switched to a remote node, resynced the wallet multiple times, and used the tool at:

https://xmr.llcoins.net/checktx.html

which shows the message: "Failed to get transaction data! Your Tx Hash probably doesn't exist. When I check the transaction via my sending GUI wallet, it tells me the funds were sent to the correct address and have been verified over 3000 times. I really don't understand what's going on.

The sending wallet uses v0.11.1 and the receiving wallet uses v0.12.0 of the GUI wallet. Both machines use Mac OS X.

Just found out the Monero had a hard fork on April 6th from reading this article:

I forgot to upgrade (from CLI or GUI v0.11 to CLI or GUI v0.12) and, as a result, accidentally synced to the wrong (alternative) chain

My associates v0.12.0 GUI wallet was just created a week ago, after the fork. My wallet was running v0.11.1 GUI wallet when the funds were sent and had been running a full node with the blockchain stored locally...the pre-fork blockchain. Seems that he funds were sent to the old chain and my associates wallet has the blocks in it from the new, post April 6th, chain.

How can this be checked and/or corrected?

Can you assist me in further troubleshooting/research into this missing transaction? I have access to both wallets and can do whatever it takes.

In appreciation,
jason

It sounds like you're still synced to the wrong chain. You'll need to download the latest GUI wallet (v0.12.0) from here: https://getmonero.org/downloads/  When you have allowed the new wallet time to sync, you will likely find your funds in your wallet and that they have not been sent.  You can then send them to your recipient safe in the knowledge that you and your recipient are using the same current blockchain.

You can get more info from the guide you've already mentioned above:
I forgot to upgrade (from CLI or GUI v0.11 to CLI or GUI v0.12) and, as a result, accidentally synced to the wrong (alternative) chain  Following this guide should resolve your problem.


Integrated Address generation gives 16 bit randomly generated payment ID Using integrated address method without any argument while calling, it gives me response of 16 bit longer string of payment ID covered with <>.

According to documentation of wallet RPC for transfer method it requires 64 characters hex string to pass in Payment ID.

I have 16 character string and I want 64 character strings, in this case what should I do?

First, integrated addresses embed an 8 byte (64 bit, 16 hex chars), payment ID. Monero started with an older format of payment ID which allowed for 32 bytes, but this was deprecated in favor of shorter 8 byte encrypted payment IDs, as used by integrated addresses.

Second, when using the RPC method transfer, if you are transferring to an integrated address, you would not supply the optional parameter payment_id as this is already set in the integrated address.

  I have 16 character string and I want 64 character strings, in this case what should I do?

I strongly recommend against this. Payment IDs in general are being deprecated in favor of subaddresses. If you must use a payment ID right now, use the short payment IDs (e.g. the type embedded in integrated addresses), therefore limited to 8 bytes. There really is no good reason for any new implementations to use payment IDs.


Can someone spend my xmr if they steal my Wallet folder? Assume they don't know anything about my password and seeds.If a hacker opens my windows account and copy the monero wallet folder,can they steal my monero coins?

Your wallet files are encrypted, so if you have a strong password - nobody can steal your funds by just getting the file, they'd need the password as well.

Further reading for wallet encryption:

Cloud storing wallet.keys encrypted files

What encryption algorithm is used for the wallet.keys file?

Regarding theft in general, someone could steal your funds in few ways actually:

Stealing your wallet file and password
Stealing your wallet file and guessing the password (could work only if it's weak)
Stealing your wallet's 25-word seed mnemonic. With the mnemonic, you yourself can also access your account from another computer or recover the wallet if you forget the password. Naturally, so can anyone else if he would obtain the seed somehow.
Guessing your 25-word mnemonic. This is practically impossible if you generate wallet by random means (defaults). But if you picked your own words so it's easy to remember, you could be at risk. Note that with monero, it takes a rather long time to check if there's any balance so this attack is not practical. If the attacker knew your address, he could make guesses faster, but it would still be practically impossible to guess if it's truly random.

So, keep your files, passwords and seeds safe! And don't pick your own words unless you know what you're doing =)


Offline Signing 2/3 Multisig Interested in weather offline signing for 2/3 Multisig wallets is possible in this setup.

I have three computers Airgapped from the internet, and a USB. I imagine i can pull down some outputs for the ring signature creation from the blockchain from a online connected computer. I put these outputs onto a USB stick and transfer them to computer A, A conducts some offline signing process and builds the transaction, then i transfer on a USB A's signed TX + key image which B also signs. then that tx is taken to the online computer and submitted to the network.

So i have some questions, is the process described above possible? if so how would i get the data from the online computer into computer A, IE how does the process work is there some command in the CLI?

Details of multisig in the answers to this question: How to Use Monero Multisignature Wallets (2/2 & 2/3)

But no, actual signing doesn't need to be done while online.


Monero transfer privacy If I want a transaction to be private, is it safe to follow a path like:

Coinbase > MorphToken (using Windows) > Official Monero (using Tails) > destination

Level of privacy is a sliding scale and goes far beyond just Monero usage. E.g. you immediately lose some privacy by using a KYC exchange (as per your first step), which has nothing to do with the privacy features you get from Monero. For a higher level of privacy than what you have outlined, buy using a decentralized exchange (such as Bisq for example). Every centralized service you use, you lose some level of privacy.

If you are concerned with traffic analysis (from network providers for example), additionally use tor/i2p. This is because, for some people, they consider even being identified as simply using Monero is an unacceptable privacy loss.

All this said, the path you have outlined is certainly considerably more private than just using Bitcoin. The moment your Bitcoin are converted to Monero, it becomes considerably harder to trace.

It all boils down to your own acceptable risk profile.


Is it possible to use light wallets / remote nodes with Kovri? Kovri is a C++ implementation of I2P.  I2P is an acronym for Invisible Internet Protocol.  The idea behind I2P is to create an anonymous internet.  To me, your average semi-educated enthusiast, this poses a hurdle to hosting remotely-accessible nodes.

If I2P is anonymous, then the Monero network may not have people right and left saying "here, connect to my remote Kovri node!"  And, certainly, it seems silly to think that the nodes would identify themselves regionally (if I live in Greenland, I don't want to accessing a node in Antarctica, for speed reasons, at least), since you aren't supposed to be able to tell from where an I2P site is being physically hosted.

With that said, is all of that irrelevant?  Will the Monero network self-assemble over I2P, just as it has over clear net? Will an individual who doesn't run their own node [eventually] be able to tell their wallet to search and find a node on I2P on its own?

I tend to ask rhetorical questions to frame my thought process, in hopes of getting more than a simple yes or no.  If the answer turns out to be a short one anyway, perhaps I'll edit down the body of the post.

The goal as outlined by Mr. Fluffy is to use I2P to broadcast transactions and provide Monero services.

By default, Monero nodes would still connect as they do now for communicating new blocks and transactions. Wallets would not broadcast transactions through the local node, and instead would broadcast through I2P in an attempt to hide the IP that initiated the transaction. Devices such as phones would connect to a specific I2P router of the users selection to get latest account balances or to broadcast transactions.

Basically Monero nodes will be offering monerod RPC services over I2P. The advantage is that user does not have to configure dynamic DNS or accept inbound connections for this to work (although the latter would be helpful for the network as a whole). The phone (or other device) simply needs the I2P address - which is used for routing, encryption, and authentication. This way a user only needs to run a single node (which would have the highest amount of trust), and can have multiple devices connect to it easily with minimal setup. A user could also provide this service to less technical people fairly easily - only an I2P address needs to be exchanged. Presumably this Monero service would require client authentication for some RPC requests, to limit resource usage.

Or that is how I understand the intended goals.