How do i statically build Wolfs cpuminer-multi? The miner is : https://github.com/OhGodAPet/cpuminer-multi

The question is how do i do a static build which would allow me to compile the miner only once and run it on several diffrent machines.

Im using ubuntu 14.04 but i can switch to any operating system if needed.

Here are well written instructions for a static compilation of cpuminer:

https://lxadm.com/Static_compilation_of_cpuminer


Exchanges that support integrated addresses Do any exchanges support Monero integrated addresses?

For those that do not yet support them, have they shared the reason why?

Tux exchange added Monero with integrated addresses:


What happened at block 202612? Why was this block hardcoded in the source-code?

What happened with the Monero blockchain in the block 202612?

In short, someone managed to exploit a bug in the code, which produced a block that couldn't be validated by the nodes, there's a full analysis of the attack here, https://lab.getmonero.org/pubs/MRL-0002.pdf

Fluffy explained it well, so I'll just paste his abbreviated comment from here: https://www.reddit.com/r/Monero/comments/30jp2n/alright_devs_own_up_whats_the_deal_with_magic/cpte8lk:

The long and the short of it is: the tree-hash.c code that is responsible for transaction hashes within a block had a bug in it whereby any hashes for more than 512 transactions would be computed using uninitialised memory (ie. with garbage). So the attacker slowly built up the dynamic block size limit until they were able to create a 72kb block with 514 transactions in it. Because the hash on transaction 513 and 514 in that block was computed using some random bits of memory on the mining pool's node at the time, a fork occurred. The network eventually chose one of the forks.

We could have patched the bug and carried on, as the network resolved the fork and was fine within 30 minutes of it occurring, but there was a problem with that: nodes stuck on the old fork still existed (in fact I spotted one still around the other day, and this attack occurred in September, 2014). When syncing up and receiving blocks from peers these "stuck" nodes are fine, until you get to block 202612, when suddenly it sends you a block that you cannot verify. We also found that there were some instances of nodes on the correct fork, but their transaction hashes for transactions 513/514 on block 202612 disagreed. This opened up the possibility for the attacker to spend those funds later on (or even for them to be used in a ring signature) which would cause another explosion.

Thus we had to add in a checkpoint for 202612, except that the block hash is over the block header only (ie. disregarding the actual transaction hashes), so we created an exception that uses a blob hash (ie. based on the raw block). We're actually busy refactoring that out into a more general purpose blob hash checkpoint system, partly for legibility, but also so we can use it in future if there is ever a need.


What is a remote node? There has been a lot of reference to how one can use a remote Monero node for transactions. So what actually is a remote node?

Since Monero has a separate daemon monerod, which synchronises with the network, a command line wallet monero-wallet-cli and a GUI wallet monero-wallet-gui to generate keys, sign transactions etc.

Both wallet versions need a fully synchronised node to scan for new outputs. For best privacy, it's recommended to run an own node (locally or remotely hosted), since you will not disclose for what outputs your wallet is searching on the blockchain. However, when you have not the resources available due to a slow internet connection or no option to run a node 24/7, you can connect to an open node over the internet, which will save you bandwidth and disc space. For example moneroworld.com offers some open remote nodes.

For broadcasting own transactions you can probably keep even more privacy when using a hidden node over the i2p network, since you will not disclose your IP address along with your transaction to anybody.


Why does the daemon say that I'm now syncronized with the network while I'm still missing some blocks? This is what I observed:

P2P2, P2P4, and P2P5 have more blocks than me. There's also a [P2P6] message without any indication of block height, and right thereafter the message that I'm now synchronized with the network.

Does this mean that P2P6 just does not have any newer blocks than me?

But when I know from other peers that there are more blocks, shouldn't the message that I'm now synchronized be printed later when I really received and verified those blocks?

simple answer is those nodes are on a different, longer chain. how your node decides which chain is the "correct" chain, I don't know that answer.


Is the Monero genesis block reward spendable? Is the Monero genesis block reward spendable?

The 50 BTC in the Bitcoin genesis block can never be spent. Are the 17.592186 XMR from the Monero genesis block capable of being spent?

If they cannot be spent, would transactions from that block (assuming someone had the private key to authorize them) be rejected for the same reason as Bitcoin?

  Satoshi decided not to add the coinbase transaction from the genesis block to the global transaction database. Thus all the nodes in the network would reject the block.

Can the address (if we knew what it was) associated with this tx hash that received coins from the first Monero block receive XMR transactions the same way that the Bitcoin address associated with the genenis block has?

It is spendable. There are a lot of clones which use the genesis block reward as premined coins


Mining from multiple machines on a LAN If I've installed a full wallet and daemon on a node on my network, how can I also solo-mine from other machines on my network without each of them needing a copy of the entire sync'd data?

Set up your own pool on one machine and run a standalone miner on others (xmr-stak-cpu for example). This way you combine the hashing power and get the mined rewards for yourself.


Where can I find the p2pstate.bin file so I can delete it? ...as is strongly suggested in this post: https://www.reddit.com/r/Monero/comments/4z3ced/guide_to_using_monero_with_tor_correctly/

p2pstate.bin is stored in ~/.bitmonero on Linux and Mac. On Windows it's stored in C:\ProgramData\bitmonero.

However, the gotcha in the link you gave no longer applies: the node ID is now regenerated at random at each daemon start. Therefore, deleting the p2pstate.bin file is not necessary for that reason. It might theoretically be used to fingerprint you based on the set of known peers, but that seems quite a stretch.


I2P: How does the reseed works ? I saw in this question that there are hard coded reseed servers.

How does it work exactly ?

Indeed, the question cited refers to a list of url. The reseed process starts with choosing randomly one of them.

So let's assume that the choosen URL is : https://i2p.mooo.com/netDb/.
Here are the next steps :

Download an SU3 file, which must be named i2pseeds.su3 and located at the root :

curl -k -A "Wget/1.11.4" https://i2p.mooo.com/netDb/i2pseeds.su3 > i2pseeds.su3

Check Signature and type:

java -jar lib/i2p.jar su3file showversion i2pseeds.su3

Or

kovri-util su3file showversion i2pseeds.su3

Extract the included file :

java -jar lib/i2p.jar su3file extract i2pseeds.su3 i2pseeds.zip

Or

 kovri-util su3file extract i2pseeds.su3 i2pseeds.zip

Unzip :

 mkdir tmp && cd tmp && unzip ../i2pseeds.zip

At this point, you should see a list of files whose name looks like    routerInfo-(44 character base 64 router hash).dat

Each file can be inspected with :

kovri-util routerinfo <filename>

Or

java -jar lib/router.jar routerinfo <filename>

These are the informations needed to start contacting other peers in the I2P network.


Seeking tool to inspect/study monero cli source code I'm interested in digging in Monero CLI source code... not a specific reason for now, just hoping to get enough confidence to look at code as authoritative source of information when I have doubts.
I definitely should brush it up, but in the past I had experience with C/C++ and I still remember (or I think so ;) ) the bases... so my main problem now is to find something like a project inspector to be able to browse between Monero source components in a comfortable and ergonomic way (not only from a files perspective but also from a UML-like logical/interdependency of objects/functions point of view, with possibility to zoom in or out on project components, if possible)... Any suggestions?
Thanks

Seems first answer is a selfish one ;) ... since yesterday I'm evaluating Sourcetrail (https://www.sourcetrail.com) and seems what I was seeking...
I haven't tried it against Monero source code yet, I've just followed the tutorial project introducing its main logic and functions.... but it seems what I'm looking for, so I'm writing about it hoping to help others with my same needs.
Of course I'll still be very happy to listen to other suggestions/experiences as well


Is there a monero wallet that can do a range proof? The question here Proving amount of Monero - Range Proofs

Talks about how to do a range proof, but it doesn't quite say how to do it using  existing methods of making a payment. I want to prove a number is between to positive values, can an existing application, like a specific wallet do this, or is there program code that can do this?

The Monero wallets (official or any others that I'm aware of), do not offer any functionality to perform generic range proofs.

For a generic range proof, you could use code as in user679128's answer. If you are a competent Java developer, there is also a Java library created by one of the Bulletproof authors, which could be used to help implement what you require.

If your question is specific to Monero, insofar as you are wanting to prove you have funds in the wallet between values X and Y, currently this functionality does not exist, though I can imagine use-cases for this functionality. The nearest functionality that exists is get_reserve_proof, which proves you have at least X in your wallet.


Export a list of Integrated Addresses from GUI (or monerod)? Is there an easy way to spit out 100 or so integrated addresses from the GUI or command line into a csv or something similar?

The wallet RPC interface has a make_integrated_address command that you can call repeatedly to do that.


What are the shortcuts available in the official GUI? What are the shortcuts that I can use in the official GUI ?

Ctrl+S: go to panel "Send"

Ctrl+R: go to panel "Receive"

Ctrl+K: go to panel "Verify Payment"

Ctrl+H: go to panel "History" (of transactions)

Ctrl+B: go to the panel "AddressBook"

Ctrl+M: go to the panel "Mining" (not implemented yet)

Ctrl+I: go to the panel "Sign/Verify"

Ctrl+E: go to the panel "Settings"

Ctrl+Tab or Alt+Tab: cycle among panels in the order Dashboard, Transfer, History, AddressBook, Mining, Settings.

Ctrl+Shift+Tab or Alt+Shift+Tab: cycle among panels in reverse order.

I you press control, you will see the possibilities displayed.

Source


Why is it taking so long for GUI to Sync? My balance is still at zero I have tried for the last few days to sync my windows gui monero wallet. It seems difficult, my balance is showing at zero - after 8 days mining, is this because the wallet hasn't synced yet or 8 days mining in minexmr at 150 H/S gives zero payout? Why does the synchronisation process take so long? It seems like a lot of effort compared to other wallets/currencies I have used which 'sync' in one second. Why can't my wallet just find me in the blockchain and tell me what my balance is? Or - as I say is it just because there probably hasn't been a payout yet. What do you think people?

my balance is showing at zero - after 8 days mining, is this because the wallet hasn't synced yet or 8 days mining in minexmr at 150 H/S gives zero payout?

The minimum payout is 0.5 XMR from minexmr, as far as I know.  At 150 h/s, it will take several months to reach that threshold.

  Why does the synchronisation process take so long?

The Monero blockchain is opaque.  Balances aren't stored at addresses like in nearly every other blockchain.  Your wallet needs to scan blocks to try to "unlock" all the unique, one-time addresses on the blockchain to see which outputs are owned by it.  The most trustless and private way to do this is to first download a copy of the blockchain locally, which can take from several hours to several days.

  It seems like a lot of effort compared to other wallets/currencies I have used which 'sync' in one second. Why can't my wallet just find me in the blockchain and tell me what my balance is?

See previous answer.

  Or - as I say is it just because there probably hasn't been a payout yet. What do you think people?

In this case, it sounds like your wallet is probably empty anyway.  But, in general, it does take longer for new Monero users to get up and running than for other cryptocurrencies for the reasons mentioned above.


Monero RPC send transaction from address I used the following command to pass a monero transaction with the daemon :

{"jsonrpc":"2.0","id":"0","method":"transfer","params":{"account_index":2,"destinations":[{"amount":100000000,"address":"9wNgSYy2F9qPZu7KBjvsFgZLTKE2TZgEpNFbGka9gA5zPmAXS35QzzYaLKJRkYTnzgArGNX7TvSqZC87tBLwtaC5RQgJ8rm"}]}}

But I need a command whose I can define the source address from which I can send the coin monero.

Each account in a wallet has a number, and each subaddress in an account has a number.

You can add the account_index and subaddr_indices options when calling the transfer method to indicate from which subaddress (or subaddresses) the coins will be taken.

For example to use subaddress n°3 in account n°2 as source of the coins:

{"jsonrpc":"2.0",
 "id":"0",
 "method":"transfer",
 "params":{"account_index":2,
           "subaddr_indices":[3],
           "destinations":[{"amount":100000000, "address":"9wNgSYy2F9qPZu7KBjvsFgZLTKE2TZgEpNFbGka9gA5zPmAXS35QzzYaLKJRkYTnzgArGNX7TvSqZC87tBLwtaC5RQgJ8rm"}],
           "get_tx_key":true}}

The documentation of the transfer method is here.


Monero RPC get_transfer by php monero-integrations I try to get the transaction by calling get_transfer, but I dont know how to send the $subaddr_indice to get the right answer back
i have:
[subaddr_indices] => Array
                    (
                        [0] => Array
                            (
                                [major] => 0
                                [minor] => 7
                            )

                    )

and if I try to send:
 $get_transfers = $walletRPC->get_transfers('in', 0, '[0][7]');

I get all the transfers back and not the one I search for, what is wrong?
thx in advance

Per the documentation:
get_transfers
Look up transfers

Parameters:

$input_types <Array> Array of transfer type strings; possible values include 'all', 'in', 'out', 'pending', 'failed', and 'pool' (optional)
$account_index <number> Index of account to look (optional)
$subaddr_indices <String> Comma-separated list of subaddress indices to look up (optional)
$min_height <number> Minimum block height to use when looking up (optional)
$max_height <number> Maximum block height to use when looking up (optional)

So it should be:
$walletRPC->get_transfers(['in'], 0, "7");

to fetch incoming transfers for account index 0, subaddress index 7.


How can I change the default log level from my Monero daemon? How much of an impact will my log level have on syncing time? Are there any security concerns with using a log level of 0 or 1?

Use the --log-level X argument to bitmonerod. Default log level is 0 (less verbose).

The impact on syncing time is minimal on 0, but it can be significant when using a very verbose method like 4, and if you are writing to a log file on the same disk where the blockchain is downloaded.

Logs mostly have network information, so I'd say the security impact is minimal. You can completely disable logging if you are concerned by directing output to /dev/null if you are on Unix-like OS.


Consistency failure in amounts received When I tried to send the amount from my wallet. monero-wallet-rpc throws 2018-10-20 10:58:22.492     7f6906cab780        WARN    global  src/wallet/wallet2.cpp:1511     Consistency failure in amounts received
2018-10-20 10:58:22.492     7f6906cab780        WARN    global  src/wallet/wallet2.cpp:1512     Check transaction <629360cd53ead8d7668962d58b2abd026b401e66ecfcc2c49a0e51d
81bf26b6a>

Any solution please,

Thanks in Advance.

Did you send funds from your wallet back to that same wallet? This warning message might reflect an inability, when observing the blockchain, to distinguish between the amount sent and the change.

When you send a transaction back to yourself, you'll create two outputs destined for your own wallet. One will be the "amount sent", and the other will be "change". Change is generated because the amount you're sending to yourself probably isn't the exact same amount as the output you're spending (especially after fees are deducted). Since both outputs are sent back to you, it's hard to later distinguish between the amount sent and the change amount, since they are both outputs indistinguishably addressed to you.


What benefits are there of using an ARM device like Raspberry Pi? I've seen ARM listed as one of the options on the Monero website. What benefits are there of using Monero with an ARM device like Raspberry Pi instead of a traditional computer?

Are there any energy or security benefits of running using a Raspberry Pi to run a full node or creating offline wallets?

Raspberry Pi is good for testing the minimum resource requirements needed to run Monero. As long as Monero continues to work on ARM devices like the Raspberry Pi then scaling concerns related to hardware requirements will not be a problem for most people.

It also is extremely inexpensive in terms energy consumption, with a Raspberry Pi and other ARM systems able to operate as a full node with only 1 or 2 watts of electricity.

Security benefits of using a Raspberry Pi result from it being isolated from other irrelevant (to Monero) programs installed on every modern PC. Such an isolation model is ideal for creating offline wallets for cold storage.


Generate Monero Private/Public Key using PHP Only? I'm trying to generate Private/Public Keys for Monero using only PHP.

This is the library I'm using:

https://github.com/sneurlax/monerophp/blob/master/src/cryptonote.php

This is my code:

require_once('src/cryptonote.php');

$Cryptonote = new Cryptonote();
$seed = $Cryptonote->gen_new_hex_seed(); //generate new random hex seed
$address = $Cryptonote->gen_private_keys($seed); //generate new random private key

print_r($address);

I receive this output:

Notice: Undefined variable: spendkey in /var/www/html/monero/src/cryptonote.php on line 72
Array ( [spendKey] => c2c511418397a682834576441911a68fb7fc0ab55db4cbf5e11ecd647a6c7402
[viewKey] => 4a078e76cd41a3d3b534b83dc6f2ea2de500b653ca82273b7bfad8045d85a400 )

The $seed seems to output and change but the viewKey stays the same.

How would I code this properly so that I can implement this in a webstore without using the Monero daemon?

Also, is there any downsides to generating keys like this?

Line 72 in that file has a variable name that doesn't match the parameter name (notice the lowercase k in spendkey). Just edit that line replacing $spendkey with $spendKey should fix it.


How can one use RingCT to maximize the privacy of existing wallets? I think the privacy is not what it should be in my existing wallets is because 1) there are old zero mixin transactions there and 2) it is my understanding that it is possible to estimate the amounts of even non zero mixin transactions in some cases.

I would like to use the Jan 2016 implementation of RingCT to maximize the privacy of my existing wallets as it specifically addresses these problems.  How is it best to do so?

You just need to sweep all your inputs to your own address and the new inputs (if transaction was mad with ringct of course) will be in the new RingCT format


Don't have Mnemonic seed from https://moneroaddress.org/ --- Can I still access funds that I sent to offline wallet? update:
I realize what I did. I went and created an offline wallet on https://moneroaddress.org/ but didn't write down the info. Noob mistake I suppose.
If anyone can help me find a way to still access my funds to my wallet please let me know. I have the block explorer info on the withdraw I did on Bittrex

I'm trying to catch up here and am pretty new but have done a lot of homework. However, I withdrew funds from Bittrex and had to generate a monero wallet in order to do so. I did this and have the address and the withdraw info from Bittrex. I don't believe I did it on mymonero.

I am downloading the Monero GUI and am hoping I can get my funds transferred over from the wallet I created on Bittrex.

Bittrex sent me the Block Explorer info and it shows an https:// monderoblocks.info/search/ (with the transaction ID following).

This shows the private and public keys (says key image and public key).

Can I use this info to bring the funds into the Monero GUI I downloaded?

Basically I have a monero wallet I generated quickly to pull out funds from Bittrex. I have the address to that wallet and the key image and the public key from the block exporer but that's all I have. Can I get these funds into my new wallet I generated off the monero GUI?

The help is very much appreciated. I'm spending so much time trying to figure this out.

Thank you.

In order to access the monero on a particular account, you need the secret keys for that account. The mnemonic seed is a representation of those using words. So if you did not keep the mnemonic seed, nor the secret keys, that monero is lost forever.

Now, there's a much better chance that the browser might have saved that page to disk, or that it might be written to swap, but that's still probably out of luck. You could maybe grep the swap partition for "Keep it secure!", which is the bit of text just before the seed on that page. Quite the long shot though.


Troubleshooting GUI After April 6 2018 Upgrade (Still Popping Blocks) So it's been a while since I opened up the GUI, and forgot to prepare for the April 6 update. I opened up the GUI on Aug 8 2018. The daemon started up, and began to sync, for about 12 hours.

It stopped syncing, so I started searching for how to fix it.

I went though a few guides. I ended up deleting a file called .p2psomething.bin in the hidden .bitmonero folder at the advice of one of the threads here on StackExchange. It still didn't fix anything.

I did one other step from that same thread, where I changed the amount of blocks the daemon synced each time to 10 (I think...I lost the thread) instead of 20.

I also tried connecting to a remote node instead of a local node. Also no results.

When I click on bitmonero.log I can see a variety of errors like:

contrib/epee/include/net/http_client.h:456  Unexpected recv fail

2018-08-09 20:04:05.620   0x7fff9f716380    ERROR   msgwriter   src/common/scoped_message_writer.h:102  Error: Problem fetching info-- rpc_request:
2018-08-09 20:04:50.466   0x7fff9f716380    INFO    global

Or

*:WARNING,net:FATAL,net.p2p:FATAL,net.cn:FATAL,global:INFO,verify:FATAL,stacktrace:INFO,logging:INFO,msgwriter:INFO
2018-08-09 20:01:33.532   0x7fff9f716380    INFO    global

However, I also see that it's currently "popping blocks". The current status is:

2018-08-09 20:26:34.740   0x7fff9f716380    INFO    global  src/cryptonote_core/blockchain.cpp:462  Popping blocks... 1620196

It reduces the number by 100 each time.

Should I let it go through the rest of the blocks to pop? Seems like that will take a while.

I'm not sure if I should continue to troubleshoot to just start over. Thanks for any help!

*Mac OSX Sierra 10.13.6
*monero-gui-mac-x64-v0.12.3.0

If you have let the daemon sync for 12hours on 0.11, a lot of blocks needs to be popped on 0.12 so you could start syncing again.
According to your description, I'll recommend you let it pop what's needed to be popped, and let it sync after that.
Obviously it will take time, but still less than starting over.


Why does Monero not softfork like Bitcoin does? Are hardforks just safer than softforks? Bitcoin seems to like softforks for some reason.

Let's first define the terms:

Hardfork means that nodes running old and new software will have a diverging view of the blockchain.  They'll be on their own fork, playing by different rules.

Softfork means that even though nodes running old and new software have a different view of the blockckhain the blockchain doesn't fork.

Let's now take RingCT (RCT) as an example of a fork.  This is a huge update so old and new software will have different views of RCT transactions.  Nodes running old software won't understand RCT so they'll view RCT transactions as invalid and blocks containing RCT transactions as invalid.

Now we have two choices:

Disguise RCT transactions in some manner so they'll look like old transactions.
Let the old nodes reject RCT transactions.

If we opt for 1. We're adding complexity in terms of the implementation code but also complexity we have to deal with when analyzing the network itself.  This is unavoidable because not only do we have to implement a new thing, but we also have to make it look like something else.

We're also creating another, more subtle, problem for ourselves.  All the old nodes on the network are now zombies.  They're there, but they're not doing any validation (they can't, because they don't understand the new rules).

To make matters worse, it's very hard for anyone to reject the new rules.  We can't upgrade, because we don't want the rules, but we can't do nothing either because we'd be turned into a zombie.  To object we'd have to implement our own version of the software which explicitly rejects valid transactions just because they are implementing the new protocol!

If we opt for 2. We have the problem of forcing everyone to take a stand. The chain will split in two.  Those running old software will be on one chain, those running the new software will be on another.

In most cases the old chain will simply die, because nobody finds it valuable.  But sometimes, we'll get in a situation where both chains have perceived value, like with Ethereum and Ethereum Classic.

And now, we're finally in a position to answer the original question.  Are hardforks or softforks safer?

Hardforks are safer because they reduce complexity (both in the implementation code and in the network's rules).  They ensure all nodes on the network are validating.  They force people to regularly update their software (to increase performance, patch security holes etc).
Softforks are safer because they prevent the community from fracturing (by taking away choice).


What is the risk of specifying --verify 0 with blockchain_import? I have noticed that importing a blockchain snapshot file blockchain.raw speeds up dramatically when using --verify 0. The default value is 1 though. What is the downside, or risk, of not verifying blocks and transactions during import? Would this just result in an error when doing rescan_bc in simplewallet? Or is there anything else to be aware of?

Basically, by not verifying, you're assuming the download is trusted. But there could be all sorts of bogus data in the blockchain.raw, if you have a man-in-the-middle attack during the download.

Personally, I only ever use blockchain.raw imports when I'm experimenting on very low power ARM devices, syncing up from scratch in nearly every case is significantly faster - and safer!


Can I generate a spend-proof with a cold-wallet? I am trying to create a spend-proof on a cold-wallet (an air-gapped laptop), but thought that the wallet might need a connection to a node to create it.

Is it possible to exchange data between a view-only wallet and a cold wallet, such that the latter can get all the information it needs to create a spend-proof?

I am aware that the cold-wallet can create key-images for a view-only wallet if the latter provides the former with the needed outputs and was wondering whether something similar can be done for spend-proofs, or if that is a feature exclusive to a hot full wallet (i.e. exclusive to a wallet having the spend-key and which is connected to a node).

You cannot prove you have spent anything until you broadcast a transaction. So you'll do this on your hot wallet, when you broadcast the transaction. See this answer for how to prove a payment.

For performing a cold and hot wallet tx, see this answer, and do the get_tx_key txid after step 11.


What is necessary to implement monero into Bitcoin trezor? What is necessary to implement monero into Bitcoin trezor? And what could we expect in the future, as the developement moves on?

From what I know, NoodleDoodle is still currently working on improving the firmware to be able to work with RingCT transactions.  It is still "technically" in a testing phase though; and you can see progress being made.  You can test out the firmware by downloading from either here on the official forum, or getting it from here on github.

As for the first part of your question, I believe you meant to ask what is the current status with Monero's integration into the official trezor firmware.  As for that, that's still up in the air.  There are no more links to the actual conversation that took place (I think?); but from how I understood it, there was a disagreement of some sort between NoodleDoodle and one of the head guys at Trezor who was working on integrating Monero.

Anyway, long story short, the upstream merge of NoodleDoodle's firmware has been halted.  On the bright side, there are other hardware wallet companies such as Ledger willing to help out.  You can read more of what went on recently here on the current thread about the situation on /r/Monero.


monerod can't synchronize when running monerod I keep getting an error

2017-03-29 20:07:11.704 [P2P9]  ERROR   verify  src/cryptonote_core/blockchain.cpp:3339 Block with id: <db7b9b1d3b1bddfa8dba171afbc2f91346a90f25335c09f00e0ca090b5544056> has incorrect miner transaction

It's now stuck on height 1274863 and can't sync above that.
Anyone knows what may be the problem?

removing some of the last blocks using

./monero-blockchain-import --pop-blocks 1000

fixed the problem


Do you get a faster hashrate mining with Linux? I am mining with a RX 470 GPU and a Intel 6600k CPU on Win7, would I get a higher hashrate mining using Linux OS?

You can't say in general, since it depends on too many factors like exact hardware configuration, OS distribution and version, driver version eg.

From my experience, you will get slightly better results with GPU mining on Windows than on Linux. This is mainly because of much better driver support for modern GPU chips on Windows. However, if you are very familiar with Linux and tweaking, building your own binaries eg. you can probably get even better results on Linux.

But: I would just give it a try and install the latest Ubuntu build (to get the latest drivers) on a separate partition and benchmark it against your Windows results.


Lower the Locked Balance Limit It seems like monero cli has a locked balance at 10 blocks.

Is there any way for me to lower that in the software?
Or is on the protocol level that tx's with less than 10 confirmations cannot be spent?

Yes, change this line and recompile. It's a wallet thing, not consensus.

There are caveats:

You'll probably be the only one with changed config so someone could use it to fingerprint your TXes
If a reorg happens, there's the risk of your transaction becoming invalid because inputs are referenced by offset


Can any one please tell me where I can find the latest python implementation of monero RingCT? Mininero is a python implementation of monero. But the git repository is three years old where the latest link does not have any content. Is there any other python implementation of monero where code for LSAG and ringCT is available?

I've implemented the Monero transaction code signing for the Trezor in python, the code is here:

https://github.com/ph4r05/monero-agent

And MLSAG in particular: https://github.com/ph4r05/monero-agent/blob/master/monero_glue/xmr/mlsag2.py

The python implementation also contains pure-python Bulletproofs implementation.


Since monerod through Tor is slower (on Whonix), would importing the .raw be faster? My understanding is that importing a blockchain backup with Monero and other  cryptocurrencies takes about the same time it takes to sync normally. The only reason I could see for someone doing that, then, is if they have a high latency internet connection, or not much bandwidth.

Is that correct reasoning?

Will importing the .raw be quicker than syncing when running through Whonix/Tor? (I would just experiment, but I am having issues running monerod at the moment).

It seems likely that this would be a good idea to import the raw file. Not only will this possibly be faster, but also avoid spamming the Tor nodes on your way with gigabytes of blocks.

One very large difference in running time when importing a raw file is whether verification is enabled or not. If you already have a raw file you know is good, you can disable verification. This is however not recommended if you've just downloaded that raw file from the internet.

Another note is that I think importing is done one block at a time, and syncing from the network has optimizations that allow up to 200 blocks to be processed at once, allowing some speedup over import speed.

In the end, if you already have the raw file and aren't particularly pressed for time, avoiding spamming the Tor network seems the best way to go.


Open Alias address resolve error I just set up my email address with Open Alias and got the following errors:

GUI

Address found, but the DNSSEC signatures could not be verified, so this address may be spoofed

CLI

For URL: bob@nowhere.com, WARNING: DNSSEC validation was unsuccessful, this address may not be correct!

I didn't get any error with the MyMonero app (not officially released yet though).

Anyway, does anyone have any insight on how to fix this error/warning?

If your DNS provider does not support DNSSEC, then your wallet cannot be sure that there is not a man-in-the-middle attack, DNS poisoning or other type of attack giving your wallet an incorrect Monero address.

The only way to resolve this is to move to an alternate DNS nameserver provider that supports DNSSEC.


Can a copy of the blockchain hold private information? I want to run a daemon on another machine, and I was thinking of copying the blockchain I already have (copying the entire .bitmonero folder). I'm curious whether any private information may be leaked by doing that, such as information about the machine that this blockchain was synced on (IP, name, OS...) or information about wallets that used this copy of the blockchain.

The blockchain itself will not (beyond its endianness), but some other files might: the logs, in particular, might contain paths specific to your computer (not saying they definitely will). The p2pstate.bin file will contain your node's peer id (though this is now reset on every restart), and may also leak information on the version of boost it was built with. That's all I can think of right now. No wallet information will be there (unless of course you chose to store your wallet there).


Will integrated addresses ultimately replace payment IDs? Is there a plan to remove the option to generate a payment ID not using the form of an integrated address?

If not, what are the advantages of allowing a payment ID separate from the receiving address?

One of the biggest reasons for using integrated addresses is that exchanges no long need to require users to deal with an extra address field (the payment ID) when sending Monero. Seeing how easy it is to manage integrated addresses, being adding or retrieving the embedded payment ID from a regular address, I do say its a matter of time for it to completely replace regular payment IDs.


How to compile monero quickly after code modification I want to know if there is a way to compile the code via terminal after modify one line in the code' but without the need to compile all the code (now I compile with 'make release').

Thanks!

If you just need one particular program, you can build just that one, eg:

make -C build/release daemon
  make -C build/release simplewallet

etc.

If the line you changed is in a header file, then a lot will be recompiled, but if in a cpp file, only that one will be rebuilt (plus libs/binaries).

If you change a line in a header file, then ccache might help. If the line change ends up such that some preprocessed translation units end up identical, then ccache will avoid rebuilding those.

Another way is to use precompiled headers. There was a short lived PR adding those to Monero, but is was apparently saving not very much, and actually making things slower in other cases, so it was closed. Maybe this is something that can be looked at again.

Other possible ways: remove optimization flags such as -O2, ensure lots of RAM is available for caching headers/libs, move the tree and headers to a SSD, use -jN if you have the RAM and CPU.


Error starting monerod When running ./monerod --offline I get the following output. Running on Windows 10 Pro in Microsoft Azure using MSYS2 MinGW 64-bit

The error messages are in bold.

monerod does not run.

  2018-07-04 09:59:46.958 8496    INFO    global
  src/daemon/main.cpp:279 Monero '  Lithium Luna'
  (v0.12.1.0-master-aa6850c7)

  2018-07-04 09:59:46.958 8496    INFO    global
  src/daemon/protocol.h:53       I  nitializing cryptonote protocol...

  2018-07-04 09:59:46.958 8496    INFO    global
  src/daemon/protocol.h:58       C  ryptonote protocol initialized OK

  2018-07-04 09:59:46.958 8496    INFO    global  src/daemon/p2p.h:63
  Initiali  zing p2p server...

  2018-07-04 09:59:47.474 8496    INFO    global  src/daemon/p2p.h:68
  p2p serv  er initialized OK

  2018-07-04 09:59:48.162 8496    INFO    global  src/daemon/rpc.h:63
  Initiali  zing core RPC server...

  2018-07-04 09:59:48.162 8496    INFO    global
  contrib/epee/include/net/http_se  rver_impl_base.h:76     Binding on
  127.0.0.1:18081

  2018-07-04 09:59:48.162 8496    INFO    global  src/daemon/rpc.h:69
  core RPC   server initialized OK on port: 18081

  2018-07-04 09:59:48.162 8496    INFO    global  src/daemon/core.h:86
  Initiali  zing core...

  2018-07-04 09:59:48.162 8496    INFO    global
  src/cryptonote_core/cryptonote_c  ore.cpp:427     Loading blockchain
  from folder C:\ProgramData\bitmonero\lmdb ...

  2018-07-04 09:59:48.366 8496    INFO    global
  src/cryptonote_core/cryptonote_c  ore.cpp:525     Loading checkpoints
  2018-07-04 09:59:48.366 8496    INFO    global  src/daemon/core.h:92
  Core ini  tialized OK

  2018-07-04 09:59:48.366 8496    INFO    global  src/daemon/rpc.h:74
  Starting   core RPC server...

  2018-07-04 09:59:48.366 [SRV_MAIN]      INFO    global
  src/daemon/rpc.h:79    c  ore RPC server started ok

  2018-07-04 09:59:48.380 [SRV_MAIN]      ERROR   default src/rpc/zmq_server.cpp:1  12      Error creating ZMQ Socket: Address in use

  2018-07-04 09:59:48.380 [SRV_MAIN]      ERROR   daemon
  src/daemon/daemon.cpp:16  2       Failed to add TCP Socket
  (127.0.0.1:18082) to ZMQ RPC Server

  2018-07-04 10:00:09.552 [SRV_MAIN]      INFO    global
  src/daemon/rpc.h:84    S  topping core RPC server...

  2018-07-04 10:00:09.552 [SRV_MAIN]      INFO    global
  src/daemon/rpc.h:96    D  einitializing core RPC server...

  2018-07-04 10:00:09.552 [SRV_MAIN]      INFO    global
  src/daemon/p2p.h:90    D  einitializing p2p...

  2018-07-04 10:00:13.600 [SRV_MAIN]      INFO    global
  src/daemon/core.h:103  D  einitializing core...

  2018-07-04 10:00:13.711 [SRV_MAIN]      INFO    global
  src/daemon/protocol.h:75  Stopping cryptonote protocol...

  2018-07-04 10:00:13.711 [SRV_MAIN]      INFO    global
  src/daemon/protocol.h:79

  Cryptonote protocol stopped successfully

This was fixed by restarting the machine.


Can EUR 10.000.000 be mined in ONE go? I understood large sums of Monero can only be mined in several transactions?
Could EUR 10.000.000 be mined in ONE transaction?

Firstly, the market price of Monero in EUR has little bearing on any of this.

Secondly, mined or transferred? The question is not clear. Regardless...

There is no cap on the value amount you can transfer (so long as you obviously own that amount) and the amount of Monero that can be mined is dictated by the emission schedule.

However, when considering large transfer value amounts, you presumably own a lot of separate outputs (thus inputs funding the transfer), and whilst there is no cap on the value amounts, the more outputs you spend (so tx inputs) the larger the tx storage size becomes. Therefore the constraint becomes the tx storage size, which can currently be no larger than 1000000 bytes (src). Furthermore, there is a maximum number of transactions that can be mined in a block, 268435456 (src).

Putting this all together, if you owned one output with one Monero and the market price for 1 XMR was 1m EUR, nothing whatsoever would prevent that transfer or it being mined in a block. If you owned 1m individual outputs you wanted to spend, you would have to send them in many transactions because of the tx size constraint; a miner can still mine 1m transactions in a block though.


Getting Monero GUI running on ubuntu When attempting to run the start-gui.sh in terminal I am receiving:

This application failed to start because it could not find or load the Qt platforms plugin "xcb". Reinstalling the application may fix this problem.

I have already attempted to install the library dependencies via:

apt-get install qt5-default

However I am still receiving the plugin dependency error.

Any help with resolving this would be greatly appreciated.

Hi I'm a new monero user here ( I was waiting for the gui) , I've managed to run successfully Monero GUI on Ubuntu 16.04.1 and Lubuntu 16.04.1 from a full installation on an usb stick on a very old laptop (and using an external daemon), hence why I switched to lubuntu which runs much better.

I encountered the problem you describe I did the following to solve it:

  sudo apt-get install qml-module-qt-labs-settings qml-module-qt-labs-folderlistmodel

  sudo apt-get install qml-module-qtquick-controls
  qml-module-qtquick-dialogs qml-module-qtquick-xmllistmodel

  sudo apt-get install qml-module-qtgraphicaleffects

If you want to speed up even more I tried the following on lubuntu after ditching ubuntu

You'll need

  sudo apt-get install libunbound2

and then do:

  set QMLSCENE_DEVICE=softwarecontext ./monero-core

  set QMLSCENE_DEVICE=softwarecontext ./monero-wallet-gui

and then start

  ./start-gui.sh

If the above command will not start the GUI try

  QMLSCENE_DEVICE=softwarecontext ./monero-wallet-gui

Be aware that I think there is a bug when you create a wallet from a seed it just sometimes does not led pass to the next screen, the right arrow control is not activated but if you start typing on the name of the wallet, the right arrow control activates and then you can click to the next screen with the  wallet recreated.

Hope it helps.


How big is the monero development team? How many developers are working on the Monero core platform? Is everyone anonymous?

There's a list here: https://getmonero.org/community/team/

2 of them made their identities known. Some of them are inactive. But the role of core team is not to do all the work. They're there simply as trusted gatekeepers of the project. I haven't seen them do much coding.

Coding is done by many other contributors. There are good stats on this here: https://www.openhub.net/p/monero


How can I get Wolf's open-source AMD miner to work on Ubuntu? I have never compiled anything before and the steps on GitHub are too complicated for me. How can I get Wolf's open-source AMD miner to work on Ubuntu?

https://github.com/wolf9466/wolf-xmr-miner

Edit: since it matters, this is for Ubuntu 16.04 with multiple RX 470 cards.

There is a problem with amdgpu and Gnome on the kernel 4.4 (default kernel with ubuntu 16.04). So If you want to use Gnome, Install a new kernel before installing the drivers :  example
Install amdgpu-pro
Install the latest AMD APP SDK
Install required dependencies and tools: "sudo apt-get install libcurl4-openssl-dev build-essential libjansson-dev"
Edit the Makefile : add "-I /opt/AMDAPPSDK-3.0/include" to the ligne that starts with "OPT"
Compil : run "make"
Edit xmr.conf : for the RX 480, rawintensity:960 and workersize:8 seems to give the best results
run "sudo ./miner xmr.conf"


How can I put my Aeon in Cold Storage? Has a tutorial been made for putting Aeon in cold storage?

There is an offline wallet generator for Aeon here: https://bitcointalk.org/index.php?topic=641696.msg17660358#msg17660358

This is the same as the Monero one, but adapted for Aeon. The post above says it's new and you should make sure you can restore your address before trusting an address/keys set made with the generator, just in case, but the Monero version has been working well.


How/when does the --db-salvage flag get used? What's it do? This flag gets used when you suspect your copy of the blockchain may be corrupt, correct?  What are the details?

It's a daemon flag?  Is it supposed to be used just until the blockchain is synced, and then you exit and run with the usual flags you may use?  Does this flag interfere with other flags?  Under what circumstances should I run with this flag?  Are there any other pertinent details regarding this flag?

If your daemon was interrupted by a power failure or OS crash, and it was still trying to catch up to the network (as opposed to already being synchronized), there's a chance the DB got corrupted. If you get a DB error after starting after a crash, you should try using this flag. You should only use this flag after you've already seen a DB error that causes monerod to fail. You don't have to exit and rerun or do anything else unusual in combination with this flag.

LMDB always maintains two snapshots of the database. This flag attempts to use the older snapshot instead of the newer one when it first opens the database, on the assumption that the newer one is the only one that got corrupted by a crash. It may not always be successful. Once the database has been opened and operated on successfully, the flag has no further effect.

Using this flag when there hasn't been any crash will erase the last transaction committed to the database, and make the daemon need to catch up to the network again.


How do I sell Monero for USD if I start from the Monero in my wallet? Let's say I have my Monero wallet and there are some coins in it.  How would I go about getting USD for those coins?  I read about exchanges where one can buy and sell Monero on this thread -- What options are available for directly buying Monero with fiat currency? , however after opening an account on the Livecoin exchange, it seems like the only way I can sell Monero is by first putting USD into the exchange, buying Monero, and then selling it at a later time.  How would I go about taking my existing Monero wallet and then exchanging that into USD?

You can also use a service like LocalMonero to sell the Monero directly to someone for cash if that is your preference.


Exchange XMR for USD I have recently started mining Monero on MinerGate. I created a Monero wallet on my phone and now want to convert the XMR I have mined into USD. I assume that this can be achieved by first converting to BTC and then to USD, but this incurs more transaction costs. Is there a way of safely and directly converting XMR to USD? Thanks in advance.

You can sell for USD on Bitfinex or on bitsquare.io


What is the difference from monero-blockchain-prune-known-spent-data and monero-blockchain-prune commands? I'm pruning my monero blockchain, but I see there are 2 commands:

monero-blockchain-prune-known-spent-data
monero-blockchain-prune

What is the difference?

monero-blockchain-prune-known-spent-data (an older tool) prunes specific pre-RCT known spent outputs and monero-blockchain-prune prunes the whole blockchain (a newer tool). You only need run the newer tool.


4 threads, minimum usage In cpu mining, when I set my threads to 4, my cpu is being used up to 75%. I want it to be as low as 18%.

I want all my cpu cores to be used, not focus on one, and get up to around 18 to 20 percent. How do I set a usage percentage for each cpu core? I want to make around 15% use of each.

This is the configuration of my cpu miner (XMRIG). I heard it is about cpu-affinity and cpu-priority but I don't know how to use the values.

{
    "algo": "cryptonight",  // cryptonight (default) or cryptonight-lite
    "av": 0,                // algorithm variation, 0 auto select
    "background": false,    // true to run the miner in the background
    "colors": true,         // false to disable colored output
    "cpu-affinity": null,   // set process affinity to CPU core(s), mask "0x3" for cores 0 and 1
    "cpu-priority": null,   // set process priority (0 idle, 2 normal to 5 highest)
    "donate-level": 5,      // donate level, mininum 1%
    "log-file": null,       // log all output to a file, example: "c:/some/path/xmrig.log"
    "max-cpu-usage": 25,    // maximum CPU usage for automatic mode, usually limiting factor is CPU cache not this option.
    "print-time": 4,       // print hashrate report every N seconds
    "retries": 5,           // number of times to retry before switch to backup server
    "retry-pause": 5,       // time to pause between retries
    "safe": false,          // true to safe adjust threads and av settings for current CPU
    "threads": 4,        // number of miner threads
    "pools": [
        {
            "url": "pool.com:80",   // URL of mining server
            "user": "#address",                        // username for mining server
            "pass": "x",                       // password for mining server
            "keepalive": true,                 // send keepalived for prevent timeout (need pool support)
            "nicehash": false                  // enable nicehash/xmrig-proxy support
        }
    ],
    "api": {
        "port": 80,                             // port for the miner API https://github.com/xmrig/xmrig/wiki/API
        "access-token": null,                  // access token for API
        "worker-id": null                      // custom worker-id for API
    }
}

XMRig will always use 100% of a core, it is not possible to go lower. max-cpu-usage does not limit usage on a core, but only limits how many of your total cores are used and it is overriden by the threads option.

The best you can do is to set cpu-priority to 0, this means all other processes will be preferred and XMRig will only use unused CPU resources - at least in theory, in practice you might still experience some slowdown.


compiled executables not working on the server I compiled binary files (monerod and monero-wallet-rpc) and tried to run them on another machine on a Docker container and got this error:

./start.sh: line 3:     6 Illegal instruction     (core dumped) ./monerod --restricted-rpc --confirm-external-bind --non-interactive --config-file /root/monero/data/monero.conf --detach
./start.sh: line 3:     6 Illegal instruction     (core dumped) ./monerod --restricted-rpc --confirm-external-bind --non-interactive --config-file /root/monero/data/monero.conf --detach
./start.sh: line 3:     5 Illegal instruction     (core dumped) ./monerod --restricted-rpc --confirm-external-bind --non-interactive --config-file /root/monero/data/monero.conf --detach
./start.sh: line 3:     5 Illegal instruction     (core dumped) ./monerod --restricted-rpc --confirm-external-bind --non-interactive --config-file /root/monero/data/monero.conf --detach
./start.sh: line 3:     6 Illegal instruction     (core dumped) ./monerod --restricted-rpc --confirm-external-bind --non-interactive --config-file /root/monero/data/monero.conf --detach
./start.sh: line 3:     6 Illegal instruction     (core dumped) ./monerod --restricted-rpc --confirm-external-bind --non-interactive --config-file /root/monero/data/monero.conf --detach
./start.sh: line 3:     6 Illegal instruction     (core dumped) ./monerod --restricted-rpc --confirm-external-bind --non-interactive --config-file /root/monero/data/monero.conf --detach

Has someone had this issue before?

The Illegal instruction error usually happens when trying to run a program that was compiled for another CPU architecture.

I guess the architecture of the computer on which you compiled the binary and the architecture of the computer on which you are trying run it are different.
If that's the case, instead of a regular compilation, you will have to either cross-compile for the second machine's architecture or compile directly on the second machine.


Error Failed to commit a transaction to the db: operation not supported Since the last fork, I have been unable to sync my monero nodes.  I have tried from multiple machines and redownloaded the blockchain entirely, However, I still get the following results.

Is anyone familiar with this?
The mounted drive has 500+GB free space on NTFS partition.

Thanks!
The picture taken is of my monitor with error showing.

src/blockchain_db/lmdb/db_lmdb.cpp:72 Failed to commit a transaction to the db: Operation not supported
src/cryptonote_core/blockchain.cpp:3598 Exception in cleanup_handle_incoming_blocks: Failed to commit a transaction

The default ntfs driver in Linux doesn't support writes. NTFS support on Linux is generally pretty awful.


Auditing incoming transactions in Monero It is said that a view key can expose incoming transactions.
 1. Is the view key enough to prove ownership of an incoming transaction?
  The stealth address is calculated with
   H(Ra)G + B, so I guess the public spend key must also be given?
 2. Can sharing the view key also expose the incoming amounts? Aren't they all blinded with external blinding (mask) factors, so the view key will not be enough?

Yes, the view key proves that outputs were destined for a particular wallet address. It cannot be proven whether these outputs were subsequently spent, but it can be guessed that they have been spent if the outputs are referenced in a transaction that creates a change output that is also destined for that same wallet (which someone with the private view key would be able to detect).
Yes, because both the output amounts and the blinding factors are encrypted using the shared secret H(aR) and included as part of the transaction data.


Is there a way to tell if a Monero node is on, even though it is not public facing and behind a router? I want to setup monerod on a Raspberry Pi and put it behind a router, but I it won't be public facing nor have any forwarded ports. Is there a way to tell if my Raspberry Pi is active with monerod still running? Is there a way to mark my node with some type of alias and look it up in a Monero node database?

Without forwarded ports, no. Unless of course you also owned the node it was syncing from, in which case you could check that other nodes connected peers.


Monero inception and history. How did monero get started, what are its origins and which are important historical events of its development? I did some research, and I get that the first came Cryptonote and its implementation - ByteCoin, as an "official" coin.

From there came bitmonero, and from it came monero.

During its life, since inception, there were many stories such as:

the original cryptonote developers, and the veil of secrecy around them + the bytecoin pre-mine.
the creation of bitmonero, about which I don't know much, really
era of the cryptonote forum
the crippled miner story
community taking over and bitmonero became monero
attack on the network, as documented by relevant MRL paper

I believe there is much to add, and maybe I did not put everything in correct order. Would be nice if such events were properly documented, especially for the newcomers who are interested in the full story.

This is an edited version of the excellent investigation of the bytecoin scam performed by user "rethink-your-strategy" on the bitcointalk forums written August 15, 2014. It is the best available account of the bytecoin scam, and covers the following areas from the original question:

  the original cryptonote developers, and the veil of secrecy around them + the bytecoin pre-mine.

  the creation of bitmonero, about which I don't know much, really

  community taking over and bitmonero became monero
  attack on the network, as documented by relevant MRL paper

It has been edited due to the (entertaining) vulgarity of the original report and to fit in the 30k character limit of answers.

The Alleged CryptoNote/Bytecoin Story

CryptoNote is a new cryptocurrency protocol. It builds on some of the Bitcoin founding principles, but it adds to them. There are aspects of it that are truly well thought through and, in a sense, quite revolutionary. CryptoNote claim to have started working on their project years ago after Bitcoin's release, and I do not doubt the validity of this claim...clearly there's a lot of work and effort that went into this. The story as Bytecoin and CryptoNote claim it to be is as follows:

They developed the code for the principles expressed in their whitepaper, and in April, 2012, they released Bytecoin. All of the copyright messages in Bytecoin's code are "copyright the CryptoNote Developers", so clearly they are one and the same as the Bytecoin developers. In December 2012, they released their CryptoNote v1 whitepaper. In September 2013, they released their CryptoNote v2 whitepaper. In November 2013, the first piece of the Bytecoin code was first pushed to Github by "amjuarez", with a "Copyright (c) 2013 amjuarez" copyright notice. This was changed to "Copyright (c) 2013 Antonio Juarez" on March 3rd, 2014. By this juncture only the crypto libraries had been pushed up to github. Then, on March 4th, 2014, "amjuarez" pushed the rest of the code up to github, with the README strangely referring to "cybernote", even though the code referred to "Cryptonote". The copyrights all pointed to "the Cryptonote developers", and the "Antonio Juarez" copyright and license file was removed. Within a few days, "DStrange" stumbled across the bytecoin.org website when trying to mine on the bte.minefor.co.in pool (a pool for the-other-Bytecoin, BTE, not the-new-Bytecoin, BCN), and the rest is history as we know it. By this time Bytecoin had had a little over 80% of its total emission mined.

Immediate Red Flags

The first thing that is a red flag in all of this is that nobody, and I mean no--body, is a known entity. "Antonio Juarez" is not a known entity, "DStrange" is not a known entity, none of the made up names on the Bytecoin website exist (they've since removed their "team" page, see below), none of the made up names on the CryptoNote website exist (Johannes Meier, Maurice Planck, Max Jameson, Brandon Hawking, Catherine Erwin, Albert Werner, Marec Plíškov). If they're pseudonyms, then say so. If they're real names, then who are they??? Cryptographers, mathematicians, and computer scientists are well known - they have published papers or at least have commented on articles of interest. Many of them have their own github repos and Twitter feeds, and are a presence in the cryptocurrency community.

The other immediate red flag is that nobody, and I mean no--body, had heard of Bytecoin. Those that had heard of it thought it was the crummy SHA-256 Bitcoin clone that was a flop in the market. Bytecoin's claim that it had existed "on the deep web" for 2 years was not well received, because not a single vendor, user, miner, drug addict, drug seller, porn broker, fake ID card manufacturer, student who bought a fake ID card to get into bars, libertarian, libertard, cryptographer, Tor developer, Freenet developer, i2p developer, pedophile, or anyone else that is a known person - even just known on the Internet - had ever encountered "Bytecoin" on Tor. Ever. Nobody.

Indisputable Facts

Before I start with some conjecture and educated guesswork, I'd like to focus on an indisputable fact that obliterates any trust in both Bytecoin's and CryptoNote's bullshit story. Note, again, that I do not doubt the efficacy of the mathematics and cryptography behind CryptoNote, nor do I think there are backdoors in the code. What I do know for a fact is that the people behind CryptoNote and Bytecoin have actively deceived the Bitcoin and cryptocurrency community, and that makes them untrustworthy now and in the future. If you believe in the fundamentals in CryptoNote, then you need simply use a CryptoNote-derived cryptocurrency that is demonstrably independent of CryptoNote and Bytecoin's influence. Don't worry, I go into this a little later.

So as discussed, there were these two whitepapers that I linked to earlier. Just in case they try remove them, here is the v1 whitepaper and the v2 whitepaper mirrored on Archive.org. This v1/v2 whitepaper thing has been discussed at length on the Bytecoin forum thread, and the PGP signature on the files has been confirmed as being valid. When you open the respective PDFs you'll notice the valid signatures in them:

signature in the v1 whitepaper

signature in the v2 whitepaper

These are valid Adobe signatures, signed on 15/12/2012 and 17/10/2013 respectively. Here's where it gets interesting. When we inspect this file in Adobe Acrobat we get a little more information on the signature:

Notice the bit that says "Signing time is from the clock on the signer's computer"? Now normally you would use a Timestamp Authority (TSA) to validate your system time. There are enough public, free, RFC 3161 compatible TSAs that this is not a difficult thing. CryptoNote chose not do this. But we have no reason to doubt the time on the signature, right guys? crickets

See these references from the v1 whitepaper footnotes? Those two also appear in the v2 whitepaper. Neither of those two footnotes refer to anything in the main body of the v1 whitepaper's text, they're non-existent (in the v2 whitepaper they are used in text). The problem, though, is that the Bitcointalk post linked in the footnote is not from early 2012.

May 5, 2013. The footnote is referencing a post that did not exist until then. And yet we are to believe that the whitepaper was signed on 12/12/2012! What sort of  fools do they take us for?

A little bit of extra digging validates this further. The document properties for both the v1 whitepaper as well as the v2 whitepaper confirms they were made in TeX Live 2013, which did not exist on 12/12/2012. The XMP properties are also quite revealing:

XMP properties for the v1 whitepaper

XMP properties for the v2 whitepaper

According to that, the v1 whitepaper PDF was created on 10/04/2014, and the v2 whitepaper was created on 13/03/2014. And yet both of these documents were then modified in the past (when they were signed). Clearly the CryptoNote/Bytecoin developers are so advanced they also have a time machine, right?

Final confirmation that these creation dates are correct are revealed those XMP properties. The properties on both documents confirm that the PDF itself was generated from the LaTeX source using pdfTeX-1.40.14 (the pdf:Producer property). Now pdfTeX is a very old piece of software that isn't updated very often, so the minor version (the .14 part) is important.

pdfTeX 1.40.14 pushed to source repo on Feb 14, 2014

This version of pdfTeX was only pushed to the pdfTeX source repository on February 14, 2014, although it was included in a very early version of TeX Live 2013 (version 2013.20130523-1) that was released on May 23, 2013. The earliest mentions on the Internet of this version of pdfTeX are in two Stack Exchange comments that confirm its general availability at the end of May 2013 (here and here).

The conclusion we draw from this is that the CryptoNote developers, as clever as they were, intentionally deceived everyone into believing that the CryptoNote whitepapers were signed in 2012 and 2013, when the reality is that the v2 whitepaper was created in March, 2014, and the v1 whitepaper haphazardly created a month later by stripping bits out of the v2 whitepaper (accidentally leaving dead footnotes in).

Why would they create this fake v2 whitepaper in the first place? Why not just create a v1 whitepaper, or not even version it at all? The answer is simple: they wanted to lend credence and validity to the Bytecoin "2 years on the darkweb" claim so that everyone involved in CryptoNote and Bytecoin could profit from the 2 year fake mine of 82% of Bytecoin. What they didn't expect is the market to say "no thank you" to their premine scam.

And Now for Some Conjecture

As I mentioned earlier, the Bytecoin "team" page disappeared. I know it exists, because "AtomicDoge" referred to it as saying that one of the Bytecoin developers is a professor at Princeton. I called them out on it, and within a week the page had disappeared.  cowards.

That was the event that triggered my desire to dig deeper and uncover the scam. As I discovered more and more oddities, fake accounts, trolling, and outright falsehoods, I wondered how deep the rabbit hole went. My starting point was DStrange. This is the account on Bitcointalk that "discovered" Bytecoin accidentally a mere 6 days after the first working iteration of the code was pushed to Github, purely by chance when mining a nearly dead currency on a tiny and virtually unheard of mining pool. He has subsequently appointed himself the representative of Bytecoin, or something similar.

At the same time as DStrange made his "accidental discovery", another Bitcointalk account flared up to also "accidentally discover this weird thing that has randomly been discovered": Rias. What's interesting about both the "Rias" and "DStrange" accounts are their late 2013 creation date (October 31, 2013, and December 23, 2013, respectively), and yet they lay dormant until suddenly, out of the blue, on January 20th/21st they started posting. If you look at their early posts side by side you can even see the clustering: Rias, DStrange.

At any rate, the DStrange account "discovering" Bytecoin is beyond hilarious, especially with the Rias account chiming in to make the discovery seem natural. Knowing what we unmistakably do about the fake CryptoNote PDF dates lets us see this in a whole new light.

Of course, as has been pointed out before, the Bytecoin website did not exist in its "discovered" form until sometime between November 13, 2013 (when it was last captured as this random picture of a college girl) and February 25, 2014 (when it suddenly had the website on it as "discovered"). This can be confirmed by looking at the captures on Wayback Machine: https://web.archive.org/web/*/http://bytecoin.org

The CryptoNote website, too, did not exist in its current form until after October 20, 2013, at which time it was still the home of an encrypted message project by Alain Meier, a founding member of the Stanford Bitcoin Group and co-founder of BlockScore. This, too, can be confirmed on Wayback Machine: https://web.archive.org/web/*/http://cryptonote.org

~~ It's hard to ascertain whether Alain had anything to do with CryptoNote or Bytecoin. It's certainly conceivable that the whitepaper was put together by him and other members of the Stanford Bitcoin Group, and the timeline fits, given that the group only formed around March 2013. More info on the people in the group can be found on their site, and determining if they played a role is something you can do in your own time.~~

Update: Alain Meier posted in this thread, and followed it up with a Tweet, confirming that he has nothing to do with CryptoNote and all the related...stuff.

Batshit Insane

The Bytecoin guys revel in creating and using sockpuppet accounts. Remember that conversation where "Rias" asked who would put v1 on a whitepaper with no v2 out, and AlexGR said "a forward looking individual"? The conversation took place on May 30, and was repeated verbatim by shill accounts on Reddit on August 4 (also, screenshot in case they take it down).

Those two obvious sockpuppet/shill accounts also take delight in bashing Monero in the Monero sub-reddit (here are snippets from WhiteDynomite and cheri0). Literally the only thing these sockpuppets do, day in and day out, is make the Bytecoin sub-reddit look like it's trafficked, and spew angry bullshit all over the Monero sub-reddit.  Clearly they're pissy that nobody has fallen for their scam. Oh, and did I mention that all of these sockpuppets have a late January/early February creation date? Because that's not  obvious at all.

And let's not forget that most recently the sockpuppets claimed that multi-sig is "a new revolutionary technology, it was discovered a short time ago and Bytecoin already implemented it". If you think that's bad, you're missing out on the best part of all: the Bytecoin shills claim that Bytecoin is actually Satoshi Nakamoto's work. I'm not  kidding you. For your viewing pleasure...I present to you...the Bytecoin Batshit Insane Circus:

Seriously. Not only is this insulting to Satoshi Nakamoto, but it's insulting to our intelligence. And yet the fun doesn't stop there, folks! I present to you...the centerpiece of this Bytecoin Batshit Insane Circus exhibit...

Of course! How could we have missed it! The clues were there all along! The CryptoNote/Bytecoin developers are actually aliens!

One last thing: without doing too much language analysis (which is mostly supposition and bullshit), it's easy to see common grammar and spelling errors. My personal favorite is the "Is it true?" question. You can see it in the Bytecoin thread asking if it's Satoshi's second project, in the Monero thread asking if the Monero devs use a botnet to fake demand, and in the Dashcoin thread confirming the donation address.


Is Monero in I2P secure now, and how do I do it? First I'd like to say I love this project and I wanna support it and use it as best I can, but I'm a little bad with computers, and with English, so please excuse me.

I am interested to set a Monero full node through the I2P network, like I saw some others to did (see "Hidden Nodes" section of moneroworld.com, though I'm not understanding why they don't want full blockchain sync, I thought a common use of I2P is for torrents of large files). So far I set I2P, it's running nice, but I have a couple questions before proceeding. Maybe very foolish or basic, again I apologize.

This question [After Kovri arrives will some full nodes need to remain on clearnet? ] deals with peer discovery through Kovri. How about peer discovery right now if I wanna run a full node in I2P? Will the current client know to connect to only I2P nodes?
If my client is gonna connect with clear net nodes also, does it know to send my transactions only to the known I2P nodes? Again I'm asking about functionality right now, not what is planned with Kovri. If not then is there any security and anonymity benefit to using I2P right now?
When I broadcast a transaction txid in I2P, the only info the I2P nodes know is, 'Somebody over I2P has broadcasted transaction txid'. True or false?
(*) If the answer to #3 is true, then is there any anonymity or security benefit to running a full I2P node VERSUS connecting to a remote I2P node over I2P? This is a big question so I'll tip some fraction of Monero or maybe whole Monero for the first expert who gives the comprehensive list of current attacks (including 'combined with other info' type stuff), and bonus for simple ways to avoid and eta of plug. I appreciate considering likely or known current conditions like, there probably aren't many I2P nodes, and probably even fewer bridge nodes. Even better if you also consider attacks to I2P itself ([https://geti2p.net/en/docs/how/threat-model] - note I understand almost none of this page, write out the details of the attack for others to see and argue, but please include a tldr...ty)
(*) How can I set a full Monero node in I2P? I already did the I2P part, and I know how to google standard stuff that a million other people ask. I can google and copy-paste, basically.

Thank you very much and I hope these answers will at least help and inform others.

This question [After Kovri arrives will some full nodes need to remain on clearnet? ] deals with peer discovery through Kovri. How about peer discovery right now if I wanna run a full node in I2P? Will the current client know to connect to only I2P nodes?

Kovri does not yet integrate with Monero. In the future when integrated, there will be three modes: IP only, bridged, and I2P-only. If you use the extreme I2P-only option, then it will only connect to other nodes that use I2P. These nodes can be ones run in either bridged mode (most likely) or also in I2P-only mode.

  If my client is gonna connect with clear net nodes also, does it know to send my transactions only to the known I2P nodes? Again I'm asking about functionality right now, not what is planned with Kovri. If not then is there any security and anonymity benefit to using I2P right now?

If you are connected only with I2P, all your connections to other nodes will occur through I2P. These can be to nodes who are running only I2P connections or both I2P and clearnet connections.

  When I broadcast a transaction txid in I2P, the only info the I2P nodes know is, 'Somebody over I2P has broadcasted transaction txid'. True or false?

Mostly true. There is some slight metadata leak such as time, but this is as little information leaked as reasonably possible. It's not 100% perfect, but it's the best tool available and would make attacks incredibly difficult.

  (*) If the answer to #3 is true, then is there any anonymity or security benefit to running a full I2P node VERSUS connecting to a remote I2P node over I2P? This is a big question so I'll tip some fraction of Monero or maybe whole Monero for the first expert who gives the comprehensive list of current attacks (including 'combined with other info' type stuff), and bonus for simple ways to avoid and eta of plug. I appreciate considering likely or known current conditions like, there probably aren't many I2P nodes, and probably even fewer bridge nodes. Even better if you also consider attacks to I2P itself ([https://geti2p.net/en/docs/how/threat-model] - note I understand almost none of this page, write out the details of the attack for others to see and argue, but please include a tldr...ty)

Yes, there is a major security difference between using your own node compared to using someone else's node, including over I2P. This remote node will get certain metadata information: the time, what blocks you are requesting, etc. They will not get the most important leak which is your IP address, but the amount of metadata leaked is nontrivial. A local full node over I2P provides more privacy than a remote node, period.

  (*) How can I set a full Monero node in I2P? I already did the I2P part, and I know how to google standard stuff that a million other people ask. I can google and copy-paste, basically.

Until Kovri supports Monero directly, it is unreasonable for most people to run full nodes exclusively through I2P, since it will be difficult or perhaps impossible for you to find other nodes to sync to. If you want better privacy than what is currently available, I suggest instead running a node through Tor, since Tor has significantly better connections to the clearnet than I2P.


How do I, as a recipient, verify that my transaction actually arrived? I received some XMR from a service / exchange / friend. How do I verify that my transaction actually arrived?

First, theoretical background can be found here:

Selective transparency in Monero vs Zcash

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

Is there any way to construct a transaction manually?

Basically the gist is that you know a (the private view key) and R (the public tx key). As a result, you are able to compute the shared secret (aR = D') and "decrypt" the transaction.

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

In the CLI type viewkey, copy the private / secret view key.
Go to this tool, which was created by core-team member luigi1111. Furthermore, "Note: this site operates completely on client-side Javascript; no data is ever sent to the web server."
Enter your transaction ID / hash in box 1. Transaction Hash:
Enter your private / secret view key in box 2. Private Key
Enter your public address in box 3. Recipient's Public Address:
Press on Check.
If it shows This address owns output        x with pubkey: y for amount: z it proves you correctly received your XMR.
Note that a typical Monero transaction contains two outputs, of which one goes to the recipient (you) and one goes back to the sender as change. Intuitively, you can only "decrypt" the output that is going to you.

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

Go to the Settings page of the GUI and press on Show seed & keys. Subsequently, copy the private / secret view key.
Go to this tool, which was created by core-team member luigi1111. Furthermore, "Note: this site operates completely on client-side Javascript; no data is ever sent to the web server."
Enter your transaction ID / hash in box 1. Transaction Hash:
Enter your private / secret view key in box 2. Private Key
Enter your public address in box 3. Recipient's Public Address:
Press on Check.
If it shows This address owns output        x with pubkey: y for amount: z it proves you correctly received your XMR.
Note that a typical Monero transaction contains two outputs, of which one goes to the recipient (you) and one goes back to the sender as change. Intuitively, you can only "decrypt" the output that is going to you.

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

On MyMonero, go to account details.
Copy the private view key (called View Key (Private) on MyMonero).
Go to this tool, which was created by core-team member luigi1111. Furthermore, "Note: this site operates completely on client-side Javascript; no data is ever sent to the web server."
Enter your transaction ID / hash in box 1. Transaction Hash:
Enter your private / secret view key in box 2. Private Key
Enter your public address in box 3. Recipient's Public Address:
Press on Check.
If it shows This address owns output        x with pubkey: y for amount: z it proves you correctly received your XMR.
Note that a typical Monero transaction contains two outputs, of which one goes to the recipient (you) and one goes back to the sender as change. Intuitively, you can only "decrypt" the output that is going to you.


Key-image generation: What does p signify in I = xHp(P)? According to the CN whitepaper key image I is generated thusly:

I = xHp(P)

I understand P is the one-time public key for the transaction, x the corresponding private key and H a deterministic hash function, but what is p?

Thanks

There are two hash functions you'll see referenced often with Monero - there is Hs and Hp.

Hs means "hash to scalar", meaning take a keccak(256) hash and then ensure the result is a "scalar" (a positive integer less than 2252 + 27742317777372353535851937790883648493).

Hp means "hash to point", meaning take a keccak(256) hash, interpret the resulting bytes as an elliptic curve point, and then multiply that curve point by 8 to force the resulting point to be in the base point group - i.e. to force it to be the case that there must exist an value x (even though x will be unknown) such that Hp(..data..) == xG.


How does difficulty impact on cpu small mining? If there is a large group of small miners (100 H/s), which together have a high rate (10 KH/s), compared to a single larger miner having the same 10 KH/s
Do they have same possibility of mine a block? or, because of their small individual strength (100 H/s), although together they have a lot of force, they will not be able to mine a block as easily as the big single miner? Thanks :)

Assuming the total hashrate is the same, both the group of small miners and the large miner have the same probability of finding a block.

That's assuming that the small miner mine through a pool where they share their hashes. Otherwise group of small miners will be at a slight disadvantage due to network latency.


How scalable and decentralized can a block chain currency be? The Monero Website mentions these features (besides others):

Scalability
Decentralization

Yet still any full participant needs to see all transactions which are included in the central block chain (to find transactions one is receiving), and store most of them in order to be able to verify that they are valid.

Looking at the stats from moneroblocks.info, in the last year we had 240059 non-coinbase transactions, and a total block chain size of 3 GB (from Can the Monero block chain be pruned to increase scalability?) (this is for two years, I'll assume).

How is this supposed to scale to billions of people (and companies, etc.) sending money to each other each day (assuming this is meant to be used by almost everyone, not just some geeks)?

I don't think about any explicit limits in block size (those are flexible) here, more about the limits in processing capacity for nodes (even non-mining ones).

We say Monero is scaleable because there nothing in the protocol level preventing Monero from accepting a very large number of transactions. There is no coded limit on the block size.

The processing capacity for nodes is based on a few things:

Frequency of transactions
Size of the blockchain

Regarding the first, transactions can not happen faster than nodes can accept and evaluate them. This is limited by the CPU speed, hard drive speed, and internet capacity of the node. It is very unlikely that the rate of transactions could exceed growth rates of 5MB/s, which even a 5400rpm HDD can handle. The most likely limited factor would be network bandwidth, which could make a growth rate of 1MB/s too much for people on slower connections (less than 8 mbps). Keep in mind that Monero (and Bitcoin) have growth rates well below these numbers.

Regarding the second point, this is where the argument is that the total size of the blockchain will become a major barrier to running a node. This is a much more legitimate criticism, and Monero has a larger transaction size than Bitcoin and most/all other coins. There are multiple ways that this concern can be put to ease. First, the cost of hard drives continues to fall. Right now, one can buy a 1TB hard drive that should last for the foreseeable future for less than $50 brand new. Secondly, Monero can still look into options such as pruning to reduce the size of the blockchain. There is currently little research in Monero blockchain pruning because the size of the blockchain is not much of a concern yet. In general, the size of the Monero blockchain is not a large concern for the next few years, and even if Monero becomes much more popular, it will still stay at a reasonable size for a while.

One argument is that the larger the block size, the harder it is to run a node and the more centralized the control will be. This is a valid point, but I do not think the size of the blockchain is intrusive enough to cause any real impact here.


How do you convert the mymonero.com seed to the simplewallet/monero-wallet-cli seed? For those that use mymonero.com, if the site were to fail or suddenly shutter, how would someone be able to easily recover their funds using the seed provided by the website?

By using this page, you can generate your private keys from the mnemonic (note that you can also see and back-up your keys directly from mymonero.com interface, when logged-in with the mnemonic), which is all you need to restore your address. I would suggest to anyone to download that page and keep it somewhere just in case the site would go down.
Once you have the private spend key and private view key, you simply start the cli wallet like below:

Windows:

monero-wallet-cli.exe --generate-from-keys <filename>

Linux:

./monero-wallet-cli --generate-from-keys <filename>

This will create a new wallet from your keys and save it with the filename specified. You will be prompted for your password with which you want to encrypt the wallet, and then for your address and the 2 private keys. When you finish refreshing your wallet, you will see your actual balance.


How do I "background mine" on CLI for Helium Hydra v.0.11.0.0? I've looked under 'help' in my daemon and wallet and found nothing that seems to describe how to background mine.  Is that only a function in the GUI?

Background mining is done by adding "true" at the end of the start_mining command in monero-wallet-cli, after the number of threads. This means the number of threads is not optionalk in that case:

start_mining 4 true

This will start background mining on 4 threads.


How can I get outgoing connections with pfSense as my router? I set up a static DHCP reservation for my node.
I enabled uPNP and port mapping.

and I set an ACL to allow 18080 192.168.node.ip/32 18080.

I even set an outbound NAT static port for the IP, in case that would matter.
I am not double NAT'ed.

I still can't get outgoing connections.  Thoughts?

If uPNP won't cooperate, you can create a port forwarding rule (in Firewall > NAT > Port Forward) for the WAN interface that directs a destination of port 18080 to port 18080 of the internal IP of your node.  This will have the effect of also creating a firewall rule on the WAN interface that allows the traffic arriving at port 18080 to pass through to the internal host/IP of the node.


How do I, on Windows, generate a Ledger Monero wallet with the CLI and subsequently use it in the GUI? According to the release notes v0.12.2.0 includes Ledger support. How do I, on Windows, generate a Ledger Monero wallet with the CLI and subsequently use it in the GUI?

The GUI is now able to directly generate a Ledger Monero wallet. Thus, please see this Q&A:

How do I generate a Ledger Monero wallet with the GUI (monero-wallet-gui)?

We first have to ensure that we're sufficiently prepared. This entails the following:

This guide assumes you have already initialized your Ledger wallet and thus generated a 24 word mnemonic seed.
You need to run / use GUI v0.12.3.0, which can be found here. You can, if you're still running an older version, use the instructions in aforementioned Reddit post to upgrade.
You need to install the Ledger Monero app. Instructions can be found here.
All Monero related processes need to be closed.
Your Ledger needs to be plugged in and the Ledger Monero app should be running.

Now that we're sufficiently prepared, let's start!

Go to the directory / folder monero-wallet-gui.exe (GUI v0.12.3.0) is located (note that monero-wallet-cli.exe will be in the same directory / folder as monero-wallet-gui.exe).
Open a new command prompt / powershell. 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.
Now type:

monero-wallet-cli.exe --generate-from-device <new-wallet-name> --restore-height 1585000 --subaddress-lookahead 3:200 (Win 7 + 8)

.\monero-wallet-cli.exe --generate-from-device <new-wallet-name> --restore-height 1585000 --subaddress-lookahead 3:200 (Win 10)

Note that  is simply a placeholder for the actual wallet name. If you, for instance, want to name your wallet MoneroWallet, the command would be as follows:

monero-wallet-cli.exe --generate-from-device MoneroWallet --restore-height 1585000 --subaddress-lookahead 3:200 (Win 7 + 8)

.\monero-wallet-cli.exe --generate-from-device MoneroWallet --restore-height 1585000 --subaddress-lookahead 3:200 (Win 10)

The CLI will, after executing aforementioned command, prompt your for a password. Make sure to set a strong password and confirm it thereafter.
The Ledger will ask whether you want to export the private view key or not. First and foremost, your funds cannot be compromised with merely the private view key. Exporting the private view key enables the client (on the computer - Monero v0.12.2.0) to scan blocks looking for transactions that belong to your wallet / address. If this option is not utilized, the device (Ledger) will scan blocks, which will be significantly slower. There is, however, one caveat. That is, if your system gets compromised, the adversary will potentially be able to compromise your private view key as well, which is detrimental to privacy. This is virtually impossible when the private view key is not exported.
You may have to hit confirm twice before it proceeds.
Your Ledger Monero wallet will now be generated. Note that this may take up to 5-10 minutes. Furthermore, there will be no immediate feedback in the CLI nor on the Ledger.
You may, after the CLI has generated your wallet, get an error about the wallet not being connected to the daemon. You can ignore that for now.
Type exit into monero-wallet-cli.exe to close the CLI.
Note that your wallet files will be stored in the same directory / folder as monero-wallet-gui.exe & monero-wallet-cli.exe. This may be a bit inconvenient. Fortunately, however, you can simply copy the wallet files to a different preferred directory / folder.
Open GUI v0.12.3.0. If you have already created a wallet in the GUI, click Cancel when it prompts you for the password of your current wallet. This should bring you back to the wizard. If you haven't already created a wallet, you should automatically start in the wizard.
The first page of the wizard is language selection, which looks like this. Select your desired language to proceed.
On the second page of the wizard, which looks like this, select Open a wallet from file.
Select the wallet file (which, to reiterate, is stored in the same directory / folder as monero-wallet-gui.exe) you just created with the CLI.
Congratulations, you can now use your Ledger Monero wallet with the GUI! If you need any general assistance with the GUI, please see this guide.

A few final notes:

I'd strongly advise to test the full process first. That is, send a small amount to the wallet and subsequently restore it (using aforementioned guide) to verify that you can recover the wallet.
If desired, you can manually tweak the --subaddress-lookahead value. The first value is the number of accounts and the second value is the number of subaddresses per account. Thus, if you, for instance, want to pregenerate 5 accounts with 100 subaddresses each, use --subaddress-lookahead 5:100. Bear in mind that, the more subaddresses you pregenerate, the longer it takes for the Ledger to create your wallet.
You only have to use the --generate-from-device flag once (i.e. upon wallet creation). Thereafter, you'd basically use it similar to how you normally use the GUI. That is:

[1] Make sure your Ledger is plugged in and the Monero app is running.

[2] Open monero-wallet-gui

[3] Enter the password to open the wallet.

If you have any further questions or need assistance, please leave a comment in this thread.


Is there any discussion about creating one-time use Monero addresses? Someone's Monero address can still be linked if one was to use it for a withdrawal from an exchange and then reuse it again. I like how the mimblewimble address works, where addresses are generated on the spot. Is there something in the works for Monero to have only on the spot addresses?

Someone's Monero address can still be linked if one was to use it for a withdrawal from an exchange and then reuse it again.

No. Monero uses stealth addresses for the outputs. Therefore sending from an exchange to your wallet, the exchange knows the address it sent to, but the outputs in that tx are one-time stealth addresses. When you spend those one-time outputs, they are mixed in a ring of decoys for which an observer has no way of knowing which output is then being spent. At no point does your wallet address ever appear on the blockchain.


New GUI balance not showing? I moved a good amount of monero from poloniex to the GUI. It looks like it is fully synced but it still shows my old balance. Confirmed the withdrawal on Polo and it is marked complete as of 45 min ago. I did not use a payment ID since I was sending it from polo to my own address. Any help would be appreciated, thanks

Look up the transaction ID on a block explorer like this one.  If it's found, then you'll know the transaction went through.  Then it's just a matter of making sure your node is fully synced and your wallet has synced to the daemon (node).


How to use unlock_time? I have just seen that there are some questions here about the unlock_time feature. I never heard about the fact that Monero had something like that enabled, so I was trying to find out more about it, but nothing comes up in the help of either monerod or monero-wallet-cli.

How can I access that feature, and how exactly does it work? I mean, I know the idea that the output would only be used in a transaction after some point in time, or block height, but what are the commands and options, and in what environments is it available?

It's a field in the rpc call to send a transaction, see here:
https://github.com/monero-project/monero/blob/0edcbf6716cdfd2ea5439a7788cca0041b40a2e2/src/wallet/wallet_rpc_server_commands_defs.h#L124

I think the way it works is if you pass that field a number that is less than the start of UNIX time in seconds, then it is interpreted as a block height that the output will be unlocked after, and if you pass it a number greater than the beginning of UNIX time in seconds, then it is interpreted as a UNIX time that the outputs will unlock after.


How does Monero privacy and security compare to Zcash? How does Monero privacy compare to Zcash? What are the key security risks associated with each design?

Since important Monero improvements are in active development and Zcash has yet to launch, please compare a working RingCT Monero implementation with Kovri against the Zcash design in its whitepaper and more recently updated protocol specifications.

As described by Monero Research Lab academic Shen Noether with regard to the anonymity set:

Monero (although the zcash proponents note that a ring signature is a "smaller" anonymity set, they usually don't mention that the stealth address factor actually means that each transaction is masked, whereas the ring signatures provide additional plausible deniability, furthermore, since keys appear in different ring signatures in different blocks in time, the anonymity set for when a given key is spent grows infinitely, and could eventually grow larger than the zcash anonymity set at any fixed instant in time) vs Zcash (anonymity set is the entire blockchain)

The above quote demonstrates that while a Monero ring signature may be a "smaller" anonymity set, stealth addresses mask the receivers identity while the ring signature guarantees plausible deniability. When RingCT is activated in January, 2017 the amount of Monero spent in each RingCT transaction will also become protected.
Zcash uses much newer zero-knowledge proof cryptography called zk-SNARKs. Thanks to zk-SNARKs nodes do not need to store signatures or public keys forever on the blockchain. All transaction data is completely private, including metadata which is encrypted:

Instead of publicly demonstrating spend-authority and transaction values, the transaction metadata is encrypted

Ring signatures are much older than zk-SNARKs and have had many years of extensive peer review. With RingCT, which combine Monero ring signatures and Confidential Transaction As developed for Bitcoin by Greg Maxwell Monero transaction amounts will be hidden and Kovri (I2P C++ implementation) will hide IP addresses. MRL has spend a lot of time researching RingCT and Monero now has funded an experienced full time I2P developer to work Kovri.
Perhaps the biggest security risk with Zcash is the possibility of collusion among those participating in the trusted setup. If all parties involved in the "trusted setup collude (either willingly or under duress) then there would become a possibility for the creation of an unlimited number of coins without detection. Zcash is so private that even the coin supply cannot be verified if the trusted setup described above fails.
Monero did not require a "trusted setup" and total coin supply is easily verifiable on the blockchain in real time. Therefore any exploit altering the Monero coin supply (other than ordinary coinbase transactions) would immediately be noticed.
More details on trustless vs trusted systems and the risks associated with a trusted setup can be found here. In the case of Zcash, only six people participated in the trusted setup process:

The ceremony used a multi-party computation protocol with the property that the resulting parameters are secure unless all of the participants were dishonest or compromised during the ceremony.

This setup process has been received a lot of criticism, and even some critique from one of the best known Zcash advisors, Vitalik Buterin but with a subsequent edit to clarify that he still thinks the risk of compromise is quite low:

I actually recommended a different process for the trusted setup - my preference was to not bother with the airgaps, DVDs, offline laptops, etc and make up for it by having 20-30 participants instead of six and make sure they come from different countries, backgrounds, etc. I got this instinct from my experience managing the ethereum foundation wallet - our original setup was 3-of-4 but had lots of fancy secret sharing, encryption, offline signing and other machinery on each device but at one point it nearly broke, and since then we're using a 4-of-7 hot wallet between online laptops, and I feel much more comfortable with the security of the latter. But these are only my views, not shared by everyone, and others of course have different opinions how the risks and benefits should be balanced.
EDIT: just to be clear, I still personally think that the risks of the current setup having been compromised are quite low.

Peter Todd, one of the trusted setup participants was much more critical: