Can I fake a balance by giving the view key to an auditor but omitting some transactions and key images? The viewkey can be used to see the outputs sent to my address, but not the outputs I generate when sending monero. If I need to know the balance I also need the private spendkey. It is suggested that if I were to give the viewkey and a big list of transaction key images to an auditor so they can verify what I've spent.

Am I correct in assuming that if I omit some transactions when sending to the auditor, they would think I have a larger balance than I actually do? If this is true, is it also true that there is no way to give an auditor the ability to verify that funds aren't spent?

I considered one way to partially confirm my balance would be to sweep the wallet to a new location that the auditor has another viewkey for, but there are some downsides to this approach (requires the owner to share a new viewkey, spend transaction fees, and manage a second wallet, auditor needs a list of all keys, can't be done for cold storage).

The auditor will see that you have omitted part of the key images.

The auditor can see all the outputs received by your account. Without the spend key, the auditor cannot generate the key images corresponding to those, however. In order to prove your balance, you generate a signed list of key images (see https://github.com/monero-project/bitmonero/pull/928 for the new commands and RPC calls to do this, soon to be merged now merged), and send this to your auditor.

The signatures are essentially a 0-mixin ring signature. Since these have only one public key attached, this proves that the key image is that of the public key.

The auditor then loads those key images, and checks that each purported key image matches the public key of the output that the auditor knows was received. If the signature checks out, it is proof that the key image really is the key image for this output. The auditor can then check the blockchain to see whether this key image appears on it (spent) or not (unspent).

For reasons of simplicity, this check is done in blockchain order, so you're supposed to give the key images in the same order as their appearance on the blockchain. If you omit a key image (or add one, or change one), the signature will not check out, and the auditor knows you're trying to pull a fast one (or, you never know, a bug somewhere, data corruption in transfer, but Questions Will Be Asked).

A special case happens at the end of the list, since it's very possible that new outputs will be received between the time the signed key images are generated and the time they are checked. This is handled simply by stating that the balance is correct as of the last seen block height in the key images (technically, it's also valid till the block preceding the next output received, if any).

As for omitting transactions, this system works on key images for the outputs received. Transactions are not used, so you can't omit any.


Installing GUI on top of CLI How do you start the GUI client (beta) when you already have the CLI wallet installed? Do you add it to the same folder?

I'm using Windows 10. Of course I can just try it, but I'd like to know what the recommended procedure is.

All you have to do is extract the .zip to some folder and run monero-wallet-gui.exe. In case the GUI window is looking strange or not displayed, run start-low-graphics-mode.bat.

If you're already running monerod manually, it will connect to it. If you're not running monerod, the GUI will start it itself in the background (using the default %programdata% folder where to look for blockchain data).

You can simultaneously have the CLI and GUI open, and they will both talk to the same daemon. Just don't open the same wallet with both, unless you're opening a copy of wallet files.


What causes transactions to exit the Memory Pool? How does a Monero Node know how to drop transactions from the memory pool?

Besides of course when a transaction gets into a block..

Usually, a timeout, if the transaction could not find its way in a block within a day (the timeout is seven days if the transaction was added in a block which was reorganized away). Why the transaction can't get in a block is another matter, but typically this can be due to a double spend, fee too low, or violating the minimum mixin rules, among others.

Another possibility is if the transaction was manually flushed (ie, either remove the poolstate.bin file and restart the daemon, or use the flush_txpool command in the daemon). In those two cases, the transaction is likely to be received again from peers as they rebroadcast.


What resources are required for running a Monero mining pool? What are the approximate resource costs of running a Monero mining pool for the following number of users:

10 users

100 users

1000 users

Additionally, it is most efficient to run the mining pool with the Monerodo OS or another service?

Overall

The bandwidth usage for running a pool is surprisingly low. Any given month my pool mine.moneroworld.com only has 1-2% utilization of a 2TB allowance. The cost comes in the actual hardware.

  10's of users

I am currently running mine.moneroworld.com on a 2$ / month VPS with 1 gig of ram and 2 virtual CPUs. (for those that mine there, why do you think the fee is so low? :) ) It can handle "real" users well enough, upwards of 50 miners.

That scale, however, can not handle "fleet" level miners. One miner has access to about 3,000 mining computers and can direct them to a pool all at once. This particular miner can essentially kill my pool.

  For 100's of users

You could probably use a very high end VPS or a cheap dedicated server. (somewhere around 20-30$ / month)

  For 1000's of users

High end dedicated hardware is required (pending any pool efficiency improvements). I've seen the operator of the mega french pool write that the pool uses upwards of 4 servers to distribute the load.

  Caveats

Some of the resource utilization can be modified to increase pool efficiency. For instance, you can change the block template creation rate, because this is CPU intensive. You can also change the share submission time window - each share submission is data over the network. So if you allow a share every 5 seconds, your server needs to be able to handle a share every 5 seconds. And the existing pool code is incredibly inefficient for some tasks.


What are some use cases for setting a transaction unlock time? When I send a transaction to someone and it is mined by the network the Monero transaction becomes irreversible.

Within the contest of irreversible transactions what benefit would I as a sender have to create a transaction with a required waiting period before the recipient could spend the Monero?

Setting an unlock time has many possible uses such as but not limited to:

Scheduling annuity payments
Providing a child with spending money for an upcoming vacation while ensuring it cannot be spent before the vacation is scheduled.
Paying a developer a significant amount of Monero for work being performed now without the fear that the Monero will immediately be dumped on the market.
Alzheimer patient wanting to codifying desires of a will without fear of being convinced to change them later when having diminished mental capacity.
Scheduling the unlocking of monthly child support payments several years in advance to avoid any worries about forgetting or being short on funds at a later date.
Negotiating better loan rates because payments have been guaranteed in advance.

Transaction unlock time does not actually restrict the transaction from being included in a block like with the CLTV  Bitcoin feature. Instead it sets a time period before which such a subsequent transactions which can spend it's outputs.


Monero GUI, cant sync wallet after days of using it, it still hasnt finished syncing yet.
And for now, it even cant connect and status is "Network status Disconnected". (Stop/start deamon simetimes failed, sometimes it start but with status Disconnected)

I've tried edit deamon startup flags with --block-sync-size 20 but did not help.

I am on Mac OS High Sierra

Please, any suggestion?
Thank you

My log:

Error: Couldn't connect to daemon: 127.0.0.1:18081

Error: Couldn't connect to daemon: 127.0.0.1:18081

Error: Couldn't connect to daemon: 127.0.0.1:18081

Error: Couldn't connect to daemon: 127.0.0.1:18081

Height: 117275/117275 (100.0%) on mainnet, not mining, net hash 15.05 MH/s, v1, update needed, 0(out)+0(in) connections, uptime 0d 0h 0m 18s

Error: Couldn't connect to daemon: 127.0.0.1:18081

please start Monero GUI
set view only wallet
set Blockchain location
restart  Monero GUI
ok ^_^


Is the XMR network vulnerable to Denial-of-Service attacks? Is it possible to make a Dos-Attack on the Monero network, by creating multiple transactions with small amounts and flooding the network?

How many Moneros would be required to do so?

Something like this had already happened, with no impact to the network performance. It was a prelude to the actual attack, the infamous block 202612 attack. Quoting fluffypony in the bitcointalk thread (emphasis mine):

  The fork was the intention and the net-effect. They would have had to
  mine two of those blocks in parallel and dump them both on the
  network. It's such a bizarre, unknown, unidentified edge-case that I
  can't imagine someone stumbling across this AND figuring out how to
  exploit it (and to what end??). There's no monetary gain to the
  attacker, and with the hike in fees to mitigate the previous attack I
  can only imagine that this would've cost them a pretty penny.

The attacker had to first raise the max. block size limit to be able to carry out the attack. On the positive side, this served as a test of Monero dynamic block size which performed well. As said above, it had probably cost the attacker a significant amount in transaction fees, and it would likely cost more today.

Yes, it's possible to flood the network, but it would adapt by dynamically increasing the block size so there would be still be enough room for all the transactions.

The attack would have an insignificant and ever-increasing cost to sustain (tx-fees), making it impossible to sustain the attack.


When sending monero with a payment id, is the transaction still 100% anounymous? Are monero transactions still anonymous when using a payment ID? For example, I send to coins to a address with a payment ID. Is this transaction still 100% anonymous impossible to track?

Yes. Using a payment Id still maintains Monero’s privacy features

A payment Id allows the receiver to keep track of incoming payments from specific sources.

The best way to use a payment is to integrate it directly into a wallet address by creating an integrated address. This will generate a unique address with an integrated payment Id that the receiver can give to a specific source so the receiver can keep track of a payment from that source.

See here and here for more details

Note: when transferring monero to your wallet from some exchanges, they will ask you for a payment id in a separate field to the address, in this case you should use your original address (not the integrated address) and the payment id separately


How to Properly Generate a Monero Brain Wallet? I remember reading somewhere, I think it was fluffypony mentioning one could use for example words from a letter to a loved one seed for a Monero wallet. But from playing with https://xmr.llcoins.net/addresstests.html I realized that it is not possible to enter just any text in the mnemonic seed; it just doesn't accept improperly formed mnemonics, apparently. And even if I had 24 words chosen from the official word list, I would still not know what checksum word to add at the end... (I haven't tried generating a brain wallet in monero-wallet-cli yet, but if there is a way, please let me know.)
Is there a way to create one's own mnemonic?

On the other hand, I am assuming that the hexadecimal field does accept anything, since it is the private spend key. So maybe the way to go would be to choose one's own preferred passphrase, take SHA256 of the passphrase and enter it in field 2. Is that how it should be done?

Obviously, one should be very careful choosing such a passphrase, but I am thinking that brain wallets in Monero shouldn't be as dangerous as in Bitcoin simply due to the inherent time consuming operation of scanning the blockchain and trying to decode every single output for the corresponding stealth address. I am guessing that a decent computer should take at least a few seconds for each brain wallet, so that compiling a huge list of brain wallets and monitoring them is unfeasible. Is this understanding correct?

A brain wallet should always be created offline, preferably on a computer that will never touch the Internet once you decide to use it for a key generator. Make sure any JavaScripts you are using can be initiated offline.

Agree that there is a huge computing penalty for having to scan a blockchain for a given viewkey to identify associated stealth transaction deposits. A full refresh for a new wallet takes on the order of minutes on my computer with the current Monero Blockchain size.

Here is a quick example of using text commands to create a brain wallet:

% echo "Brain farts really hurt this miser" | bx base16-encode | bx sha256
e812ff8072348464b3fe59f0324076bc9b1be3afb233d52303b04f19120389e3

% ./sc_reduce32 e812ff8072348464b3fe59f0324076bc9b1be3afb233d52303b04f19120389e3
f27b8d6b01c98293fa6acf06069644989a1be3afb233d52303b04f1912038903

% ./bytes_to_words f27b8d6b01c98293fa6acf06069644989a1be3afb233d52303b04f1912038903
etched segments dash puck rural furnished mice sapling sifting dime jigsaw alpine malady pebbles germs fleet puddle swagger azure react sovereign much worry zebra pebbles

With either the normalized private spend key (after the sc_reduce32 completes) or the Electrum words you have the information to synthesize the following Monero address:

44yo6exuJXtfmGzabRub8w6JkEcY6BjVEUkBmgheV5fEChMb5BD7HUWUPjuKVJ4C2Y11tf9y6DCJo2uAHts6E4EzJZX23fa

FYSA - The sc_reduce32 command was created from a Monero function called sc_reduce32(). Similarly, the bytes_to_words command was created from a function called bytes_to_words().


Would I be able to restore my GUI wallet using the .keys file using a different OS? I created my GUI wallet months ago on windows 10; I've never had issues accessing it until last night. I have the password in a password manager, as well as written down, I know it's correct. Regardless of this, I keep getting "Couldn't open wallet: Invalid Password." I never wrote down the secret keys, and I can't seem to find the 25 word seed I wrote down. I do have the password and I do have the .keys file, would I be able to restore the wallet using this, but on a different OS? From what I've found while searching, this password issue seems to be tied to windows 10.
Thank you, I appreciate any help.

Yes, as long as the encryption and decryption algorithm are the same used.
Here are a few tips in case you have problems accessing your wallet:

check if it's the right wallet and not your donation one or other ones (usually different .keys files)
check if the password is written in the correct case and you didn't misspelled it
I suggest you to download the latest version of the software, as it might just be a bug in the software you're using


Is there a way to send unconfirmed transactions and get them accepted by the network? Something like in bitcoin, where if you send a transaction that is using unconfirmed inputs, the outputs will only be confirmed when the inputs are?

If not, could you tell me what's the best way to speed up the time it takes to have the newly received funds ready to be sent? Would using the lowest possible mixin value have an influence?

Lastly, what is Monero's confirmation time? It is in blocks, right?

Is there a way to send unconfirmed transactions and get them accepted by the network? Something like in bitcoin, where if you send a transaction that is using unconfirmed inputs, the outputs will only be confirmed when the inputs are?

No. Monero does not support chained payments within the same block. Outputs must be available before they can be spent. Because of how ring signatures work, Monero is not easily comparable to Bitcoin in this regard.

  If not, could you tell me what's the best way to speed up the time it takes to have the newly received funds ready to be sent?

You cannot speed up confirmation time unless you have access to a huge amount of hashing power which you can activate on demand to (temporarily) speed up block discovery until the network difficulty adjusts.

A better solution would be to have a Monero wallet that has a balance that is always available to you. In that case you can spend that amount of Monero at any time without needing to wait for incoming transactions to be confirmed first. If the incoming transaction is from a third party keep in mind the security implications of accepting transactions that have not yet been accepted by the network.

  Would using the lowest possible mixin value have an influence?

No.

  Lastly, what is Monero's confirmation time? It is in blocks, right?

Yes. Each block is approximately 2 minutes apart (on average) but incoming transactions require 10 blocks before the funds can be spent, regardless of how long those ten blocks take.


Where to find my XMR Wallet Address? Sorry for the simple question, I am new to Monero and wondering where I find my Wallet address. In the Monero Wallet GUI I see an reception adress in the first line. Is this my unique address? And what means the integrated address?

In the Monero Wallet GUI I see an reception address in the first line. Is this my unique address?

Correct. This is your unique "plain" address. Note that you can also find your plain address in <wallet-name>.address.txt, which is stored in the directory of your wallet files (Documents\Monero for Windows | ~/Monero for Mac OS X and Linux).

  And what means the integrated address?

An integrated address is a plain address with the short, encrypted payment ID embedded. Merchants and services (e.g. exchanges) give each user a unique integrated address, such that they are able to distinguish between incoming transactions (in case of exchanges) or payments (in case of merchants). Note that plain addresses are 95 characters, whereas integrated addresses are 106 characters. More information about integrated addresses can be found here:

What is an integrated address?

https://monero.stackexchange.com/questions/tagged/integrated-address


Monero Wallet with Key File I have been using KeePass password manager, and one option for login is a password + a key file. Would it be possible to incorporate this layer of protection to monero-wallet-cli as a safer alternative than just a password, yet less safe than cold storage?

What additional level of security does this key file requirement provide?

This is not a direct answer to your question, but instead another very security conscience approach that already has working code.

Hardware HD cryptocurrency wallets such as Trezor is a two factor device that is immune to key loggers. The Monero Team now has Monero functioning binary code for Trezor devices and its source code posted here. The code is experimental at the moment, but my testing indicates it is stable.

Additionally, the Trezor Password Manager is also very likely to be more secure than Keepass for managing symmetric personal website account passwords passwords.  Trezor also recently started to support U2F.


blockchain_import fails, "Transaction has too many dirty pages - transaction too big" I'm trying to set up a node and import the raw blockchain. OS is Whonix with 2GB RAM and plenty of free disk space hosted on Win7 ENT.

user@host:~/Desktop/monero$ ./blockchain_import --input-file blockchain.raw
2016-Aug-30 08:49:32.647152 Starting...
2016-Aug-30 08:49:32.647493 Setting log level = 0
2016-Aug-30 08:49:32.647768 database: lmdb
2016-Aug-30 08:49:32.647991 database flags: 0
2016-Aug-30 08:49:32.648241 verify:  true
2016-Aug-30 08:49:32.648461 batch:   true  batch size: 100
2016-Aug-30 08:49:32.648719 resume:  true
2016-Aug-30 08:49:32.648939 testnet: false
2016-Aug-30 08:49:32.649200 bootstrap file path: blockchain.raw
2016-Aug-30 08:49:32.649422 database path:       /home/user/.bitmonero
2016-Aug-30 08:49:32.694990 Loading blockchain from folder /home/user/.bitmonero/lmdb ...
2016-Aug-30 08:49:52.389821 [batch] DB resize needed
2016-Aug-30 08:49:52.390331 LMDB Mapsize increased.  Old: 2048MiB, New: 3072MiB
2016-Aug-30 08:49:52.692956 Blockchain initialized. last block: 85100, d807.h17.m53.s22 time ago, current difficulty: 380438790
2016-Aug-30 08:49:52.743456 bootstrap file recognized
2016-Aug-30 08:49:52.743530 bootstrap file v0.1
2016-Aug-30 08:49:52.743559 bootstrap magic size: 4
2016-Aug-30 08:49:52.743585 bootstrap header size: 1024
2016-Aug-30 08:49:52.743615 Scanning blockchain from bootstrap file...

Done scanning bootstrap file
Full header length: 1028 bytes
Scanned for blocks: 3292602310 bytes
Total:              3292603338 bytes
Number of blocks: 1123182

2016-Aug-30 08:51:06.203899 bootstrap file last block number: 1123181 (zero-based height)  total blocks: 1123182

Preparing to read blocks...

2016-Aug-30 08:51:06.230419 bootstrap file recognized
2016-Aug-30 08:51:06.230464 bootstrap file v0.1
2016-Aug-30 08:51:06.230488 bootstrap magic size: 4
2016-Aug-30 08:51:06.230511 bootstrap header size: 1024
2016-Aug-30 08:51:06.230538 start block: 85101  stop block: 1123181
2016-Aug-30 08:51:06.349911 Reading blockchain from bootstrap file...

block 85170 / 1123181 2016-Aug-30 08:59:17.317979 Error attempting to retrieve an output pubkey from the dbMDB_TXN_FULL: Transaction has too many dirty pages - transaction too big
2016-Aug-30 08:59:17.339632 Output does not exist! amount = 20000000000000
2016-Aug-30 08:59:17.342223 Output does not exist! amount = 60000000
2016-Aug-30 08:59:17.353337 DB error attempting to fetch block index from hashMDB_TXN_FULL: Transaction has too many dirty pages - transaction too big
2016-Aug-30 08:59:17.353715 exception while reading from file, height=85177: DB error attempting to fetch block index from hashMDB_TXN_FULL: Transaction has too many dirty pages - transaction too big
2016-Aug-30 08:59:17.354055 Closing IO Service.

I saw (probably) this reported as an yet unresolved open issue on ARM7 and I understand that it is an lmdb issue. Any suggestion how should I continue with setting up my node/wallet?

It appears that you're using a 32bit build. This was a known bug in the 32bit LMDB code, Issue #855, fixed on August 11 in commit 7442dd084acfcef571c51f53277247c050d1c98b.


Unable to run a cryptonote forked coin, what are node seeds I have compiled cryptonote fork on two different Azure Ubuntu 14.0.4 machines.
When I try and run the daemon o get this:
MYIP:MYPORT failed: TcpConnector::connect, connection failed

I think It has to do with the seed nodes configuration, what should I have there? The addresses and ports of one of them? local host?

Currently, I have the two instances running the same daemon with the IP and PORT of one of them.

P.s
All ports are allowed in the FireWall both in and out

Thanks

Not sure for exact details but:

try set seed=localhost on the first, and seed=node1 on the other
be sure to change all the ports not to clash with existing CN cryptocurrencies
be sure to change address prefix not to clash with existing CN cryptocurrencies
if there are some check-points like embedded hashes in the source, you'd need to tweak those as well


Can Kovri be blocked in e.g. China? And if so, is there a way around it with something like the meek pluggable transport from the Tor project?

With Deep Packet Inspection, you can filter/block almost any traffic you want. In the I2P projcet, on which Kovri depends, the devs are aware of blocking possibilities in restricted countries and they are working on solutions to make it as hard as possible to detect and block I2P traffic.

The mentioned "meek" is one of the Pluggable Transports (PT) to obfuscate TOR traffic, which will also be implemented natively in Kovri with even extended functionality (hidden mode + disabled inbound) for restricted countries. In addition to that, I2P is working on a new NTCP 2 transport which makes automatic identification of I2P traffic even harder. According to the roadmap it's currently one of the main focuses.

You can see the current list of "Bad Countries" in I2P according to lack of press freedom and that for being started in hidden mode by default in I2P. Kovri, however could handle an own list of countries, where crypto currencies (or Monero in special) would be banned and let you connect by default with even more security features like hidden mode and disabled inbound.

So in general, it's a cat-and-mouse-game to obfuscate traffic so it can't be filtered. But I am quite sure, that there always will be ways to hide (especially if you are not transferring TeraBytes of data) since the effort to inspect every bit of data in real time is simply too high. Especially Kovri project's focus is security first, even more than I2P.


Can miners see sender's information? The recipient cannot see the sender's wallet address, but can a miner see the sender's wallet address?  Can the miners see the IP address of the sender?  Moreover, what information of the sender can the miner see?

The recipient cannot see the sender's wallet address, but can a miner see the sender's wallet address?

No. Neither can see the sender's wallet address because Monero uses one-time stealth addresses in transactions, never the actual wallet address.

  Can the miners see the IP address of the sender?

No. A miner asks a node for a block template to hash. There are no IP addresses linking to a transaction in the block template received from the node.

  Moreover, what information of the sender can the miner see?

Nothing other than transaction data, which a) uses stealth addresses as defined above and b) amounts that are encrypted (hidden). There is however the option to use an unencrypted payment ID, though this is being phased out / discouraged.

A node however can of course see the IP address of the peer that sent it a transaction. It will not know however whether that peer is the original sender or not though, as transactions get relayed around the network.


Are monero addresses always 95 characters long? Is a monero address always 95 characters long? Reason why is i generated a 93 character somehow from one of my apps im building out. I'm sure its just a bug on my part, but as this only happened once for me.

Yes, because Monero uses a modified base58 encoding method. During encoding, it breaks the address into 8 byte blocks and adds padding in order to guarantee that the resulting base58 address is always 95 characters long.


MDB MAP FULL error when syncing Ran into the following when syncing:

2017-06-26 21:19:28.150 [P2P1]  ERROR   blockchain  src/cryptonote_core/blockchain.cpp:3383 Error adding block with hash:  to blockchain, what = Error adding spent key image to db transaction: MDB_MAP_FULL: Environment mapsize limit reached
2017-06-26 21:19:28.150 [P2P1]  WARN    blockchain.db.lmdb  src/blockchain_db/lmdb/db_lmdb.cpp:71   Failed to query m_blocks: MDB_BAD_TXN: Transaction must abort, has a child, or is invalid
2017-06-26 21:19:38.034 [P2P1]  WARN    blockchain.db.lmdb  src/blockchain_db/lmdb/db_lmdb.cpp:71   DB error attempting to fetch block index from hashMDB_BAD_TXN: Transaction must abort, has a child, or is invalid
2017-06-26 21:19:56.416 [P2P1]  WARN    blockchain.db.lmdb  src/blockchain_db/lmdb/db_lmdb.cpp:71   DB error attempting to fetch block index from hashMDB_BAD_TXN: Transaction must abort, has a child, or is invalid
2017-06-26 21:20:01.815 [P2P1]  WARN    blockchain.db.lmdb  src/blockchain_db/lmdb/db_lmdb.cpp:71   DB error attempting to fetch block index from hashMDB_BAD_TXN: Transaction must abort, has a child, or is invalid
2017-06-26 21:20:40.659 [P2P1]  WARN    blockchain.db.lmdb  src/blockchain_db/lmdb/db_lmdb.cpp:71   Failed to query m_blocks: MDB_BAD_TXN: Transaction must abort, has a child, or is invalid
^C

^C

Anyone else encounter this?

Your errors indicate that your blockchain is most likely corrupted. To resolve this issue you need to resync from scratch. This is done by deleting data.mdb from C:\ProgramData\bitmonero\lmdb (Windows) or $HOME/.bitmonero/lmdb (Linux and Mac OS X), which will trigger the resync.

To avoid corruptions make sure to always gracefully exit monerod.


Wolfram Warptangent, Point Release 10.2.1 performance improvements There have been multiple reports of massive reductions in memory and CPU usage with the new Monero 10.2.1 point release.

What specific optimizations led to the "massive speed improvements to RingCT validation" reported in the release notes? Which pull requests had the largest impact in reducing memory and CPU usage?

Memory usage:

  The change in memory usage (Linux 64-bit) from Monero release 10.1 to 10.2 is just impressive (had some downtime in between the update):

CPU usage:

  Installing 0.10.2 on my VPS node lowered the CPU utilization from 40% to 4%. Nice!

There were several changes:

https://github.com/monero-project/monero/pull/1727

This patch splits block and transaction data getters in two: one which retrieves the data, and the other also doing some parsing and reconstruction of the block or transaction. This allows skipping all the parsing (and reserializing) where it is not needed, which is mainly when serving blocks to other peers, but there are various other places where this helps.

https://github.com/monero-project/monero/pull/1717

This patch ensures that the "pre block add" lookups for inputs used in incoming transactions aren't performed for blocks which were already added recently. Since Monero download blocks concurrently from several peers, the first one to send a chunk of blocks will have those blocks added. Subsequent ones will then be able to early out if they determine that their work (or some of it) is now unneeded. This avoidance of extra lookups is particularly helpful on spinning disks, where someone reported a roughly 4 times speedup in sync (or a sample of 20k blocks).

https://github.com/monero-project/monero/pull/1576 and https://github.com/monero-project/monero/pull/1615

This splits checks between those that are inherent to the transaction itself, and those that are dependent upon the blockchain (which can change over time). This removes some duplicate checks. Failing transactions (for the inherent checks) are also remembered, so they can be ignored when we see them again, without having to check them anew.

https://github.com/monero-project/monero/pull/1536

This caches some frequent RPC calls between wallet and daemon, speeding up transfer operations, and lessening the load on the daemon as a side effect.

Additionally, and this is not merged, there is a patch which decreases CPU load a lot on pools by caching block template: https://github.com/moneromooo-monero/bitmonero/tree/cache-block-template. This is used by several pools in production as far as I know, but was judged too risky to merge for now.


Can my Monero Wallet be accessed from computer if the Wallet file name and password is known? Sorry if this is a stupid question.

I was using mymonero.com to store the XMR that I bought, but after seeing advice that it is safer to store using the simple wallet, I downloaded the warptangent release and made a wallet there.

I do not understand the technicalities of all this properly. I was wondering whether access to my monero wallet is computer-specific i.e. is there something specifically stored on my laptop which prevents someone from accessing my account even if they knew the password?

I am not in a situation where any monero has been lost or that I am worried about a key logger for example. I just want to understand how exactly I can access my wallet. Without a key logger is there any way that someone could steal my XMR?

Your wallet file name is the name of a set of actual files on your PC. Your password is the key to decrypt (and thus use) said wallet files; it is not used as input for some sort of deterministically-generated account. An attacker would need both your wallet files and your password.

Thus, to access your wallet on a different PC, you'll need to copy over the wallet files (or restore the wallet using your seed).

  Without a key logger is there any way that someone could steal my XMR?

Yes. Key logging is only the most obvious way a remote attacker could compromise your wallet. If your question is more like: "Is there any way an attacker could brute-force my password and steal my XMR (without compromising my PC, etc)?", then the answer is no.


Scanning and updating Monero balance with private key using only monerod rpc? I'm trying to build out a wallet service and need to figure out how to use the monero rpc commands to update a users balance. In my database, I have a bunch of user's private keys. How do I update each user's balance using only the rpc? Do I pass in the private key into the rpc command and it spits back out the balance for me?

First, I'd suggest thinking harder about your design choice of holding users private keys. If you're going to have full custody of users wallets, it begs the question why have per-user wallets in the first place. It's your wallet if you hold the keys, so you could just just assign accounts/subaddress to customers for example.

Second, if you're going to ignore my first point... You cannot use the monerod RPC as it's the node daemon, it doesn't offer wallet level functionality. You also cannot use the monero-wallet-rpc with raw private keys - it operates on a wallet file. Therefore, you would need to restore each wallet file from the supplied keys using monero-wallet-cli, then you can use the monero-wallet-rpc on each wallet file - either use multiple processes, so you have each wallet permanently opened/running, or use one process and the open/close methods to open/close each wallet file as needed.


How often does Getmonero.org update its source code? After pull requests are merged on GitHub there is a delay before new content can be seen on the getmonero.org

How often does the website update its source code?

Given that Fluffypony updates the website, he is basically the only one that can give you a certain answer. However, usually the site gets updated shortly after the pull requests are merged.


How do I sync 'monero.exe' and my wallet? I just installed the monero package from monero.org and I set up a wallet. Now I'm running 'monerod.exe' and the wallet, but it says that they're not synced together... How do I fix this?

1) Make sure that monerod is completely synced with the network. You will know when monerod.exe prints something on the screen along the lines of "Monerod is now synchronized with the network. You may now start monero-wallet-cli."

2) Start monero wallet. After it loads up, type in "refresh." It should then show you something like "Height xxxxxx/xxxxxxx". Once it is done syncing with monerod, it will show you your balance.

Please post if this helped you and if it didn't what happened.


Does the block effort matter when mining in a pool? How does it impact earnings? I've been using two or three pools so far. One of them always seems to need higher effort to find a block. Does that impact me personally in any way.
I've seen one go 600% and it took ages to get it. Did I lose time on it?
How does a 10% effort block change things then?

The effort is just an educated guess based on the total pool hashrate.

At X Hashes/s, a block should be found in Y time.

I basically ignore it, its it a guess and not factual.


What's the difference between "balance" and "unlocked balance"? What's the difference between "balance" and "unlocked balance"? When is it different? Why is that, and for how long?

According to your wallet (not the protocol) you have to wait 10 blocks (roughly 20 minutes) before you can spend newly received xmr. The is a measure for increased untraceability.

Explanation :

As an example, when you send a transaction, your wallet uses one of the 'bills' it has, say 10 xmr. However, you want to pay someone only 3 xmr, so what happens then? Your wallet splits the 10 xmr into brand new 3 + 7, sends the 3 to your recipient, and 7 back to yourself. Because both the 3 and the 7 bills are brand new, you have to wait until you can spend those.


monero-blockchain-prune is not showing when choose "show package contents" on monero-wallet-gui 0.16.03 on mac Only shows the below - how can I run the pruning tool on mac without the utility being in the package? - I really need to get the blockchain database down in size. All posts say it should be in the MacOS folder. Thanks

Ended up deleting the whole blockchain (94GB) and resynching with the --prune-blockchain start up flag for Daemon set in the miners wallet gui. This took over 5 days but I now have a 29GB blockchain a saving of 65GB!


What is the reason why its so hard to implement Monero into current wallets? Is monero completely different from bitcoin in the sense that wallet creators haven't added monero as into their list of supported coins? Monero has a pretty decent big following, but its not support in many of the multi-coin wallets. What is the reason for this?

Monero has a completely different code-base than Bitcoin. It was not inherited from Bitcoin, and it was written from scratch (Bytecoin was the first CryptoNote cryptocurrency, and Monero inherited that codebase, not Bitcoin's - it's a fork of Bytecoin)

Thing is, all Bitcoin clones can simply copy what's already been done and maybe do some small tweaks. On the other hand, people working to implement Monero are pioneers. It doesn't mean that it's harder, but just that it requires work whereas for Bitcoin most of the work has already been done and can be re-used.

Also, due to mechanics of CryptoNote coins, any light-wallet implementation requires more resources on the back-end. Where Bitcoin can simply look-up the balance, Monero has to scan the entire blockchain.


How to generate a unique deposit address for a Monero wallet Hi I want to generate a unique deposit address for my Monero wallet. Please let me know if I can do this using javascript, without unlocking my wallet, just using the wallet or public key, or any other method.

To create a subaddress, you need the wallet private keys. Assuming you have these, you can create them in javascript using this package, as an example.

You cannot do this having only the public key, you need both the private view key and public spend key.


Using old HDD laptop for storing blockchain - slow synchronization - would an external SSD help? I'm currently using the GUI wallet (v0.12.0.0) and have the blockchain stored on an old HDD Macbook which rarely goes online.  Although it gives some purpose to an old laptop, synchronization can be painfully slow if not done regularly.

So, would purchasing a new external/USB SSD drive, storing the blockchain on it and using it with the old Macbook help to improve synchronization speed?  Or would I be better off buying a cheap dedicated laptop with internal SSD?

The speed of synchronizing multiple-days' worth of Monero blocks is primarily bottlenecked by 1) internet speed, 2) CPU (for verification), and 3) drive speed. It's likely that an older laptop might just be very slow when it comes to the CPU speed. However Monero uses the LMDB database, where the developers state here that an SSD is considered essential for performance: https://symas.com/anticipating-future-lmdb/  It's likely that a fast external SSD will improve your synchronization speed modestly, though a better computer would lead to a better result. (Of course, the simple strategy of synchronizing more often would be the easiest overall.)


Why is my monero signed signature different everytime I click on sign? I'm using the following html app:

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

I put in all my details of

monero address:
4B4mTT1kPokAQAE72kG6qgDt2HU8K18hz7V3HQQ1Z4rACdW5QXakN3q2PfEAnzSdfTZGqAtWjHwaQJ9xCuw5vGA9aLzcCQCreated

private spend key:
18e8dc054972b0247a76cc8ee102f68766dcfef5ccc1249f98de0a461717b003

message to sign: 'ABCDEFG'

Everytime I click on sign, I get a different signature. Shouldn't it be the same all the time? None of the variables I gave are static, but why is my signature dynamic?

Monero does not use the EdDSA signing algorithm you might have been expecting. Instead, it uses the Schnorr algorithm, which uses a random k value as part of the signature. Therefore each signature will be different because k will be different each time.

See https://en.wikipedia.org/wiki/Schnorr_signature

Here is pseudocode for the signing and verification:

base point = G
private spend key = b
public spend key = B = b*G
msgHash = keccak256(message)
Hs() means hash with keccak256 then convert to scalar number
|| means concatenation

generate the signature:
k = randomScalar()
signature.c = Hs(msgHash || B || k*G)
signature.r = k - b*signature.c

signature is valid if signature.c == Hs(msgHash || B || (signature.r*G + signature.c*B))


How decentralized is Monero mining? How many Monero mining pools currently exist?

Are there any P2P pools?

What percentage of the hashrate does the largest pool control?

Is there a pie chart available that shows the the share of all major pools?

Is there a website that tracks real time hash rates of Monero pools?

Are there any formal procedures to quickly notify miners if the hash rate from one pool grows too large, asking them to change pools or begin solo mining?

There are at least 13 pools but likely more due to private and unkown pools
Not yet, but there has been some interest in the idea

  It does not exist for Monero but it would be a nice little project to create one.
  The main reason people don't seem to go for it is higher overhead. You have to run a full node, and you have to run what is essentially a second full node for the sharechain. With traditional stratum miners you just run a tiny mining program and have tiny bandwidth usage.
  The second reason, on Bitcoin in particular, is somewhat chicken-and-egg. Since not enough people use p2pool, it doesn't get blocks very often (takes days currently) and then miners using it get unhappy with the variance.
  I think p2pool is reasonably popular on some alts.

crypto-pool.fr is currently the largest known pool at 18.2% with "unknown" controlling 41.7%
Yes, an updates pie chart can be found here
Yes, same source as the previous question
If there is a formal procedure I am not aware of it. Reddit and Bitcointalk, IRC, Slack and other channels can be used to reach many Monero users quickly when needed.


Invalid config file for xmr-stack-amd I am using Linux Mint and my processor is AMD A10-7860K Radeon R7 CPU. I have installed xmr-stack-amd and have got to the stage where I can start it. However, I have not been able to successfully edit the config.txt file.

It would be helpful to be pointed to an example config file which I could use as a basis. Is there one available?

Also the current error I am getting is "Invalid config file. Missing value "daemon_mode"." What does this mean?

From the title of your post, specifically the part where it says "xmr-stak-amd" leads me to believe that you are trying to use an AMD GPU miner instead of xmr-stak-cpu.

The hardware you posted: "AMD A10-7860K Radeon R7 CPU" is a CPU

You will need to use xmr-stak-cpu: https://github.com/fireice-uk/xmr-stak-cpu
I know it says -amd, but thats actually referring to GPUs, AMD makes both, but that miner you're trying to use is not meant for CPUs


Monero Height at a standstill My Height seems to be stuck here 335459/335459 (100.0%) on mainnet

But when I check the current height online it's 1289240

Could someone help me?

The 100% part of the message means that you are connected only to nodes with at most that height, which is far in the past.

Try print_cn and see if you have any peers, and how many. This is odd that you'd be connected to only bad peers.

To try to fix the problem:

exit monerod
remove ~/.bitmonero/p2pstate.bin
start monerod again

This will cause monerod to start picking new peers, and hopefully pick at least one good one this time.


Is a Monero key backdoor possible? Recently an article was published stating the possibility of the NSA or some other malicious organization creating backdoor undetectable Diffie-Hellman keys (source) to allow snooping.

Is Monero at risk to an attack of this nature? If so, under what circumstances could this happen? If not, why?

The underlying Elliptic Curve that is used for Monero's cryptography is the Twisted Edwards curve Ed25519, and this is the same curve used in applications like OpenSSH, Tor, Tox, I2P, Facebook Messenger, Google, Whatsapp, and others. That doesn't, by itself, guarantee that it is flawless, but it is a very good endorsement IMO, and it is a bigger test of time than Monero itself.


What is the difference between Monero (XMR) and CloakCoin (CLOAK)? I have heard that CloakCoin uses a number of technologies to achieve privacy. What is the difference between these privacy technologies (if any)? I heard that CLOAK uses something called Enigma to provide privacy. Which privacy implementation is better, and under which circumstances?

CloakCoin's "Enigma" protocol is essentially a mixing protocol similar to CoinJoin or PrivateSend in Dash. This is very different than Monero.

Here is a diagram provided by Enigma on the mixing process:

The nodes mentioned above get "entropy" from coins provided by the mixers themselves.

Unfortunately, this mixing process has significant shortfalls. Here are some of them:

You place inherent trust in these mixers. The first mixer learns the sender address (you). The last mixer learns the recipient address (especially if stealth addresses are not used, more on the later). There a variety of situations of possible collusion where multiple rounds of "cloaking" can trivially reveal the entire path of a "cloaked" transaction.
Transaction amounts are still visible. If I send 2.34578 CLOAK to someone with "Enigma," it can be relatively trivial to trace the amount transacted. Even if the outputs are split into specific, set denominations, there are still potential issues by counting the number of outputs as is a weakness of PrivateSend.
The entropy is even smaller than PrivateSend and other CoinJoin-based approaches, since the entropy is limited to the money held by the "Cloaker" operators. However, this is a greater incentive to provide coins for cloaking than Dash (similar to the liquidity providers they used a while back).

In their whitepaper, Cloak refers to three more privacy features: 1) Tor onion routing, 2) stealth addresses, and 3) combined "super-transactions." Let's evaluate these in more detail.

Tor is a network-layer of communication, not a consensus layer. While it is important to hide this metadata (including IP address), it is less essential than hiding information recorded in the blockchain. Tor doesn't protect you alone if you make an in-person purchase, for example. Furthermore, there are other ways to hide this metadata, including using WiFi at a coffee shop, a trusted VPN, etc.

Cloak recommends combining an Enigma transaction with stealth addresses, which is actually a good idea. If money is sent from a stealth address with Engima, the sender has more protection from malicious "Cloakers." Likewise, the recipient is better protected if the money is sent to the recipient's stealth addresses. Monero also uses stealth addresses (though by mandate rather than choice), and Enigma seems to closely replicate the "ring signatures" portion of Monero on first glace. Unfortunately, there are also shortfalls with this method:

The entropy set is still smaller. Rather than selecting from the entire output set with Monero, CloakCoin users are still restricted to select outputs controlled by the "Cloakers."
There is still trust. Whereas ring signatures in Monero provide plausible deniability without having to trust nodes ("Cloakers") to provide this plausible deniability, "Cloakers" can collude to remove this plausible deniability. This is especially a concern if these mixing services are run on a handful of providers with access to server logs, including Amazon AWS, Choopa, DigitalOcean, etc.
Stealth addresses are optional, limiting the effectiveness at reducing many forms of blockchain analysis. A merchant may refuse to reimburse to a stealth address, for example.

"Super-transactions" are not a new idea. The intent is to "condense" the history of multiple transactions into one. For example, if money was transferred between addresses A -> B -> C, it could theoretically be condensed to A -> C. Unfortunately, the whitepaper is light on details on how this could be accomplished, so we have no idea how effective (or ineffective) this could be. Other projects like Grin take advantage of a similar idea. Again, this feature needs to be fairly widely-used to be effective.

Monero uses three cryptographic technologies to provide privacy for all transactions. Ring signatures hide the origin of funds spent by hiding the real output among other sources of money. Ring confidential transactions (RingCT) hide the amount. Stealth addresses break the link between sources of funds and addresses (making rich lists impossible). You can learn more about each individually by searching around in StackExchange and watching the linked videos.

Perhaps most importantly, you can use Monero without having to worry about trust. The math is prepared locally without needing to communicate with clients to "mix" anything.

You do not need to pay a percent fee to the "cloaker" nodes to provide their entropy. The standard Monero transaction fee is based on transaction size, not the amount. This makes Monero far more efficient when sending medium or large amounts.

Finally, Monero has the network effect of all its privacy features being supported by all its merchants and wallet providers. If CloakCoin is ever accepted by a service, it is likely they will not support all of CloakCoin's privacy features.

Overall, CloakCoin (CLOAK) uses privacy mechanisms that are inferior to Monero in essentially every way.


Is it possible to create infinite coins in Monero since Monero is completely anonymous now? Is it possible to create infinite coins in Monero as it is completely anonymous now? and if such anomaly is created is it possible to find that out in the network?.

The coinbase transactions are not anonymised (as they don't need to be), so no, situations like what you describe won't happen. The coinbase transactions will ensure the integrity of the coin supply can be verified.


What exactly happened in the 2019 Nov Monero CLI hack? There were reports of Monero CLI binaries not matching for the v0.15 release in November of 2019. What exactly happened and how can it be prevented in the future? Did it only affect the cli wallet binaries? What about the monero v0.15 daemon?

Please see:

https://web.getmonero.org/2019/11/19/warning-compromised-binaries.html

And:

https://www.reddit.com/r/Monero/comments/dyfozs/security_warning_cli_binaries_available_on/

  What exactly happened and how can it be prevented in the future?

Further information will become available once the full investigation is complete. Until then, there is no point in speculation.


Hash rate of three million mining Monero? Is this article truthful when it quotes a hash rate of three million when mining Monero? If so, what is the way to learn and apply the RandomX algorithm in FPGA hardware? What knowledge is required?
BitHull-Overtakes-ASIC-Market-with-New-FPGA-Miners

"Is this article truthful when it quotes a hash rate of three million when mining Monero?"
Answer: No. If the hashrate was 3 million, then everyone who was mining Bitcoin must've moved for no reason.
"If so, what is the way to learn and apply the RandomX algorithm in FPGA hardware? What knowledge is required?"
Answer: It is not possible to apply the RandomX Algorithm to FGPA hardware (Currently).


How can I explain the meaning of Monero to my grandma? I wrote a book about Monero, and my proud grandma wanted to have a copy. So she got it, said "What a beautiful picture on the cover!" and - "What is this, Monero?".

She doesn't know crypto-currencies, never used a computer. But she uses a PayPal account from her iPhone. How can I explain what makes Monero special to a non-technical person? I don't mean introducing in using, and the existing question "What is Monero?" with its answers is still much too technical.

Such challenges are not rare. I need to explain to my boss why I request some days off to go to a Monero conference, and soon my daughter will want to know why daddy is so excited about his mining rig. My girlfriend needs to understand why I spend so much time researching Monero.

Does anyone know eye-opening words? Perhaps an analogy or a metaphor would help? So grandma, girlfriend, daughter, boss - all may roughly understand and say "Ah, such a thing? Useful indeed!"

(Tagged as privacy, I could not find any related tags)

I wouldn't try differentiating between Monero or Bitcoin, or any other crypto-currency, and just say: "It's like PayPal, but instead of the bank keeping track of your balance, there's no bank. Every one's computer (or phone) is keeping track of all that.". It is an oversimplification, but summarizes the essence of blockchains I think.


Can someone send monero to my subaddress that starts with "8"? After I got my wallet onto mainnet, I get an address starts with "8" (normal monero address starts with "4"), and it's a subaddress with a costom label. Can someone send funds to that address?

Yes, a subaddress is a valid public address and can be used the same as a "normal" account address.

Here and here are more information on subaddresses.


What's the appropriate place to add additional validity checks for transactions? What's the appropriate place to add additional validity checks for transactions? (check_tx_inputs?, does every tx pass through this, including during reorgs and such?)

This is a good place, yes. This is called before a (non coinbase) transaction is accepted, except when running monero-blockchain-import with verifiction turned off (which you should not do unless you exported the file yourself). It will be called also when reorgs happen.


I can't reproduce a hash sent from a miner [javascript] I'm looking at nodejs-pool and this is what I extracted from it to verify the hash sent by the miner:

     // All the variables are self explanatory
     const cnUtil = require("cryptonote-util");
     const cryptoNight = require("cryptonight-hashing")['cryptonight'];

     let template = new Buffer(blockTemplateBlob,'hex');
     let poolNonce = new Buffer(_poolNonce,'hex');
     poolNonce.copy(template,reservedOffset);

     let shareBuffer = cnUtil.construct_block_blob(template, new Buffer(nonce, 'hex'));

     let convertedBlob = cnUtil.convert_blob(shareBuffer);
     let hash = cryptoNight(convertedBlob, 13, blockHeightWhenJobWasIssued);
     if (hash.toString('hex') != resultHashFromMiner){
        console.log("hashes don't match");
        return false;
    } else {
       console.log("hashes match");
    }

It always prints hashes don't match. I've checked every variable is correct. Also I have verified that the algorithm being used on the miner side is CryptonightR, but still can't figure out what's wrong. Can anybody help here?

Recall from this answer, the pool adds various data to the reserved space and it stores/caches the block template it used to create the hashing blob it sends to the miner.

Therefore, your lines:

 let template = new Buffer(blockTemplateBlob,'hex');
 let poolNonce = new Buffer(_poolNonce,'hex');
 poolNonce.copy(template,reservedOffset);

Look rather suspect.

First, blockTemplateBlob, where are you getting this from?? This would need to be the pools cached template, and I suspect you have not obtained this. Ref.

Second, in nodejs-pool, the variable they call "poolNonce" is only used for proxy jobs, not standard miner jobs. Ref.

Third, you are writing "poolNonce" to the start of the reserved space, which is not where this pool adds the "poolNonce" - they add it at job.clientPoolLocation. Ref.

Forth, you are not adding the miner specific nonce (what they call "extraNonce") into the reserved space (which should be at the beginning of the reserved space). Ref.

Given all this, I'm not surprised at all your hashes don't match.

UPDATE (for completeness):

Through the comments below, it turns out you were not supplying the correct height parameter to the hash function and job. The height has to match exactly the height of the block template and that which is supplied to the miner (and in your case, it turns out you never actually supplied the height to the miner). The pool has to of course use the same height it told the miner to use when hashing. If the heights mismatch, the hashes won't match. If you don't provide a height to the miner but do in the pool, the hashes won't match.


Why does Monero use keccak over something like sha-256? Keccak uses a sponge function which is cool but what benefits does keccak have over sha-256 for cryptography operations in the code? thanks

While Monero does not use Keccak for its hashing, one advantage of using CryptoNote is to prevent Monero from immediately being able to be mined by ASICs. There is tremendous investment in SHA-256 hashing because of Bitcoin's popularity, so using a less popular / more memory intensive standard allows Monero to be mined by the "common man"- at least until ASICs are developed.


After not running monerod for a couple of weeks, it throws me errors and closes before I can read them. What is my strategy here? First time I saw something about not finding i2p, but now other errors are listed, but as I say, the program closes too quickly for me to read them.

Naturally, I left the default logging at zero. :(

An issue of deamon not starting after a while has been already made. Maybe this is same what you are experiencing:

https://github.com/monero-project/monero/issues/1598


Updating my monero master So I cloned the monero github onto my computer around 2 months ago.

How do I update the entire thing to the most current release? Is there a simple way to do so?

Sure, assuming you have not made any branches, and that doesn't sound likely, follow these steps:

if you have made any changes to the repo: git stash
git pull --rebase
if you have made any changes to the repo: git stash pop

So in the likely case you haven't changed anything, it's just one step. Then build again (make).

If you did make changes, there's a possibility your changes will conflict with the upstream changes. In that case, it gets complicated, and you'll want to read the git docs. If the changes you made were trivial, it's easier to redo them manually.


Trezor firmware, private view key, key image and privacy It is my understanding that the Monero trezor firmware uses the private view key.

This might lead to some privacy concerns.

I have read that key image can be used to check balance of a paperwallet.

Does this mean that it is possible to develop a firmware for the trezor that will only use transactions key image to check balance?

Could this be a privacy improvement?

It is my understanding that the Monero trezor firmware uses the private view key.

Monero Trezor has access to all your keys, but it's contained in the device and thus safe to use.

  This might lead to some privacy concerns.

There can be no privacy concerns considering how everything works. Only you have access to your keys and the keys never leave the device (Trezor).

  I have read that key image can be used to check balance of a paperwallet.

Yes, the key images are used to check the balance of a paper wallet but you still need the fully-synced view-only wallet.

  Does this mean that it is possible to develop a firmware for the trezor that will only use transactions key image to check balance?

Kind of, but it wouldn't make any sense as the purpose of Trezor is for more than just checking the balance - to safe keep your private keys and allow you to also spend without ever exposing your private key. You still need a view-only wallet to make sure that a corresponding key image was produced for every output.

  Could this be a privacy improvement?

Over what? There is no privacy loss involved in using Trezor. The only risk is that someone gets your view-only wallet from your PC and the wallet password. Then, he would be able to see the incoming outputs, and that's it. This risk is completely unrelated to Trezor, though.

Monero works with 2 key-pairs: view and spend, and each have the private and public counterpart. The purpose of each is as follows:

Private view key allows the recipient to see which transaction on the blockchain belongs to him. Without it, he's clueless, because all outputs look the same. Monero are only ever sent to one-time destinations and your address never appears on the blockchain. Only with the view key, you can know which one is for you.
Private spend key allows the recipient to spend an output by signing a transaction. Also, he signs a key image which is used as a way to prevent double-spends. For each signed output, there's one key image, and if you try to spend the same output again, the resulting key image will be the same and will be rejected by the network.
Public parts make up the monero address, and are needed by the sender to be able to generate an one-time destination for the recipient.

From the above, with the view key, you can only know what you received, but not if it was later spent or not. Sending the same monero back to yourself would make it look like you just doubled your balance which is not true becasue now the originating output has been spent.

To detect if an output has been spent, the key images are used. Each output corresponds to one key image, but to generate it you need the private spend key. For auditing, you skip the transaction signing, and just produce a key image for each output detected using the private view key. Then, anyone can check the balance, if given the private view key and all the signed key images.

Now, how this relates to Trezor?

Trezor is a device which keeps all your keys. The thing is, those keys never leave the device, and that's what makes everything secure. Your hot-wallet resides on your PC, but is view-only. To spend anything, the Trezor needs to sign the transaction and give the signed version back to your PC in order to push it to the network. You never disclose your view key or your view wallet to a 3rd party so I don't understand what you mean by "privacy concerns".


How can I set monero-wallet-rpc default password I want to set a permanent monero-wallet-rpc password.

Right now every time I run monero-wallet-rpc I am asked to define a password.

How can I make this password be permanent?

You can start the wallet RPC with either of these flags:
--password arg                    Wallet password (escape/quote as needed)
--password-file arg               Wallet password file

You then won't be prompted to enter a password.


How many confirmations to be sure a transaction does not end up in an orphaned block? After how many confirmations can I be sure that my transaction is not in a losing chain that ends up orphaned?

Leaving aside the fact that "sure" is a subjective concept...

The network uses 10 blocks and 60 blocks to unlock monero coming from a user transaction, and a coinbase transaction, respectively. These provide guidelines as to what the Cryptonote creators thought to be reasonably safe values.

You could also look at what number of confirmations exchanges require. Kraken uses 15 confirmations, for example (http://blog.kraken.com/post/155126375697/kraken-launches-monero-trading).

For clarity, there is no such thing as 100% sure. All you can do is estimate a probability and error bars.


When will Kovri be launched (approximately)? Just checked the github and I was wondering when Kovri will come out from its Alpha version... I'm not actively following the developing process because I don't have enough experience / skill, but how much time you think the devs team will need? Is EOY / 2019 too optimistic?

Alpha version should be presented at DefCon, so 9 - 12 August.

Edit:
alpha release on August the 1st
Workshop at defcon on August the 11th.

Source: github issue


Is there a risk that cold storage wallets containing non RingCT outputs will be unspendable in the future? If I fund a wallet today and don't touch it for 5 years, is there a risk that I won't be able to spend my funds? Is it advisable to move funds around to a new wallet with each hard fork?

Theres no need to move arround your funds after any fork, even with updates like min mixing and the future RingCT the transactions will allways be compatible with the old ones


How do I get Monero if I am in USA and don't want to do ID verification with SSN etc? I really like Monero's ideas, but I am appalled at how hard it is to get into 'crypto' currency like coinbase etc that want my face, SSN, driver license etc.

What can I do with Paypal or a debit card?  Are there any exchanges where I wouldn't need my face/SSN etc?

Purchase BTC on Local Bitcoins, then exchange to XMR.
https://localbitcoins.com/


Income from CoinHive Monero ads Salon.com will mine Monero on its visitors' computers to compensate for the loss of advertising revenue.

How does the income from such mining "ads" compare to the cost-per-clic or cost-per-impression of traditional display ads like Google Ads? We could assume that a typical CPM is 5-10 $ and the typical visit lasts 2 minutes for 1.5 pages.

Some visitors may prefer to donate some computing and electricity rather than have their attention and private data sold by ads which also consume bandwidth and CPU.

From Coinhive's front page:

Will This Work On My Site?
Technically yes, economically probably not. If you run a blog that gets 10 visits/day, the payout will be miniscule. For the captcha and shortlinks with a sensible hash goal (1024–16384) you'll need to have a whole lot of users to make this worthwhile.
Implementing a reward system for your site or game where users have to keep mining for longer durations is far more feasible. With just 10–20 active miners on your site, you can expect a monthly revenue of about 0.3 XMR (~$95).
If you run a streaming video site, a community site, an online game or anything else where you can give your users an incentive to run the miner for longer durations, then by all means: try it.

For the miner to generate a lot of revenue, you either need a lot of traffic (in which case, it might be more efficient to just use traditional ads anyway) or need to keep the user engaged with your application (so that you can keep using their CPU). 2 minutes doesn't look like sufficient engagement to me.
By the way, since the application want to keep you glued to the computer screen so you're willing to let the application sap your spare CPU, your attention is being sold (though your private data probably isn't).


Wallet Balance Incorrectly Displays 0, missing Transaction Keys? My wallet is unusable at the moment, and sending xmr results in an doublespend error.
Transaction Amount for Sent tx "unknown amount" as the amount of xmr sent.  This "unknown amount" was sent to My Wallet.  ( This is displayed for the penultimate transaction, though as far as I can tell, all outgoing and incoming transactions look to be genuine, intentional spends.  )
Transaction Key: " - " (Upon further inspection, I noticed that not a single transaction in my wallet will display anything other than " - " as its transaction key.)
What I've done: Restored the wallet from seed.  No effect.
Without any guidance, I'm going to redownload the entire chain and then once again restore from seed, with fingers crossed.  Is there something else that I should be doing?
OS: Macos 11.2.3
GUI Version: 0.17.1.9-3ca5f10 (Qt 5.12.8)

Downloading the chain is pointless.
Restoring the wallet from seed will wipe the transaction keys.
A double spend like this after a restore from seed/keys can be caused by an outgoing transaction being stuck in the daemon, waiting to be spent. The outputs spent in that tx are not spent on chain, but the daemon will still reject reuse of them since it's already got a tx waiting to be mined. You can fix this by running "rescan_spent" in monero-wallet-cli. I believe there's a button for this in the options somewhere in the GUI,
I don't know about the "unknown amount" thing, that seems odd, but it seems GUI specific. See what monero-wallet-cli reports.


Can one add a payment ID to a subaddress in Monero? Is it possible to add a payment ID to a sub address in Monero? How can this be done? Or is payment id's completely phased out and shouldn't be used at all?

It is not possible (well, you could do it manually but no wallet would recognize them).


RecursionError in ed25519.py Good morning,

When importing this file in a python script,
http://ed25519.cr.yp.to/python/ed25519.py

I get the following error:

Traceback (most recent call last):
  File "XMR.py", line 1, in <module>
    import ed25519 as ed25519
  File "ed25519.py", line 19, in <module>
    d = -121665 * inv(121666)
  File "ed25519.py", line 17, in inv
    return expmod(x,q-2,q)
  File "ed25519.py", line 12, in expmod
    t = expmod(b,e/2,m)**2 % m
  File "ed25519.py", line 12, in expmod
    t = expmod(b,e/2,m)**2 % m
  File "ed25519.py", line 12, in expmod

    t = expmod(b,e/2,m)**2 % m
  [Previous line repeated 986 more times]
  File "ed25519.py", line 11, in expmod
    if e == 0: return 1
RecursionError: maximum recursion depth exceeded in comparison

Do you know what could be going on ?

Regards

This python script should work fine with python2.

If you want to use it with python3, you will have to increase the recursion limit (e.g. sys.setrecursionlimit(2000)), and some code fixes might be necessary...


chainradar.com question On the Monero page for chainradar there is an Amount field with a value that is different from the amount that I used for my transaction. What does this Amount value signify? Better yet, is there an FAQ that explains the values on this page?

The transaction ID in question is:

b9380726c4f8cc2e73dacfbbfb74c81bb998ca3f9dddc4f48d97f416a8d98e6f

It would appear that you spent less than 0.6 XMR in this transaction.  You must have received a 0.6 XMR denomination in the past, which remained an unspent output in your wallet until now.  That output was used as the input for the current transaction.  It was mixed with 8 other unspent outputs, so no one but you knows which was sent by you.

Note the output denominations of the transaction (.008, .03, .06, .2, .3).  The receiver in your transaction will be receiving some of those.  You'll receive at least one of those as well, since you'll receive change from paying with a larger denomination than you actually sent to the recipient.


Bootstrapping Monero blockchain via clearnet? I have reasonably recent MacBookPro but the fans and CPU (Activity Monitor) are working hard.

I still have some blocks to sync:

Tried obtaining more info about the blockchain size:

How much time to have blockchain synced?
Are criticisms of Monero's blockchain bloat substantiated?
https://moneroblocks.info/stats/blockchain-growth

Ideally I'd like to bootstrap the blockchain in a fastest way possible.

I have been using TOR in the past and there are some performance bottlenecks. I've never used I2P before but chances are there are some bottlenecks too.

Is there a clearnet version of Monero blockchain allowing me to get started reasonably fast?

You can download the current bootstrap from here

Regarding 'Monero's blockchain bloat' : As far as I know, until now the Monero BC network hasn't really experienced a problem due to this as it hasn't got to unbearable levels of traffic that suffer from the extra size that comes with RingCT.

Further, Monero will soon have Bulletproofs which will reduce transaction size, improve transaction speed, and lower transaction fees


Can I send coins from 0.9.4 to 0.10.0? I've got a 0.9.4 downloaded on a computer I no longer want to use. Can I send those coins to the 0.10.0 chain?

The chains are exactly the same. V0.10 continues on where v0.9 left off. Actually, right now you can use either version of the software, com January you will need to use v0.10. This is not because v0.10 is on another chain, but rather because in January v0.10 will start enforcing some rules that v0.9 won't understand.

The way your address and wallet is built is all backwards and forwards compatible though. The wallet itself might quit functioning some day, but the keys are still good. You just need to upgrade the software.


New Wolfram Warptangent 10.1 cold wallet transaction signing mechanism According to the Wolfram Warptangent, Point Release 1 notes, Monero has improved and fixed the cold wallet transaction signing mechanism

What improvements were made? What are the new cold wallet functionalities that did not exist prior this point release?

It introduced most of the commands mentioned in this guide:

import & export outputs
import & export key images
offline transaction generation
pushing transactions generated offline to the network

Some bugs were observed during testing, which were fixed prior to the point release. Also, I'm not sure it was even possible to perform cold spending prior to this release (maybe via RPC, but definetely not with commands available in the old release)


How do I compile Monero for Raspberry Pi 3 (ARMv8)? The Raspberry Pi 3 does have 1.2GHz 64-bit quad-core ARMv8 CPU. The official downloads offer a build for ARMv7. Is there any (performance) advantage in compiling your own binaries for Raspberry Pi 3, pressumably taking advantage of the ARMv8? If so, how should one do this?

Follow-up question: Does it matter which kind of Linux OS is being used? Right now, I am running Ubuntu MATE 16.04 (instead of Raspbian). Edit: When I log on to it remotely, it displays a banner: Welcome to Ubuntu 16.04 LTS (GNU/Linux 4.1.19-v7+ armv7l). That probably rules out taking advantage of the ARMv8?

At the present time, nobody ships a 64bit kernel or OS for Raspberry Pi 3. That's why we only provide 32bit binaries for the Pi 3. So no, you cannot leverage the ARMv8 features of the Pi 3 yet. If you want an actual 64 bit ARM device with 64 bit software support, try the Pine A64.

Other devices with good ARM64 support - anything using Rockchip RK3368, Amlogic S912, or Hisilicon Kirin 650, 955, etc. I've tested ARMv8 support on all of these successfully with decent results.


Trying to update a small analysis, does anyone have a source on current median transaction sizes? Doing this little shitpost: https://www.reddit.com/r/Monero/comments/9s5n51/monero_selfish_mining_strategy_when_you_need_to/, need to update because it's currently using RingCT figures

At the time of writing, there have been 7331 blocks containing 40988 non-coinbase transactions since the Bulletproof fork height at 1685555.

Lowest transaction size:              1869 bytes
5th percentile transaction size:      1875 bytes
Median transaction size:              2330 bytes
95th percentile transaction size:     6063 bytes
Highest transaction size:           121208 bytes

For comparison, here are the stats for the 1000 blocks directly preceeding the Bulletproof fork:

1000 blocks containing 5260 non-coinbase transactions:

Lowest transaction size:              6954 bytes
5th percentile transaction size:     13191 bytes
Median transaction size:             13786 bytes
95th percentile transaction size:    39149 bytes
Highest transaction size:           260489 bytes


Errors setting up a Monero pool I'm having issues running the daemon on Linux Ubuntu 16.04.
I have download the blockchain.raw then imported it, then I've gone to run ./monerod
and I'm getting this:

2018-07-28 09:45:39.690     7f8f1dbbd740    INFO    global  src/daemon/main.cpp:279 Monero 'Helium Hydra' (v0.11.1.0-release)
2018-07-28 09:45:39.690     7f8f1dbbd740    INFO    global  src/daemon/protocol.h:55    Initializing cryptonote protocol...
2018-07-28 09:45:39.690     7f8f1dbbd740    INFO    global  src/daemon/protocol.h:60    Cryptonote protocol initialized OK
2018-07-28 09:45:39.691     7f8f1dbbd740    INFO    global  src/daemon/p2p.h:63 Initializing p2p server...
2018-07-28 09:45:44.096     7f8f1dbbd740    INFO    global  src/daemon/p2p.h:68 P2p server initialized OK
2018-07-28 09:45:44.096     7f8f1dbbd740    INFO    global  src/daemon/rpc.h:58 Initializing core rpc server...
2018-07-28 09:45:44.097     7f8f1dbbd740    INFO    global  contrib/epee/include/net/http_server_impl_base.h:70 Binding on 127.0.0.1:18081
2018-07-28 09:45:44.097     7f8f1dbbd740    INFO    global  src/daemon/rpc.h:63 Core rpc server initialized OK on port: 18081
2018-07-28 09:45:44.097     7f8f1dbbd740    INFO    global  src/daemon/core.h:73    Initializing core...
2018-07-28 09:45:44.097     7f8f1dbbd740    INFO    global  src/cryptonote_core/cryptonote_core.cpp:323 Loading blockchain from folder /root/.bitmonero/lmdb ...
2018-07-28 09:45:44.972     7f8f1dbbd740    WARN    blockchain.db.lmdb  src/blockchain_db/lmdb/db_lmdb.cpp:72   Error attempting to retrieve a hard fork version at height 1601485 from the db: MDB_NOTFOUND: No matching key/data pair found
2018-07-28 09:45:44.983     7f8f1dbbd740    FATAL   daemon  src/daemon/daemon.cpp:150   Uncaught exception! Error attempting to retrieve a hard fork version at height 1601485 from the db: MDB_NOTFOUND: No matching key/data pair found
2018-07-28 09:45:44.983     7f8f1dbbd740    INFO    global  src/daemon/rpc.h:90 Deinitializing rpc server...
2018-07-28 09:45:44.983     7f8f1dbbd740    INFO    global  src/daemon/p2p.h:90 Deinitializing p2p...
2018-07-28 09:45:44.983     7f8f1dbbd740    INFO    global  src/daemon/core.h:89    Deinitializing core...
2018-07-28 09:45:45.008     7f8f1dbbd740    INFO    global  src/daemon/protocol.h:77    Stopping cryptonote protocol...
2018-07-28 09:45:45.008     7f8f1dbbd740    INFO    global  src/daemon/protocol.h:81    Cryptonote protocol stopped successfully

Please can someone let me know as there's not much info out there about this error.

Kind regards
M1

Monero 'Helium Hydra' (v0.11.1.0-release)

You're running an outdated version of monerod. Download and run the latest version (currently v0.12.3).


Expected OFFICIAL GUI Release Date? So what is the general consensus for the expected release date for the OFFICIAL GUI?... Are we looking at this week? Next week?

According to the following link the beta is just around the corner as this was posted 1 month ago.

https://www.reddit.com/r/Monero/comments/50ixic/first_gui_beta_coming_by_mbg033_%E8%B7%AF_pull_request_6/

Slightly off topic, but still surprisingly on topic,
Exodus and Jaxx are amazing professional GUI wallets that include Monero, and for most people it will be enough, and potentially even better than the official GUI for simple functions like storing and sending XMR. Perhaps one unified interface that connects many coins is better than one for each coin although having an official GUI would go a long way to making a coin look more mature and complete. Even so, I foresee most people using a multi-coin wallet in the future.


Downloading Monero updates using the existing Monero P2P network Instead of downloading Bitmonero updates from centralized sources such as GitHub or Getmonero would it be possible to distribute updates by using the existing Monero P2P network of full nodes?

If this is technically possible, is there also a way the mining network could also verify the authenticity of the download?

It would be technically possible. However, several considerations apply:

how do you trust what you receive is really a bona fide update ? You trust the blockchain because it's got PoW with high enough difficulty, but transactions are arbitrary. There is no mechanism to authentify the origin of something on the Monero P2P network.
you don't want to put this on the blockchain. Monero is supposed to fork every six months. This would mean a number of multi megabytes blobs on the chain. At last one for Windows, which is (according to https://getmonero.org/downloads/) 48.6 MB for Win64. If you intended this to be the main update mechanism, you'd want all major platforms to have ready made binaries. Win32, Win64, Linux, Mac, and a source fallback (how this'd work is left as an exercise for the reader). So maybe 400 MB a year. It'd be a noticeable bump on the blockchain, and I've not even counted the ARM versions, etc.
if it's not on the blockchain, but just offered as a download via the Monero P2P network, then a node has a choice: either download all the updates, or download just the one for that node's architecture, thereby giving away some identifying information.
Last in this list, you would want to ensure the update really comes from someone trusted. In this case, a member of the core team (I'll ignore all problems related to changes in trust over time here). You'll want a signature with something like GPG, so you can ensure the update was signed with a key that you trust. When you do this, you could have downloaded the update from anywhere. Verifying it means you could downloaded it from nsa.gov or scammers-r-us.com, and be as safe as it you had got it directly from getmonero.org.
All that said, the advantage of having an update available via the P2P network is that, assuming Kovri, you can download the update transparently, and without letting your snooping ISP (because, let's face it, all of them are creepy peeping toms) know you are downloading a Monero update. You'd want to use a temporary one shot Kovri identity for the download though, to protect your OS configuration (I'm not sure how much fingerprinting is possible via I2P).


Is it possible to run a full monerod node on Android? I have a spare Android smartphone and thought of running a full node on it, since its power consumption is very low and I wouldn't have to run my PC all day but still would have an up to date monerod in my home network. Thanks to a micro SD slot and Wifi, space and bandwidth is not an issue.

So is it possible to get monerod running on Android?

Yes, there are already people running Monero full nodes with Android using GNURoot (which doesn't require a rooted phone, despite its name) as suggested by villabacho.
The proof of concept can be tested easily according to the steps listed by binaryFate:

Install GNUroot Debian
Launch it, and type the following into the terminal:

apt-get update && apt-get install wget bzip2
wget -O monero.tar.bzip2 https://downloads.getmonero.org/arm
bzip2 -d monero.tar.bzip2
tar -xf monero.tar
rm monero.tar
monero/monero-wallet-cli (use --daemon-host  for a remote node)

If you have enough storage and want to have a better privacy, download and store the blockchain on a SD card. Otherwise it may be more feasible to use a remote node, which is faster and easier.


Is Monero the first cryptocurrency to use Confidential Transactions (RingCT), 0MQ, and LMDB? I assume these technologies exist in other usages, but are we the first coin to implement them?

RingCT

RingCT was developed by Monero Research Labs specifically for coins with ring signatures (and even more specifically Monero). Monero is by far the most common of these, and Monero is the first to include this in their code. Keep in mind that RingCT was based on Confidential Transactions for Bitcoin, so a coin like Bitcoin would implement CT instead.

  0MQ

I do not know, mostly because I do not know much about 0MQ. Read more about Monero's project to add 0MQ here and what (may) be a similar project for Bitcoin here. Keep in mind that I may be very wrong here.

  LMDB

There appear to be some Bitcoin projects built on LMDB. From my research, though, Monero appears to be the only blockchain that uses LMDB in its core functions.


Can the Monero network survive if nodes never enable incoming peers? Is it a threat to decentralization? In many/most cases, typing 'status' in the daemon will prompt the daemon to respond with "8+0" meaning that there are eight outgoing connections, and zero incoming connections.  In this example, your node is receiving information only because it initiated contact with other peers on the network.  Do those peers to which your node has connected have their firewall port 18080 open?  If not, how are they connecting?

It seems like not forwarding port 18080 is detrimental to the decentralization of the network.  Further, if port 18080 were never forwarded, then peers would never connect.  Can this be right?  It sounds almost insane to me, so I'm guessing I'm missing a piece of this puzzle.

If it's still on topic, I'm also curious about the unintended consequences of forwarding port 18080.  Let me know if I should edit this question out and create a new question for it.

Theoretically if no node accepted incoming connections then the network would be limited to transactions originating from any of the aforementioned nodes. The network would survive as miners would still process those transactions.

The biggest effect would come in the loss of third party services that require a remote node to operate (for example some light wallets). It is worth noting that this is highly dependent on the implementation of the service. For example markets supporting Monero run a full node to handle Monero network transactions and typically call in via the RPC interface to accomplish this. In this case (RPC) the services would not be affected.


What is MoneroV, and how is it different than Monero? I have heard of an upcoming airdrop called MoneroV. Can someone explain the relationship between Monero and MoneroV, and explain their differences?

MoneroV is a chain split off Monero. It will inherit Monero's history going forward. MoneroV is widely regarded as an attack on the Monero network.

Any initial transactions made on MoneroV will be directly linked to their Monero counterpart. For instance, suppose I have money in Monero address A at the time of the chain split. I then spend my MoneroV and Monero. Both of these transactions will return the same key image, which means they will be linked.

Furthermore, this negatively impacts other transactions on the network. If they include the output my funds are stored in as decoys in their ring signature, then everyone knows this is a decoy instead of a real input.

Watch more about the impact of chain splits on Monero here.

Though MoneroV poses a threat to the Monero network, MoneroV itself will incur the greatest burden. Do not rely on MoneroV for privacy, since it is highly likely that a large proportion of their outputs are traceable.

Monero has made it clear that they are not affiliated with MoneroV, and that they strongly recommend against key image reuse:

  It is important to realize that the security of the Monero network and your own Monero is dependent on the security of your Monero keys. Your Monero keys are MONERO keys. Do NOT use them for any other purpose, including claiming coins from a Monero fork. Using your keys to spend the same outputs twice on different forked blockchains will damage your privacy, and others', as both spends will bear the same key image, but different rings, with only your spent output in common (this does not impact stealth addresses nor confidential transactions, just ring signatures). Moreover, by using such a "same keys" fork, the security of your Monero private keys now depends on those third parties.


Starting out with Monero on macOS Just looked at Monero, going to mine on an i7 machine, running OSX.
I got the command line tools from the official monero website, I started up the daemon and it's nearly synced, I've got the wallet setup too.
So questions are:

1) I will actually manage to mine some coins on a system like that or do I have to use a pool?

2) Do people actually use the official command line miner or do I have to use some optimised variant?

3) Is there a guide on joining a pool?

Thanks
WS

Disclaimer: I can only compare with my own mining experience.

Assuming this subquestion is about solo-mining. Short answer: Yes. Long answer: When you issue monerod status, you'll see both the network hash rate, as your own hash rate. E.g. if you're mining at 250 H/s and the network hash rate is 25.00 MH/s, you'll (on average) find 1 block out of every 100.000 blocks. Since there's a block about every 2 minutes, that'll occur (on average) every ± 139 days. Currently, coinbase reward is ± 9.74 XMR. Nobody knows what the network hash rate (and difficulty) will be in 139 days, so it's a bit of gamble to do solo-mining (if the network hash rate would ramp up dramatically).
Since the official miner is a solo-miner, I suspect it isn't used that widely. There are a number of pool-mining alternatives, both proprietary and open-source. Most mining pools provide an overview of compatible software on their "Getting Started" page, e.g. minexmr.com. It's almost impossible to tell which miner would give you the best bang for the buck, as performance is heavily depending on your specific hardware setup. However, your connectivity to the mining pool and its stability play also significant role. It's best to experiment with the available options. Unfortunately, mining software isn't very macOS-friendly (especially when you want to do GPU-mining).
With regard to mining pools, I would recommend to visit this monerohash.com page. You'll see an overview of Monero mining pools, along with a nice chart that depicts their respective share in the network. Thinking about decentralization, it is generally recommended to join one of the smaller pools. Pay-outs should still be relatively frequent and predictable.

P.S.: I agree with some comments that I would be easier if questions were split up.


What does "Enable Sales tracker" do? Checking it changes the dialogue to "Currently monitoring incoming transactions, none found yet."

It does what the text on your screenshot says: it monitors the blockchain for incoming transactions matching the amount you specify. This is intended as a poor man's point of sale system: if you're selling things for monero, you can use this screen with these steps:

find a customer who wants to buy something and pay with monero
enter the item's price in the box in your screenshot
let the customer scan the QR code
let the customer send monero using that QR code using their wallet
wait till a transaction is reported on this screen, and check it says the payment is for the full amount
optionally wait for a confirmation or more
give the customer the item


Can a One-Time public key be used for more than one payment? If I understand correctly, every new payment will ideally have a different one-time public key for increased privacy. However, could a one-time public key receive Monero more than once (as in thousands of times)? What would be the drawbacks of doing this?.

I am thinking that using a one-time public key would be more convenient. Similar to using a public address in Bitcoin for many transactions related to one thing.

Thank you in advance!

However, could a one-time public key receive Monero more than once (as in thousands of times)

Yes, but it is certainly not practical. There are basically two reasons as two why. First, sending Monero to the same one-time public key (stealth address) will be detrimental to unlinkability, i.e., it will create linkability between payments. In addition, sending to the same stealth address is basically similar to a stealth address collision. From Luigi1111's article:

  The chance of a collision (two stealth addresses being the same) is cryptographically negligible. Using the Birthday Paradox we can roughly estimate it would take sqrt(l), or about 2^126, stealth addresses being created before having a 50% chance of a collision. The result would be that the colliding addresses become publicly linkable to each other, but not to any others.

Secondly, and this is even worse in my opinion, sending to the same stealth address will "burn" all outputs except one. More specifically, an output is accompanied by a key image (I = xHp(P)), where I = the key image, x = a private key, Hp = a hash to point function, and P = one-time public key. As you can see from aforementioned function, sending Monero to the same stealth address will result in multiple key images that are exactly the same. Note that the network will reject a key image if it's already present in the blockchain, because it will be seen as an attempt to double spend. Thus, you will only be able to spend from this stealth address once and the remainder of the outputs will be unspendable.

More practically speaking, let's say you sent 1 XMR twice to P1 and 2 XMR twice to P2. Subsequently, you create a transaction that combines P1 and P2 and broadcast it to the network. Now, if you want to create another transaction that again combines P1 and P2, it will be rejected by the network, because the key images are already present in the blockchain and it will be seen as a double spend attempt. Thus, effectively you burned 1+2 = 3 XMR by sending to the same stealth address.

Some more information:

What is a key image?

What are the "ingredients" of a key image?

Constructing a Stealth Monero Address?


Is there a `--language` flag for cli wallet? There's a --password flag and --generate-new-wallet flag, which make programmatic generation of a wallet very easy, except for this missing piece. Ideally a command like this would generate a wallet and start the JsonRPC:

monero-wallet-cli \
    --generate-new-wallet=foo \
    --password="secret" \
    --language=0 # english

but I haven't seen this in the --help listing. If this flag doesn't exist, then that would force programmers to supply the 0 to the process via stdin, which is very fragile.

There is none.

This is a good candidate to open a bug on https://github.com/monero-project/bitmonero/issues. It's also a good first task for a new contributor, and if none pick it up, it'll get done by an existing one.


What are the differences between integrated and stealth addresses? I'm confused what are stealth addresses. Can someone ELI5 what stealth addresses are, how they are generated and used?

Q: What are stealth addresses?

Stealth addresses are what ensure the unlinkability of Monero transactions. Someone can publish a Monero address and be assured that all incoming payments will be sent to unique one-time-use addresses that cannot be linked to either the published address or any other address connected to the transaction.

Q: How they are generated and used?

According to the CryptoNote white paper

  A sender generates a one-time public key based on the recipient’s address and some random data. In this sense, an incoming transaction for the same recipient is sent to a one-time public key (not directly to a unique address) and only the recipient can recover the corresponding private part to redeem his funds (using his unique private key).

Q:What are the differences between integrated and stealth addresses?

Integrated address serve a different purpose than stealth addresses. Integrated address contain data from a normal Monero address (public view key and public spend key) plus a payment ID serialized into the address.

Integrated address perform the same task as regular addresses used with separate payment IDs except they are encrypted (which separate payment IDs are not) and easier to use since senders can just use one address (instead of needing to use an address plus a separate payment ID).

Stealth addresses are automatic with Monero, so any payment sent to an integrated address will automatically make use of stealth addressing. They are fully compatible.


monerod getting killed, out of mermory possibly? My monerod v0.13.0.2 is getting killed after a couple of hours. I read that I should set --block-sync-size 10, but what does that really do? What if I set it to 1 instead to reduce the memory usage? And what is the default and why was it chosen so high where it would eat up so much memory?

--block-sync-size refers to the batch size of blocks to sync when downloading new blocks. It defaults to 200 blocks. With a synced up node it really has little effect as you are typically only getting/sending a few blocks at a time. However, syncing from scratch, it will of course affect how many blocks are transferred each time. Tweaking this will affect how quickly nodes sync from scratch.

It's unlikely this setting is your problem. Probably best to create an issue on GitHub with as much detail as possible (log file, crash log, version, OS etc).


Why are there transactions in the Mempool that are invalid or over 50 hours old? Checking xmrchain.net I noticed some very old transactions in the mempool. The oldest is over 70 hours old. It has a ringsize of 5 - how is that even possible?

Are transactions not validated before they enter the mempool?

What is wrong with the other TX that don't get confirmed (over 50 hours old)?

how is that even possible?
  ...
  What is wrong with the other TX that don't get confirmed (over 50 hours old)?

Transactions can stay in the mempool for 7 days if they are found in an orphaned  block:

#define CRYPTONOTE_MEMPOOL_TX_LIVETIME                    (86400*3) //seconds, three days
#define CRYPTONOTE_MEMPOOL_TX_FROM_ALT_BLOCK_LIVETIME     604800 //seconds, one week

  Are transactions not validated before they enter the mempool?

Well a tx is broadcasted into the mempool and nodes validate it. The older transactions you reference are almost certainly in orphaned blocks and will drop out of the mempool when they are older than 7 days. If it failed any other verifications (such as double spend or inputs not fully spent) it would drop out faster.


Does core_rpc_server::on_submitblock need full block blob? It looks like the core_rpc_server::on_submitblock method is expecting a full block blob, since it calls...

 if(!parse_and_validate_block_from_blob(blockblob, b))

However this RPC method is used to submit blocks that are mined on just the hashing blob. So how does the method work correctly when just the hashing blob is passed in, if it's trying to parse a full block blob?

Sort of answered indirectly here:

How to get the entire block blob for submission after mining nonce

That method requires a block header. The "hashing_blob" is not the correct input, its the block_template that should be used.