How was the generator H for the RingCT scheme chosen? I'm reading the RingCT whitepaper by Shen Noether. The scheme requires a second random generator H such that its discrete logarithm w.r.t. G is not known. Paragraph 3.2 suggests two variants to generate H:

1. H = toPoint(cn_fast_hash(G))
2. H = toPoint(cn_fast_hash(123456*G))

The first option is supported by the comments in rctTypes.h. The function toPoint isn't defined, neither in the article nor in the Monero source code, but I assume it is the rct::hashToPoint function.

1. 80f9755245adc94e9f3a1bf9b891ba515b3e6ed324b61b350b8918da59c9d5fd
2. 24a1d0d7e659e986f31dae8d9a80234f518f6eb50346b04c98ca44df0f51c1e2

Both of them are not equal to the actual rct::H used in the official Monero code (again see rctTypes.h):

8b655970153799af2aeadc9ff1add0ea6c7251d54154cfa92c173a0dd39c1f94

I thought that rct::hashToPoint already contains the hash function and I need to just call H = rct::hashToPoint(G), but I again got different results:

rct::hashToPoint(G) = d6329b5b1f7c0805b5c345f4957554002a2f557845f64d7645dae0e051a6498a
rct::hashToPoint(123456*G) = 89c0517d869e740d47429b10b642137ef7c789cc6d4dbcf6293e5a18c6044d48

It is crucial for Monero's security model that no one knows the discrete logarithm of H w.r.t. G. I assume that the code uses the hash-to-point from some modified version of G, e.g. G times some scalar or with some prefix/postfix string, but I failed to get any info about that.

Recap, how exactly was H computed?

H can be verified by seeing how it's computed in the unit tests:

key G = scalarmultBase(d2h(1));
key H = hashToPointSimple(G);

When conducting the Bulletproof audit, the QuarksLab team dug into the verification of H also and documented this in section 4.3.4 (pages 15 and 16) of their report.


Is it possible to add coins to a wallet that were never mined? Since Monero's transactions are basically anonymous, is it possible to create coins that were never mined, so they don't originate in any coinbase? I understand that it's possible to add up all the coinbase amounts to ascertain some supply figure of the currency, but what about theoretical coins that could be created outside the coinbase, particularly if they are facilitated by Monero's opaque blockchain?

Is this hack theoretically possible?

It must be impossible. The underlying math is such that it is provably impossible. So no, it's not theoretically possible. Theoretical possibility would mean a broken coin.

I could imagine 2 ways to create coins in a TX:

Successfully double-spend the same output. However, this is not possible because of the key images mechanism.
Cheat the sum(in) == sum(out) equation, and make an output of greater amount than you have the 'right' to. However, this is not possible because of Pedersen commitment and range proofs.


How significant is the number of threads when mining? (I7-4790K) I'm currently mining XMR on a dedicated server that has an Intel I7-4790K CPU. It has 4 cores/8 threads, and 8 MB of L3 cache. I'm using cpuminer-multi. This is a full node with the monero daemon running (I'm not sure whether this uses enough resources to decrease mining performance or not, maybe someone can tell me.)

I've been trying to figure out what the optimal number of threads is and have been researching it but can't find that much on it. Also, everyone says something different.

On some places I see that people recommend that the number of threads should ideally be the amount of L3 cache (in my case 8MB) divided by 2 (this would be 4 threads). Other people recommend that the number of threads be the same as the number of CPU cores (in my case 4).

What should I do? Does the number of threads actually make a difference? What is the default number of threads used if you don't specify it when you run cpuminer?

Just to give an idea, I have it currently running at 4 threads, with a hash rate of approximately 200 H/s. This number fluctuates quite a lot actually, but seems to mostly be between 200-300 H/s.

The correct answer is a combination of what you've read. The maximum number of threads you should ever try to use is the number of CPU cores. Each thread uses 2MB of RAM, so your best performance per-thread will be if you only use your cache size divided by 2MB. In your case, it appears that you get the same answer, 4 threads, either way.

Yes, the monerod will occasionally need to crunch thru 2MB as well when it validates incoming blocks. And it will consume bandwidth when relaying transactions and blocks to other nodes. So that will have some impact on your performance.


Can I confirm that someone payed me only by transaction ID? I'm trying to sell something through monero,  but I wanna know that he has really payed me.  How can I do that?

Say my associate payed me already and the monero came through succesfully, how could I make sure it was him who payed me? Should I ask first for a transaction ID,  and then confirm it by running "show_transfers" command on "monero-wallet-cli"?

(Most common) You could give out a unique payment ID to the buyer. This is easily done using an integrated address, which automatically instructs the buyer's wallet to use that particular payment ID. You'd then wait for an incoming payment that specifies that payment ID. This is easiest for a seller, because they don't have to chase the buyer later to ask for additional information.
You could ask the buyer to use a random payment ID and tell you what it was.
You could ask the buyer to tell you the transaction ID after they've made payment.


What is a .bitmonero.conf template for setting up a public remote node to be accessed with the monerujo android wallet? I'm trying to setup my own .bitmoner.conf file and looking to create a public node to be used with the android monejuro app. What are the options I need to put in my .bitmonero.conf file? I want to set a custom rpc port, so i know i need: rpc-bind-port

What else do I need so I can protect myself from hacks but also still let me use it as a public node for monejuro?

Does someone have a template one can copy?

This is what I have:

data-dir=/var/lib/monero
log-file=/var/log/monero/monero.log
log-level=0
no-igd=true

rpc-bind-ip=0.0.0.0
rpc-bind-port=18089
restricted-rpc=true
confirm-external-bind=true

You may want to add

rpc-login=username:password

to restrict access if you must.

You can add comments by starting the line with a #.

log-level=0 reduces the log output of the daemon to a minimum. 4 being the maximum.


Provably burning Monero Is it possible to provably burn Monero? Does its use mandatory ring signatures and stealth addressing make proving that Monero was sent to a "burn address" impossible to verify?

If proof of burn is possible with Monero, how can it be done?

One way to do this is to use a very large unlock time. An unlock time value is either a block number (you can select one as large as ~1900 years from now, which is arguably not burned forever, especially if block time changes) or a UNIX time (you can then lock it for about 292 billion years, which should be enough for most purposes).

Another way would be to make a new address with a "funny looking" address, that corresponds to a normal view key part, and a public spend key that's so specific that it was obviously crafted, rather than derived from a private spend key. You can then be sure that the private spend key is unknown. You then send the burned monero to that address, and make the view key public. Since the view key is normal, people will see the incoming monero, but since the private spend key is unknown, nobody will be able to spend those. This is the typical way Bitcoin derivatives burn coins.


How to receive balance change notifications? Few days ago I asked on IRC how to receive notifications about incoming transactions and was pointed out that it's possible to do via freshly added 0MQ protocol.

Looking through the PR I didn't find much and as far and while documentation is being prepared I want to ask what is most effective strategy to receive change of balance notifications?

With latest monero-wallet-rpc you can have an application run on each incoming tx to the wallet.

From the --help:

  --tx-notify arg         Run a program for each new incoming
                          transaction, '%s' will be replaced by
                          the transaction hash

Another simple solution is polling incoming_transfers.


Do coins mined per day scale linearly with computing power? In other words, if I double my number of video cards, should I expect twice as many coins mined per unit time? From what I can gather, coins are rewarded in a winner-take-all fashion, so if you have more computing power, your pool can solve the next block in the chain before anyone else, and so rewards would favor people with more computer power in a non-linear way.

Well, it's close to linear.  It basically is.  If there are 200 billion hashes per hour on the network currently, and if you are providing 200 thousand of those hashes, then you have a 1-in-a-million chance of scoring a block, right?  If you double your hashing from adding a card, then you have a 2-in-a-million chance.  But that's using rounded numbers (which are most applicable to the real world generally).

But let's imagine that you decide you want to run a million of those 200K hash cards.  You'd be performing 200B hashes per hour.  But the network was already at 200B/h, so now it's at 400B hashes per hour.  So instead of you having a million-in-a-million (100%) chance, you'd only have a 50% chance of scoring any given block.

To address the added concern, the law of averages effectively says that only in appearance will the pools take greater than their share of winnings.  If a pool is mining at 40% of the hash rate of the network, they have a 40% chance of winning a block.  It really is as simple as that.


What’s the difference between sharding and pruning? In the context of blockchain size manageability, I have seen both the terms sharding and pruning mentioned. Sharding mostly for Monero, and pruning mostly for Aeon. What is the exact difference between the two?

Pruning the blockchain means removing some data from it, like old transaction signatures and range proofs.
For example, your Monero daemon could store an incomplete version of all the blocks older than one week (no signatures, no range proofs) to save some space, and it would still have all the info (inputs, outputs) allowing a wallet to check its balance.

Sharding means means separating the blockchain data in several sets, and storing only one of these sets.
For example, if there were a set for blocks with an even block height and a set for odd block height, your Monero daemon could store the data for blocks with an even block height only. In this case, a wallet would have to connect to several nodes (at least one in each set) to get all the info allowing it to check its balance.


Universal pool configure mining wallet We have created a mining pool with Monero as a universal pool.
I want to know how long it will take to start digging and earn what is mined in my wallet.

You obviously have to find a block on your pool. Afterward, wait for the 60 blocks confirmation of the coinbase transaction.


I upgraded to a new My Monero App now I lost my coins? I download the update 0.17.0.1-afc2e84(QT 5.9.9) and now it's taken me back to the original options (language, mode selection, open a wallet etc. Where do I find my old wallet key on my PC? I don't remember any of the mnemonic words and don't believe I have them written down. I have my username, password, phone etc. will this help? Thanks

You will need your mnemonic seed. Since you've found it, what is your restore height? You might need to lower it a bit, it depends when was the last transaction.


Can I change limit_up speed? Default is 2047 kB/s. If I am able to increase this, would it be advantageous for the network? If I were to increase it, what would be a good number?

You can change them, either when starting monerod:

  --limit-rate-up arg (=-1)             set limit-rate-up [kB/s]
  --limit-rate-down arg (=-1)           set limit-rate-down [kB/s]
  --limit-rate arg (=-1)                set limit-rate [kB/s]

Or at runtime:

  limit                   limit <kB/s> - Set download and upload limit
  limit_down              limit <kB/s> - Set download limit
  limit_up                limit <kB/s> - Set upload limit

Which settings are best is really down to your own connection speeds. You'll want to set something that's below your max speed, so your normal Internet use doesn't get wedged.

More bandwidth is advantageous for the network, as it means you can exchange historical blocks after, allowing peers to get up to speed more quickly. Make sure you have incoming connections working (ie, setup port forwarding on your router as appropriate, and check that the monerod status command gives you a X+Y connections where both X and Y are greater than zero).


Use payment ids/integrated wallets in web applications I am developing a web application and would like every user to have there own monero address they could send XMR to, so how could I make that work in php or javascript.

I'm not clear about your web app, like will the user be sending XMR or receiving XMR?  I'm assuming they will be sending, so maybe just have one exchange address that your backend service uses and then assign payment Id to each user.  Then they don't have to see any address, just a payment Id. A stable exchange like Bittrix are up 24x7 and pretty secure.  A drawback is paying an extra fee if/when you move it to your own wallet. But if/when you cash out you need an exchange so keeping it there would be a wash then (fee wise).


Windows vs Linux vs. OS X Monero user distribution Is there any data on the current distribution of Monero users by Operating system?

Useful data could include the following:

Download data from: https://getmonero.org/downloads/
Any estimates about how often each OS is used among users who build from source: https://github.com/monero-project/bitmonero
Estimates (or self reported data) on the percentage of nodes hosted by VPS (which may also answer the OS question depending on the VPS plan chosen)
Estimates (or self reported data) on the percentage of miners by OS

We don't log download stats from downloads.getmonero.org on purpose, but even if we did the stats would be skewed. Windows users, for instance, will almost unilaterally download a binary. A large portion of Linux users, on the other hand, will compile from source.

The only way to get this sort of breakdown would be to capture stats on all possible sources, and then we risk leaking user metadata that we'd rather not have.


Is i2p-zero integration accessible from monerod cli in 0.15? I've heard conflicting answers on this, and would appreciate a definitive response.

One of the reasons i2p-zero was developed was to provide a version of i2p that could be integrated directly into Monero, so a separate install wouldn't be needed.

According to Justin Ehrenhofer on twitter, the i2p-zero integration didn't make it into the GUI, but did make it into the CLI.

However, browsing through the CLI documentation for all the different flags, I see support for i2p that has been separately installed, but I see nothing that would indicate that i2p-zero was successfully built into the executables and is accessible from CLI.

Is i2p-zero now built into Monero? If so, what are the flags to access it? Can you point me to the documentation for those flags, or a tutorial? Note that I am already aware of ANONYMITY_NETWORKS, but as far as I can tell this only applies to a separately installed and configured i2p. I'm ideally looking for a flag that you can set to use the built-in i2p-zero to run the node.

The i2p (and tor) integration is purposely implementation agnostic - i.e. it is designed to work with any i2p/tor router implementation. There has not yet been any agreement I'm aware of for packaging a specific router implementation with the core CLI tools.

The GUI however has slightly different nuances / needs when it comes to i2p/tor integration in that typical GUI users just need / want single-click style integration / activation. Hence the first work planned for GUI (if I recall correctly) is to offer the option of downloading and auto-configuration of i2p-zero from within the GUI, not actually packaging i2p-zero alongside the GUI binaries.

The first step was getting the daemon able to use any i2p/tor router, and this was released in v0.14. After this work was completed, then work could begin on the GUI (as outlined above). This was tentatively aimed for the v0.15 release, but unfortunately other priorities got in the way.

So to answer your specific questions:

  Is i2p-zero integration accessible from the monerod cli in 0.15?

Yes, the integration options have been in place since v0.14.

  Is i2p-zero now built into Monero?

No, i2p-zero is not "built into" Monero. See detailed answer above.

  If so, what are the flags to access it? Can you point me to the documentation for those flags, or a tutorial?

The flags are detailed in the document you linked to: ANONYMITY_NETWORKS.


mymonero.com x number of blocks behind can i use the wallet? im new to Monero,  I opened a wallet on mymonero.com and ever since it says you are x number of blocks behind and you have to wait until its complete.
my question is can I receive money when it gives me this notification?

You can still receive Monero for your wallet address. It just doesn't show up until it's fully synced with the blockchain. So as long as you get this message you are not in sync with the blockchain but if someone sends you Monero, that transaction will be on the blockchain. You just need to wait in order to see it there.


Monero Fork (Genesis Block) I'm performing a Monero (XMR) fork, but I'm not sure how to generate a genesis block. Could you help me? Investigate a little and talk about a print parameter in the deamon, but that parameter no longer exists. I am using version 0.11 of monero. Many thanks to all beforehand. Great greeting!!
PS: I have been told that this topic may be duplicated with another. I need a step-by-step tutorial on how to create a new geneisis block or how to create a private blockchain, which I believe should be the same steps.

After you change the GENESIS_TX of "cryptonote_config.h", input following commands in your terminal:

Creat node1:

  ./monerod --testnet --no-igd --hide-my-port --testnet-data-dir
  ~/test/node1 --p2p-bind-ip 127.0.0.1 --add-exclusive-node
  127.0.0.1:38080 --add-exclusive-node 127.0.0.1:48080

Creat node2:

  ./monerod --testnet --testnet-p2p-bind-port 38080
  --testnet-rpc-bind-port 38081 --no-igd --hide-my-port --testnet-data-dir ~/test/node2 --p2p-bind-ip 127.0.0.1 --add-exclusive-node 127.0.0.1:28080 --add-exclusive-node 127.0.0.1:48080

Creat node3:

  ./monerod --testnet --testnet-p2p-bind-port 48080
  --testnet-rpc-bind-port 48081 --no-igd --hide-my-port --testnet-data-dir ~/test/node3 --p2p-bind-ip 127.0.0.1 --add-exclusive-node 127.0.0.1:28080 --add-exclusive-node 127.0.0.1:38080

Creat wallet1:

  ./monero-wallet-cli --testnet --trusted-daemon --generate-new-wallet
  ~/test/test1

Creat wallet2:

  ./monero-wallet-cli --testnet --daemon-port 38081 --trusted-daemon
  --generate-new-wallet ~/test/test2

Creat wallet3:

  ./monero-wallet-cli --testnet --daemon-port 48081 --trusted-daemon
  --generate-new-wallet ~/test/test3

More tips.


Seeking to port XMR to PPC64 - PlayStation 3 Can any one point in the right direction to research, develop, and read up on coding assembly for Monero. I've tried running various distros on the PS3 with no luck. CMAKE has to be up to date to a certain version and isn't supported by Fedora 12 etc since it's an older distro. The PPC64 platform doesn't seem to matter. What seems to matter is the assembly being coded in SIMD.

So I am looking to code and port it myself. I was able to get Litecoin on a PS3 but it is no longer profitable on Fedora 9 with 'cpuminer'. But Monero would seem to be on a PS3. I realized that it is simply a matter of porting Monero's code to assembly to an older version since cross compiling has not seemed to work at all. In others I want to code the functions myself into a workable form of assembly for a PS3. But I do not know where to start when it comes to porting the SIMD assembly for monero itself. Any one know where to go about cross referencing such source code? I basically want to code my own miner. Please and thank you.

Just so all you testers know. I finally got my PS3's to mine crypto besides litecoin and bitcoin.
Unfortunately the hashrate through put isn't impressive like we all already knew. But I am confirming that I get an average of 80 H/S or so per system for Monero. Just in case any one was wondering.

How I did this: One must load NFS and SSH on the clusters nodes of PS3's with Fedora 9. Then one must have a linux capable laptop or desktop as their Master Node to compile and run OpenMPI. Which is open source cluster software. The PS3 can not compile alt-coin miners but will mine through OpenMPI and one's master node as a node on a cluster. So IT IS still possible to mine with them but the hash rate isn't remarkable. Any ways good night. I hope this help some body and good luck!


Started monerod on the command line in ubuntu, how to connect to it via the gui? I started the monerod in the command line so I can see the daemon output, but how do I connect to this daemon using the gui? Or should I just start the daemon in the gui instead?

I have not used the GUI because I could not get my wallet to sync correctly.  This was the first GUI released - I have not tried another GUI release since.

However, from what I remember you only need to launch the GUI and a daemon starts automatically for you.

Hope this helps!


Calculating the break-even time for new rig I am trying to decide whether I should starting mining XMR by doing a breakeven analysis.

According to this answer, a  RX 470 Gigabyte G1 4GB can get 700 H/s. That card is currently $184. If I plug in those numbers (plus the current difficulty, cost of electricity, block reward, XMR/USD exchange rate, etc.) into a profit calculator it claims that I will break even with my video card purchase in approximately 40 days.

That sounds like a very, very short time to recuperate my initial investment! It seems too good to be true. Did I do something wrong? Is mining Monero that profitable?

In addition, the profit model assumes difficulty, the XMR exchange rate, network hash rate, block reward, and average block time are all constants. Obviously, all may change:

exchange rate fluctuates based on the market dynamics
hash rate depends on miner participation
block time can be changed by the devs
block reward is based on block size (if I understand correctly)

Changes in the first two are open to wild speculation. What about the block time and block reward? Historically, have these changed frequently?

The current difficulty is about 6.604 billion, not 1.617.  And the block reward is about 8.63, not 14.  The other parameters seemed reasonable enough.

Those changes will certainly paint a different picture.


Mining on Linux server, are there security risks? I want to mine Monero on my dedicated Linux server with xmr-stak-cpu because my websites never use all of the CPU and I want some extra incomes that help me pay the service.

Are there any security risks for my server and websites by doing this?
At what do I need to pay attention?

I have never mined cryptocurrency, so I don't know how the entire process works.

There would be no inherit security risk with mining on your dedicated server.  As with all daemons, though, you would want to make sure to run it as an unprivileged (non-root) user just as a best practice.

Since you mention the server is normally doing other things (hosting websites) you could minimize its impact by running it the lowest priority possible (a 'nice' value of 19).  If you do that, it should effectively only utilize idle cpu cycles and not noticeably impact the performance of other processes.  Doing this is as simple as running:

nice -19 ./xmr-stak-cpu

Some important notes...

Keep in mind that your processor(s) will be running at 100% usage 24/7 no matter what's going on.  This effectively kills the usefulness of any sort of CPU metrics software and other performance monitoring software.
If you provide service to paying customers, note that they will be able to easily see the system is at 100% cpu usage through multiple means (SSH, PHP scripts, hosting control panel, etc).  They may not take kindly to this fact and feel you are not providing the service they're paying for.  Some users may suspect your server is compromised if they see a miner process in the process list.  This is because it is common for malicious users to compromise hosting accounts and run a monero or other cryptonight based coin miner on the server.  I imagine there's a debate to be had on the ethics of mining on a production hosting server with paying clients.
It will be much harder to identify if/when another user on the system is using excessive CPU since your system will always be at 100% CPU usage, unless you write some custom script that subtracts the relative usage of the miner from the rest of the system's usage.  Even then, it's going to be unreliable.
Even if you ONLY ran the miner on your server and didn't host websites or anything else, you're probably looking at between 200-250H/ max (for a Quad-Core single CPU dedicated server).  At the current network difficulty, a sustained 250H/s is going to net you about 0.05 XMR per month (I used cryptocompare.com's calculator to estimate).  A common minimum payout for current Monero mining pools is about 0.3 XMR.  So you are looking at 6 months mining before you get your first 0.3 XMR.  Coin emission only slows and difficulty only goes up as time goes on, so the reality of it is probably longer than 6 months.  If your server is somewhat busy and the miner runs at less H/s, then that time only gets longer.

In the end, only you can decide if it's "worth it".  But, it's by no means an ideal or lucrative situation.


Does the miner program used affect the hashrate? While mining Monero I have noticed the the hashrate is different depending on the miner used:

When I use the xmr-stack miner I get 100H/s approximately between the CPU and GPU.

When I use Minergate I get 45 H/s on the CPU and 110 H/s on the GPU, that totals 155 H/s.

Why is there such a difference?

Different programs do things differently, some faster, some slower, so yes, which miner you use has an impact on your hash rate on the same hardware. The differences are usually minimal for the main contenders though. AFAIK the Minergate miner is javascript, which is going to be slower than something like Wolf's minerd (at least for the CPU miner, since the GPU one is probably a precompiled kernel).


Aside from the Monero Stackexchange what else are good resources for learning about Monero? There are lots of good reading material on stackexchange just curious what else there is to read about this awsome cryptocurrency

If you just want a chat then your best resource is maybe r/monero, if you want to start running a node maybe go to the monero website, if you want the research papers leading up to Monero/another explanation of the tech then maybe you would like:

The CryptoNote whitepaper :)
The RingCT paper
Some slides for extra bonus pictures and comparisons and stuff


Failing unit test for full node. How serious is it? Hi I have successfully built monerod from github source (by this I mean that cmake did not report any errors). However, running make release-test gave me the following output:

Test project /home/<user>/Libs/monero/build/release
      Start  1: hash-target
 1/13 Test  #1: hash-target ......................   Passed    0.28 sec
      Start  2: coretests
 2/13 Test  #2: coretests ........................***Failed  14208.87 sec
      Start  3: crypto
 3/13 Test  #3: crypto ...........................   Passed   27.21 sec
      Start  4: unit_tests
 4/13 Test  #4: unit_tests .......................***Failed   30.31 sec
      Start  5: difficulty
 5/13 Test  #5: difficulty .......................   Passed    0.09 sec
      Start  6: hash-fast
 6/13 Test  #6: hash-fast ........................   Passed    0.02 sec
      Start  7: hash-slow
 7/13 Test  #7: hash-slow ........................   Passed    0.49 sec
      Start  8: hash-tree
 8/13 Test  #8: hash-tree ........................   Passed    0.02 sec
      Start  9: hash-extra-blake
 9/13 Test  #9: hash-extra-blake .................   Passed    0.06 sec
      Start 10: hash-extra-groestl
10/13 Test #10: hash-extra-groestl ...............   Passed    0.05 sec
      Start 11: hash-extra-jh
11/13 Test #11: hash-extra-jh ....................   Passed    0.04 sec
      Start 12: hash-extra-skein
12/13 Test #12: hash-extra-skein .................   Passed    0.01 sec
      Start 13: libwallet_api_tests
13/13 Test #13: libwallet_api_tests ..............***Failed  256.73 sec
77% tests passed, 3 tests failed out of 13

Total Test time (real) = 14524.39 sec

The following tests FAILED:
      2 - coretests (Failed)
      4 - unit_tests (Failed)
     13 - libwallet_api_tests (Failed)
Errors while running CTest
Makefile:127: recipe for target 'test' failed
make[1]: *** [test] Error 8
make[1]: Leaving directory '/home/<user>/Libs/monero/build/release'
Makefile:54: recipe for target 'release-test' failed
make: *** [release-test] Error 2

I was planning to run a full node and use modero-wallet-cli to hold a few XMR (buying them from shapeshift say). Should I not even try, until I get 100% unit test success? or is it likely to run fine after all?. Any advice is appreciated.

$ uname -a
Linux <hostname> 4.8.0-1-amd64 #1 SMP Debian 4.8.5-1 (2016-10-28) x86_64 GNU/Linux

$ git status
HEAD detached at v0.10.3.1
nothing to commit, working tree clean

It is likely to be fine, with a caveat:

core tests have a known failure, which is a problem in the test itself, fixed in https://github.com/monero-project/monero/pull/2036
unit tests failure is interesting, that's the caveat
libwallet tests are known borked, you can totally ignore those

To determine what the failing tests are, you need to run core tests and unit tests manually:

./build/release/tests/unit_tests/unit_tests
./build/release/tests/core_tests/coretests

The unit tests one may be interesting. Or it might be about serialization, which is a known problem in the setup in some cases (Arch Linux IIRC), and not a problem in Monero itself.

The core tests one may be the invalid key image test, fixed in the PR above. If it's just that, all is fine.

If it's anything else, the Monero team wants to know!


What are the best parameters for W0lf miner with a R9 380 GPU? I'm unsure wich parameter I should use to get the best hashrate with mit R9 380 GPUS.

                "corefreq": 500,
                "memfreq": 1500,
                "fanspeed": 65,
                "powertune": 20,
                "threads": 1,
                "rawintensity": 640,
                "worksize": 16

                "index": -1,
                "threads": 2,
                "rawintensity": 16, "worksize": 16

the only parameters that actually change anything are rawintensity and worksize. try increasing rawintensity a little bit at a time until it the miner crashes, then back off. you could also change worksize down to 8 and then repeat increasing the rawintensity.


What is the command to unstake / unlock loki from a service node on the loki network? What is the command line command to unlock / unstake my loki from a loki service node?

request_stake_unlock <service node key>

The guide can be found here: https://docs.loki.network/ServiceNodes/SNFullGuide/#step-8-unlock-stake


Is there a limit to the number of PIDs in a transfer command? I tried to send as follows:

transfer <address> <amount> <payment ID> <address2> <amount2> <paymentID2>

I received an error:

Error: failed to parse address

Did I do something incorrectly, or is there a limit of a single payment ID per transfer?

One payment ID at most is allowed, as seen in the help blurb for the transfer command (see the end):

transfer [index=<N1>[,<N2>,...]] [<priority>] [<ring_size>] <address> <amount> [<payment_id>] - Transfer <amount> to <address>. If the parameter "index=<N1>[,<N2>,...]" is specified, the wallet uses outputs received by addresses of those indices. If omitted, the wallet randomly chooses address indices to be used. In any case, it tries its best not to combine outputs across multiple addresses. <priority> is the priority of the transaction. The higher the priority, the higher the fee of the transaction. Valid values in priority order (from lowest to highest) are: unimportant, normal, elevated, priority. If omitted, the default value (see the command "set priority") is used. <ring_size> is the number of inputs to include for untraceability. Multiple payments can be made at once by adding <address_2> <amount_2> etcetera (before the payment ID, if it's included)

If you want more than one payment id, use as many transactions.


I sent XMR from wallet 1 to wallet 2 and it says 0 coins So i've been using monero(https://www.getmonero.org)version (0.16.0.2 (Qt 5.12.8) for awhile now. I updated to the latest 0.16.0.2) same day i made the transfer.
Never had problem sending funds from one wallet to another. Well this time the funds from wallet 1 isn't showing up in wallet 2.
In wallet 1(fully synced) transaction history shows everything perfectly, I got the transaction ID, total XMR sent, fee's, 460 confirmations, and the output address(which i checked plenty times) is all correct.
But when I login to wallet 2(fully sync), I see no incoming transactions, its been 14 hours since the funds have been sent.
I’ve done everything no differently from other times. What’s going on, where did my funds go?

Ok so what i did was completely delete the log and did a full restore wallet and let it fully resynchronized and the funds show now.


I've sent real Monero from Coindirect to my stagenet wallet address, not my mainnet wallet address I've sent real Monero from Coindirect to my local stagenet wallet address and not my mainnet wallet address.

The Monero doesn't show up in either wallet (Daemon/Wallets have synchronized).

Have I lost those funds, or is there a way to retrieve them?

Stagenet wallet addresses have different prefixes, and so Coindirect's wallet would consider your stagenet address invalid. Even though they didn't alert you to the problem when you entered the stagenet address, their wallet should still automatically fail and not attempt the transaction when the payment attempt is made.

Therefore you should contact Coindirect and ask them to investigate the failed payment.

In the worst case scenario, if Coindirect have a wallet that is not validating addresses prior to constructing transactions, you can still access the funds by creating a mainnet wallet using the stagenet seed.


Is it normal that the daemon log in the GUI shows 290 days AHEAD? Is it normal that the daemon log shows 290 days ahead?

Yes. That is normal. Some of the nodes you connect to will be running old versions of Monero with outdated blokchains. Your daemon should eventually block some of these automatically. As long as it can reach a peer with a current copy of the blockchain, then there are no problems.

See here for more details.


To what extent does my potential level of privacy change by hosting a public node? Let's say I run a node at home.  Let's say I have a laptop from which I run a wallet only.  I can access my node from within or from outside my home LAN, whether my node is public or not.  I suppose the primary way to access my node from outside my home LAN - assuming it's not a public node - would be for me to poke a hole in my LAN's firewall via VPN tunnel. In that case, I figure my privacy level is no different than if I accessed the node from within my home LAN.

But what if I have a public node?  What if I access my own public node from a remote location and sync my wallet and make transfers?  Does my privacy level change?

The only way your privacy level is affected by running a public node and then using that public node as the remote node your wallet connects to is the extent to which your internet traffic is being monitored, which is really only possible by an ISP, except in more extenuating circumstances. Your internet traffic is generally already loosely monitored/logged, so there's not much of a change then.

The main privacy leak that results from connecting to a remote node is the fact that the remote node operator now has associated your IP with whatever lookups you made on the blockchain.  If you're merely syncing your wallet, then this is nothing much to worry about anyway; but if you're making a transaction, then you must querying the blockchain to pull ring members, which is effectively a metadata leak.  It's a similar leak of metadata to send the transaction through that remote node.

In the case of accessing your own remote node from an external location, you're only leaking that metadata to yourself, so your level of privacy arguably does not change.


Monero blockchain explorer compilation not working ubuntu 16.04 Hi I am working on monero blockchain explorer, Trying to work with this git repo. I have tried too many times but unfortunately couldn't get success yet. Right now I am facing this error.

  CMake Error: The source directory "/mnt/volume-nyc3-01/build" does not appear to contain CMakeLists.txt.
  Specify --help for usage, or press the help button on the CMake GUI.

while running cmake -DMONERO_DIR=/path/to/monero_folder command please help me I have to complete it soon. I have no time.

As per @jtgrassie I have added '' at the end of the command and it ran. but I got these response on result too. I don't know it will be an issue or not

  -- FindMonero Xmr_COMMON_LIBRARIES Xmr_COMMON_LIBRARY-NOTFOUND
  -- FindMonero Xmr_BLOCKS_LIBRARIES Xmr_BLOCKS_LIBRARY-NOTFOUND
  -- FindMonero Xmr_CRYPTONOTE_BASIC_LIBRARIES Xmr_CRYPTONOTE_BASIC_LIBRARY-NOTFOUND
  -- FindMonero Xmr_CRYPTONOTE_CORE_LIBRARIES Xmr_CRYPTONOTE_CORE_LIBRARY-NOTFOUND
  -- FindMonero Xmr_MULTISIG_LIBRARIES Xmr_MULTISIG_LIBRARY-NOTFOUND
  -- FindMonero Xmr_CRYPTONOTE_PROTOCOL_LIBRARIES Xmr_CRYPTONOTE_PROTOCOL_LIBRARY-NOTFOUND
  -- FindMonero Xmr_DAEMONIZER_LIBRARIES Xmr_DAEMONIZER_LIBRARY-NOTFOUND
  -- FindMonero Xmr_MNEMONICS_LIBRARIES Xmr_MNEMONICS_LIBRARY-NOTFOUND
  -- FindMonero Xmr_EPEE_LIBRARIES Xmr_EPEE_LIBRARY-NOTFOUND
  -- FindMonero Xmr_LMDB_LIBRARIES Xmr_LMDB_LIBRARY-NOTFOUND
  -- FindMonero Xmr_DEVICE_LIBRARIES Xmr_DEVICE_LIBRARY-NOTFOUND
  -- FindMonero Xmr_BLOCKCHAIN_DB_LIBRARIES Xmr_BLOCKCHAIN_DB_LIBRARY-NOTFOUND
  -- FindMonero Xmr_RINGCT_LIBRARIES Xmr_RINGCT_LIBRARY-NOTFOUND
  -- FindMonero Xmr_WALLET_LIBRARIES Xmr_WALLET_LIBRARY-NOTFOUND
  -- FindMonero Xmr_CNCRYPTO_LIBRARIES Xmr_CNCRYPTO_LIBRARY-NOTFOUND
  -- FindMonero Xmr_EASYLOGGING_LIBRARIES Xmr_EASYLOGGING_LIBRARY-NOTFOUND
  -- FindMonero Xmr_VERSION_LIBRARIES Xmr_VERSION_LIBRARY-NOTFOUND
  -- FindMonero Xmr_CHECKPOINTS_LIBRARIES Xmr_CHECKPOINTS_LIBRARY-NOTFOUND

And now I am running make command it is giving me this error

  In file included from /mnt/volume-nyc3-01/onion-monero-blockchain-explorer/src/MicroCore.h:10:0,
                   from /mnt/volume-nyc3-01/onion-monero-blockchain-explorer/src/MicroCore.cpp:5:
  /mnt/volume-nyc3-01/onion-monero-blockchain-explorer/src/monero_headers.h:19:21: fatal error: version.h: No such file or directory
  compilation terminated.
  src/CMakeFiles/myxrm.dir/build.make:62: recipe for target 'src/CMakeFiles/myxrm.dir/MicroCore.cpp.o' failed
  make[2]: * [src/CMakeFiles/myxrm.dir/MicroCore.cpp.o] Error 1
  CMakeFiles/Makefile2:254: recipe for target 'src/CMakeFiles/myxrm.dir/all' failed
  make1: * [src/CMakeFiles/myxrm.dir/all] Error 2
  Makefile:83: recipe for target 'all' failed
  make: *** [all] Error 2

Following Commands:

Install monero dependencies

1: sudo apt update

2: sudo apt install git build-essential cmake libboost-all-dev miniupnpc libunbound-dev graphviz doxygen libunwind8-dev pkg-config libssl-dev libcurl4-openssl-dev libgtest-dev libreadline-dev libzmq3-dev libsodium-dev libpcsclite-dev

cloning monero project

3: git clone --recursive https://github.com/monero-project/monero

4: cd monero/

5: git checkout -b last_release v0.12.1.0

6: sudo make

download the source code

7: git clone https://github.com/moneroexamples/onion-monero-blockchain-explorer.git

enter the downloaded sourced code folder

8: cd onion-monero-blockchain-explorer

make a build folder and enter it

9: sudo mkdir build && cd build

10: sudo cmake -DMONERO_DIR=/path/to/monero_folder

11: sudo make

From the readme:

# altearnatively can use: cmake -DMONERO_DIR=/path/to/monero_folder ..

Note the .. at the end.

This is also assuming you have followed all the preceding instructions (including changing directories):

git clone https://github.com/moneroexamples/onion-monero-blockchain-explorer.git

# enter the downloaded sourced code folder
cd onion-monero-blockchain-explorer

# make a build folder and enter it
mkdir build && cd build


My GUI feels buggy / freezes all the time I am using the official GUI and using my own (local) node, but it freezes all the time and feels buggy overall. Is there any way to resolve this?

First and foremost, it's important to make sure you're running the latest version (v0.11.1.0 at the time of writing). You can check the version # on the Settings page of the GUI (under Debug info). If you're not running v0.11.1.0, please upgrade first:

How do I upgrade my software to v0.11.1.0?

This is typically caused by monerod using all your CPU during the initial sync (you can also apply this guide if it still feels buggy after you've completed the initial sync). monerod requires CPU because it needs to verify blocks. You can limit monerod's CPU usage as follows.

Go to the Settings page of the GUI.
Look for the daemon startup flags box.
Add this line -> --max-concurrency 1
Exit the GUI and make sure to stop the daemon as well.
Restart the GUI + daemon.

Step 4 & 5 are needed for the flag from step 3 to take effect. Note that --max-concurrency 1 will limit your CPU usage to 1 thread.

In addition, if you're syncing the blockchain to an HDD, it'd probably be best to lower the size of the batch of blocks (block-sync-size) as well. This is done as follows.

Again go to the Settings page of the GUI and look for the daemon startup flags box.
Add this line after the --max-concurrency 1 line and make sure there's a space between 1 and - -> --block-sync-size 10
Thus, the "full" line in the daemon startup flags box becomes -> --max-concurrency 1 --block-sync-size 10
Exit the GUI and make sure to stop the daemon as well.
Restart the GUI + daemon.

Step 4 & 5 are again needed for the flag from step 2 to take effect. Note that --block-sync-size 10 will reduce the batch of blocks it syncs to 10 (the default is 20) at a time.

Now, monerod also takes a lot of bandwidth during the initial sync. If you're unable to browse or use any applications that require internet connection, you can limit monerod's bandwidth as follows:

Again go to the Settings page of the GUI and look for the daemon startup flags box.
Add this line after the --block-sync-size 10 line and make sure there's a space between 0 and - -> --limit-rate 500
Thus, the "full" line in the daemon startup flags box becomes -> --max-concurrency 1 --block-sync-size 10 --limit-rate 500
Exit the GUI and make sure to stop the daemon as well.
Restart the GUI + daemon.

Step 4 & 5 are again needed for the flag from step 2 to take effect. Note that --limit-rate 500 will limit the bandwidth to 500 kB/s.

Note that you can tweak the parameters / flags yourself by adjusting the value.

Lastly, the GUI itself also uses some CPU and memory. You can reduce this by running monerod separately from the GUI during the initial sync. This is done as follows:

[1] Exit the GUI and make sure to stop the daemon as well.

[2] Browse to the directory monerod is located (on Windows & Linux it's the same directory as monero-wallet-gui, whereas on Mac OS X it's -> ~/Applications/monero-wallet-gui.app/Contents/MacOS).

[3a] On Windows, open a new command prompt from the same directory as monerod.exe. This is done by first making sure your cursor isn't located on any of the files and subsequently doing SHIFT + right click. It will give you an option to "Open command window here". If you're using Windows 10, it'll, most likely, give you an option to open the Powershell.

[3b] On Linux and Mac OS X, open a new terminal from the same directory as monerod

[4a] On Windows, type the following command in the command prompt:

monerod.exe --max-concurrency 1 --block-sync-size 10 --limit-rate 500

If that doesn't work in the Powershell, type:

.\monerod.exe --max-concurrency 1 --block-sync-size 10 --limit-rate 500

If that doesn't work either in the Powershell, type:

./monerod.exe --max-concurrency 1 --block-sync-size 10 --limit-rate 500

[4b] On Linux and Mac OS X, type the following command in the terminal:

./monerod --max-concurrency 1 --block-sync-size 10 --limit-rate 500

[5] If you were using a non-default directory for the blockchain, you have to add the --data-dir flag too if you start monerod separately. If you already have monerod running, type exit first to gracefully stop the daemon. This is done as follows:

On Windows, type the following command in the command prompt:

monerod.exe --max-concurrency 1 --block-sync-size 10 --limit-rate 500 --data-dir path\to\your\blockchain

If that doesn't work in the Powershell, type:

.\monerod.exe --max-concurrency 1 --block-sync-size 10 --limit-rate 500 --data-dir path\to\your\blockchain

If that doesn't work either in the Powershell, type:

./monerod.exe --max-concurrency 1 --block-sync-size 10 --limit-rate 500 --data-dir path\to\your\blockchain

On Linux and Mac OS X, type the following command in the terminal:

./monerod --max-concurrency 1 --block-sync-size 10 --limit-rate 500 --data-dir path/to/your/blockchain

[6] Note that, if you're running monerod separately, you have to apply the flags every time you start monerod. Thus, on Windows, probably most convenient to create a shortcut, go to properties, and add the flags after the Target. On Linux and Mac OS X, it's probably most convenient to create a little script.

[7] As a general piece of advice, if you need to shut down your PC, first shut down monerod gracefully by typing exit. Otherwise, you might corrupt the blockchain again and you'd have to start all over again.

[8] You can use status in monerod to verify whether it's fully synced. It's fully synced if your height matches the height displayed on a block explorer like, for instance, XMRchain.net.

[9] Once it's fully synced, open monero-wallet-gui. It'll automatically connect to the monerod that is already running. Note, however, that monero-wallet-gui still has to refresh the wallet, for which it currently uses the same status bar.


If I received XMR in a sub-address, will my balance correctly reflect this transaction in a wallet that does not support sub-addresses? Lightweight wallets like MyMonero and Edge don't currently support sub-addresses. If I have the same wallet restored in the CLI or GUI and send XMR to a sub-address, is MyMonero or Edge consider it in the final balance?

No. The wallet needs to support sub-addresses so the balance can be calculated correctly. Consider the scenario below:

You create a wallet in MyMonero and send 5 XMR.
You restore this wallet in the GUI.
You receive 2 XMR in a sub-address (acquired via GUI).

The MyMonero wallet will continue to show the balance of 5 XMR while the GUI will show 7 XMR.


Does the Monero daemon and wallet connect with other nodes by ssl or unencrypted? Do Monero nodes connect to each other by encrypted channels or non-encrypted? Is Monero resistant to spying by ISP, in other words can Monero use be censored in its current form?

From my knowledge the connection is not encrypted, but this doesn't hurt anything because the data that is exchanged is already public record.

For example: the same information can also be found on Moneroblocks


Correctly retrieving the tx_pubkey from a transaction I found, in the code, an example of a function that retrieves a public key from a transaction. The comments say that because of a previous bug, the tx may contain more than one public key.

Do I understand correctly that this bug has been fixed, and in order to look for the key in new transactions, I don’t need to check if there may be several keys?

Could somebody please clarify whether it is guaranteed that the variable two_found here, will always be true in all new transactions?

tx_extra can contain any number of items. The field is documented here: https://cryptonote.org/cns/cns005.txt

Therefore it can contain 0..N public keys. Usually there is just one public key in it (the tx public key), but there could be more. So do not rely on there just being one, you have to parse the field and respond accordingly.

One such example of a case where there can be more than one public key in the tx extra is for multi-destination transfers involving one or more subaddresses. I also seem to recall that multisig transfers add additional keys in the field.


Forum Funding System donations earmarked for projects that are never completed What happens to Monero raised by the Forum Funding System for projects that are never completed?

Are donations returned to donors (if their identity is known)?

What happens to donations made by anonymous donors?

Once multisig integration of Monero is compete will the Forum Funding System take advantage of it to help decentralize some control of donation disbursements?

Monero related projects that are not finished or do not hit certain milestones will have the donated XMR/BTC/USD used for other Monero related projects.
Donations are non-refundable and go into a development pool to be used on Monero projects. (This also answers what happens to donations if they are made by anonymous donors).
As for multisig and the forum funding system, the Monero core team hasn't explored the topic yet and will wait until multisig is available to use before they think of applying it to the forum funding system.


If a monero transaction has two inputs and one output, is it possible to partially sign the transaction of just one input? If a monero transaction has two inputs and one output, is it possible to partially sign the transaction of just one input?

If so, is it currently possible to export it from the core wallet or any other wallet?
If not, how can I do this?

This is not possible yet, but is being considered.


Difference between subaddresses and integrated_addresses Whats the difference between sub-addresses and integrated_addresses?

Is one more useful than the other?

Integrated addresses are just standard addresses but with an embedded payment ID. Anyone can decode the integrated address and determine the standard address it is associated with. However, when a transaction is sent to that integrated address, the payment ID is encrypted on the blockchain. Therefore no one (other than the private view key holder that issued the integrated address) can tell that the integrated address was used in a transaction.

Subaddresses are deterministically derived wallet addresses that are grouped by wallet accounts.

They are both useful, though subaddresses are newer and preferable in most use cases.


Are there any plans to add Hardware Wallet support to the core Monero software? Hardware wallets are good for securing your coins, but when they are made, will core devs add support to the core Monero wallet software? Or will this type of thing not be supported by core software?

I think this depends in large part on what kind of changes would be required. That said, as a first approximation, adding support would seem like a good thing. If the driver program ends up totally separate, it can be a different binary too.

No current plans though. Plans can only be made when we know what the hardware is, what it needs in order to work with the host computer, etc.


Problem with Ledger Nano S and Monero GUI: Invalid password When I am using the Monero GUI with a Ledger Nano S, it asks me to "Export View Key", and no matter which I option choose, the wallet responds with "Couldn't open wallet: Invalid password".

Does anyone know what the issue is?

There is a known problem with Ledger v1.5.5.


How did Monero Research Lab members learn about Monero? Did the original Monero core team reach out to cryptographers in order to seek review of the original CryptoNote whitepaper? Or did the mathematicians hear about CryptoNote from some other means and become interested in Monero as a result?

I am not sure how the connection was established, but Surae Noether was paid by the then core-team to review the CryptoNote whitepaper (and thus the CryptoNote protocol), and some of the code of Bytecoin, where Monero forked from. From the review of the CryptoNote whitepaper we can read the following:

  For full disclosure, I was hired by the Monero (XMR) developers to investigate the CryptoNote protocol and the ByteCoin code base from which Monero has been forked. The folks involved in hiring me have had no involvement in my review process other than answering my technical questions and sending me money occasionally when I ask them politely and show them the annotations I’ve made. They are paying me in Bitcoin, not in any CryptoNote based currency. Yes, I do own and hold CryptoNote currencies.

As far as I know, there is no public information about how the other two members, Shen Noether and Sarang Noether, heard about CryptoNote and/or Monero, and how they joined the Monero Research Lab. This is a likely result of them wanting to stay anonymous and therefore using pseudonyms to publish their papers.

It should be noted though, that core-team member fluffypony has met all three members of the Monero Research Lab and thus most likely verified their credentials as well. From the missive:

  Over the weekend of the 8th and 9th of November 2014, the Monero Research Lab had a closed mini-meetup in Salt Lake City, Utah, USA. In attendance were surae, sarang, and shen, as well as tewinget and fluffypony. A great time was had by all attendees meeting for the first time, and long academic discussions were the order of the day.


How many hashes does an AMD Threadripper 1950X do on the RandomX Monero mining algorithm? I have an AMD Threadripper 1950X, has there been benchmarks done for mining on RandomX compared to other CPUs and high end GPUs?

I haven't seen any results for your specific CPU yet, but looking at a somewhat outdated thread (the algorithm and benchmark tool have had minor changes since), and the details on the project README for other Ryzen processors, I would guess at a minimum yours will achieve 5Kh/s.

It's really not possible to compare to what "high end GPUs" will achieve because the code is not yet finished for GPUs, so there are no benchmarks to compare. The developers have previously signaled at GPUs hashing at roughly the same rate as they do currently though.


Help with monero-integrations/monerophp error I downloaded the case study from https://github.com/monero-integrations/monerophp. I have also made the necessary arrangements but I am getting an error:

The error you are getting stems from the fact the method you are trying to call (get_connections) is not an available method when running a restricted daemon.


What are the "ingredients" of a key image? This is a scenario I've come up with to help me understand key images.

Let's say I have Wallet 1 and Wallet 2.  Wallet 1 has TXO A and TXO B.  I send TXO A and TXO B as inputs to Wallet 2.  TXO B was reduced to pay transaction fees.  Then I send TXO A and the updated TXO B as inputs back to Wallet 1.  TXO B was reduced further to pay transaction fees.  What I'm left with that concerns me is TXO A.

Based on my rudimentary knowledge of key images, I know that a key image was generated as part of the first transaction (the send from Wallet 1 to Wallet 2).  That key image, in layman's terms, says that Wallet 1 spent TXO A (and TXO B, of course), so it can no longer spend TXO A again.

But now TXO A is back in Wallet 1, unchanged (as far as I know) from its original glory.  Will the key image be different the second time around, so that Wallet 1 is not prevented from spending TXO A again?  Does the original key image have an effect on the ability of Wallet 1 to spend TXO A the second time?

(Please recall from the title that I'm interested in the ingredients - perhaps "variables" is the technical term - for how a key image is generated.)

When you send TXO A, it doesn't stay unchanged in wallet 2, it it now a new TXO A2 (with a one time address for wallet 2) that can't be linked with certainty to TXO A because of the ring signature.

According to the CryptoNote whitepaper, the key image is computed from the one-time key pair associated to the transaction output:

I = x*H(P)

where:

I is the key image
x is the one-time private key
P is the one-time public key (point P = x*G)
H is a deterministic hash function

If you try to spend TXO A a second time, the network will reject it because the key image for TXO A will already be in the known key images set.
But when you spend TXO A2 (back to wallet 1), it will work fine because the key image for TXO A2 is different from the key image for TXO A (because these two TXOs are associated to different one-time key pair).


monerod doesn't connect to peers I have installed the Monero GUI and it was giving some errors so I went back to the cli.  When I run ./monerod everything seems to work fine but when I do status it gives me -
Height: 1346603/1346603 (100.0%) on mainnet, not mining, net hash 99.90 MH/s, v5, up to date, 0(out)+0(in) connections, uptime 0d 0h 11m 57s
Why is it not connecting to peers? When I do start_mining  it gives the error Error: Mining did not start -- BUSY. I looked at this to try and solve my issue but it still did not connect. I am using Ubuntu 17. Thank you for any help.

We can't tell without more information.

If you'd left monerod not running for a long time, it's plausible that it'll try to contact nodes which were running, but are not (either they're now down, or they were on dynamic IPs which changed since, etc).

It is also possible that peers banned your node. This would normally only happen if your node is on a bad fork and sends incorrect data to those other nodes. Check you are using monerod 0.10.3.1.

Another possibility is that your network connectivity is down.

To check what the network layer is doing: set_log 1.

To try and reset the set of known peers: exit monerod, rm ~/.bitmonero/p2pstate.bin, start monerod again


How do I export my transaction history from wallet CLI in a usable format (.txt, .csv, etc.)? Taken from /r/MoneroSupport:

I'm having trouble exporting my wallet transaction history from monero-wallet-cli.exe into a usable format. I'm using Windows 7 and v0.10.3.1-release. "show_transfers" prints out all the info I need into the console, but I can't figure out a way to copy-paste it into a .txt file or output it in any other way.

I tried "show_transfers >> txns.txt" but got this error: "Error: Bad min_height parameter: >>"

I found this, which doesn't get me any further than I already am: How can I get a transaction history of sent and received transfers for my account?

Any help would be much appreciated, thanks.

You can do this:

monero-wallet-cli --command "show_transfers" --wallet-file=/path/to/wallet --password 'password' >> my_txns.txt

The output is not CSV though.

Here is a bit of commandline hacking to make into CSV:

monero-wallet-cli --command "show_transfers" --wallet-file=/path/to/wallet --password 'password' | egrep '^ '| sed 's/^ //g'| sed 's/ \+/,/g' >> my_txns.csv

(only tested with a watch-only wallet)


Is there a way to view and/or calculate the value of all utxo's? I'm thinking of this as a way of verifying total coin supply.

I've seen another thread about a command to add up all coinbase tx's to do the same, but I'm curious about the utxo approach. Thanks

I don't think a utxo method is possible, because the blockchain is opaque.  There are no unspent transaction outputs on the Monero blockchain, in other words.

  There are no unspent transaction outputs on the Monero blockchain, in other words.

The above is a generalization, that isn't true in all cases.  There are certain instances where an output can be shown to be provably spent.  Nevertheless, the vast majority of outputs on the blockchain are not able to be provably spent.

Additionally, since RingCT, amounts in each new RingCT output are masked.


How can I check if a Monero address is valid? Handling a user's input in which I want to make sure that he used a valid monero address.

Bitcoin has all these rules found here and I found something similar for ethereum as well.

I was wondering if Monero has some general rules I can be checking the user's input to check the address' validity.

I believe that you will find an answer here, although the question was asked in a different way.

Practically, you'd verify the network byte, length, address encoding and checksum. For implementation details, I suppose you could inspect source of this page (javascript), or go to the monero github repo.


How can I churn or send an individual Monero input? For some situations, users should avoid linkages between outputs that they control. Users may desire more anonymity sets than single ring signatures provide. To this end, users may want to churn individual inputs/outputs before using them or combining them. How can users do this using the official CLI wallet?

Open and sync the CLI
Type incoming_transfers available verbose and press enter. This will return all of the outputs in the account and the associated information. More info.
Find the output you want to churn.
Use the command sweep_single [<priority>] [<ring_size>] [outputs=<N>] <key_image> <address> [<payment_id>]. Example: sweep_single unimportant f2e713dc54a9b1ec9c4925793ee1f35636234c8b99b7dd168791677e51e704df 9vfmz4q7LGQYMisHnLZzUCW1kjG35394sK14D3EfRK9xabR2VouaNSDYdTE5EeSvTe5WV2e6tFUFrEbC8gaHk85oCM4uz8g

You can leave the ringsize blank since Monero now uses a mandatory ringsize.

The output with the associated key image will be sent to the specified address. If you want to churn, send the output to your own address. You can also use this feature to send specific outputs when sending transactions to others. This may come in handy when you would like to send already-churned outputs, for example.


Research on difficulty algorithm A new difficulty algorithm is said to be researched in https://getmonero.org/design-goals/, with a new MRL paper underway.

I see nothing new on https://github.com/monero-project/research-lab/ about this. Is this research continuing, cancelled, or paused ?

Looks like its a WIP (Work in Progress), we can read some info here. I wouldn't rush anything related to the difficulty algorithm or other essential aspects.


What is MoneroPulse? I've seen some messages in the daemon about MoneroPulse - what is it and what does it do?

The only reasonable reference I can find online is this Tweet that says "MoneroPulse: a loosely distributed checkpoint alert system. Normal nodes occasionally check and warn, but you can also force the right fork." Obviously I'd like some clarification and specifics.

MoneroPulse is a DNS based system which regularly checks for a list of blockchain checkpoints stored in the DNS TXT record for a few monero domain names. This system allows emergency checkpoints to be set to mitigate an attack or accidental fork in the chain.

By default, this check is advisory (ie, you will get warnings if you are not on the chain that these records hold). The intent is to leave the choice to node administrators which chain they consider "the" chain, since those servers are under the core team's control. You can elect to have those checkpoints be authoritative by running bitmonerod with --enforce-dns-checkpoining instead. This is encouraged for nodes running unattended.

Several servers are used, and the code checks for both the chain of trust (if available via DNSSEC) and for differences in the records supplied by the DNS servers, to give some degree of resilience against attacks and network reliability issues.


Error: internal error: real output not found When trying to create a transfer I was given the following output:

Error: internal error: real output not found

Changing the amount transfered doesn't seem to help. Trying a sweep_all does seem to work (I didn't actually submit the transfer but it at least seemed to create the transaction ok as the inputs used were displayed). Any idea what the issue could be?

Thanks

Well, looks like its just me being silly.

The command I typed was:

transfer 0 REDACTED_ADDRESS_HERE DECIMAL_DIGIT_AMOUNT

Thinking that 0 would be the lowest priority. The correct command I should have typed is as follows:

transfer unimportant REDACTED_ADDRESS_HERE DECIMAL_DIGIT_AMOUNT


I get "bus error 10" when trying to run monerod I have a 15 inch mid 2010 Macbook pro, running macOS Sierra 10.12. I still get bus error 10, similar to what I got with the previous release.
I have also updated my OS recently - it didn't change a thing.

What happens when I run Monero daemon is this (identifying information omitted with XXXXXXXXX):

Last login: Wed Dec 28 10:40:54 on ttys000

/Users/XXXXXXXXX/Downloads/monero.mac.x64.v0-10-1-0/monerod ; exit

XXXXXXXXXXXX

/Users/XXXXXXXXX/Downloads/monero.mac.x64.v0-10-1-0/monerod ; exit;

Creating the logger system

2016-Dec-28 10:42:47.538600 Initializing cryptonote protocol...

2016-Dec-28 10:42:47.538749 Cryptonote protocol initialized OK

2016-Dec-28 10:42:47.539035 Initializing p2p server...

2016-Dec-28 10:42:47.835838 Set limit-up to 2048 kB/s

2016-Dec-28 10:42:47.835962 Set limit-down to 8192 kB/s

2016-Dec-28 10:42:47.836020 Set limit-up to 2048 kB/s

2016-Dec-28 10:42:47.836162 Set limit-down to 8192 kB/s

2016-Dec-28 10:42:47.840377 Binding on 0.0.0.0:18080

2016-Dec-28 10:42:47.840644 Net service bound to 0.0.0.0:18080

2016-Dec-28 10:42:47.840695 Attempting to add IGD port mapping.

2016-Dec-28 10:42:51.859277 No IGD was found.

2016-Dec-28 10:42:51.859394 P2p server initialized OK

2016-Dec-28 10:42:51.859586 Initializing core rpc server...

2016-Dec-28 10:42:51.859804 Binding on 127.0.0.1:18081

2016-Dec-28 10:42:51.860059 Core rpc server initialized OK on port: 18081

2016-Dec-28 10:42:51.860192 Initializing core...

2016-Dec-28 10:42:51.862051 Loading blockchain from folder
/Users/XXXXXXXXX/.bitmonero/lmdb ...

2016-Dec-28 10:42:51.862130 option: fast

2016-Dec-28 10:42:51.862163 option: async

2016-Dec-28 10:42:51.862190 option: 1000

Bus error: 10

logout

Saving session...

...copying shared history...

...saving history...truncating history files...

...completed.

BUS error most likely happens when you have a corrupt database, which causes the LMDB code to try to access an invalid memory page, causing the SIGBUS.

Unfortunately, it means you have to delete your data.mdb and resync from the network.

If you're seeing this, it might be prudent to set a "safer" database acccess mode. See Why does my bitmonero fail to load?


How to make an integrated address based on a subaddress? Monero is getting subaddresses soon. How are integrated addresses built upon those?

I'm trying the standard algorithm, using netbyte 0x35 (I'm on testnet) but the wallet rejects them as invalid.

Example:

subaddress: BdZHh8j3gieLUtCWEQqQWRbakvLCvffrfMkUALrrAi2gHMrwfRzeeqHM2ZMCPzpqhg5ZsgHJQmAev3i7epY6yV7NJYQNfWf
PID: c28347cea0f01641
IA: 4Ghh5chLvwtLUtCWEQqQWRbakvLCvffrfMkUALrrAi2gHMrwfRzeeqHM2ZMCPzpqhg5ZsgHJQmAev3i7epY6yV7NT44nkedwuth8Mp7yns

However, with my algorithm and also with the address tester at https://xmr.llcoins.net/addresstests.html the base address computed back from the IA is:
47124osrKgNLUtCWEQqQWRbakvLCvffrfMkUALrrAi2gHMrwfRzeeqHM2ZMCPzpqhg5ZsgHJQmAev3i7epY6yV7NJZKb2gx

Before I dig into the source, can someone tell me if there are some rules I must follow when making IAs, or this is just not possible?

You don't. Subaddresses also solve the problem integrated addresses were designed for (allowing source identification in a single address). Since you can now generate a subaddress per source/client/customer, you don't need to assign a payment id anymore, so the ability to make integrated subaddresses was not added.


Issue when updating to 0.13 - Monero GUI Wallet - Network Status - Wrong Version I downloaded the new wallet files, unzipped them and put them in my old install folder (replaced where necessary). After that, it did some updating and after finishing, my wallet looks like this : http://prntscr.com/l5z31x

What do I have to do to fix the version error?

As of right now, the 0.13.0.2 GUI has not been released - only the command line tools. You get the network version error when the wallet and daemon versions do not match.

Wait for the official binaries to be released and then update. Should be any day now for the updated GUI.


Is anyone working on nVidia GPU mining software? How to improve it ourselves? Last release is from 2014. I'm currently using ccminer-cryptonight, with the latest release from 2014. I'm mining with a GTX 1080, and I'm just barely getting a higher hashrate than people with a way slower nVidia GPU.

Also, there have been 3 major cuda releases since 2014. Surely there are improvements in the new CUDA releases that wouldn't be that hard to take advantage of?

If nobody is developing anything at the moment, how hard would it be to do? I don't have any experience in developing mining software, but would be willing to give it a shot of anyone can point me in the right direction.

There is this proposal but it did not get funded.


What is the smallest unit of Monero called? Satoshi Nakamoto invented Bitcoin, and the smallest unit of Bitcoin (10e-8 BTC) is a Satoshi.

If Nicolas van Saberhagen authored Cryptonote, should the smallest unit of Monero (10e-12 XMR) be called a Saint Nic or Pico?

The common usage is SI prefixes, with the first "mo" removed for ease of use (I forget the name of this speech concept).
This was proposed by David Latapie, an early Monero core team member, though the blog post explaining those is now 404.

Here's an overview of all common Monero units taken from the official MoneroPedia:

So 1 monero is 1000 millinero, 1e6 micronero, 1e9 nanonero, 1e12 piconero.

If you're rich, you'd also have kilonero, meganero..


How to create wallets using monero-wallet-rpc? monero-wallet-rpc requires to use of a pre-generated wallet to run. E.g.:

./monero-wallet-rpc --rpc-bind-port 28083 --wallet-file monerowallet --disable-rpc-login

Whereas I want to allow users to create wallets at runtime with the RPC. Is it even possible?

Yes you can do this. First make sure you start the wallet RPC with a wallet dir that exists and is writeable. Next you can make use of the methods create_wallet, open_wallet and close_wallet. All the methods are documented here: https://www.getmonero.org/resources/developer-guides/wallet-rpc.html

I don't recall if you are required to start the RPC with an existing wallet, but if you are, just create an empty wallet to use for starting up the wallet RPC with.


How do I make RingCT transactions now after the recent hardfork? As the title says. Can I make RingCT transactions now on mainnet. If so, how? What is the command or its options in simplewallet?

You will need to wait activation first, which will happen in about 8hrs or so.

For end users, it will be seamless: the transfer command will be making RCT transactions by default. Just make sure you're running v0.10.1. The GUI will also default to RCT transactions.


At what stage is the Monero mining race at right now? It does beg the question, what hardware would has the best cost/benefit ratio right now? Are low end GPUs best to mine with, or are racks of cheap power efficient CPU motherboards the flavour right now.

Where does mining stand right now WRT hardware, and given Monero's ASIC resistant hashing algorithm, where is it headed? Also as a bonus, how many pools are in operation, and is there a danger of centralisation like with Bitcoin?

Right now Wolf's OpenCL XMR Miner for AMD GPUs (open source) and Claymore CryptoNote GPU Miner (proprietary) are probably the most efficient.

It is believed that Monero is still quite far away from ASIC mining largely because of the memory requirement and that CryptoNight takes advantage of the AES-NI instruction set on modern PCs. The relative advantage for ASICs would be lower for CryptoNight than other algorithms and the cost would be higher.

There are about 20 pools currently with crypto-pool.fr, minergate and unknown collectively occupying a large percentage of the hash rate.

Smart mining should help decentralize mining further upon release as it will use resources of many computers, whenever they are available.


Bytecoin wallet stuck on sync I've been using the Bytecoin wallet 1.1.7.1 and after a complete sync, every time I launch the wallet, it is just stuck on syncing.

Using the OSX version, and I have rolled back to previous versions with no luck.

Any ideas on how to fix this? Trying to shoot off some trades from this wallet.

Fixed the issue.

Delete all your .sst files. Launch wallet, yes, erase and re-sync. Took 45 minutes.


Does the daemon that mines a block see the transactions in clear text? I was thinking about a theoretical attack vulnerability. Suppose that if the daemon that mines the block is able to see transactions in clear text, then it would be able to log this information in a side-database? Is this possible?

Pending transactions are in a transaction pool, which is publicly available. See for example this page.

Each daemon has a copy of that transaction pool and, when finding a block, will include some of the transactions in the block before pushing it to the network. The details of the transaction, (a) as created by a wallet client, (b) in the transaction pool and (c) in the blockchain once it's included in a block are the same.

So your question essentially asks if Monero transactions can be decrypted, which has been answered in other places, such as: What privacy issues did Monero have and still has?


Connect to remote node via xmr-core js lib Is there a possibility to use xmr-core to connect to a remote node?

And handle transactions without hdwallet?

Or the library is only for using it with hdwallet?

Considering it hasn't been update since Sep 26, 2018 and is 195 commits behind mymonero I'd go with the official version.


GUI v0.13.0.3 does not start on Mac OS X (monero-wallet-gui cannot be opened because of a problem - Library missing) A full report of this particular issue can be found here:

https://github.com/monero-project/monero-gui/issues/1658

Is there any quick resolutions I can use?

This particular issue is fixed in GUI v0.13.0.4, which can be found here:

https://www.reddit.com/r/Monero/comments/9ti2on/gui_v01304_beryllium_bullet_released/

You can, most likely, resolve this issue by following selsta's suggestion here:

https://github.com/monero-project/monero-gui/issues/1658#issuecomment-430211706

Alternatively, you can try this suggestion:

https://www.reddit.com/r/Monero/comments/9oim67/monero_gui_v01303_not_opening_on_mac_osx_1014/e7untov/


Tor support on MyMonero.com Many privacy focused Tor users are interested or have the potential to be interested in Monero. IP address protection is important to Tor users.

Why was Tor removed from the CORS headers on the MyMonero API?

There was evidence of several cases of Tor exit nodes injecting JavaScript into the page. The developers of MyMonero did not want to risk MITM attacks leading to more theft of Monero funds.

At some point in the future, time permitting a better Tor hosting infrastructure may allow Tor to be re-enabled. Right now there are higher priorities. Security concerns trump any convenience factor that Tor usage at MyMonero may provide some uses.

For best privacy and security it is recommended that users run their own full nodes and keep most Monero in cold storage. Web wallets should not be recommended as primary wallets for anyone whose top priority is privacy or security


How to manage a large number of low-powered miners? A while ago, I got my hands on a large quantity of used, small form factor PCs. (Basically NUCs).  I quickly ran out of TVs to attach them to, and decided to use them to play around with Monero.  Individually, they're pretty low rate miners, but they're energy efficient, so collectively, I've been able to mine Monero almost cost-effectively with the batch I setup as a proof of concept.

My setup so far is a row of NUCs connected to a power strip and a Netgear switch, running Windows 7 and using the Monero daemon to mine locally.  They all have the whole Monero blockchain, and are full Monero nodes.  This has a serious scalabilty problem and is more of a pain to manage than it's worth, which is what I'm looking for help fixing.  I don't have a problem figuring out how to manage all these devices, but I'm not sure how to usefully manage all the different XMR addresses and wallets.  Right now, I have almost two dozen devices, and every few days, I log into each of them individually, check the balance, and if any of them have mined a block, I transfer the balance to a single Monero address I could actually use for transacting with Monero.

What I'd like to do is have all these devices mine to a single address, without joining a pool. Is this possible? How? (If necessary, I could probably work my way through setting up a private pool, but that seems like a lot of overhead and I'd prefer to avoid it).

What I'd like to do is have all these devices mine to a single address, without joining a pool. Is this possible?

You can use the start_mining <addr> monerod command for each miner and direct all mined XMR to a single address under your control.


Acquiring greater than 51% of the Monero network can pose what kind of risks? As I understand it, if a mining operator was to attain 51% of the network, they can perform a double spend. But would this be detected? And if the same attack was done on Zcash, could it be detected also?

What other potential abuse can a 51% mining entity cause?

And if this was detected, what comes next?

As I understand it, if a mining operator was to attain 51% of the network, they can perform a double spend.

This is one thing they could do, yes.

  But would this be detected?

You cannot detect a 51% attack occurring. To perform a 51% attack, you'd have to mine a secret chain with greater difficulty than the main chain, then replay this secret chain on the main network. Only at the point of replaying can this attack be observed, as this would cause a massive reorg on the main chain. To sustain the attack, the attacker would then have to continuously mine at greater than 51% of the total network. The damage will have already been done though.

  And if the same attack was done on Zcash, could it be detected also?

Same answer as above.

  What other potential abuse can a 51% mining entity cause?

Censoring transactions, double-spends, delayed tx processing, spam the network... just a few things that immediately spring to mind.


If you create a Bitcoin wallet with Trezor first, could you use the private key to create a Monero wallet using NoodleDoodle's firmware? I just received my Trezor and I wanted to go ahead and send some Bitcoin's to it while I figure out how to work the Monero Trezor firmware by NoodleDoodle. Is it possible to import the private keys I create with the main Trezor firmware now with the Monero Trezor firmware I install at a later time?

Installing a new firmware on a Trezor, it won't be possible to import private keys.

Because of the way Hierarchical Deterministic wallets work, a new seed and wallet will be created (with its own set of private keys).

Therefore, you should temporarily transfer your bitcoin to another safe offline device while you set up the new firmware and seed and make sure you have back ups for the temporary wallet.


Network fees and light-wallet options I am new to Monero but not crypto in general. A couple of questions -

When I sent my XMR from the exchange to my wallet I was surprised at the high mining fee (0.05 XMR!) Is this normal?
I run a full Monero (GUI) node which is very demanding and I am not looking to mine. Are there any trusted light-wallets for Monero? Can you recommend any?

(A speculative answer): Yes, it seems that most exchanges have 0.05 XMR withdrawal fee. Monero transaction fees are quite high but not that high. Perhaps the exchanges try to offset the cost of Monero integration. Remember that XMR has no common code with BTC and its' clones, so it must have been more costly to integrate than another BTC fork/spinoff. Hopefully the fees will drop with growing Monero popularity.
You may try Monerujo for Android, or the CLI version which is not resource-demanding. There are also online wallets but I'm not in a position to point you to any of them. Only reminding you to be careful here, because with online wallet you should always assume that someone else has access to your funds.


How does Monero privacy and security compare to ZCoin? How does Monero (XMR) privacy compare to ZCoin (XZC)? Can ZCoin protect the privacy of transaction amounts like Monero will do with RingCT, or are ZCoin transaction amounts visible similar to Monero before the January 2017 hard fork?

What are the key security risks associated with each design? Does ZCoin require a trusted setup or is it trustless like Monero? How does the PoW algorithm of ZCoin compare to that of Monero?

1. Can ZCoin protect the privacy of transaction amounts like Monero will do with RingCT
No, it cannot. All transaction amounts are visible on the ZCoin blockchain. As of the block 1,220,517 v4 fork in early January, RingCT transactions will be allowed on the Monero network. RingCT transactions hide all Monero transaction amounts but will not become mandatory until the v5 fork in September, 2017.
ZCoin (formerly known as Moneta) developers are independent from the academics that created the Zerocoin or the more recent Zerocash protocol. Some key distinctions, as clarified by Zcash developer, Daira Hopwood:

BTW, in case anyone is confused, Zcoin is a renaming of Moneta. It would have been much clearer if the article had said that. It's based on development of the original Zerocoin prototype code, and has nothing to do with Zcash.
Zerocoin/Moneta/Zcoin uses RSA-based ZK proofs. Unlike Zcash, separate parameters are needed for each denomination of coin, and there is information leakage about the denominations used. Proofs are about 45 KiB (not even taking into account the need for multiple proofs for the denominated coins) as opposed to 296 bytes for the raw proof in Zcash.

More background can be found in this AMA with Moneta/ZCoin co-founder Gary Le.
2.What are the key security risks associated with each design? Does ZCoin require a trusted setup or is it trustless like Monero?
ZCoin required a trusted setup and relied on the parameters created by the RSA Factoring Challenge in 1991. According to the parameter generation discussion on the ZCoin website:

At projected computing capacity, it will be safe to use for many more decades. By then, Zcoin can port its parameters to a new cryptographic scheme. Admittedly, the RSA has not been a great company in recent years, with revelations of the RSA collaborating with the NSA. But the keys to the RSA Factoring challenge were generated in 1991, early in the RSA days when the creators of the RSA algorithm still had a high amount of control over their company.

When asked why ZCoin relied on this RSA accumulator setup and hoping that the parameter keys created by someone else (RSA Laboratories) where destroyed, instead of creating their trusted setup similar to Zcash, Gary Le said

There is this thing called a trustless RSA setup but it is very inefficient and would lead essentially to blocktimes that are hours long... In order to avoid that and make this actual cryptocurrency that you can send transactions with we had to use this previously generated trustless[ed] setup by RSA
To say the least, its not the best solution, but it is not no worse and no better than Zcash trusless[ed] setup.

The above "trustless" quotes (instead of trusted) is misleading  just like the language on the Zcoin website:

On the other hand, there is a strong mitigating factor in the unlikely scenario of a compromised Zcoin setup: everybody could still see that Zcoin’s money supply checks out.

The above quote seems to falsely imply that a compromised setup could not impact the money supply, like it could with Zcash. A more accurate statement based on the Zcoin whitepaper would be:
"On the other hand, there is a mitigating factor in the scenario of a compromised Zcoin setup: everybody can still check at any time to see whether or not Zcoin’s money supply matches its planned emission curve or if additional Zcoin's have been created as a result of the compromise"
3.How does the PoW algorithm of ZCoin compare to that of Monero?
ZCoin uses Lyra2 and Monero uses CryptoNight both of which are meant to be ASIC resistant.


If I only have the one-time public and private key of a transaction, can I spend it? I means, if I have a transaction's one-time public and private key, I can spend it even I don't have a Monero address. Right?
I see that there isn't the sender's any infomation in transaction.

That's right. Normally, your wallet uses your private view and spend keys to recover the one-time key and uses it to sign a transaction spending that one-time key. If you already have the one-time private key somehow, you don't need to recover it and you could spend it by itself. I'm not aware of any tools existing which would let you do it, but they could be built.


What are field elements and group elements used for? Field elements (fe) and group elements (ge) are defined in the ref10 folder. They're also used in computations in crypto-ops-data.c.

I'm trying to understand how Monero works by reading the code, but I don't understand the math in the Cryptonote whitepaper.

The ref10 folder contains code for operations on curve25519. This code comes from NaCL, and is not specific to monero. Reading material on ECC will be more helpful in understanding this code than the monero whitepaper.

The group refers to the finite set of points that are solutions to the equation defined by curve25519. Each point has an x and y coordinate integer value, and each value is in the finite set of integers defined by the field. These points are the "public" keys used within monero. The public keys are "found" by repeatedly adding the curve25519 base point to itself. The number of times the base point is added to itself is determined by the randomly generated private key (a large integer value).

The tricky part is understanding that the addition operations are defined in terms of the points on the curve itself, and not on integers. But solving for points on the curve is done with integers, but only those defined by the field.


How is the commitment for a previous outpoint computed (tx v2)? I've been working on a Go-based Monero library and for the MixRing of a RCT, we need the previous outpoints that are being mixed in. It's easy enough to grab those output keys and put them in the destination. The mask, however, is computed with the commitment. What commitment is that referring to? How do I compute it?

Pointers to code in the monero-project/monero codebase would be very helpful.

There is an outPk for each output in a transaction, and therefore you'll need the outPks from the transactions that created each of the inputs. (Where each outPk is C, i.e. the sum of Ci).

OutPks are stored after the pseudoOuts and ecdhInfos in every version 2 transaction.


Transaction stuck as "pending" in the GUI I sent a transaction a few hours ago but it's still Pending (as indicated by the History page of the GUI). How do I resolve this?

First of all, if you're using the CLI, see this Q&A:
Transaction stuck as "pending" in monero-wallet-cli

It's important to make sure you're running the latest version (v0.17.1.9 at the time of writing). You can check the version # on the Settings page of the GUI (under Debug info). If you're not running v0.17.1.9, please upgrade first:
How do I upgrade my software to the newest version?

The following assumes you're using a local node
A transaction being stuck on Pending is typically caused by the local daemon being out of sync with the network. To verify that you're fully synced, perform the following steps:
[1] Go to the Settings page of the GUI.
[2] Go to the Log tab.
[3] Type status into the command + enter (e.g. 'help' or 'status') box.
[4] An output will be displayed that looks like:
Height: 1456425/1456425 (100.0%) on mainnet, not mining, net hash 290.20 MH/s, v6, up to date, x(out)+x(in) connections, uptime xd xh xm xs

[5] Now to verify that you're actually fully synced, compare the first number (of Height:) to the height displayed on a blockchain explorer like, for instance, XMRchain. You're fully synced if your height matches the height displayed on a block explorer.
[6] If the GUI is stating that you're fully synced (100.0%), but your height doesn't match the height displayed on a block explorer (and is off by a large number), it is erroneously reporting that you're fully synced. This is, fortunately, easily resolved as follows. First, exit the GUI and make sure to stop the daemon as well. Second, restart the GUI + daemon. Third, use the status command to verify that it's now correctly displaying the top height.

Once you've verified that you're fully synced, we can resolve the issue as follows:
[1] Go to the History page of the GUI and copy your transaction hash / ID.
[2] Use multiple block explorers (for instance, XMRchain, MoneroBase, or MoneroBlocks) to confirm that your transaction isn't present in either the mempool or the blockchain.
[3a] If it's present in the mempool, simply wait until it gets mined.
[3b] If it's present in the blockchain (i.e. mined already), but is still stuck on Pending, perform the following steps. First, exit the GUI and make sure to stop the daemon as well. Second, restart the GUI + daemon. Lastly, let it run until it says Connected in the left bottom. This should resolve your issue.
[4] If it's not present in the blockchain, again go to the History page and copy the transaction hash / ID.
[5] Go to the Settings page of the GUI
[6] Click on the Log tab.
[7] Go to the command + enter (e.g. 'help' or 'status') box.
[8] Type status to again verify that you're fully synced.
[9] Type -> relay_tx <txid>
[10] As an example, let's say your transaction hash / ID is 4d0f32b7b1c371f1807f4bd6552362cc5b3d61b68b8f8407bb93193f9b1b0273 (randomly taken from the blockchain), you type -> relay_tx 4d0f32b7b1c371f1807f4bd6552362cc5b3d61b68b8f8407bb93193f9b1b0273
[11] Use one of the blockexplorers to check whether your transaction is in the mempool now (and thus will be mined soon).

If these steps don't work for you, try these:
[1] In the command + enter (e.g. 'help' or 'status') box on the Settings page, type -> flush_txpool
Note that it doesn't return an output.
[2] Exit the GUI.
[3] Browse to the directory your wallet files are located (Documents\Monero\<wallet-name> on Windows | home/<username>/Monero/<wallet-name> on Linux | Users/<username>/Monero/<wallet-name> Mac OS X).
[4] Rename <wallet-name> (the file without extension) to <wallet-name>-old
[5] Restart the GUI. This will trigger a wallet refresh from scratch, which shouldn't take longer than 30 minutes.
You should now be able to send a new transaction. However, it could be that the "old" transaction hash / ID is still on the History page. You can safely ignore this.

The following assumes you're using a remote node
It is quite unlikely that a remote node is out of sync with the network. However, if, for some reason, it is and you used it to send a transaction (which got subsequently stuck on Pending), perform these steps to resolve your issue:
[1] Go to the Settings page and make sure to use a different remote node than the one you were using. A list of remote nodes can be found here:
https://moneroworld.com/#nodes
[2] Exit the GUI.
[3] Browse to the directory your wallet files are located (Documents\Monero\<wallet-name> on Windows | home/<username>/Monero/<wallet-name> on Linux | Users/<username>/Monero/<wallet-name> Mac OS X).
[4] Rename <wallet-name> (the file without extension) to <wallet-name>-old
[5] Restart the GUI. This will trigger a wallet refresh from scratch, which shouldn't take longer than 30 minutes.
You should now be able to send a new transaction. However, it could be that the "old" transaction hash / ID is still on the History page. You can safely ignore this.

If you, after all these steps, still aren't able to send out a transaction, it'd be best to either open a new issue the GUI repository or contact me on Reddit.


View only wallets only shows incoming transactions only. How to see outgoing aswell? I created a view only wallet using the cli command save_watch_only, but when loading this view wallet it seems to only show only incoming transactions including all the change that comes back. This is why the balance is totally off as its not accounting for spends. How can I create a view only wallet that gives the real balance?

First and foremost, a view-only wallet with merely the private view key will only be able to see incoming transactions to its corresponding public address. A more theoretical explanation can be found here:

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

As a practical example, let's say you received a 10 XMR output initially and thus have an initial balance of 10 XMR. Subsequently, you make a transaction of 2 XMR. The wallet will create a transaction where the 10 XMR output is used input, a 2 XMR output that goes to the recipient, and an 8 XMR (minus fee) output that goes back as change to the sender (you). Now, the view-only wallet will see the change as another incoming transaction and therefore show an "erroneous" balance of 10 XMR + 8 XMR (minus fee).

To get a correct balance in the view-only wallet, one has to import the accompanying key images, i.e., each output has an accompanying key image that allows the view-only wallet to check whether an output has been spent and thus show a proper balance as well. Step 1 to 6 of this guide explain you how to import the key images into a view-only wallet:

  Yes, there is. It works a bit different than in Bitcoin due to Monero specifics involving scanning for outputs with the view-key and checking the spent status by using key images.

  First, we assume you have a fully-synced node and fully-refreshed watch-only wallet on the hot computer. Also, we assume you have wallet software on the cold computer (don't need the node, just monero-wallet-cli).

  Using watch-only wallet, command export_outputs <filename>. There will be a file with <filename> created in the working folder*.
  Copy the file to the cold wallet computer.
  Using cold wallet, command import_outputs <filename>*. The cold wallet now has all the outputs and can prepare a signed key image for every one of them (unless something new was received after step 1. It won't display the correct balance because it can't check the spent status of the key images, as it is offline.

  --- Stop here if you only want to monitor incoming transfers and don't care to see the correct balance and when something has been spent ---

  Using cold wallet, command export_key_images <filename>. There will be a file with <filename> created in the working folder*.
  Copy the file to the hot wallet computer.
  Using watch only wallet, command import_key_images <filename>*. The watch wallet is now aware of spent status for each output and it shows the correct balance (unless something new was received in the meantime, after step 1.

  --- Stop here if you only want to monitor the balance with the watch only wallet. Goto 1. after each newly received funds. Continue for cold spending. ---


Why does the Monero difficulty increase? Monero's difficulty has soared a lot in the last days and the trend seems to be confirmed.

Why did it happen? What is the technical reason?

The difficulty is a numerical representation of how long on average it
  will take to create a valid block that satisfies the Proof-of-Work
  algorithm being used, it does not represent minutes or time per se.
  but instead is an integer number that makes the PoW calculation take
  longer to perform, this is adjusted by the nodes and miners so that on
  average it ensures the network creates blocks at a generally
  consistent rate. This is calculated among all the nodes and miners in
  accordance with the globally agreed rules in the network, AKA
  consensus rules. Miners that do not include this number in their
  difficulty calculations will not have their block validated and
  included by the rest of the network.

You can find the answer here: Blockchain properties: what are Height and Difficulty?


Exploring Testnet's Blockchain I have synced my testnet node. I can send and receive transactions, but I would like to see how they look like for someone viewing the blockchain (specially the ringCT ones). So far, though, I couldn't find a single working block explorer that supported the testnet, and to my surprise, apparently there is no way to look into the blockchain in my local machine only using wallet commands! Am I missing something? Please let me know if what is the best way to access that information.

You can check this block explorer (according to this reddit post) :

http://xmrtestbbzl275vy.onion/

tor2web proxy: http://xmrtestbbzl275vy.onion.link/


How is Poloniex keeping track of their user's Monero balances when they do not use any Payment ID's? When using poloniex, they issue a monero address to each user without the payment id's. How are they scanning so many user's monero private keys at once? I can't imagine them loading 1000s of wallet files one after another to scan the monero blockchain for an updated balance for each user. This is something I wanted to figure out but I never did in my own application that has many xmr private keys.

Last I was aware, Poloniex issues users with a Monero integrated address, which embeds a payment ID in the address. You can easily verify this by the address length - integrated addresses are 106 hex digits long.

As the Monero community has already signalled that payment IDs are being deprecated, subaddresses should be used instead moving forwards.