Is there a way to cap the size of the tx_extra_field? Right now, the only suggested use-case for the tx_extra_field is for the payment ID. Can we limit the size of the tx_extra_field to a specific size to prevent people from abusing placing a large amount of data here? If so, what should be the limited size, assuming using the payment ID is the only use-case.

I wouldn't do that. The tx_extra field opens some possibilities for unforseen inventions build on Monero. Monero doesn't have such rich scripting language as Bitcoin, but the tx_extra field offers some other possibilities how to make use of the anonymous blockchain in other ways than simple monetary transactions. It may for example interlink monero transactions (which are private yet very secure) to other distributed p2p data..

The larger the tx_extra, the more fee you pay and you still need to be able to fit your transaction into block.


Monero GUI self-hosted node issue with Ledger - it keeps requesting password I am running the most recent version of Monero GUI for Mac and Ledger firmware (I just updated the Ledger firmware and just downloaded and setup Monero GUI this weekend).

Everything went smoothly overall. Sent the private key from Ledger, setup the hardware wallet with the connected Monero GUI wallet, started to sync using the daemon and blocks started downloading. Then my issue started happening:

After some time of inactivity, I think about 20 mins to an hour, the Monero wallet decides to lock itself, the daemon stops syncing, and I have to go back to my computer and re-enter the Monero GUI password.

I already changed my Ledger options so that it doesn't auto-lock itself, as I assumed that was the issue. However, even without the Ledger self-locking, the Monero GUI keeps requesting a password and stopping the daemon. At this rate, it will take a very long time for my node to sync and for my wallet to be usable.

I searched extensively for this specific issue and seems like it's at least somewhat unique. I looked for options in the Monero GUI to not auto-lock after inactivity but couldn't find anything.

Hoping someone can help.

Quoting selsta:

  You can disable this in Settings -> Layout -> Lock wallet on inactivity.


Questions about tx_description field in URI In the Monero URI, is the tx_description stored on the blockchain?  If so, is it encrypted?  What is the maximum length of this field?

A monero: URI is not a transaction, it is a descriptor for how to create a transaction with some particular parameters.

The description is not stored in the blockchain. Of course, some software might decide to put this in a transaction, but that's on it.

It is not encrypted.

There is no defined maximum length, but some parsers might have limits.


What is the other file created alongside .keys? I created a wallet called ”Test”.
Two files were created (Test and Test.keys).
According to https://monero.stackexchange.com/a/3123/11776, Test is the wallet cache.
What is the purpose of this cache and does it change significantly over time (does its size remain relatively constant over time)?

The cache contains data that's retrieved from the blockchain. It includes the hashes of blocks (used to detect reorgs), then data for every transaction that you sent or received, custom information like user tx notes, secret transaction keys, that kind of thing. It will grow as you transact in Monero.


How to strengthen a light/mobile wallet such as MyMonero MyMonero is the only mobile/web wallet for Monero. However, it is a centralized system where the source code (html/javascript) of the mobile wallet is stored in the server. This means that a perpetrator could embed malicious code or create a social engineering to steal the users seed/keys. In what way this could be circumvented or the users maybe alerted when there is a tampering of code.

The article Javascript Cryptography Considered Harmful goes through this quite well.

  Secure delivery of Javascript to browsers is a chicken-egg problem.

Newer browsers that support Subresource Integrity allow a website to specify a file hash for an external resource (a stylesheet or some Javascript). This is nice but there is nothing stopping an attacker calculating a hash for their malicious code and inserting that into the integrity attribute.


What is a quick and easy way to convert a Monero private key into a 24 word mnemonic seed? Is there a easy javascript way to convert a private key into a 24 word mnemonic seed? I understand that Monero private keys are generated using Base58, but where in code does it show me how to convert a private key to a mnemonic seed? I'm guessing I also need Monero's mnemonic seed dictionary list?

https://github.com/moneromooo-monero/monero-wallet-generator includes Javascript code to create a 25 word seed from a secret key. You can then chop off the last word to get a 24 word seed, since the last word is the checksum and is optional.
Specifically, you want the mn_encode function:
function mn_encode(str, wordset_name) {
    'use strict';
    wordset_name = wordset_name || mn_default_wordset;
    var wordset = mn_words[wordset_name];
    var out = [];
    var n = wordset.words.length;
    for (var j = 0; j < str.length; j += 8) {
        str = str.slice(0, j) + mn_swap_endian_4byte(str.slice(j, j + 8)) + str.slice(j + 8);
    }
    for (var i = 0; i < str.length; i += 8) {
        var x = parseInt(str.substr(i, 8), 16);
        var w1 = (x % n);
        var w2 = (Math.floor(x / n) + w1) % n;
        var w3 = (Math.floor(Math.floor(x / n) / n) + w2) % n;
        out = out.concat([wordset.words[w1], wordset.words[w2], wordset.words[w3]]);
    }
    if (wordset.prefix_len > 0) {
        out.push(out[mn_get_checksum_index(out, wordset.prefix_len)]);
    }
    return out.join(' ');
}

The words list and the helper functions it calls are in the same file.


Can't get Biostar TB250 motherboard to recognise RX Vega 64 GPU for Monero mining I'm trying to set up a basic rig for Monero mining and I just can't seem to get the motherboard to recognise the GPU. I'm beginning to wonder if the GPU might be faulty. I've tried every tutorial, uninstalled and reinstalled the drivers in almost every configuration, and I can't even get the card to appear in lspci.

I'm running Ubuntu and have a Biostar TB250-BTC motherboard with basic Pentium processor and other basic components.

Does anyone have any thoughts on a way to verify it's broken before I return the card?

The lights on the GPU come on, though the fans never run. I've tried connecting it via a riser and just in the PCI x16 slot itself. No luck with either.

Thanks.

I'm running Ubuntu

Have you tried with Windows? I haven't checked in a while, but I last heard that mining on Vega 56 and 64 yield better hashrates on Win at the moment, until AMD releases proper (?) blockchain drivers for aforementioned cards in Linux.
I would suggest you try that first, and if it isn't detected in the Device Manager, look into returning it.

Hope this helps!


Bulletproof txs in testnet Is there any testnet block explorer or something where I can see how Bulletproofs transactions are? I'm having problems parsing a transaction and I can't figure out if it's a bulletproof transaction or not.

The best way to do so is to use:

monero-utils-deserialize --input <hex dump goes here>

This will parse and tell you what it is.

This tool is only built in debug mode as it is a debugging helper.

Note that Bulletproof format changed on testnet, and the network was reorganized from the start of v7, so you might have an old style proof, which will fail to parse.

To see if a given transaction is in the current chain (from its transaction ID), run this in monerod:

print_tx TXID +json

You can also checkout a testnet explorer at testnet.xmrchain.net.


Is there a Monero project or improvement proposal to make Monero have instant transactions? A few cryptocurrency projects have instant sending of coins, like Dash and Loki's Blink. Currently with Monero there is a 2-20 minute wait time, depending on how you look at it, before the coins are received. Is there a proposal to get Monero to speed up transactions, like instant sending without the transaction wait times?

In Monero, like other cryptocurrencies, the transactions themselves are fairly instant - they get instantly broadcast to the network and get placed in the tx pool. Wallets also see these transactions pretty much instantly.

A transaction however is not deemed confirmed until it has been mined into a block. And even then, because there can be small reorgs on the main chain, allowing a sensible depth of blocks mined increases the likelihood of a transaction sticking (i.e. not being naturally caught up in a reorg or a malicious double spend for example).

This is the reason the Monero wallets enforce a 10 block (~20 minutes) confirmation/lock time  before deeming a transaction fully complete.

A receiver (merchant) of XMR, can of course choose any confirmation window they like to release goods. Some merchants will take on a small risk by releasing goods on a zero-conf basis (e.g. as soon as they see the tx in the tx pool). In this situation it is an "instant" transaction of goods. The merchant is taking a small risk here by releasing goods before they are sure the tx won't get reversed.

All cryptocurrencies based on a PoW chain have this situation. Of course, others may develop wallets that don't place a sensible lock time on funds, but then they are pushing the risk onto users who may not fully understand the risks / implication of this.


How many active nodes currently are there mining daily in monero？ Recently, I'm working on some simulations targeting monero mainnet, and want to make them as close as possible to that in the mainnet. To set up the environment for simulations, the number of nodes active in mining is a significant parameter to consider. Really appreciate if anyone who knew something about that can help~

Here's a (incomplete) list: https://monerobase.com/geomap/

It's incomplete because there could be other nodes not known to the monerobase node.

There's no way to tell if they're mining, but they're all validating TXes and blocks.

For mining, we can assume that each pool runs one or more nodes, and there's lots of pools: http://moneropools.com


How do I, as a sender, verify that my transaction actually arrived? I sent some XMR to a service / exchange / friend. How do I verify that my transaction actually arrived?

First, theoretical background can be found here:

Selective transparency in Monero vs Zcash

Why is the viewkey able to track incoming transactions, but not outgoing transactions?

What is the TX key?

Is there any way to construct a transaction manually?

Basically the gist is that you know r (the private tx key) and A (the public view key, which is part of the public address). As a result, you are able to compute the shared secret (rA = D) and "decrypt" the transaction.

If you are using the CLI, you ought to perform the following steps:

Enter the following command: get_tx_key <transaction_hash>.
Copy the output of the get_tx_key command.
Type check_tx_key <transaction-id> <txkey> <recipient-address>.
If this checks out, the CLI will show the following message: <Recipient-address> received <amount> in txid <transaction-id>.

Alternatively, you could use these steps:

Enter the following command: get_tx_key <transaction_hash>.
Copy the outcome / output of the get_tx_key command.
Go to this tool, which was created by core-team member luigi1111. Furthermore, "Note: this site operates completely on client-side Javascript; no data is ever sent to the web server."
Enter your transaction ID / hash in box 1. Transaction Hash:
Set box 2. Private Key: to Tx Private Key
Enter the private transaction key you obtained in step 2 into box 2. Private Key:
Enter the public address of the recipient in box 3. Recipient's Public Address
Press on Check.
If it shows This address owns output        x with pubkey: y for amount: z it proves you correctly sent your XMR to the recipient.

I'd personally advise to use the former method, as it's more privacy preserving.

If you are using the GUI, you ought to perform the following steps:

In the GUI, go to the History page and click on details of the transaction of interest.
A window should pop up that shows the private tx key. Copy it.
Click on the Advanced tab and subsequently click on the Verify Payment tab.
Enter the public address of the recipient in the first box, the transaction ID in the second box, and the private transaction key you copied in step 2 in the third box.
Press on Check.
If it checks out, it proves you correctly sent your XMR to the recipient.

Alternatively, you could use these steps:

In the GUI, go to the History page and click on details of the transaction of interest.
A window should pop up that shows the private tx key. Copy it.
Go to this tool, which was created by core-team member luigi1111. Furthermore, "Note: this site operates completely on client-side Javascript; no data is ever sent to the web server."
Enter your transaction ID / hash in box 1. Transaction Hash:
Set box 2. Private Key: to Tx Private Key
Enter the private transaction key you obtained in step 2 into box 2. Private Key:
Enter the public address of the recipient in box 3. Recipient's Public Address
Press on Check.
If it shows This address owns output        x with pubkey: y for amount: z it proves you correctly sent your XMR to the recipient.

Again, I'd personally advise to use the former method, as it's more privacy preserving.

Unfortunately, MyMonero currently doesn't have an option to obtain the private tx key. Therefore, it is currently impossible to use aforementioned method.


What is Triptych and how does it relate to Monero ring signatures? Monero Research Lab recently published a research paper on Triptych: https://eprint.iacr.org/2020/018

What is Triptych, and what are its advantages and disadvantages compared to CLSAGs?

In Monero currently, we use a ring signature comprising of 10 decoy inputs to each input being spent - so a ring size of 11 - and it scales linearly. This last point is what prevents us from using a much larger anonymity set, as if we double our 11 to 22 for example, we double the size requirements for the signature(s) in the transaction. CLSAG offers a way to compact the size of the signature, however it to still scales linearly.

Now enter Triptych, devised by Sarang Noether and Brandon Goodell of the
Monero Research Lab. This ring signature scheme scales logarithmically in size (and verification time). What this therefore offers Monero is a way to have larger anonymity sets (larger rings) without the linear cost in terms of size or verification time.

Simplified, larger anonymity sets offers better privacy but it has to be balanced against the size and verification time of the transactions. Thus, Triptych is a very interesting advancement for Monero - a way to increase the anonymity sets without impactful size and verification costs.


How does RingCT increase in transaction sizes affect people? With the recent hardfork of RingCT there has been talk about the transaction sizes increasing to 25kb on average which is a lot more than before.

My question is how does that affect people? Does it affect greatly people who run a full node? Does it mean that the blockchain is going to be too big for most computers? Should the majority of people who have a wallet care about this and if so why?

Currently, it only affect fees, which are a little higher. In term of disk space, it is  negligible (current blockchain size is ~10GB).

The little overhead for network traffic should largely be compensated by fluffy blocks.

Blockchain size is only one factor. What affects people who run a full node is CONOP.


monerod.exe socket error connect 0 When I first downloaded the wallet everything was working fine, and then my computer crashed while it was running one day and it stopped working ever since, now whenever I run monerod.exe it says "initializing p2p server" and after that it just keeps saying "socket error: connect, 0" over and over again.

Any idea on how to fix this?

I had the same problem, but once I was researching in google y left monerod.exe running for a few minutes, and when I notice monerod.exe was connected. I hope this helps to you.


What is RingCT and how does it make Monero private? I hear that RingCT will make Monero more private than Bitcoin. Is there truth to this?

Yes, that is true, but that is not the only thing. The main privacy enhancing features of Monero are:

Ring signatures: make transactions harder to trace by obscuring the output of the true sender in a set of n other outputs on the blockchain, indistinguishable with respect to their amounts, which are all the same (currently), or all hidden (under ringCT, see below). This is already working, with minimum n = 2 enforced on the protocol level, and soon to be raised to 4;

Stealth addresses: obscure the destination of funds (already working);

RingCT: hides transaction amounts as well. This feature is already implemented on the testnet, and will be deployed on the mainnet on January 2017.

Kovri: will be a reimplementation of the I2P protocol which will allow nodes to connect to each other and broadcast transactions without revealing their IP addresses. Currently in the making, and is expected to be ready in about 1 year. (In the mean time, the individual user can protect their IP address using TORSOCKS, although this solution doesn't work for the network as a whole, since nodes behind Tor cannot be found by other nodes but only find them.)


Would having two separate proof of work algorithms for Monero be more secure? Say 50% is CryptoNight and 50% is an ASIC friendly PoW, would this create more security? Maybe current miners would leave, creating less security? This might be an idea that would be better for the far future once Monero starts tail emission maybe?

To evaluate whether one alternative is more secure than the other we have to answer the question: Which alternative makes an attack more costly?

In the Cryptonight-only case the cost of an attack is that of gaining a 51% advantage over all mining nodes on the network.

In the Cryptonight+ASIC case you'd need to get some combination of regular miners and ASIC miners.

It gets a little "handwavy" at this point, because a true estimate would be impossible.  But by definition an ASIC can only be used for mining, whereas a general purpose computer can be used for mining or other things.  Therefore, it stands to reason that the capital investment in the general computer category will be much larger than the capital investment into ASICs.

Another way to think about this is that the general purpose computer has mining value + entertainment value + productivity value + ..., whereas the ASIC only has the mining value.  Because of this regular users are willing to spend more to pay for a 'miner', whereas an attacker isn't, as he's only motivated by profit.

Furthermore, enthusiasts might mine at a loss (they want to secure the network and the computer is otherwise idle) with their general computer, but nobody is going to buy an ASIC (and pay for power) to run it at a loss.

For these reasons I think the capital investment required to attack a mining algorithm targeting a general purpose compute node will always be greater than a mining algorithm targeting ASICs only, or some combination of ASICs and general purpose compute nodes.


How to get miners transaction size? When we try to send monero to someone using

transfer [integrated address] 0.0016

how can we calculate the size where the priority is normal and ring size is default(may be 7)

So I need an algorithm to calculate the transaction's actual size.

Please give me an example with the algorithm

For the example you've given, where there is only one wallet destination, the transaction will have two outputs (one for the recipient, one sent back to you with your change).

A simple approximation is that the transaction size will be 6176 bytes * [output count] for the range proofs, plus for the ring signatures: [input count] * 64 bytes * [ring size].

So if you spend a single input (which contains enough funds), with a ring size of 7, this formula gives you an approximate transaction size of 6176*2+1*64*7 = 12800 bytes. In reality, it'd probably be closer to 13200 bytes, because of the simplification we've made.

When you spend funds, you probably won't be able to tell whether you're spending funds out of a single input you own, or whether the source of the funds is spanned over multiple smaller inputs you own. As you can see from the formula, in some cases, the transaction could easily be many KB larger than usual if you have to spend together lots of small inputs in order to have enough funds in total for the transaction. The answer also varies a little according to the random indices of the decoy inputs that you select during the transaction.

Therefore the simplification this answer presents should be good enough, given that you won't have the information available in advance to make a more accurate prediction of the transaction size.

Also note that Monero fees are charged on KB boundaries. Therefore a 13KB transaction will cost the same in fees as a 13.99KB transaction, but a 14.01KB transaction will cost more than a 13.99KB transaction.

It is expected that later in 2018, a new bulletproof scheme will replace Monero's existing range proofs. This will significantly lower the size of transactions.


Can Monero support smart contracts Although Monero is a cryptocurrency, can it's infrastructure (blockchain + crypto functionality etc.) be harnessed to provide smart contract functionality?

Has anyone done work on this?

No, not by itself. See Tari for a secondary layer example.


How do ringct transactions use previous non-ringct outputs in a ring signature with ringct? How will ringct transactions use non-ringct outputs to use in a ring signature? Is there any trick that gets them to work together with ringct or is it pretty simple and I am missing something?

I'd say it's pretty straightforward. In the normal situation where input and output are both Pedersen Commitments, i.e.,

C_i = x_i G + a_i H
D_j = y_j G + b_j H

, the network confirms the consistency of the CT by checking

\sum_i C_i = \sum_j D_j + f H

where f is the fee. When converting non-RingCT outputs to RingCT outputs, you simply treat non-RingCT outputs just like the fee; i.e., the masks x_i are omitted and the network checks the following:

\sum_i a_i H = \sum_j D_j + f H

Put differently, the sender randomly picks the new masks y_j such that

\sum_j y_j = 0


Connect to a LOKI remote node when using the CLI wallet What is the command to connect to a LOKI remote node if I do not want to download the entire LOKI blockchain? I am using the ubuntu cli wallet.

You can use the following format:

./loki-wallet-cli --daemon-host imaginary.stream


Monero and ASIC miner Would it be possible to convert Bitcoin ASIC miner from BTC to Monero(XMR)?

For instance, convert the Titan BTC dragon miner firmware to mine Monero : http://titanminer.com/?product=lketc-dragon-miner-bitcoin-asic-1-5ths-sha-256

Would it work in theory the Monero P2P network?

No, not at all. Bitcoin ASICs are designed with the singular purpose of performing Sha-256 hashing - it's literally written in the silicon. Monero uses the Cryptonight hash function which makes use of AES encryption and several hashing algorithms, Keccak, Blake-256, JH-256, Groestl-256, and Skein-256.

Reference: https://cryptonote.org/cns/cns008.txt


Is there an example of a transaction that makes use of tx_extra field? Is this public unencrypted data? Is there a transaction that makes use of the tx_extra field that is viewable in the monero block explorer?

Is there an example of a transaction that makes use of tx_extra field? Is this public unencrypted data?

Every transaction makes use of tx extra as it places the tx public key in there. The data is public but can be encrypted (e.g. payment IDs are encrypted in extra).

  ...that is viewable in the monero block explorer?

Select a transaction in https://testnet.xmrchain.com or https://xmrchain.com and click "More Details" at the bottom, then "Show JSON representation of tx".


Will quantum computer break ring signatures? I knows quantum computer breaks elliptic curve math but what about ring signature? thanks

"Normal" ring signatures aren't broken (meaning the true signer is revealed) by QC, but their security certainly is (unforgeability). However, the traceable version Monero uses (for double-spending prevention) is indeed able to be broken (meaning public key linked to key image and thus signer revealed) due to the existence of a key image.


How can I get the right Keccak-256 tools. The online tool seems wrong...? I want to test this StackExchange Q/A.

which got 889DA12A88D36BCE0966AB1A79125779DD1F2FC6F1145DE131FD52A5B468796D from

% keccak -256 198584347013dd91832be3d82529437db7cc8e1850e559cdd3872b29ca819601

However, when I use the Keccak-256 online tool found here:
https://emn178.github.io/online-tools/keccak_256.html

I get: 11d0c17e049fd25f195a6b3694d37658240961d55f263cca40f2c5f91e6fac2d

The results are not the same. Is there anything wrong?

The online tool works perfectly, but the form accepts text and you were pasting in hex. The ASCII string "198584347013dd91832be3d82529437db7cc8e1850e559cdd3872b29ca819601" is 31393835383433343730313364643931383332626533643832353239343337646237636338653138353065353539636464333837326232396361383139363031 in hex, and the online tool correctly produced a keccak256 hash of the hex of what you pasted in.

The result of your keccak -256 command is also correct.


Monero wallet stuck synchronising and I don't understand the "unstuck" guide: please clarify As stated my wallet on windows is stuck with 39179 blocks remaining. I am trying to follow this guide My blockchain is stuck, how do I "unstuck" it?
but the steps are not clear to me.

I have deleted the p2pstate.bin file as per the guide. However the next step does not seem to work and maybe I am doing something wrong.

  If you are using the GUI, simply add --block-sync-size 20 as daemon
  startup flag. You can do this on the Settings page of the GUI.

I have done this and it says it is synchronising but is still stuck.

the Daemon log is as follows

  2017-11-09 13:38:48.530   8832    INFO
    global  contrib/epee/src/mlog.cpp:145   New log categories:
  *:WARNING,net:FATAL,net.p2p:FATAL,net.cn:FATAL,global:INFO,verify:FATAL,stacktrace:INFO
  Height: 1400001/1400001 (100.0%) on mainnet, not mining, net hash
  259.32 MH/s, v5, update needed, 7(out)+0(in) connections, uptime 0d 0h 3m 31s

  2017-11-09 13:39:24.029   424 INFO
    global  contrib/epee/src/mlog.cpp:145   New log categories:
  *:WARNING,net:FATAL,net.p2p:FATAL,net.cn:FATAL,global:INFO,verify:FATAL,stacktrace:INFO
  Height: 1400001/1400001 (100.0%) on mainnet, not mining, net hash
  259.32 MH/s, v5, update needed, 7(out)+0(in) connections, uptime 0d 0h 4m 7s

  2017-11-09 13:42:39.564   6840    INFO
    global  contrib/epee/src/mlog.cpp:145   New log categories:
  *:WARNING,net:FATAL,net.p2p:FATAL,net.cn:FATAL,global:INFO,verify:FATAL,stacktrace:INFO
  Height: 1400001/1400001 (100.0%) on mainnet, not mining, net hash
  259.32 MH/s, v5, update needed, 8(out)+0(in) connections, uptime 0d 0h 7m 22s

  2017-11-09 13:42:58.939   680 INFO
    global  contrib/epee/src/mlog.cpp:145   New log categories:
  *:WARNING,net:FATAL,net.p2p:FATAL,net.cn:FATAL,global:INFO,verify:FATAL,stacktrace:INFO
  Height: 1400001/1400001 (100.0%) on mainnet, not mining, net hash
  259.32 MH/s, v5, update needed, 7(out)+0(in) connections, uptime 0d 0h 7m 41s

  2017-11-09 13:57:53.165   11424   INFO
    global  contrib/epee/src/mlog.cpp:145   New log categories:
  *:WARNING,net:FATAL,net.p2p:FATAL,net.cn:FATAL,global:INFO,verify:FATAL,stacktrace:INFO
  Height: 1400001/1439180 (97.3%) on mainnet, not mining, net hash
  259.32 MH/s, v5, update needed, 8(out)+0(in) connections, uptime 0d 0h 22m 36s

I subsequently closed and restarted the wallet and now the Daemon wont even start. So I think I made a mistake or this guide was incomplete and messed up my wallet. Should I restore the file I deleted. Please help, thanks.

EDIT: I want to add that I suspect it could be that i need a new version of the wallet. But I dont know which version i have and it doesnt show it on the wallet. I did download from the site, but now it appears that i have two wallets. If i download the wallet from the site again does it automatically update the wallet i have or do ineed to delete the old wallet. I dont see any options to update the wallet on the GUI interface. The new wallet is confusing becasue you just down load dosens of files and how can i know which one is the actual wallet?

If you're stuck on height 1400001, it's very likely you're using an old version which doesn't know about the new fork consensus rules, so fails to see the new blocks as valid. You need to update your wallet to 0.11.1.0 (0.11.0.0 would also work, but has a few sync bugs, so switching to 0.11.1.0 directly is best). Just replace the binaries with the new ones, or pull from git and build, that's all you need to do. After restarting monerod and wallet to use the new code, it should start syncing again till the end.


Monero node rewards? I've heard that running a monero, or any alt-coin node can gain rewards for something. Blockchain discovery maybe? What is this and how does it get claimed?

Normally, just running a full node (i.e. a node that contains a full copy of the blockchain) just entails keeping your copy of the blockchain up-to-date, and also relaying new transactions. These transactions are then included in the blockchain by the process of adding a new block to it, know as mining. However, to get the privilege of editing the blockchain by augmenting it by this new block (which will include the new transactions), the user's software has to perform intense computations in the hopes of beating the other nodes to solving a puzzle. If he does, then he gets the block reward, which is currently around 10 XMR per block.

So you can think of mining as a race to win a lottery that has a prize of about 70 USD every 2 minutes, and the odds of winning this lottery will depend on the hardware and energy the user decides to invest into it.

Mining is optional, and there isn't a reward for just relaying transactions or keeping an up-to-date copy of the blockchain; not in Monero at least.


Is there a record of Monero OTC trading before it was listed on an exchange? Before Monero was added to its first exchange:

What was the first recorded price (in Bitcoin) for a Monero trade?
What was the highest and lowest OTC price for Monero??
How much OTC trading volume was there at the time?

First, to answer your first question. Yes, there is a record of Monero OTC trading before it was listed on an exchange, which can be found here.

The OTC trading thread was started on April 22, 2014, whereas Monero launched on April 18, 2014. Therefore, undoubtly there have been some trades before aforementioned thread was launched. Most trades, however, likely happened in a private manner and thus are unrecorded. An exception is this "auction", where smooth traded 0.025 BTC for 1.2 XMR, which is a price of 0.0208 BTC/XMR. This trade was done on April 21, 2014 and therefore most likely the first recorded price (in Bitcoin) for a Monero trade.

  What was the highest and lowest OTC price for Monero??

Looking at the reported trades in the OTC thread, it seems that the highest price was recorded at 0.001750 and the lowest price recorded at 0.000200. This excludes smooth's trade, of which I am not entirely sure if that was the right price.

  How much OTC trading volume was there at the time?

From the reported trades in the opening post of the OTC thread we can see that a total of 86 trades occured over 24 days. The cumulative volume of these trades is approximately 134k Monero. This gives an average volume of approximately 5.6k Monero per day. In addition, the largest trade is a trade for 8000 Monero, whereas the smallest trade is a trade for 50 Monero.


Two functions in Mininero to derive Monero address from hexadecimal seed? In Mininero's code, there are two functions that seem to derive monero addresses, getAddr and getAddrMM, but only the former agrees with the address provided by monero-wallet-cli.

What is getAddrMM, and why is it there?

MM is probably an abbreviation for MyMonero. Note that, in comparison with the standard private view key, the private view key of MyMonero accounts are derived differently. That is:

  MyMonero Style – This is similar to 2., but uses a 13 word seed instead of a 25 word seed. The 13 words convert to a 128-bit integer that is used for both spend and view key derivation, in the following form: the 128-bit integer is hashed with Keccak-256 to produce a 256-bit integer, a. a is sent to sc_reduce32, which returns the Private Spend Key. a is hashed once more with Keccak-256 to produce a second 256-bit integer, b. b is then sent to sc_reduce32, which returns the Private View Key. You may have noticed a critical difference between this style and the Electrum Style: MyMonero's Private View Key derivation is done by hashing random integer a, while Electrum Style derivation is done by hashing the Private Spend Key. This means that 13 and 25 word seeds are not compatible – it is not possible to create an Electrum Style seed (and account) that matches a MyMonero Style seed (and account) or vice versa; the view keypair will always be different. You can test out this style above with the "Random MyMonero" button. To backup MyMonero accounts, save the 13 word seed; you can currently "restore" using MyMonero only (you're really just logging in) – Simplewallet does not currently support 13-word seeds.

Hence, MiniNero uses two different functions to derive Monero addresses. Lastly, note that simplewallet was renamed to monero-wallet-cli.

Additional reading:

Why are Monero addresses so long?


What is the proper way to monitor payment to a monero address I am trying to build a transactional system that:

Generates a new address for each customer.
Waits for the confirmed balance on the address to reach a certain value.
Launches a function once the balance condition is met.

I am currently using a while loop with polling to accomplish this, but it will not scale up properly for my intended use case.

Is there a way to register some kind of callback when a transaction is received to one of my wallet addresses and get rid of polling ?

Thank you all

You will need to poll if using the RPC interfaces to daemon / wallet.

  but it will not scale up properly for my intended use case

Nothing wrong with polling with regards to scaling. Just run the polling requests in a separate thread notifying your other code at appropriate times (e.g. when you detect new incoming transfers).


Is it possible to trace an output in the Monero blockchain? In MRL-0004, it's said:

  Bob wishes to send 0.75 XMR to Alice, and will pay 0.01 XMR in fees. The Monero
  that Alice receives, 0.75 XMR, will be delivered as two new unspent transaction
  outputs with amounts 0.7 XMR and 0.05 XMR. Further, an output of 0.01 XMR
  must be delivered as a fee. This leaves 0.24 XMR as change, which will be delivered
  to Bob in two unspent transaction outputs of amount 0.2 and 0.04 XMR each.
  At some point in time later, Alice realizes she has 0.75 XMR and decides to go
  spend it some place. When she does so, both of her outputs, 0.7 XMR and 0.05
  XMR, are included in her ring signature. An observer could then look at her ring
  signature and draw a conclusion that whoever signed that ring signature probably
  is the owner of both the 0.7 XMR and the 0.05 XMR.

Is it possible to trace an output among many transactions like this? Because when I spend an output and then inspect the transaction (like in here), I find the "key image" field of each output completely different from the transaction that created those outputs in the past. Is there some other field that's not shown here that uniquely identifies an output?

And if the outputs can be traced, then the mentioned attack seems almost trivial to carry out. Am I missing something here?

An output's public key uniquely identifies an output [1].
A ring signature takes N outputs, one of them being the one that's actually spent, and makes a signature that can be verified, such that:

one of the outputs in this ring is spent
all the outputs in this ring have equal probability of being the one being spent

Now, the scenario in MRL-0004 is more complex than just looking at which outputs are spent, because (assuming N > 1) we can't tell which are spent with certainty just by looking at the ring.
The scenario considers that a transaction contains two rings, one for 0.7, and one for 0.05. Each of these two rings will contain the real output (Alice's), plus N-1 others from the blockchain. However, you'll note that Alice received those two real outputs from the same transaction, so a blockchain observer can see that one of the inputs in the first ring and one of the inputs in the second ring were created in the same transaction. While this could be chance, it is more likely that those two outputs belong to the same address.
This is a probabilistic inference, and not a certainty.

This is adressed in the RingCT branch, which has code to prefer spending unrelated outputs, if possible: https://github.com/moneromooo-monero/bitmonero/commit/f478336e68995ebd65a96ba249a3fc8e0f159fca. This code will first select outputs which do not share a transaction, or similar block height.

Cases where it might not be possible to spend unrelated outputs are typically if you're trying to spend a large part of your balance at once, and you do not have enough unrelated outputs.

[1] in the vast majority of cases, unless a bad RNG is used, or someone deliberately burns coins in this way


Is running a full node on an HDD bad for the network? I've got an HDD that I sometimes run a full node on, but since HDD's are slow, I'm thinking it might slow down the network rather than speed it up.

Does it make much of a difference past the initial first sync?

No.

In any case, internet connection bandwidth and access is far more impactful to the network.

Using a spinning disk, it's just you who will feel the pain during your initial full sync. Once you have got the blockchain on your spinning disk however, there is really no issue keeping it synced up, so long as you keep it running.


Why is the Monero node separate from the wallet? Is there a good idea for having a node and wallet separate? Or should they be together?

It's good practice to separate them, here's why:

Security. The node is open to the network and the wallet keeps your private keys. In case some exploit was found in the node sofware, this significantly reduces the risk for your funds
Practicality. You can run multiple wallets all talking to the same node. With them bundled together this becomes messy, if not impossible.
It's easier to focus on improving one aspect of the overall suite.
It's easier to debug
It's easier to maintain
By having a stand-alone node software, you already did half of the work for many other uses like exchanges, mining pools and block explorers without them having to poke out relevant code from a bundled mess of everything.
By having a separate wallet software, you make it easier to write another wallet implementation.
The inner workings of the software will be easier to understand for those new to the code

To take this further, specific parts of each software could be "librarized", so it would become even more modular and allow flexibility in future development and allow to use already built code with other languages etc. In fact, this is also one of the long term development goals.

Suggested further reading on software design and modular programming.


Transfer with wallet RPC I have an error when I try to use curl to transfer with a 64 character payment_id. The payment ID is being automatically set to 0000000000000 and is only 16 characters long. Whats wrong with my RPC call?

Thank you.

First, the payment_id field in transfer/transfer_split is the same type as used by integrated addresses, i.e. it's a short encrypted ID. It's therefore restricted to 16 characters.

Second, payment IDs are being deprecated, being replaced by subaddresses.

UPDATE

I double checked the current (0.14.0.2) wallet RPC release code and this still allows long payment IDs (64 characters). The second point above still holds - they are being deprecated.

For completeness, the OP also placed the payment_id parameter in the wrong place in the JSON payload.


Monero CPU mining, how much memory to include in a new build I would like to try Monero  CPU mining on a new Linux box I would like to build. More memory the better for CryptoNight algorithm, right? Is there an upper limit at a point where more memory is not effective. I'm thinking should I add 32GB? 64GB? Or 128GB?
Would I need a particulary fast CPU? I was suggested a 1x AMD Ryzen 7 1700X or 1x AMD Ryzen 7 1700
Those are 3.8 GHz, and 3.7 GHz respectively.

Is this high-end configuration worth it as far as recouping my investment. I'm also considering renting out my processor power on the Golem project. I'm sure I'll need to include a GPU for that.

Thanks for any thoughts the community may have for me.

For mining, system RAM doesn't matter much. You need 2MiB per CPU thread, but CPU cache is way faster than RAM so it's putting a cap on what you can do. For example, 8-core CPU with 8MiB cache can optimally mine with about 4 threads. Beyond that, there will not be enough room in the cache, and it'll have to use RAM, which is slow so...

For GPU mining, it has its own memory, which is not as fast as CPU's, but GPUs compensate for that by sheer number of threads they can execute at the same time. Again, number of cores multiplied by 2MiB is the minimum RAM you need on a GPU.


RingCT missing output indices I'm currently studying about security about Monero, and I found something weird.
I know that the ouputs of Monero transactions are identified by amount and indices (amount 0 for RingCT), and the transactions are using this format.
I recently checked that "6f6f2eea2e549a69ad10246511ccc720193f1d41c9fa2c7aae0e47cb9884d898" transaction with 1,220,517 height of block is the first RingCT transaction in Monero. However, the blockchain data is showing that the output indices of the transaction is not starting with 0 index, rather starting with the index of 2. It seems to be no index 0 output within RingCT transactions.

Furthermore, I found that other transaction is using the 0 index of RingCT output as a mix-in in an input. I wonder what the situation is and what I am missing is.

From v4 at height 1,220,516, where rct becomes allowed, coinbase outputs are stored as pseudo rct outputs. There is one such output in block 1,220,516 and one in 1,220,517.


How do I set Google Chrome new tab page to Monero Stackexchange URL? I've been researching the chrome settings but have not been successful in my quest.

I have found how to set the URL for the home button, but does anyone know how to change the "default new tab" opening to monero.stackexchange.com URL?

Thanks in advance.

Search for "Blank New Tab Page" extension which allows either blank pages or a specific URL to be utilized.


Post quantum signature scheme integration in Monero I have a pretty ambitious experiment in mind, and more of it is like testing how would a crypto currency behave if it would have some post quantum keys, like 2KB of key sizes and signatures.

So I looked up on the top cryptocurrencies, which is highly respected in privacy, and I chose Monero. I also picked a random key generation scheme dilithium(https://pq-crystals.org/dilithium/index.shtml).

So on the coding, everything went quite well, on changing the sizes, and hash functions, but when I generated the wallet, I get this weirdly formatted address and key.

Can you help me what might the problem?

Result: https://pastebin.com/g3kFZNwP

The mnemonic seed is a representation of your secret spend key. It looks like your secret key has a LOT of zero bytes.
There are 3 words for every 4 bytes, so if your secret keys are 2 kB, you end up with 1536 words. Abbey being the first word in the English dictionary, you see that the key you're encoding there is mostly zeroes.
The output format expects only 25 words, so inserts two newlines. The rest is on a single line.


why is the RPC version mismatched? I am attempting to use monero wallet on ubuntu 16.04 by attaching to a daemon on windows 7 in the same LAN, both are running version 0.10.0.0 Wolfram Warptangent, but using the command ./monero-wallet-cli --daemon-address 192.168.0.18:18080 gives the following error: Error: Daemon uses a different RPC version that the wallet: 192.168.0.18:18080. Either update one of them, or use --allow-mismatched-daemon-version. I tried using --allow-mismatched-daemon-version but I still get this error: Error: refresh failed: no connection to daemon. Please make sure daemon is running.. Blocks received: 0

On the daemon I check with the status command and I have Height: 1188586/1188586 (100.0%) on mainnet, not mining, net hash 37.33 MH/s, v3, up to date, 50+18 connections so it is certainly running and accepting incoming connections.

Did you follow the instructions noted in the answer to this question?

How do I use a computer with a wallet to access a headless node at my home?

I notice you mentioned --daemon-address as opposed to --daemon-host.  I'm not sure if both those addresses work and are interchangeable.


How can I invest a low amount of Moneroj? I started mining XMR today with ~500H/s and my power consumption cost is 0. Of course I know 500H/s is a low hashrate to profit. But according to this page over a year I will have 1.19 XMR. Let's say I already have that amount.

Can I use that amount to buy another altcoin? I mean trading or something.
Can I use it to invest on Paid To Click (PTC) sites? I have heard with a low amount of money you can get much more on these sites.

Maybe mining with low hashrate for first world users is silly, but what if you don't have any other way? Of course it will take a lot of time, but can you make even 2000 USD a year with a good investment strategy?

Can I use that amount to buy another altcoin? I mean trading or something.

Any exchange which accepts Monero also lets you trade Monero for another (crypto)currency. There are dedicated services (e.g. ShapeShift) which allow you to convert coins anonymously.

  Can I use it to invest on Paid To Click (PTC) sites?

I'm not familiar with PTC sites, how would you invest any money into them? I thought they'd pay you and not the other way around.

  Of course it will take a lot of time, but can you make even 2000 USD a year with a good investment strategy?

Sure, just upgrade your mining rig and you can make more than 1 Monero per year :) You can also hodl and wait for the price to moon.


Is there a minimum and maximum mixin size? Assuming at least some users do not care about privacy, why is there a need for a minimum mixin size?

Is there a maximum mixin size? If my goal is to maximize privacy are there any reasons why I would not want to choose the maximum mixin allowable for every transaction?

As mentioned by JustinEU4, degradation of privacy for one party also degrades privacy for others. The effect is typically small, but if there is a lot of degradation, there comes a threshold effect.

This can be understood intuitively with a simple, contrived, example:

Alice, Bob, and Charlie each write their names on a piece of paper, fold it, and put it in a jar. Eve comes in, and tries to work out which piece of paper reads "Charlie". If the papers are well folded, etc, the probability to get it right is 1/3. This'd be the same if Eve was trying to work out which paper is Alice's, or Bob's.

Now, imagine Alice decides to forego her anonymity, and points out which paper is hers. Now Eve can guess at Charlie's paper with 1/2 probability, though Charlie mixed with 2 others. If Bob now also decides to point out which paper is his, then Charlie is now deanonymized, despite mixing with others.

I concur with JustinEU4's pointer the research from https://lab.getmonero.org/ to get more details about this.

As for the more prosaic rules in current monero, the minimum mixin is now 2 (so you mix with two others), unless there are less than 2 other outputs for at least one of your inputs's amounts. Since mixin 2 would not be possible in that case, mixin 0 is allowed as a special case, so you don't get stuck with unspendable monero. In that special case, only one mixable input is allowed in the transaction.

There is no arbitrary maximum mixin, but it probably breaks over 2^31-1 as an int is used. There are practical limits though: you want to find that many other outputs of the same amount on the blockchain, and you want the resulting transaction to be no larger than the current block size limit so it can be included in a block.


Error mining has not been started :possibly lost conection to daemon I watch monero cli easy video on youtube by GingerAle.I did everythig like this video except that I used monero-wallet-cli.exe --daemon-host (moneroworld random nodes ip):18089 --trusted-daemon.I think it works properly and syncing completed .But just like in video   (Error mining has not been started :possibly lost conection to daemon ),
I get this message .Although monerowallet.cli.exe finished syncing ,monerod is continued syncing eg .- - - - -/- - - - - -that consume much data.I don't know am i mining or not yet .
what should I do ,pls?Btw I just a beginner .

Apparently you are trying to start mining on a random remote node.

When you connect your wallet to a remote node and enter the start_mining command, you are in fact asking the remote Monero daemon to start solo mining and sending the reward to your address if it finds a block. Obviously, the owner of the remote node will not allow random stranger's wallets to use his computing power (by starting his Monero daemon with the --restricted-rpc option).

The start_mining command will only work if your wallet is connected (with the --trusted-daemon option) to one of your own Monero daemons (i.e. started without the --restricted-rpc option, and not openly accessible from the whole internet).


How exactly is a pool mining reward distributed How is the reward distributed to the pool distributors when a new block has been found?

Two examples:

If my pc is connected to a pool 18 hours a day and I disconnect during
night, will I still get a reward since I provided accepted results
to the pool?
If I connect to a pool, mine for 1 day and disconnect forever. Will I participate (of course with a very low reward) if I provided some results and a new block is found by the pool after,e.g., 1 month?

It depends on the pool. Every mining pool will have a slightly different set of rules. Generally speaking they pay you on the amount of shares your miner submitted, and then do some type of formula involving the difficulty of those shares vs the rest of the pool (to determine your actual % of contribution) then once they get that %, thats what you'll get from the block reward that is shared among your fellow pool miners (after the pool takes its 1-2% pool fee).

As far as seeing a payout from mining on a pool for one day, in all of time, and never going back to it, you'll most likely get rewards for the shares you submitted, but unless you are mining with a few large rigs, one day's worth of mining may not be enough for you to get to the "payout threshold" of that pool.


Error: Couldn't connect to daemon: 127.0.0.1:18081 My GUi got stuck so i removed p2pdata and tried block size command .. Instead of getting unstuck i get the error :Error: Couldn't connect to daemon: 127.0.0.1:18081
Also tried Monero GUI, cant sync wallet with no success
EDIT: By stuck i mean stuck synchronizing


Cloud storing wallet.keys encrypted files How safe is it to store the wallet.keys files in a cloud service, email, website, etc? I imagine that it should be just as secure as the passphrases used to encrypt the file. If I understood it correctly, it uses Chacha8, which I believe is very standard, state-of-the-art encryption. Is that correct?

Also, does the file itself leak any other information, like what it is, the wallet address, etc? And are there precautions if renaming it?

EDIT: Added later: If the wallet.keys file is copied while in use, could the user, by accident, end up saving an unencrypted version of it, or are those files always encrypted, and whenever the wallet uses the keys it does so decrypting a copy of wallet.keys internally and securely?

EDIT: Added later: Also, are the wallet files (without the .keys extension), that store the wallet's transaction history, also encrypted with the same passphrase?

Your wallet.keys file should be perfectly safe in the cloud as long as your passphrase to unlock it remains secure.

You are correct about the use of Chacha8 to protect the file.

As long as the file remains encrypted, wallet.keys will not leak any data. Renaming it should not be a problem, but to be safe I would keep a backup of the original file (prior to the name change) until you confirm the renamed file still opens properly with your passphrase.


How does ringct interact with multisig? When the ringct branch is finished, will it make m-of-n multisig easier or harder to implement?

RingCT will make multisig easier to implement, as the planned multisig system relies on RingtCT building blocks.

Contrary to the Bytecoin multisig, Monero's will not be limited to mixin 0 transactions (in fact, Monero banned mixin 0 transactions in the general case since it is harmful to privacy, so cannot even use that system as it is).


How synchronization with a remote node works? I'm using a remote node, but it says disconnected so I clicked start Deamon and I'm waiting so much time for it to synchronize and it's filling my disk space ?

I was thinking it do not fill disk space and connect instantly if it's using and remote node.

It should work like that or it's using local node for some reason

In addition to the comments above:

When using a remote node, you are using it's daemon and downloaded blockchain. If you cannot connect to a remote node, you can run the local daemon. This then needs to download the blockchain to your local machine. Depending on how fast your connection is and whether your disk is a spinning HD or SSD, this can take from hours to a week.

It's also worth noting that when using a remote node that is not your own remote node, you are trusting the remote node operator and thus can lose some security and privacy.

A common and very useful reason to run your own remote node is when you have multiple devices that you wish to use Monero with and don't want to trust someone elses remote node. For example, run a simple cloud server as your own full remote node, secure access to the daemon using something like stunnel, SSH tunnel or proxied Apache/Nginx using SSL. Then you can use your own remote node from other devices like your phone / laptop etc without having the overhead of the ~70GB blockchain on each device.


Difference between Wallet Sync and Daemon Sync What is the difference between Wallet Synchronization and Daemon Synchronization, in case of using either of local node or remote node?

Daemon status is how synced it's blockchain is. Wallet status is how many blocks are scanned.

A daemon syncs blocks, a wallet scans blocks for incoming transfers.


In ringct, how are the range proofs kept separate from the pedersen commitments in a transaction? Are the range proofs and pedersen commitments part of a transaction? Or are they not kept in a transaction at all?

Suppose the sender wants to create a Pedersen Commitment to the amount of 23 XMR for a new output pubkey in a transaction. Without range proof, the sender simply creates the commitment as:

C = a G + 23 H

where a is a random scalar.

With range proof, there's an assumption in the protocol that any committed amount  falls within a certain range; let's say such a range is 0,1,...,31. (In practice it's [0, 2^64), see the code.) Since we can represent the amount of 23 XMR in the binary form as:

23 = 1 + 2 + 4 + 16

The sender creates a commitment as:

C_0 = a_0 G + 1 H
C_1 = a_1 G + 2 H
C_2 = a_2 G + 4 H
C_3 = a_3 G
C_4 = a_4 G + 16 H
C = C_0 + C_1 + C_2 + C_3 + C_4

where {a_i} are random scalars.
The idea of range proof is that the sender knows a private key of either C_i or C_i - 2^i H. Therefore, the sender can prove that the committed amount falls within the range [0,32) by generating 5 ring signatures containing two pubkeys each:

R_0 = {C_0, C_0 - H}
R_1 = {C_1, C_1 - 2 H}
R_2 = {C_2, C_2 - 4 H}
R_3 = {C_3, C_3 - 8 H}
R_4 = {C_4, C_4 - 16 H}

Borromean ring signature is suitable here for reducing the signature size.


I restored my wallet, and I chose the wrong block height to start scanning. What are my options? This wallet I just restored has no transactions any earlier than maybe block 800k.  Well, I told the wallet to refresh from 80k by accident.  It's taking forever to scan.  I don't want to just let the computer refresh forever.  Is the 80k located in some config file that I can edit?  Or is there a command I can enter to tell it to start at 800k?

The most straightforward (and probably convenient) way is to, like user36303 said, exit the wallet and restart the process with the correct blockheight. There is currently no command to alter the restore blockheight after you have already entered it. Furthermore, I personally don't think it would be worth to implement such a thing, because the reward is not worth the amount of work that has to be put into it.


How can I use monero-blockchain-blackball to improve my privacy? Monero version 0.12.0.0 shipped with a new executable file called monero-blockchain-blackball. What is the purpose of this new program, and how can it be used properly?

monero-blockchain-blackball was created to allow a line of defense against other people using Monero with low regard for privacy. In the simplest sense, this tool allows you to ignore others' outputs (containers of money) that are known to be spent in a certain transaction. If you would include these in your transaction as decoys, these decoys would provide little or no protection.
To use this tool, you need to specify the Monero blockchain location and the fork blockchain location. Your Monero download location may be different, especially if you specifically specified a non-default location.
Run the following commands depending on your operating system. Once this command is finished running, you can send transactions that will purposefully avoid using these outputs. Make sure to run the tool before sending sensitive transactions. You must run a full node to take advantage of these benefits at this time.
You can append --check-subsets to run a more verbose scan at a cost to performance. You can search only the recent outputs by appending --rct-only to save a lot of time and space. You can use --blackball-db-dir to save the database to a different location.
Linux / MacOS
monero-blockchain-blackball ~/.bitmonero/lmdb /path/to/other/blockchain/database
Example: monero-blockchain-blackball ~/.bitmonero/lmdb /home/monero_fork/lmdb --rct-only
Windows
Open a command prompt in the location of the monero-blockchain-blackball file and type in the following, or create a .bat file in the same folder and add the following:
monero-blockchain-blackball.exe C:\ProgramData\bitmonero\lmdb \path\to\other\blockchain\database
Example: monero-blockchain-blackball.exe C:\ProgramData\bitmonero\lmdb C:\ProgramData\monero_fork\lmdb --rct-only

This tool will create a LMDB database with the blackballed outputs in a data.mdb file. Unfortunately, you need to convert this file to be read by the wallet software. You will need to follow these steps to convert the database to a list of outputs that the wallet can read.
In order to extract the data, you need to build the LMDB tools. Follow the instructions on GitHub to make the LMDB binaries. Then navigate to ~/monero/external/db_drivers/liblmdb and run the following:
./mdb_stat -a /folder/with/blackball/database
This will show the hash of the database that you have created. Take a note of the database name (eg: blackballs-418015bb9ae982a1975da7d79277c2705727a56894ba0fb246adaabb1f4632e3). You will use it in the next step.
You now need to extract the outputs that need to be blackballed. Use one of the following:
./mdb_dump -s blackballs-<hash> /folder/with/blackball/database/ | awk '/[0-9a-f]{64}/{print $1}' > /output/path/file.txt
./mdb_dump -s blackballs-<hash> /folder/with/blackball/database/ | grep ^.................................................................$ | tr -d \  > /output/path/file.txt
The resulting .txt file can be imported into the official GUI and CLI.


Moving monero from Poloniex or Bittrex to a paper wallet Could I send Monero from an exchange (such as Poloniex) to the public address of my paper wallet?  Would that work?

I'm new to all this and not a techie person.

Thanks.

Yes, that would work. Just make sure you don't lose the seed for your paper wallet.


List of common Monero terms and definitions Monero utilizes many of the same concepts as Bitcoin but has a code-base that looks vastly different. CryptoNote and Monero introduces a lot of new terms that may not be familiar to all Bitcoin users

Is there a comprehensive list of most common Monero terms with there associated definitions?

There are several lists, each of which is community generated and a work in progress. Since Monero technology continues to evolve, there will always be a need to add additional terms, and in some cases depreciate old ones that are no longer used.

This stack has a list of Monero tags that is continually user updated with new and improved definitions

Moneropedia on the official Monero website has many important definitions but is in need of more. Community members are encouraged to build upon the current Moneropedia list.

The Monero and CryptoNote wikipedia pages are also helpful community generated resources for learning the meaning of Monero terminology.


Why does monerod allow mining from a pruned blockchain? I started a new node from scratch with monerod --prune-blockchain, so when the blockchain was finished syncing, it only took up about 35GB on disk. My understanding is that one of the main tradeoffs on running a pruned node is that it is not possible to mine from such a node; that mining requires the full blockchain.
However, I was perfectly able to connect the monero-wallet-cli to this node and have it start generating hashes. I didn't think this was possible?
Do I have any incorrect assumptions here, or is this incorrect (or pointless) behavior of the daemon and wallet?

My understanding is that one of the main tradeoffs on running a pruned node is that it is not possible to mine from such a node; that mining requires the full blockchain.

That is simply not true.
The tradeoff running a pruned node is for the network as a whole, i.e. other people wont be able to sync certain blocks (i.e. the ones you've already pruned), from your node. This is why when running a pruned node, a percentage of blocks are left unpruned. This means, assuming everyone was running pruned nodes, a new user needs to sync from many other peers.
A simplified example: Imagine a network of only 3 people, Bob, Carole and Ted. And let's say the blockchain is 60 blocks deep. Bob, Carole and Ted have all synced, verified and pruned their chains and each left a different 3rd unpruned. Bob didn't prune 1-20, Carole didn't prune 21-40 and Ted didn't prune 41-60. Now, when new user Alice decides to start using Monero, she needs to sync and verify the whole chain (as a new user does). To do so however, she needs to sync each of these separate unpruned sections from Bob, Carole and Ted. After syncing and verifying, Carole may also prune.


COMMAND_TIMED_SYNC invoke failed - Not Syncing, how to fix it? I get the following errors in 0.10.3.1:

2017-03-26 18:38:04.710 [P2P3]  ERROR   net.p2p src/p2p/net_node.inl:1504   [217.197.200.211:40472 INC] COMMAND_REQUEST_SUPPORT_FLAGS invoke failed. (-6, LEVIN_ERROR_CONNECTION_HANDLER_NOT_DEFINED)
2017-03-26 18:38:16.002 [P2P5]  ERROR   verify  src/cryptonote_core/blockchain.cpp:1012 coinbase transaction spend too much money (8.151603996028). Block reward is 8.144339615119(8.025326901329+0.119012713790)
2017-03-26 18:38:16.002 [P2P5]  ERROR   verify  src/cryptonote_core/blockchain.cpp:3339 Block with id: <aac8ed9ea67629e438175128ebbf5dd4d381934ce4d59487eb6e4e1bd1f7396b> has incorrect miner transaction
2017-03-26 18:38:27.352 [P2P7]  ERROR   verify  src/cryptonote_core/blockchain.cpp:1012 coinbase transaction spend too much money (8.151603996028). Block reward is 8.144339615119(8.025326901329+0.119012713790)
2017-03-26 18:38:27.352 [P2P7]  ERROR   verify  src/cryptonote_core/blockchain.cpp:3339 Block with id: <aac8ed9ea67629e438175128ebbf5dd4d381934ce4d59487eb6e4e1bd1f7396b> has incorrect miner transaction
2017-03-26 18:38:27.437 [P2P7]  ERROR   net.p2p src/p2p/net_node.inl:819    [199.231.85.122:18080 OUT] COMMAND_TIMED_SYNC invoke failed. (-3, LEVIN_ERROR_CONNECTION_DESTROYED)
2017-03-26 18:38:38.702 [P2P9]  ERROR   verify  src/cryptonote_core/blockchain.cpp:1012 coinbase transaction spend too much money (8.151603996028). Block reward is 8.144339615119(8.025326901329+0.119012713790)
2017-03-26 18:38:38.702 [P2P9]  ERROR   verify  src/cryptonote_core/blockchain.cpp:3339 Block with id: <aac8ed9ea67629e438175128ebbf5dd4d381934ce4d59487eb6e4e1bd1f7396b> has incorrect miner transaction
2017-03-26 18:38:38.786 [P2P9]  ERROR   net.p2p src/p2p/net_node.inl:819    [73.153.12.207:18080 OUT] COMMAND_TIMED_SYNC invoke failed. (-3, LEVIN_ERROR_CONNECTION_DESTROYED)

Any Ideas?

I exported the blockchain from another node I have and imported to the failing node. Seems to have fixed the issue and it is now syncing and up to date.


I just bought monero payment ID help I just bought Monero on Binance exchange and a warning came up saying I need both a payment address and payment ID, or my money spent will be lost.  This didn't happen with other transactions.

Please help me.  I can't afford to lose my investment in Monero!

Thank you!!!

Typically when you 'join' an exchange, everyone's coin is in a single address/wallet run/owned by the exchange.  The payment ID is a way to keep records of who owns what.  Kinda like a sub wallet. Or your account number.
The exchange should give you a payment ID to use for the transfer.


Is the syncing time a good benchmark to evaluate Monero resource requirement with high tx/s? It took about 6h to sync my node with monerod 0.10.0
(It might have taken less time, I can't recall the exact time unfortunately)

Monero has about 240,000 tx in the blockchain last year. (moneroblocks.info)

I couldn't find the Monero total tx number.

I will assume 300,000 should be a good estimate.

That seems to suggest my computer can handle 300,000 x 4 = 1,200,000 tx a day.
About 14 tx/s

It is a fair estimate?

It's going to vary quite a bit between machines, the CONOP (Cost Of Node OPeration) should hopefully average out such that the tps of any given day will be reflective of the number of nodes in operation to verify and relay those transactions without performance degrading to the point that miners lose money.

This video on dynamic blocksizes and CONOP breakdown to determine decentralisation and scaling may provide some useful info on the subject.


MRL RingCT research in the Ledger Journal I understand that Ledger:

  is a peer-reviewed scholarly journal that publishes full-length original research articles on the subjects of cryptocurrency and blockchain technology, as well as any relevant intersections with mathematics, computer science, engineering, law, and economics.  It is published online by the University Library System, University of Pittsburgh.

What are the background and qualifications of those assigned to do the peer review? Do we know the identity of "reviewer A" and "reviewer C" that are cited in the open review?

How many readers does the Journal have?

Who was behind the decision to include Ring Confidential Transactions by
Shen Noether, Adam Mackenzie, of the Monero Research Lab as the first scholarly article in the first issue of the journal?

What are the background and qualifications of those assigned to do the peer review? Do we know the identity of "reviewer A" and "reviewer C" that are cited in the open review?

As with most academic journals, the reviewers are selected by the editor(s) of the journal. Reviewers are chosen based on their qualifications as they relate to the content of the article. (For instance, you wouldn't ask a cattle farmer researcher to review an article about cryptography).

As is common in academic peer review, reviewers identities are not revealed to either the authors of the article or the readers. Ledger is actually at the forefront of publication rigor by providing open reviews.

  How many readers does the Journal have?

According to the web page, the article has been viewed 1386 times at the time I'm writing this response.

  Who was behind the decision to include Ring Confidential Transactions by Shen Noether, Adam Mackenzie, of the Monero Research Lab as the first scholarly article in the first issue of the journal?

The editor(s) of the journal. So someone in this list: http://www.ledgerjournal.org/ojs/index.php/ledger/about/editorialTeam


For people with spare Raspberry Pis what is the easiest way to get a full node running? I got some raspberry pi 3s kicking around and would like to put them to use.

For your pi 3, just grab the ARMv7 binaries. https://getmonero.org/downloads/
They'll work for pi 2 as well. If anyone is trying to run a node on pi 1 or pi zero, I can upload ARMv6 binaries but I believe the plan is to drop support for these ARMv6 devices soon.

ARMv6 binaries now available: https://www.reddit.com/r/Monero/comments/543euo/monero_unofficial_arm_builds/

Also ARMv8 binaries for boxes running 64bit OS. This excludes raspberry pi 3, which only ships with a 32bit OS, and doesn't support ARMv8 crypto instructions.


Is moneropool safe to use? Moneropool is currently the second result when googling, "monero mining", however its suggested miner crytonote-easy-miner gets flagged as a trojan by firefox and windows defender. I've read that legitimate cryptocoin miners sometimes trigger false alarms due to actual malware containing them as a payload. Is this such a case? If so why are there no warnings on Moneropool that you're likely to run into this using their suggested miner?

Answering whether a mining pool (or anything in the cryptocurrency space) is safe is an especially tough challenge, but I will try to look at the things that you should consider if you are evaluating a pool's trustworthiness.

First, let's look at the pool's size:

moneropool.com currently has a reported hashrate of ~517 kH/s out of a total network hashrate of ~24.7 MH/s according to http://minexmr.com/pools.html.
According to the pool, it currently has ~135 workers.
This means the pool's workers average ~3.8 kH/s each.

For comparison, one of the largest Monero pools throughout the currency's history is monero.crypto-pool.fr, which has a hashrate of ~4.4 MH/s and ~350 workers, or 12.6 kH/s per worker.

What we can draw from this is that moneropool.com is relatively small in the grand scheme of Monero at a little more than 2% of the total network, and also that smaller miners tend to use the pool. Neither one of those things sound unreasonable, and even at 2% the pool should be able to pull in ~14 blocks per day (there are ~720 blocks each day, once every two minutes). As a sanity check, the pool's reported 11 blocks found in the past 24 hours as of this moment, but over 30 in the past 48 hours. Since some variance is to be expected, this all sounds good.

Now, lets look at some other indicators:

According to minexmr.com/pools.html, moneropool.com seems to have a somewhat sinusoidal (wave-like) pattern to its usage, with significant daily highs and lows in terms of hashrate. This could be a number of things, but a few come to mind:

One or more sysadmins mine with moneropool.com, and use unused servers and computer resources to mine at night when their systems are idling.
moneropool.com miners have found some pattern with Monero and another coin that shows that it is more profitable to mine one during the day and the other at night.
A botnet is mining with moneropool.com that relies of computer systems either idling at night or being turned on during the day.

Please note, none of those three things necessarily say anything about the pool. But they may make you more or less inclined to participate.
moneropool.com is using what has essentially become the gold standard in Monero mining pool software, Matt Little's node-cryptonote-pool (https://github.com/zone117x/node-cryptonote-pool). This seems reasonable, and at first glance nothing seems forged or off about it.
moneropool.com has a relatively small payout threshold of 0.5 XMR. This seems both reasonable and like a good way to promote a pool to small miners.
A quick whois lookup for moneropool.com shows that it was registered through Namecheap.com, a relatively common domain seller, and has been in operation since 15 May 2014, meaning it is over two years old.

Now what does all that mean?

Well, as I prefaced, it can be challenging to say with certainty that a pool is legitimate. However, a quick look at some basic stats do seem to suggest that moneropool.com is at least worth considering. My suggestion? Use it for a week with a small hashrate, then use another pool for a week, and see which pool you like better. Ultimately, there is only so much "evil" any mining pool can do.

My other bit if advice? If a pool suggests a specific miner, be sure to check with a number of other pools to see if they also suggest that miner. Then ask on reddit, bitcointalk, or here to make sure the mining software is valid. Mining software, and not the pools, are where you can really get in trouble if someone is looking to compromise your computer or wallet.


Non-Deterministic Wallets Is it possible in Monero to have non-deterministic wallets (setting aside ergonomic issues such as ease of setting up the wallet)? I.e., if I use two random numbers as private spend and view keys, will they constitute a useable but different wallet than the same private spend key paired with its derived private view key?

If the answer to the above is positive, does one lose any functionality by using such a wallet?

Originally Monero used non-deterministic wallets. Deterministic (and mnemonics) are a convenience feature.

Take a look at the --non-deterministic command-line flag, which will generate a non-deterministic wallet, and also --restore-from-keys flag, which will restore a non-deterministic wallet (by prompting for the view and spend keys).

No functionality is lost (beyond any ease-of-use issues).


Transaction Error (Wrong Amount) through MyMonero Wallet? Good Afternoon,

at 7am MET i sent 50XMR through mymonero wallet to bf exchange.
transaction confirmed quickly (around 8am MET) and the CORRECT deposit of 50 XMR  showed up in my exchange's wallet.

Since then, until now (6.5hrs later) mymonero wallet is showing that i sent 149.91XMR instead of 50XMR.

Also the Balance in Mymonero is deducted by the 149.91XMR.

I double and tripple checked wallet and payment id's - everything is correct.

Is it a known bug or what could it be ?

thx

MyMonero deducts the full input amount from your balance once you send a transaction. It'll normally correct once the transaction is mined. However, MyMonero is currently under heavy load and therefore might not be able to correct properly.

To go into more detail. Let's say you received an 100 XMR from an exchange, a service, or someone who you traded with. Subsequently, if you make a transaction, of 50 XMR, it'll use that 100 XMR output as input. Thus, you have a transaction with 1 input (100 XMR) and 2 outputs, i.e., a 50 XMR output (minus the fee) that goes back as change to you (the sender) and a 50 XMR output that goes to the recipient. Once the transaction is sent, MyMonero will first deduct the full 100 XMR input from your balance. Then, once the transaction is mined, it'll correct the balance by "recrediting" the 50 XMR change.

Note that you can verify whether the change output was sent back correctly to your address by using this guide:

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

You have to use the private view key and the public address of the sending wallet in order to decrypt / verify the change output.

P.S. If you have trouble grasping the concept of inputs and outputs, think of them like bills. Let's say you received $20 from your grandma for your birthday. This $20 is the output you initially receive. Subsequently, you use that $20 to buy some groceries worth $10. You hand the cashier your $20 bill and will get $10 back from him/her. In this "transaction" the $20 bill is used as input, the $10 you have to pay for groceries is the output that goes to the recipient, and the $10 change you get back is the output that is sent back as change to the sender.


How to connect to my own remote node? I'm trying to connect to my own remote node by running

./monero-wallet-cli --daemon-address <my ip>:18081

but this command fails: Daemon either is not started or wrong port was passed
The daemon is up and running. If I try to run the cli from the same machine as the daemon, using localhost:18081 then everything works. And if I try to run the cli from the same machine using <my ip>:18081, it fails again. I'm getting my IP by googling my ip.
What am I doing wrong? Should I run the daemon with special flags (right now I'm not using any)?

Edit:
I saw another question suggesting to run a node for remote connections with

./monerod --rpc-bind-ip <external.ip.of.node> --restricted-rpc --confirm-external-bind

But this command results in a failure on the node itself:

Exception in main! Failed to initialize core rpc server.

2nd Edit:
As the accepted answer suggested, I had to forward port 18081 to the machine running the daemon (from the router settings). I also had to --rpc-bind-ip to my local ip, not the external.

This is a common issue on first configuration. You need to open any firewall on port 18081, and/or forward this port on your router. Otherwise, the connection attempt is rejected.

If you open your RPC to the external world, you may want to also use --restricted-rpc, which disables some RPC which could give the client too much information.


If I re-sync the blockchain will I lose my coins and wallet address? I had a hard reset and now I'm getting the following error "Daemon fails to start."  Both with the GUI and command line.  The GUI still displays my coins and wallet name. Looks like I need to re sync with the blockchain. Before I do this I need to know whether I lose my coins and wallet address.  I have payouts coming from mining pools too so I need to keep my wallet address. Thanks

No, you will not lose coins nor address.

The blockchain does not contain your keys. It's a copy of a distributed live data structure. Your wallet keys (from which your address is derived) are stored separately, and are used to scan the blockchain, but are not part of it. They're stored in the <wallet-name>.keys file (which can be recreated using the 25 word mnemonic seed which you carefully saved when you created the wallet).

But you might not need to resync the chain: maybe running monerod with --db-salvage will fix it. No guarantee, but it sometimes gets it back in a good state.


How to back up only new blocks on blockchain using rsync Using rsync in the normal way copies the entire blockchain to backup every time new blocks are added. To get around this, I used the --append flag, however even though the size of the backup is the same as the newly updated blockchain, if I run monerod connected to the backup, it does not show the backed up blockchain as synced. So, is there a way to back up my blockchain incrementally in a way that the backed up blockchain will be usable and correctly synced?
This post does not give a correct answer as that simply copies over the whole blockchain every time that rsync command is run, which does not help at all.

There are two included tools that can help here: monero-blockchain-export and  monero-blockchain-import.
If you backup (i.e. export) to a bootstrap file (a .raw file, the default), it keeps track of its current height and thus subsequent exports will simply append to the output file.
Upon restoration (i.e. import), if your database already exists, the default is to resume importing from the current height.


What is the correct way to make a systemd service file for monero-wallet-rpc I want to setup monero-wallet-rpc as a systemd service. I have attempted to do this with my minimal systemd experience, however I am having some issues.

When I start the service I am not returned to a prompt.

When I stop the service, it continues to run.

It also does not deleted the wallet lock file.

I would also like it to wait for about 60 seconds after the Monero Node starts up. (monero-node.service)

In case it matters I am running this on Ubuntu LTS 16.04

[Unit]
Description=Monero Wallet RPC Daemon
After=network.target monero-node.service

[Service]
User=root
Group=root
Restart=always
RestartSec=60
Type=forking
ExecStart=/opt/monero/bin/monero-wallet-rpc --wallet-file=/opt/monero/wallets/monero_wallet.bin --password itsaseceret --daemon-address 172.16.254.80:18081 --rpc-bind-port 8082 --log-file /var/log/monero/monero-rpc.log --rpc-bind-ip 172.16.254.80 --confirm-external-bind --disable-rpc-login

GuessMainPID=no

[Install]
WantedBy=multi-user.target

I got it working a little better, however every once n a while, the wallet rpc service stops and tries restart, but can't because the wallet lock file still exits.

[Unit]
Description=Monero Wallet RPC Daemon
After=network.target monero-node.service

[Service]
User=root
Group=root
Restart=always
RestartSec=60
Type=simple
ExecStart=/opt/monero/bin/monero-wallet-rpc --wallet-file=/wallet.bin --password Seceret_Password --daemon-address 172.16.254.80:18081 --rpc-bind-port 8082 --log-file /var/log/monero/monero-rpc.log --rpc-bind-ip 172.16.254.80 --confirm-external-bind --disable-rpc-login

[Install]
WantedBy=multi-user.target


Step by Step tutorial to mine RandomJS on Wownero? Is there a step by step guide on how to mine RandomJS on wownero since its the only monero clone that has randomjs implemented as of July 2018.

RandomJS is not used as a proof of work for Wownero.


What is the relevance of the restore height? Still learning this stuff.
But when restoring a wallet from seed, it gives an option for restore height (date).

Do/should I set this to just before my first transaction?  Or more on point if I set it to a month ago, will it still show correct balance?

The wallet application will scan the blockchain from the height you have given. If there were transaction linked to your address before that height, they will not be included and your balance will probably be incorrect (unless all the previous transactions add up to 0).

So yes, try to use a height that is a little before your first transaction on that address and you will be fine.


Can I use Coinhive to mine Monero without problems with Google Safebrowsing? I have several popular freeware applications and also some popular web apps and I would like to monetize them. So I'm thinking about using Coinhive Captcha on my website and let visitors of my website mine (not secretly) Monero for me. Do you think I can do that without getting problems with Google Safebrowsing?

Google Chrome as far as I'm aware doesn't block the coinhive miner that asks for your permission, so unless you're having an issue already I think you'll be fine.


Wallet RPC API wallet creation I decided to build a python GUI wrapper around monerod and monero-wallet-rpc. Following https://getmonero.org/knowledge-base/developer-guides/wallet-rpc and https://moneroexamples.github.io/python-json-rpc/ are great, but this requires a wallet to have already been created. Is there a way to generate a new address via API calls? My instinct says no but I thought I would ask. What is another option for wallet creation? Extracting the relevant wallet creation methods in the monero-project/monero source?

Edit:

Current working solution:

#!/usr/bin/env python
from subprocess import PIPE, Popen

wallet_name = 'new'
wallet_pw   = 'new'

p = Popen(["./monero-wallet-cli", "--generate-new-wallet",
                      wallet_name, "--password", wallet_pw,
                      "--log-level", '1', '>stdout.log'],
                      stdout=PIPE,
                      stdin=PIPE,
                      bufsize=1,
                    )
out = p.communicate(input='0\n')[0]
print('response:\n\n\n')
print(out)

This doesn't seem elegant, but it's my current solution. New wallet is created with user specified password, then I open monero-wallet-rpc as a process and make RPC calls from python.

There is no RPC to create an address.
If there would be one, it would be one that would also "forget" the current one, so it would have limited usefulness.

If you want to have your own code to create addresses, you can either take code from wallet2.cpp and the cryptonote libraries, or use the Javascript version as a base: https://moneroaddress.org/


Monero Wallet RPC: tx_blob is always empty I'm attempting to create a transaction for broadcast later but tx_blob always returns empty. tx_metadata is populated so I attempted to relay that at: https://monero-stagenet.exan.tech/rawtx but it was rejected.

  The data does not appear to be signed raw tx! Data prefix: 0xffffffd3]z0xffffffef~0xffffffb90xffffffefn0xffffffbd0xffffffeb^0xffffff9c0xffffffeb0xffffffde0xffffffda0xffffffeb^0xfffffff80xffffffeb0xffffffde0xffffff9f

Request:

{
  "params": {
    "unlock_time": 0,
    "ring_size": 7,
    "priority": 1,
    "mixin": 7,
    "get_tx_metadata": true,
    "get_tx_key": true,
    "get_tx_hex ": true,
    "do_not_relay": true,
    "destinations": [
      {
        "amount": 1000000000000,
        "address": "56Wfz6VXwNJcek5fmSGV6P2Li5oSDzJvKf3rkfxue1Qd67Y18MPmKwTeR656bLqmXvHPFJ1vdsk6K4AzAuPp6yJmVSVqyqF"
      }
    ]
  },
  "method": "transfer",
  "jsonrpc": "2.0",
  "id": 0
}

Response:

{
  "id": 0,
  "jsonrpc": "2.0",
  "result": {
    "amount": 1000000000000,
    "fee": 13564070000,
    "multisig_txset": "",
    "unsigned_txset": "",
    "tx_blob": "",
    "tx_hash": "bc8bb62afca7bd35e8df7a9b8da71b33164a123d8b81b97413ea835e65908a3f",
    "tx_key": "8a607569d6d69e5888ba43bbb2020dd6fa5ba323393aba9eabff852ec45aea0b",
    "tx_metadata": "011673657269616c697a6174696f6e3a3a617263686976650000000103000001020000000101000000010300000..."
  }
}

If you are using the relay_tx method, you're supposed to pass the tx_metadata to it.

See the method here.

I can confirm it works fine.


Mining from monero-wallett-cli I have a question about mining with moderod. If I mine from monerod, I must specify wallet address and cpu core to use, but if I mine from monero-wallet-cli, a 'start_mining' command is enough.

So, my question is:

mining from wallet, do the mined coins go straight to the wallet? Is it right?

Yes, any mining rewards will go to the wallet from which you executed the start_mining command.


How to authedmine.com mining 24/7? (Coinhive) I'm using Coinhive for the first time. I setup the JS on my website. When I click on the "Open" miner link in my Dashboard, it brings me to a simple page that displays the hashing/mining happening in real-time. This is great but when I close the authedmine browser tab, the JS stops mining across all browsers instantly.

My question is: Do I need to keep this authedmine.com tab open 24/7 for mining to persist?? That seems a little crazy. Am I missing something here? How do I continue mining XMR after I close the authedmine tab?

Coinhive is a javascript-based miner. Since Javascript is web-based, you have to keep the page open in order for it to stay active.


Why are coinbase transactions locked for 60 blocks? "Normal" transactions are locked for 10 blocks to prevent invalid outputs from being used in ring signatures.

Why are coinbase transactions (mined coins) locked longer? Are there additional risks linked to those transactions?

As far as I understand, this is to make sure that the coins were mined on the longest blockchain, and thus the longer "delay" of 60 blocks is meant as a safeguard against transactions becoming invalid because of blockchain reorganizations. These might change several dozens of blocks sometimes.

While 60 blocks should typically be enough, I have seen some larger blockchain reorgs on testnet. So, if you were to spend mining rewards of blocks that would later become invalid, that transaction would also be invalidated.


Transfer using cli and choosing lowest fee? How do you write the command to set the lowest fee during a transfer with the monero cli?

You have to understand priority levels using the transfer command. Read: What does the "default" priority (priority = 0) do in monero-wallet-cli?

There are 4 levels:

First note that the priority levels unimportant, normal, elevated, and priority correspond to multipliers of x1, x4, x20, and x166, respectively.

To send with lowest you would do:

transfer unimportant <address> <amount>

Example output:

[wallet 46xxxx]: transfer unimportant 4BSX2Par....LU2T6xxx 2

There is currently a 1 block backlog at that fee level. Is this okay?  (Y/Yes/N/No)Y
Sending 2.000000000000.  The transaction fee is 0.003088120000
Is this okay?  (Y/Yes/N/No): Y
Transaction successfully submitted, transaction <xx9xcvd3434...3243>
You can check its status by using the `show_transfers` command.
[wallet 46hxxxx]:


Can an output public key appear more than once in the blockchain The output public key 9b2e4c0281c0b02e7c53291a94d1d0cbff8883f8024f5142ee494ffbbd088071 appears in the the following blocks:

https://moneroblocks.info/search/000e412e54c9ef87f175c3645ca82a3046b125f6e032019b353df343f123d703
https://moneroblocks.info/search/0006a06fc3e6f4927e4e4a51d592887ebdf31c10fda5c0966356b2fb09131544
https://xmrchain.net/tx/c88ce9783b4f11190d7b9c17a69c1c52200f9faaee8e98dd07e6811175177139

Is this possible?

Is this possible?

Yes. It can appear in multiple blocks / transactions. It being an input/output doesn't make it the real one vs a decoy though.


Should Monero use ElGamal commitments instead of Pedersen commitments? Following on from the Q/A
regarding "perfectly hiding and computationally binding" commitments, it is
mentioned ElGamal commitments can be used to flip the commitment properties to
become "perfectly binding and computationally hiding". How does this work and
why doesn't Monero prefer this?

Let's first recap the concept of input and output spaces. In our Pedersen
commitments, we are perfectly hidden because the input space is larger than the
output space - we have a many-to-one relationship. For our binding, the spaces
are the same size, the relationship is one-to-one, so can only be
computationally bound. The inverse of these relationships flips the properties of the scheme. The way ElGamal commitments flip these properties is by
publishing an extra point in the commitment (so the commitment now consists of 2
points). As an example:

C1 = xG + aH
C2 = xH
C = (C1, C2)

Here, our input space is the tuple x,a (two 253 bit scalars) and our output space is the same size, a tuple of two points C1,C2 (two 253 bit points). This is guaranteed distinct because of the mapping of x to xH and the fact there can only be one input tuple that maps to a single output tuple. It is only computationally hidden because x can theoretically be extracted from C2 and then xG can be subtracted from C1 leaving aH, from which a can be theoretically extracted. Thus a is computationally hidden.

Importantly, it is perfectly bound because an
adversary cannot open a commitment to a different amount a to that which
was originally committed. Or in layman terms, change a, x will have to
change, verification of the original commitment fails. Or to put another way,
changing a or x, one cannot construct a matching commitment to that of the
original commitment. It's perfectly bound and computationally hidden.

So there is nothing stopping us switch to using perfectly bound and computationally hidden commitments. However, these come with a serious drawback,
size. In a Monero transaction, there are a lot of commitments (they are used
in both the ring signatures and range-proofs), and ElGamal commitments require
an extra 32 bytes each (the extra point). So given that both properties are
important to not be broken (the hiding of amounts and the binding of the
commitments), and that the computationally strength is considered sufficiently
strong for the foreseeable future (we are some way off being able to solve the
discrete logarithm problem), and that even when the DLP can be effectively
solved, there would be far more pressing problems to face. Therefore deciding on
whether to use computationally/perfectly hidden/bound commitments right now,
boils down to other factors, and in our case this is predominantly the size factor.

Therefore, it's fine for now to use either scheme, though preferable to use the smaller
of the two. By the time the DLP is solvable, and we have implemented a
replacement, all past Pedersen committed amounts will still remain hidden, but
there will have to be a new binding & hiding scheme to protect against hidden
inflation.  Which brings us to another subtle reason why the Pedersen
commitments (perfectly hiding and computationally binding) are preferable.
Assuming a replacement is found before the DLP is easily solvable, a migration
to a new hiding and binding scheme could be done such that the older, weakened,
bound commitments could be phased out (e.g. marked as untrusted from a certain
point in time) and only the newer scheme trusted for subsequent transactions.
Flipping the scenario, if we used computationally hidden and perfectly bound
commitments now, and the DLP assumption becomes broken, all past amounts would
become known with no migration plan possible that could be used to avert this.
And of course in the worst case scenario, of not having a replacement to the
broken DLP assumption (regardless of perfectly/computationally hidden/bound
commitments), there are far more problems than just Monero commitments!
Everyone's coins for any cryptocurrency could be stolen for one thing (e.g. it
would be possible to obtain the private wallet key for a given public wallet
key). SSH/PGP/SSL, all breakable. Thus, one can tend to assume we will have
alternative cryptographic schemes before the DLP is easily solvable - it's more
than just our silly [tic] cryptocurrencies that would be affected.

Hopefully these two posts have helped educate that the phrase "perfectly hiding
and computationally binding" is not some weakness in Monero, but rather refers
to specific properties of commitment schemes. No scheme can be both perfectly
binding and hiding and the computational strength is as strong as we rely on for
all other modern day cryptography applications.


What is the default behavior of monerod concerning the --max-concurrency flag? The default value for the --max-concurrency is 0. What does that mean? Will it not use any threads? Will it automatically determine the right amount of threads? If it is the latter, is there a way to query what value was determined?

By default, the value will be set to the hardware concurrency reported by boost. This is usually the number of CPU "threads" available. If this returns 0, no extra worker threads will be used (not sure if that got tested). I do not think monero logs what Boost claims, but you can use that function yourself in a test program:

http://www.boost.org/doc/libs/1_66_0/doc/html/thread/thread_management.html#thread.thread_management.thread.hardware_concurrency

Monero code needs threads, and will not function if threading is not available. This setting is designed for short lived CPU intensive operations such as signature verification, etc.


Possible to mine XMR on Nvidia P500 Pascal Mobile? I am getting the following CUDA runtime error

nvrtcCompileProgram failed: NVRTC_ERROR_COMPILATION
Program compile log: CryptonightR.cu(297): error: identifier "__activemask" is undefined
          detected during instantiation of "uint32_t shuffle<group_n>(volatile uint32_t *, uint32_t, int, uint32_t) [with group_n=2UL]"
(429): here

CryptonightR.cu(297): error: identifier "__shfl_sync" is undefined
          detected during instantiation of "uint32_t shuffle<group_n>(volatile uint32_t *, uint32_t, int, uint32_t) [with group_n=2UL]"
(429): here

CryptonightR.cu(474): error: identifier "__syncwarp" is undefined

CryptonightR.cu(611): error: identifier "__syncwarp" is undefined

4 errors detected in the compilation of "CryptonightR.cu".

[CUDA] Error gpu 0: <cryptonight_gpu_hash>:717 "device kernel image is invalid"

when trying

minergate-cli --user xxx@gmail.com --xmr 0 -g

I have Lenovo P70 with Nvidia Pascal P500. How to resolve the error?

It should be possible, but whether your miner supports it is another question.

I'll also point out there has been lots of people very sceptical of minergate. Just search Reddit and draw your own conclusions.

My recommendation is to use either xmrig or xmr-stack and one of the pools the community deem as honest.


Is it possible to attach a message to monero transactions? It would be useful if we can attach a message to monero transactions for reference. Is there any future features in the works to do something like this? Bitcoin has OP_RETURN with 40 byte limit.

Current software supports embedding arbitrary 256-bits or 64-bits into a TX. The 256-bit "payment ID" will be unencrypted on the blockchain (unless you encrypt before submitting). The 64-bit "payment ID" will be encrypted with the "shared secret" before bein written into the TX. This can easily be decoded by the recipient as it uses a scheme similar to how outputs are made (ECDH).

Since it allows any "hex" string of 64 or 16 chars, you could use this functionality today.

As TX-extra field is not subject to consensus rules (it's fundamentally a message field - it can be anything), you could make your own wallet implementation to put whatever you want in there. It would, however, be restricted by the max TX size and the receiving wallet would need to be able to recognize it as well.