After downloading the blockchain from scratch overnight, the daemon stalls with 118,508 blocks. What can I do to resolve this? My original monerod.exe would not open for more than a second before closing. I could see no reason, so after many attempts, I backed up the blockchain that I had, (behind by a week) and started downloading the chain from scratch, letting it run overnight.

As it closed in on the last 120,000 blocks, it slowed considerably, and has now stopped.

I believe that I set the log level at two before that last forced update, but I cannot find any log file that seems useful.

Ring CT started up somewhere around that block.  If you do not have the latest Monero version, you will never synch up with the network.  You have to keep up with the latest software versions.  Also, the last remaining blocks are much slower than the others because of Ring CT.

An SSD speeds things up 4 to 5 times faster in comparison to an HDD.  If you don't have one, get one.  They're cheap.


Understanding get_block Blob data? I am trying to understand what is contained in the blob portion of the rpc response to get_block.

In the daemon rpc docs for block 912345 the blob response is:
"0102f4bedfb405b61c58b2e0be53fad5ef9d9731a55e8a81d972b8d90ed07c04fd37ca6403ff786e0600000195d83701ffd9d73704ee84ddb42102378b043c1724c92c69d923d266fe86477d3a5ddd21145062e148c64c5767700880c0fc82aa020273733cbd6e6218bda671596462a4b062f95cfe5e1dbb5b990dacb30e827d02f280f092cbdd080247a5dab669770da69a860acde21616a119818e1a489bb3c4b1b6b3c50547bc0c80e08d84ddcb01021f7e4762b8b755e3e3c72b8610cc87b9bc25d1f0a87c0c816ebb952e4f8aff3d2b01fd0a778957f4f3103a838afda488c3cdadf2697b3d34ad71234282b2fad9100e02080000000bdfc2c16c00"

I can separate that into below and am not sure about the lines with ? mark, also I am guessing the ? mark below minor version is the timestamp but how is that encoded?:

major_version: 01

minor_version:02

?: f4bedfb405

prev id: b61c58b2e0be53fad5ef9d9731a55e8a81d972b8d90ed07c04fd37ca6403ff78

? : 6e0600000195d83701ffd9d73704ee84ddb42102

key:378b043c1724c92c69d923d266fe86477d3a5ddd21145062e148c64c57677008

?: 80c0fc82aa0202

key: 73733cbd6e6218bda671596462a4b062f95cfe5e1dbb5b990dacb30e827d02f2

?: 80f092cbdd0802

key: 47a5dab669770da69a860acde21616a119818e1a489bb3c4b1b6b3c50547bc0c

?: 80e08d84ddcb0102

key: 1f7e4762b8b755e3e3c72b8610cc87b9bc25d1f0a87c0c816ebb952e4f8aff3d

?:2b01fd0a778957f4f3103a838afda488c3cdadf2697b3d34ad71234282b2fad9100e02080000000bdfc2c16c00

The blob is the serialized block.

See: https://github.com/monero-project/monero/blob/9da6d2969bc50e028e59c4e9cd637ebe408294b7/src/cryptonote_basic/cryptonote_basic.h#L349 and https://github.com/monero-project/monero/blob/9da6d2969bc50e028e59c4e9cd637ebe408294b7/src/cryptonote_basic/cryptonote_basic.h#L366

It's essentially just binary data as a hex encoded string.

You also ask how the timestamp is encoded: it's a varint. See: https://developers.google.com/protocol-buffers/docs/encoding which describes varint encoding well.

UPDATE:

Given the long comment thread, here is the OP blob broken down.

Block blob for block at height 912345:

major version (varint): 01
minor version (varint): 02
timestamp (varint): f4bedfb405
prev ID: b61c58b2e0be53fad5ef9d9731a55e8a81d972b8d90ed07c04fd37ca6403ff78
nonce (4 bytes): 6e060000
miner TX version (varint): 01
unlock time (varint): 95d837
vin count: 01
vin[0]:
  type (txin_gen): ff
  height (varint): d9d737
vout count: 04
vout[0]:
  amount (varint): ee84ddb421
  type (txin_to_key): 02
  key: 378b043c1724c92c69d923d266fe86477d3a5ddd21145062e148c64c57677008
vout[1]:
  amount (varint): 80c0fc82aa02
  type (txin_to_key): 02
  key: 73733cbd6e6218bda671596462a4b062f95cfe5e1dbb5b990dacb30e827d02f2
vout[2]:
  amount (varint): 80f092cbdd08
  type (txin_to_key): 02
  key: 47a5dab669770da69a860acde21616a119818e1a489bb3c4b1b6b3c50547bc0c
vout[3]:
  amount (varint): 80e08d84ddcb01
  type (txin_to_key): 02
  key: 1f7e4762b8b755e3e3c72b8610cc87b9bc25d1f0a87c0c816ebb952e4f8aff3d
extra size: 2b
extra: 01fd0a778957f4f3103a838afda488c3cdadf2697b3d34ad71234282b2fad9100e02080000000bdfc2c16c
end: 00

NB amounts are in atomic units, encoded as varints.


What does Monero's scaling roadmap look like I know Monero is dynamically scalable, but everyone knows that simply increasing blocksize does not make a blockchain scale.

Nodes will still need to download the entire blockchain to function. The more transactions happen, the faster this will grow.

Bitcoin is trying to solve this with Segregated Witness, to make each individual transaction smaller.

I'd like to know how much bytes are needed now (on average) for each transaction, and what the roadmap is to decrease these transaction sizes (or go Lightning like Bitcoin).

I know Monero is dynamically scalable, but everyone knows that simply increasing blocksize does not make a blockchain scale.

Saying "everybody knows" doesn't really cut it. Who can say what kind of hardware will be available by the time usage of Monero network gets to the point where Bitcoin is today. It's really not possible to answer this honestly without backing it with proper research and hard data. The only thing we can say is that blockchains are horrible at scaling but they can scale. However, that doesn't mean we shouldn't consider 2nd layer solutions.

Maybe reading this post from a well known contributor hyc would provide some better insight.

  Nodes will still need to download the entire blockchain to function. The more transactions happen, the faster this will grow.

Some data like range proofs can be pruned, but that would only help storage but not bandwidth. Storage is cheap and practically unlimited. Network bandwidth, however, is not so focus should be there.

  Bitcoin is trying to solve this with Segregated Witness, to make each individual transaction smaller.

That's a misunderstanding, see here.

    Since signature data (witness data) is stored outside the transaction (and outside the standard block), it means that that data doesn't have to be counted towards the block size.

The main thing SW fixes is TX malleability which Monero never had to begin with, and which is required to make 2nd layer work. Yes, it will increase TX throughput but that's because the network will accept some extra data along the 1MB block but the data still has to be transmitted and recorded. Trick is, that extra data is going around the block size cap, but the total amount of data per block cycle will now be bigger than 1MB.

  I'd like to know how much bytes are needed now (on average) for each transaction, and what the roadmap is to decrease these transaction sizes (or go Lightning like Bitcoin).

For a normal TX it's about 13kB. That's about 25x normal Bitcoin TX IIRC. There are some optimizations to range proofs being worked on by Luigi, so the TX size could drop by 50% (preliminary estimate). At the same time, multi-signatures are being worked on, which is a pre-requirement to enable 2nd layer solutions if I understand correctly.

Another optimization is regarding block propagation, which is being tested at this time. It's similar to "compact blocks" in Bitcoin and should reduce the bandwidth footprint.

For long-term, there's the "Design and Development" road-map, which hasn't been updated in a while but can give you some idea. Another idea which has been mentioned was sharding the blockchain, but there's nothing of substance as of now.

Again, nothing is being worked on currently, but seeing how other projects are experimenting with solutions like lightning network, I believe this project will use some of those solutions as well in the future. Thing is, there's no urgency considering that level of adoption is nowhere close that of Bitcoin. I guess it can be the next research goal after multi-signatures are rolled out.


Difficulty in integrating and supporting Monero Is integrating and supporting Monero more difficult for exchanges and merchants than supporting currencies based on the Bitcoin codebase?

Other than a relative lack of familiarity with the CryptoNote codebase and the need to ask customers to use a separate address and payment ID (before integrated addresses became available) are there any technical reasons to justify the view that Monero is more difficult to support than Litecoin (or another popular coin based on the Bitcoin codebase) for example?

Yes, there are further reasons.

For instance, Monero RPC does not have equivalents of events for new block or transaction received. This means one has to poll (though this is not overly complicated, see eg https://github.com/tippero/python-monero/ for an example).

There is also the fact that the node and wallet are separate binaries. Also, RPC is unauthenticated and unencrypted. This may be a problem if some are already using RPC across machines (not recommended, but still).

Last, there are some bits and pieces that could be better, like this or that RPC could be returning also this bit of info, or in this format, etc. These are the things that become apparent with usage. Some are fixed already, and more will be fixed as feedback is made.

All of these (or pretty much all of them, I think) will be fixed once the 0MQ branch is merged.

In the past, the main issue was the inordinate RAM usage, but this got fixed by the switch to LMDB.


Pool stats showing abnormally high H/s The pool I am using (mineXMR.com) regularly shows a hash rate of 250-300+ H/s for my computer despite the miner I am using (XMR-Stak-CPU) showing hash rates that do not exceed ~190 H/s. What could be the cause of this discrepancy?

Thanks in advance!

There are several possible reasons for this:

your are being consistently lucky and finding more shares that you'd expect
you have another computer mining to the same address, which you forgot
you're mining to a public address (eg, an exchange), and someone else is also mining to that address
the pool's buggy

As Steve Pazitka said, the pool can only infer your hash rate by looking at the timing and difficulty of the shares you submit, so reported hash rate typically varies with a long term average being at your actual hash rate, or maybe a bit lower due to network overheads.


Why is monerod so slow to sync the blockchain? Only a few days can take more than an hour to sync. It couldn't simply be a matter of downloading x MBs as I download much larger files much faster. Is there that much processing going on, or have I made a mistake somewhere?

Access to the database file (data.mdb) can be very slow if you are using a HDD for storage, because of the fragmentation of the database. Using a SSD improves things a lot.


How to avoid antivirus to delete monero miner? I have tried to download a lot of miners and all of them are deleted, I don't even know who is deleting them, if Windows antivirus or McAfee antivirus. I have tried to change configurations, turn them off, etc. but nothing seems to work, is there a way to download and use a miner easily?

Try to set exceptions in the Anti-Virus software, which means to exclude certain directories and/or files to be excluded from scans.
It worked out for me for xmr-stak miner, which was detected as virus/trojan in MS Security Essentials.


Where can I find examples of txout_to_script and tx_out_to_scripthash Transactions? I'm creating a golang monero tools suite and I need some data to test against. Unfortunately, I don't know where I can find txout_to_script/txout_to_scripthash/txin_to_script/txin_to_scripthash transactions.

Some transaction hashes that I can look up locally would be a perfect answer.

Nowhere. These are not implemented, and will be rejected by the network.


Check balance of an address by Monero RPC In monero RPC, to consult the balance of a wallet we used the following command:
"{"jsonrpc":"2.0","id":"0","method":"getbalance"}"

How then we will do to consult the balance of an address belonging to this wallet ?
Can you help me please !

The per_subaddress field of the result returned by the get_balance method contains the balances of the addresses.
There is also the get_accounts method that gives the balance for each account.

Documentation:

get_balance
get_accounts


Tools to ease Monero source code pull request After seeing this meta question I thought I would research the difficulty of submitting a pull request to replace mixin with ring size everywhere it is found in Monero source code.

Although I believe I am capable of doing this manually, there are so many uses of the term in multiple repositories that it might take me a long time.

Are there any GitHub tools that can help me find and replace every instance of mixin with ring size automatically so that I don't have to spend hours on the task?

In addition to the comments from user36303 and JollyMort see this answer to my recent question about the difference between ring size and mixin. The distinction is clarified below:

  Ring size = 'mixin' (number of foreign outputs) + 1 (your output)

I agree with the advice above that this task is not urgent and should be left to someone very familiar with the codebase. No find/replace script or other automated tool is appropriate here.


Is there any way to force someone to rescan their wallet? I'm asking in the context of Poloniex having to rescan their wallet conveniently at the time of Monero's all time high in volume, reference:
https://www.reddit.com/r/Monero/comments/4z5sbo/poloniex_running_dry_on_monero_withdrawal/

I'm not accusing Poloniex of anything nefarious, but I just find it interesting that their wallet coincidentally needed to go down for maintenance to rescan when price and volume are at or near all time highs. I'm curious if a determined attacker could induce some kind of corruption in their wallet binary by spamming their wallet with many many small txs with payment ids, or possibly some other way, in order to keep people from depositing more XMR while their pump is ongoing?

Not that I know of, but failed transactions and reorgs can get the wallet's idea of what outputs are spent to get out of sync with the blockchain. This does not require a rescan of the blockchain (just rescan_spent is enough, and it is a lot faster), but it is not widely known, and some people tend to go for the nuclear option first (rescan_spent also did not exist until a few months ago).

This out of sync problem is fixed in the rct branch, too.


metadata protection for Monero usage on Mobile devices My understanding is that Kovri will use a C++ implementation of the I2P network to protect metadata.

I2P seems to be focused on computer users. Are there any plans to protect metadata  for Monero users on Mobile devices (Android and iOS) in the future?

While VPN and Tor usage is much higher that I2P usage on mobile devices today that is also the case for PCs.

There is already an I2P app for Android: https://play.google.com/store/apps/details?id=net.i2p.android

I see no technical reason why Kovri could not eventually implement support for mobile devices.


Has the testnet been reset with a new genesis block? I mined some testnet monero using version 0.10.0.0  a few months ago. Now, when I restore from my testnet wallet seed with version  0.10.1.0, it says 0 balance.

There was no new genesis block. However, there was a massive (about two months, I think) reorg when the ringct implementation switched from ASNL to Borromean signatures for the range proofs.


How do I map a domain to a Monero address via OpenAlias.org? I've seen people talk about connecting their Monero addresses to a domain (eg, xmr.domain.com), because a domain is a lot easier to remember than a 95-character Monero address.

How do I do this?

First, for the readers. An explanation of what OpenAlias precisely is and how it works can be found here. Now to your question, this is done as follows. First, access your domain name configuration page. Note that it isn't possible to create an OpenAlias entry with merely an email address. Thus, if you don't have a domain, you have to buy one. At Gandi, for example, you are able to buy domains. Second, you should edit your DNS zone. Note that if you are using cPanel it can be found under "Advanced DNS Zone Editor". The URL ends with zoneedit/advanced.html. Lastly, the following data should be entered:

Name: Your domain name or sub-domain name (which should end with a period)

TTL: 14400 (or the same TTL as you other entries; it doesn't really matter)

Type: TXT

TXT Data: oa1:xmr recipient_address=address; recipient_name=Your name\; tx_description=Your description\;

Note the escaping backslashes before the semi-colon. You can include a space in the "recipient_name" and "tx_description" entries.

An example of how it should look like is as follows:

Name: donate.getmonero.org.

TTL: 14400

Type: TXT

TXT Data: oa1:xmr recipient_address=44AFFq5kSiGBoZ4NMDwYtN18obc8AemS33DBLWs3H7otXft3XjrpDtQGv7SqSsaBYBb98uNbr2VBBEt7f2wfn3RVGQBEP3A; recipient_name=Monero Development Fund\; tx_description=Donation to development\;

For Gandi the instructions are as follows. You should access the web interface for editing the DNS Zone file and add the following:

@ 14400 IN TXT "oa1:xmr recipient_address=address; recipient_name=Your name\; tx_description=Your description\;"

Source: https://www.reddit.com/r/Monero/comments/2uv214/what_is_openalias/


bad balanced CURRENCY_BLOCK_GRANTED_FULL_REWARD_ZONE constant I have seen several Boolberry users report a wallet and daemon error similar to this one:

Wallet:

  Error: transaction  was rejected by daemon with status "Failed"

Daemon:

  Transaction with id= used already spent key images [RPC1] Transaction verification failed:

I cannot find any GitHub pull requests that specifically fixed this. CryptoZoidberg said "I guess it happend because wallet was  hard-closed without typing exit command."

  This issue in all cryptonote family is a result of bad balanced CURRENCY_BLOCK_GRANTED_FULL_REWARD_ZONE constant.

What does a "bad balanced CURRENCY_BLOCK_GRANTED_FULL_REWARD_ZONE constant mean? Does Monero (as part of the CryptoNote family) share this problem?

The issue sounds like a wallet has a wrong view of what outputs are spent. A fix would be to rescan the wallet (rescan_spent or rescan_bc in Monero's wallet, or delete the cache file).

The "full reward zone" is completely and entirely unrelated to potential wallet sync issues.


How to update algorithm to cryptonight v1 I just tried to make a coin with source: https://github.com/seredat/karbowanec
and it works perfectly, then how do I update the algorithm of the code to make it Cryptonight v1?
is there any reference I can read?

You will need to update src/crypto/slow-hash.c. Compare it to Monero's latest version to see the changes.


In Monero can you sweep a wallet if you *ONLY* have the private spend key? Monero has 4 keys associated with each address:

public view key
public spend key
private view key
private spend key

Can you sweep all coins from an address if you only have the private spend key?

Yes. In a nutshell, the spend key is deterministic and therefore you'd be able to derive the private view key. Subsequently, you can generate the public counterparts by multiplying the private keys with the base point (G). Lastly, using the public spend key and public view key, you can construct the public address.

Thus, to answer your question. Yes, you can sweep all coins from an address if you merely have the private spend key.

A more theoretical explanation about how "How Cryptonote Addresses Are Created" (and thus why you are able to sweep all coins from an address if you merely have the private spend key) can be found here. To quote:

  Cryptonote Public Addresses differ in several ways compared to Bitcoin. First, Cryptonote uses two keypairs, known as the spend keypair and the view keypair. Furthermore, these keys are
  EdDSA (specifically ed25519) keys, whereas Bitcoin uses ECDSA (specifically
  secp256k1) keys. Finally, Cryptonote Public Addresses are direct representations of the pair of public keys, whereas Bitcoin (and clones) uses a hash of the single public key. EdDSA keys (both private and
  public) are 256 bits long, or 64 hexadecimal characters. Not every 256-bit integer is a valid EdDSA scalar (private key); it must be less than the "curve order". The function to do this is labeled
  sc_reduce32.

  To add to the confusion, there are presently at least three different methods of private key derivation in existence for Monero (and other Cryptonotes), though Bitcoin also has many:

  Original (non-deterministic) Style – The Private Spend Key and Private View Key are both independently and randomly chosen to form an account. You can simulate this above by pressing the "Random" buttons next to fields 3. and 4., then pressing "Gen 5.", "Gen 6.", and "Gen 7.", in that order. There is no good way to back up a non-deterministic account other than keeping copies of the files; you need to have a copy of both private keys, but presently only MyMonero will accept the two keys as input instead of a seed/wallet file. For these reasons, it is not recommended to use an account of this type.
  Mnemonic (Electrum or Deterministic) Style – In this style, the Private View Key is derived from the Private Spend Key, so you only need to remember one thing: the seed, which is actually just a representation of the Private Spend Key itself. This 256-bit scalar can be easily converted to a "24-digit" Base1626 "number" in the form of a mnemonic seed, which is 25 words long with the last word being used as a checksum. Mnemonics convert on a ratio of 4:3 minimum: four bytes creates three words, plus one checksum word; eight bytes creates six words, plus one checksum word; and so on. The "seeds" created by this method will always be valid scalars as they are sent to sc_reduce32 first. The Private View Key is derived by hashing the Private Spend Key with Keccak-256, producing a second 256-bit integer, which is then sent to sc_reduce32. You can test out this style above by pressing the "Random" button on the upper right, or by pressing either of the "Random" buttons next to fields 1. and 2., then the various "Gen x." buttons. You can backup accounts of this type by writing down or otherwise saving the 25 word deterministic seed; you can easily restore using both Simplewallet and MyMonero.
  MyMonero Style – This is similar to 2., but uses a 13 word seed instead of a 25 word seed. The 13 words convert to a 128-bit integer that is used for both spend and view key derivation, in the following form: the 128-bit integer is hashed with Keccak-256 to produce a 256-bit integer, a. a is sent to sc_reduce32, which returns the Private Spend Key. a is hashed once more with Keccak-256 to produce a second 256-bit integer, b. b is then sent to sc_reduce32, which returns the Private View Key. You may have noticed a critical difference between this style and the Electrum Style: MyMonero's Private View Key derivation is done by hashing random integer a, while Electrum Style derivation is done by hashing the Private Spend Key. This means that 13 and 25 word seeds are not compatible – it is not possible to create an Electrum Style seed (and account) that matches a MyMonero Style seed (and account) or vice versa; the view keypair will always be different. You can test out this style above with the "Random MyMonero" button. To backup MyMonero accounts, save the 13 word seed; you can currently "restore" using MyMonero only (you're really just logging in) – Simplewallet does not currently support 13-word seeds.

  Above we discussed the different ways private keys are derived; the rest of the address generation process is the same in all three cases. The Private Spend Key and Private View Key are sent to the ed25519 scalarmult function to create their counterparts, the Public Spend Key and Public View Key. To create the actual Public Address, the following is performed:

  The pair of public keys are prepended with one network byte (the number 18, 0x12, for Monero). It looks like this: (network byte) + (32-byte public spend key) + (32-byte public view key).
  These 65 bytes are hashed with Keccak-256.
  The first four bytes of the hash from 2. are appended to 1., creating a 69-byte Public Address.
  As a last step, this 69-byte string is converted to Base58. However, it's not done all at once like a Bitcoin address, but rather in 8-byte blocks. This gives us eight full-sized blocks and one 5-byte
  block. Eight bytes converts to 11 or less Base58 characters; if a particular block converts to <11 characters, the conversion pads it with "1"s (1 is 0 in Base58). Likewise, the final 5-byte
  block can convert to 7 or less Base58 digits; the conversion will ensure the result is 7 digits. Due to the conditional padding, the 69-byte string will always convert to 95 Base58 characters
  (8 * 11 + 7).
  This 95-character result is the (obscenely long) Cryptonote Public Address!
  If you're creating an integrated address, simply append the 64-bit payment ID to step 1 and continue; everything else is the same except for the lengths (77 bytes total, 106 Base58 digits) and the
  prepended byte (19, 0x13).


Fundamental question for monero: how to mine myself Let's assume 2 people (Person A and Person B) are mining.
Person A finds a block 2 seconds before person B. Each of them is mining at home on their own.
What should person A do to claim his block or, in other words, where does he register it?

When Alice finds a block, she will send it to the Monero nodes she's connected to. In turn, these nodes will (assuming the block is valid when they verify it) will send it to the nodes they're connected to, etc.

When Bob finds a block two seconds later, the same will happen, but Bob and Alice are likely connected to a different set of nodes.

What will then happen is that Alice's block will propagate through the network of nodes, and Bob's will too, a little bit later. Alice will have some head start, and will reach more nodes quicker than Bob's.

If a block receives Bob's block, but already has received Alice's, that node will reject Bob's block (assuming it does not have a higher cumulative difficulty than Alice's, which is the usual case). That node will then not send Bob's block any further.

You then end up with some part of the network having a blockchain with Alice's block at its tip, and another part of the network having Bob's. The network is forked. Alice had a head start of two seconds, so most of the network probably has Alice's block, and is now mining for a block over it. The other part of the network is now mining a block on top of Bob's block.

The next miner to find a block (either on top of Alice's or Bob's) will send it to the nodes it's connected to, again. Let's assuming it's Alice's. Miners who are still mining on top of Bob's block will get see a valid incoming block with a higher cumulative difficulty than their current tip, and will remove Bob's block from their blockchain and replace it with Alice's and the new one.

So there is no central registration authority. Every node keeps its own version of the blockchain, and uses cumulative difficulty to decide which to keep. Cumulative difficulty is based on the difficulty of all blocks in the chain.


Failed to start Monero Full Node : Ubuntu 18 > Boron Butterfly I started with a new machine.

I got the latest version - https://downloads.getmonero.org/cli/monero-linux-x64-v0.14.1.0.tar.bz2

Put this in /mnt/monero/.monero.

Copied the binaries to /usr/local/bin.

Created the config file and the service:

Config

data-dir=/mnt/monero/.monero
log-file=/mnt/monero/monerod.log
max-log-file-size=0
p2p-bind-ip=0.0.0.0
p2p-bind-port=18080
rpc-bind-ip=0.0.0.0
rpc-bind-port=18081
rpc-login=xxx:xxx
#confirm-external-bind=1
restricted-rpc=1
no-igd=1
db-sync-mode=safe
enforce-dns-checkpointing=1
out-peers=64
in-peers=1024
limit-rate-up=1048576
limit-rate-down=1048576

Service

[Unit]
Description=Monero Full Node
After=network.target

[Service]
User=xxx
Group=xxx

Type=forking
PIDFile=/mnt/monero/monerod.pid

ExecStart=/usr/local/bin/monerod --config-file /home/xxx/.bitmonero/monerod.conf --detach

[Install]
WantedBy=multi-user.target

Then started the service:

sudo service monerod start

And I get:

● monerod.service - Monero Full Node
   Loaded: loaded (/lib/systemd/system/monerod.service; disabled; vendor preset: enabled)
   Active: failed (Result: timeout) since Tue 2019-10-29 08:16:41 UTC; 9s ago
  Process: 4819 ExecStart=/usr/local/bin/monerod --config-file
 /home/graeme/.bitmonero/monerod.conf --detach (code=exited, status=0/SUCCESS)

Oct 29 08:15:11 systemd[1]: Starting Monero Full Node...
Oct 29 08:15:12 monerod[4819]: 2019-10-29 08:15:12.902        I Monero 'Boron Butterfly' (v0.14.1.0-release)
Oct 29 08:15:12 monerod[4819]: Forking to background...
Oct 29 08:15:12 systemd[1]: monerod.service: Can't open PID file /mnt/monero/monerod.pid (yet?) after start: No such file or directory
Oct 29 08:16:41 systemd[1]: monerod.service: Start operation timed out. Terminating.
Oct 29 08:16:41 systemd[1]: monerod.service: Failed with result 'timeout'.
Oct 29 08:16:41 systemd[1]: Failed to start Monero Full Node.

So nothing funny, simply following the documentation.

I'd like to run a node and help.

walletnotify=/mnt/monero/notifysitestx.sh %s
  blocknotify=/mnt/monero/notifysitesblock.sh %s

There are no options walletnotify or blocknotify, you probably want block-notify.

See monerod --help for all the available options and syntax.

  Running the daemon with the --config flag I get...

There is no option called --config, it's --config-file.

  PIDFile=/run/monero/monerod.pid

Have you created the directory /run/monero/ though?

  –pidfile /run/monero/monerod.pid

The parameter is wrong. It should be --pidfile /run/monero/monerod.pid. Note the double hyphen --. You make this same mistake with other parameters also.

  I am not binding p2p for now, only RPC

p2p automatically binds.

  Compiling Monero alone on a box, I had to up it to 8GB of RAM.

Monero can be compiled on a Raspberry Pi, so if you needed to increase your RAM to 8GB, you must have been seriously exhausting the RAM on other things.

UPDATE

After you rewriting your question, you now specify PIDFile=... in the service file, but you removed the parameter --pidfile .... So you're telling systemd there will be a PID file, but don't tell monerod where to create it.


Monero GUI wallet not syncing I am running windows 10 on a surface pro 4. I have 8506 blocks left and counting up. It is the newest version of the GUI. Is there a way a way I can sync up through a different localhost maybe? I am still a noob so please explain like I am a 5 year old. Thanks

I think you mean connecting to a remote node. Syncing monero sometimes can be slow for some users so just keep it running and it should synchronize and may take days.

Edit: To give you an idea, today, I just tried to synchronized starting at 98% and took me 3 hours. I'm using an SSD which is faster.

However, you can connect  to a remote node if you are really having problems. To connect to a remote node follow this guide How can I use Monero without syncing the blockchain?.


Monero cli transfer all funds from my wallet to a new address? I know about the "sweep_all" option, but doesn't that just sweep all coins to your current wallet? What if I wanted to send ALL my monero to a new address? I was going to use transfer command but you'd have to specific exactly how much with fee accounted for. I don't know if sweep all can SEND OUT to another address.

Yes you can just use the sweep_all option in replacement of transfer and it will send out ALL your coins to the new address.

Just do:

sweep_all < address >


Do not come coins to the GUI wallet when transferring from the exchange, I created in my wallet a "payment id" in an arbitrary format, namely "qwertyuiopasdfgh", I indicated the exact amount of the receipt. After that, the address I specified when translating on the exchange was generated(integrated address). It has been more than a day, and the coins have not been credited to my wallet. Have I done everything right? and how do I get or refund the funds? Thank you.

If you are sending Monero to yourself from an exchange a payment ID or integrated address is generally unnecessary because you know when and where the Monero came from and in what amount.

Based on "paid" in your screenshot it appears as if the transaction was sent. With the transaction ID / hash provided by the exchange you will be able to follow these steps to verify you received the Monero.

If the Monero was sent, you will be able to see your Monero in your wallet after your GUI has synced or connecting to a remote node.


What level of cryptographic review has the current Monero protocol received? What are the backgrounds of the members of the Monero Research Lab? What amount of known peer review have their publications received?

Independent of Monero itself, how much Cryptographic review has their been of EdDSA for signatures, and Curve25519 for DH key exchange?
How much review has there been of ring signatures of the type used by Monero and other CryptoNote coins?

The members of the MRL have all earned their PhD (which fact the website does not reflect at present) in various mathematical fields.

Their publications have received various levels of peer review. The RingCT paper, for instance, has been submitted to the Ledger journal, and has been approved to be included in the first edition.

To answer the two other questions you posed:

Massive amounts of review. Perhaps the best way to illustrate this is to link you to the list of things that implement Curve25519, and that implement Ed25519 / EdDSA.
Quite a bit of review. As an example, take a read through Andrew Poelstra's answer to this StackExchange question. It is enlightening.


Why is the dynamic blocksize relying on the median blocksize rather than another metric? My understanding of the dynamic blocksize is it is the median of the last 100 blocks is there a reason why it is specifically 100 blocks? Why not 1000? Or take the average of the last N blocks etc?

The dynamic block size limit is inherited from CryptoNote, and is described in the whitepaper:

Users pay for storing the blockchain and shall be entitled to vote for its size. Every miner deals with the trade-off between balancing the costs and profit from the fees and sets his own “soft-limit” for creating blocks. Also the core rule for the maximum block size is necessary for preventing the blockchain from being flooded with bogus transaction, however this value should not be hard-coded.
Let M_N be the median value of the last N blocks sizes. Then the “hard-limit” for the size of accepting blocks is 2*M_N . It averts the blockchain from bloating but still allows the limit to slowly grow with time if necessary.
Transaction size does not need to be limited explicitly. It is bounded by the size of a block; and if somebody wants to create a huge transaction with hundreds of inputs/outputs (or with the high ambiguity degree in ring signatures), he can do so by paying sufficient fee.

The median window is not mentioned at all, so it was likely just inherited from the source. I'm not sure whether Monero changed this. In any case - it's arbitrary.
Changing it to a smaller value would make the system more responsive in case of increased transaction pressure and it could clear the backlog faster & cheaper (fee-wise).
Changing it to a bigger value would make the system less responsive and any queue would likely take longer to clear but the system would be more resistant to manipulation - like if someone is willing pay higher fees just to inflate the block size, it would cost them more with a bigger window.
While the choice of median is not explained in too much detail, it is convenient because it means that a single actor can't move the blocksize. You will always need more than 50% of blocks to be bigger (or smaller) than median to actually affect the median. So, users have to first "bribe" the miners for an increase (enough to compensate for the penalty) but it's no guarantee - the miners don't have to mine a bigger block even though it'd be more economic, so 51% miners could block any increase regardless of the fee - if they see it as a risk for their operations due to bandwith requirements etc.


How does mymonero web wallet work? I understand that all the client code is running on the client computer, and the private keys never leave the client computer. The client creates transactions and transmits them to mymonero server, which then pushes it on the blockchain, correct?

Also, I understand mymonero server stores the private viewkey, and monitors the blockchain for any inputs.

How are outputs handled though? If the same wallet was used from simplewallet to spend an input, how can mymonero know it has been spent? Is this check done automatically on the client side every time the user logs in? Is it done every time from scratch, or does mymonero store this info as well?

There's a daemon (monero core) running on the MyMonero server. When you go to mymonero.com and make a new webwallet, there's a script in the browser that sorta functions like wallet software.

The browser script creates a new set of keys (spend and viewkey). The viewkey is transmitted to the mymonero server. The server uses the viewkey to find out which outputs on the blockchain are yours. It transmits that output information to your browser.

To create a transaction, the browser script creates and signs a transaction using your spend key.

I think the browser script also uses your spend key to find out which of the outputs received from the viewkey-identified outputs from the mymonero server are spent.

As you can see, the MyMonero server only ever gets your view key. Your spend key is created and stored locally when you login with your mnemonic word seed.


How can I use Monero without syncing the blockchain? Suppose I have a computer that doesn't have a lot of storage space, or suppose I don't want to wait a while for the blockchain to be synced with my computer. What can I do to use Monero faster without downloading the entire blockchain to my computer?

The Monero community encourages you to run a full node so you can get the highest level of privacy and support the network the most. However, we understand that convenience is sometimes more important. For these instances, there are a few options:

Use a web wallet.

This allows you to use Monero from a web browser without downloading anything, and you can use Monero wherever you have access to the webpage. I suggest MyMonero since it is run by a Monero core team member. Web wallets are the least secure of all wallets.

Use a remote node (SPV wallet).

You have the option of downloading Monero and simply using someone else's node instead of your own. This could be a friend's or a complete stranger's. Using a remote node is less safe than using your own, but it should still be safe for most uses and it is very easy. By default, the --trusted-daemon option is off, which means that Monero will automatically obfuscate data sent to this node. Read more about risks using a remote node here.

There are many users who have chosen to open their nodes for other people to use. The most commonly suggested nodes to use are the MoneroWorld nodes.

Command Line Interface (CLI) Wallet

If you are using the Monero command line wallet, you can run one of the following commands depending on your operating system when starting the Monero wallet:

Windows

monero-wallet-cli.exe --daemon-host ADDRESS.OF.HOST:18081

Mac/Linux

./monero-wallet-cli --daemon-host ADDRESS.OF.HOST:18081

Graphical User Interface (GUI) Wallet

If you are using the GUI, use the simple mode OR simply specify a custom daemon address in the startup screen as shown below:

Alternatively, you can go to the Settings panel and change the Daemon address to the remote node of your choosing

What nodes can I use?

You can use any node you know about or any of the nodes found on this page. The one I suggest using is below:

node.moneroworld.com:18089

If in the settings page of the GUI wallet, omit the :18089 part. The GUI does this automatically under this page in the box to the right (see the examples above to see whether you should use it or not). For some of the MoneroWorld nodes, use port 18081 instead. The page should clearly state which port to use.

Use a phone wallet (SPV wallet).

You can use the Monero Monerujo wallet for Android (Google Play link). This wallet automatically connects to an open node, though you can specify another remote node if you wish.

You can use Cake Wallet or X Wallet for Apple iOS. These will automatically connect to open remote nodes.

Use a lightweight wallet.

You can use a lightweight wallet that shares your view key with a provider for greater convenience at the cost of some privacy.

MyMonero desktop apps, which automatically connects to the MyMonero backend. You can optionally point to a different service.

MyMonero Apple iOS app, which automatically connects to the MyMonero backend. You can optionally point to a different service.

Edge Wallet for Apple iOS and android, which connects to the MyMonero backend.


Explanation of the Monero Daemon running arguments I started the monero daemon via the GUI on Mac OS X. I downloaded the binary unpacked from monero-gui-mac-x64-v0.12.0.0.tar.bz2.

When I do a simple $ ps aux | grep monero from the command line I get the following two entries:

/private/var/folders/p_/{really long random string}/T/AppTranslocation/{long random hex string}/d/monero-wallet-gui.app/Contents/MacOS/monerod --detach --data-dir /Users/{username}/Monero/blockchain --check-updates disabled

/private/var/folders/p_/{really long random string}/T/AppTranslocation/{long random hex string}/d/monero-wallet-gui.app/Contents/MacOS/monero-wallet-gui -psn_0_3179605

I was confused about this so I ran $ tail -f ~/.bitmonero/bitmonero.log and I found

WARN    daemon  src/daemon/executor.cpp:62  Monero 'Helium Hydra' (v0.11.1.0-release) Daemonised

This seems off since I downloaded version v0.12.0.0.

Some questions:

Why the weird /private/var/folders/p_/ locations?
If I want to run the monero daemon, should I run it from this weird folder location, or is there a better way?
Should the daemon be on the same version as the GUI (v0.12.0.0) or is this an error?

Looks like you had a previous version already running. I would close your GUI, killall monerod, ensure there are none running with ps aux | grep monero, restart the GUI (which starts a daemon automatically).


Is there any documentation for json rpc methods for supportxmr pool? I am trying to write code for getblocktemplate from supportxmr pool in java. I could not figure out how to login and fetch the block info. After a lot of struggle I figured out that the method name in the JSON-RPC call should be 'login'. Is there any documentation for the methods that I can use for my JSON RPC calls for this pool?

I believe that all API methods/calls for that pool (and all Monero pools based on nodejs-pool) are documented here: https://cryptonote-pool-api.restlet.io.


Is there a service to enter in Monero private view keys to see current balance? Is there a service where I can just paste my Monero private view key to see the updated balance, even though it doesn't show the spent outputs. Just received is fine.

Is there a service to enter in Monero private view keys to see current balance?

No. You cannot get a balance using a private view key because you can only see incoming transactions with your private view key, not outgoing spends, which would be needed to calculate a balance.


I am new to crypto currency mining, from where I can get Monero wallet? Please help me getting monero wallet.
I am new to crypto currency mining, from where I can get Monero wallet?

Download for your platform from https://getmonero.org/downloads/


Is the entropy for the mnemonic seed and the private spend key exactly the same? Since one is just another representation of the other, is the entropy for the mnemonic seed and the private spend key exactly the same?

Are there any security benefits of using one over the other for wallet storage and recovery purposes?

The seed is another representation of the private spend key. Because of this, entropy of the seed must equal the entropy of the private spend key.

Wallet recovery is easy with either the private keys or the mnemonic seeds.

The benefit of using mnemonic seeds are that you can in theory memorize them and when entering the data, it is easier to avoid making typos when using words instead of long strings of alphanumeric data.


GUI / monerod v0.13.0.3 does not start on Linux because of "./monero-wallet-gui: error while loading shared libraries: libhidapi-libusb.so.0" GUI / monerod v0.13.0.3 does not start on Linux because of "./monero-wallet-gui: error while loading shared libraries: libhidapi-libusb.so.0". How do I resolve this particular issue?

To run Monero Wallet GUI/daemon

First, this error is caused by the absence of thelibhidapi library, which is required by Ledger. Two forms of this library exist, one each for use with the hidraw (USB/Bluetooth) and libusb (USB-only) backends, and the error message indicates that the latter is needed.

Fortunately, this error is quickly resolved by installing the package which includes it with your system's package manager. For the most common Linux distributions that would be as follows:

Debian-based [.deb] (Debian, Ubuntu, Mint, elementary OS, etc.):

sudo apt install libhidapi-libusb0

Fedora-based [.rpm] (Fedora, openSUSE, CentOS, PCLinuxOS, RHEL, etc.):

dnf install hidapi

Arch-based (Arch, Manjaro, Antergos, etc.):

pacman -S hidapi

Gentoo-based (Gentoo, Redcore, etc.):

emerge -atv dev-libs/hidapi

Slackware-based [.txz] (Slackware, VectorLinux, etc.):

Download package here

upgradepkg --install-new hidapi-0.8.0_rc1-x86_64-1_slonly.txz

Alpine Linux:

apk add hidapi

To build Monero Wallet GUI/daemon

If rather than simply trying to run the Monero wallet/daemon you were attempting to build it from source code, you would likely need an additional package which provides the header files for said library. The most common standard for those package names would be to append -dev to the packages listed above, however there are exceptions. Both Debian-based and Fedora-based distributions use the name libhidapi-dev in place of the packages specified above.

Sources:

https://www.reddit.com/r/Monero/comments/9lcdme/preliminary_information_thread_regarding_the/e7ubtxp/
Error while loading shared libraries: libhidapi-libusb.so.0: cannot open shared object file: No such file or directory
https://www.reddit.com/r/Monero/comments/9ol2ic/gui_v01303_beryllium_bullet_released/e7vm7qj/


Blockchain properties: what are Height and Difficulty? What are Height and Difficulty properties of Monero's blockchain?

Height is the current block a transaction is contained in (or sometimes also represents the highest block of the blockchain). The blockchain consists of "blocks" of grouped transactions. They are linked AKA "chained" to the last updated block every X minute interval. For Bitcoin it is 10 minutes, for Monero it is 2 minutes. When a new block is created, it is transmitted to every node in the network so that everyone can keep track of the possession of coins in the network.

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


Logging into moneropool I'm mining at mine.moneropool.com:7777

When I try to login on their site, I get "please check your login details." I have tried configuring my miner with a variety of different miner ids, and pool passwords including my email, x, no password, and a general string. None of these have allowed me to login at moneropool, though my miner connects to the pool and runs fine.

From the pools docs:

Required fields are payment address and MinerIdentifier

    Username format : address.paymentID+FixedDifficulty
    Password Format : MinerIdentifier:Email

So your password needs to be your_miner_id:you@email.com.

EDIT:
Of course the above is for your miner settings. When you have the miner with these settings, you can then login to the dashboard with your payment address as username and email address as the password. If you did not set your miner settings correctly, you won't be able to login to the dashboard.


Is there a command line tool like bx to bitcoin that I can use with cryptographs I would like to generate key pairs from seeds manually.

However, Monero uses several special methods like Keccak hash function or CRC32 etc., which bx does not provide...

Is there a command line tool provides functions that I can use with?

Monero uses several special methods like Keccak hash function or CRC32 etc

There is nothing particularly special w.r.t. Monero's usage of Keccak or CRC32.

  Is there a command line tool like bx to bitcoin ... I would like to generate key pairs from seeds manually.

I'm not familiar with bx, but the official monero-wallet-cli can be used to convert a seed phrase into a wallet file, a keys file (private view and spend keys) and a Monero address (public view and spend keys). For example:

monero-wallet-cli --restore-from-seed --generate-new-wallet new-filename \
    --electrum-seed "your seed words..." \
    --mnemonic-language English \
    --password "some optional new password" \
    --restore-date `date "+%Y-%m-%d"`

Or to get the seed words etc for a given key:

monero-wallet-cli --generate-from-spend-key new-filename \
    --mnemonic-language English \
    --password "some optional new password" \
    --restore-date `date "+%Y-%m-%d"`

There are also various implementations floating around to create addresses/seeds, such as https://xmr.llcoins.net/ and you can use various tools to create valid ed25519 keys, such as openssl genpkey -algorithm ed25519.


Why does the block reward have multiple inputs? I was playing on the testnet and I mined a block. In the wallet I can see the block reward, but it looks like it has multiple inputs

Height 10, transaction <f5b8d5b7e5d1a110fa9fdecdd3dee12e87ed4828dca168f55a08069ffa151148>, received 0.000018272975
Height 10, transaction <f5b8d5b7e5d1a110fa9fdecdd3dee12e87ed4828dca168f55a08069ffa151148>, received 0.002000000000
Height 10, transaction <f5b8d5b7e5d1a110fa9fdecdd3dee12e87ed4828dca168f55a08069ffa151148>, received 0.090000000000
Height 10, transaction <f5b8d5b7e5d1a110fa9fdecdd3dee12e87ed4828dca168f55a08069ffa151148>, received 0.500000000000
Height 10, transaction <f5b8d5b7e5d1a110fa9fdecdd3dee12e87ed4828dca168f55a08069ffa151148>, received 7.000000000000
Height 10, transaction <f5b8d5b7e5d1a110fa9fdecdd3dee12e87ed4828dca168f55a08069ffa151148>, received 10.000000000000

These coins supposed to be newly generated, so why does it look like this? Why isn't it only 1 input?

The coinbase transaction has a single placeholder input - one of special type, unlike the usual "from key" inputs you see on other transactions.

The log you supplied shows only outputs. A coinbase transaction may have more than one output, since before rct outputs were split by denomination in order to make ring signatures work better. If this had not been done, and since coinbase transactions give idiosyncratic amounts, most of those outputs would otherwise not be able to sign with other outputs, since they'd be the only one of that amount of the chain (or at least among a very small group).

On current Monero, this is no longer the case. RingCT allows any rct output to sign with any other, and coinbase outputs are internally handled as rct, with a hardcoded mask, allowing them to masquerade as rct outputs. Thus, current coinbase outputs can have idiosyncratic amounts while still being able to sign with other rct outputs.


GUI Wallet never seems to connect (OSX) I've tried using a public node as well as a local node, but the wallet never seems to connect.

If I run the GUI via the terminal (./monero-wallet-gui --daemon-host 127.0.0.1:18080), I get some log output that matches what I'd expect:

2017-08-21 13:00:17.307     ERROR   net.http    contrib/epee/include/net/http_client.h:387  HTTP_CLIENT: Failed to SEND
2017-08-21 13:00:27.310     ERROR   net.http    contrib/epee/include/net/http_client.h:441  Unexpected recv fail

This repeats several times over.

What am I doing wrong?

There are 2 different start-up options:

--daemon-address arg                Use daemon instance at <host>:<port>
--daemon-host arg                   Use daemon instance at host <arg> instead

You're using the one for hostname so it's expecting localhost:18080 or similar.

To make it recognize the IP, use the --daemon-address option, like:

./monero-wallet-gui --daemon-address 127.0.0.1:18080


Downloaded monero v12 GUI How do I verify the hash of the download on Ubuntu command line? I downloaded the latest monero v12 client using the following command:

curl -O -J -L  https://downloads.getmonero.org/gui/linux64

I never knew how to go about verifying its hash. How do I go about verifying this downloaded file is the same hash as shown on the site using the command line? Do i untar it first or do i leave it as tar file and do the verification?

Do it against the downloaded file.

I used the command:

sha256sum <my_file_here>

It will then spit out a hash string. Copy this string and then do a find on that same webpage to see if it matches.

It was pretty easy. Took less than 30 seconds to figure out.


How to calculate mining profits in Excel? I am aware that tools such as this one and this one exist to calculate estimated mining profits. I would like to essentially recreate these in Excel (with perhaps a few additional features).

Fileds to use: Hash rate, power, power cost, difficulty, block reward,
pool rejects, pool fees, XMR/fiat, and hardware costs.

Ideally, I would then use this information to estimate mining profits in the future (6 months, 1 year, 2 years, 3 years, etc) using the reward curve and projecting a difficulty over time. It would also be cool to mess around with the price of Monero over time, for example assuming the price will increase 5% a month on average or something like that. I want to be able to manipulate the variables to compare profit possibilities.

Does anyone have any thoughts of how to do this? I can make an Excel document, but I do not know what calculations to put into Excel.

I would do this in a couple parts:

1.) First of all review how you would integrate an API feed into Excel:

https://www.youtube.com/watch?v=NX4Jb3Tj3J4 or
https://www.import.io/post/how-to-get-live-web-data-into-a-spreadsheet-without-ever-leaving-excel/
or even something like Alteryx

2.) You'll need access to a real-time API that has the current traded value of the currency.

https://poloniex.com/support/api/

3.) Finally you'll just need to calculate the the hash rate to XMR conversion.


Is automated churning of XMR bad for privacy? I've recently been learning a bit of Python and decided to try writing a couple of scripts for one of my favorite open source projects: Monero!

I've written a script that runs on a sleep timer and automates the sweep_all wallet RPC call every X minutes to empty a wallet with a small amount of Monero in it, back to the same address.

Is this bad for privacy? If I leave it running then the same transaction will be happening X times every XXX minutes for a few hours.

Also, if I churn like 20 times in a row, am I helping myself or other users on the network by adding entropy to the transaction pool?

Thanks.

Is this bad for privacy?

Yes. Performing a churn (or any transaction for that matter) at regular intervals is bad for privacy (for yourself and others to some degree).

You are essentially helping to create a linkage by exposing the likely true output in a ring (thus also exposing the likely decoys), based purely on the timing of the transactions.

  Also, if I churn like 20 times in a row, am I helping myself or other users on the network by adding entropy to the transaction pool?

A single churn can be useful for yourself in certain circumstances (like after receiving money from a centralized exchange). And whilst every transaction on the network increases the entropy set, the increase is so negligible, one shouldn't go around patting themselves on the back thinking they are "helping the network". Normal usage is fine.


Get updated balance from multiple wallet files using the CLI Monero wallet Is there a command to output my wallet balance and unlocked balance from my main monero address using the command line Monero wallet? And what if I wanted to get the balance of my subaddresses?

I want to get it without interaction as this would be used in a script, which means the wallets won't have a password or a simple password if it's mandatory.

Yes. Using monero-wallet-cli you can run the command balance detail, which will show you your wallets balance and each balance received at each subaddress.

Typically for non-interactive usage you'd use monero-wallet-rpc, for which there is an equivalent method get_balance, which gives you  result in something more machine readable (e.g. JSON).

You can also use the monero-wallet-cli non-interactively like:

monero-wallet-cli --testnet --wallet-file testnet-wallet --password 'yourpassword' balance detail


Global index of output Can anyone please tell me, is there a way to find out the future global index of the output that is currently in the tx pool?

You cannot. It will be set when the transaction is mined.


Block reward and transaction fees over time I am trying to understand how block rewards have evolved over time in Monero. I downloaded the blockchain and plotted the reward field from each block. Because it looked a bit strange, I plotted the major versions from the blocks as they first appear on the same chart to see if it helps:

The trend is declining as one would expect. However, there are a few things I do not quite understand in this:

Why does the reward look like it resets at the point where major version 2 appears in the block? I could not find any explanation for this, maybe because it is a bit long time ago.

What are the high spikes in the rewards? The two highest between v1 and v2 are in blocks at height 262990 and 249092. The transaction at 249092 is only for about 0.12XMR but has a fee of 37.87XMR. The one at 262990 is for about 0.95XMR with a fee of 49.9XMR. I tried to look up how the fees are calculated (which I guess are added to the reward), I only found some fixed set of priorities, which seems to better match the latter smaller spikes. Was it possible to set a fee manually in the first version, and someone just played with it, or what are these big spikes?

How is the reward at times (in v1 and appears to be also in v4) much smaller than what I would expect is the "reward curve"? For example, the block at height 80412 has a size of 38.9kB. Maybe because it contains a transaction with over 350 inputs. This is much larger than most others I saw. As far as I understand, a bigger block size would have higher fees. Yet its block reward is only about 0.24XMR, with the three transactions it holds totaling to a fee of 0.000004XMR. Blocks surrounding this block have a reward of about 16.3XMR, which seems in line with the "reward curve". 0.24XMR is far below the curve. Again, this is in the very first block version, but I could not find an explanation.

Are there some changes over time on how the block reward (and associated fees) change over time? Are such changes over the (major) block versions documented somewhere?

Why does the reward look like it resets at the point where major version 2 appears in the block?

Transaction v2 (Monero v10) was the introduction of RingCT. There were various fee related changes over the Monero v10.x.x releases to account for the size changes introduced by RingCT. As @dEBRUYNE notes, the block time changed earlier that year too, to retain the original emission schedule – this is what the jump in your chart shows.

What are the high spikes in the rewards?

The spikes you reference are in transaction fees, not the block reward. Also, just because someone constructed a transaction with a high paying fee, this is not necessarily a reflection of the norm. For example, the transactions immediately before and after the high paying transaction you reference in block 262990 only pay 0.100 and 0.146 respectively. The block reward for each of those blocks was ~13.72, steadily reducing.

As far as I understand, a bigger block size would have higher fees... but I could not find an explanation

Not necessarily. Miners create blocks and they incur a penalty for creating unusually large blocks, hence the block reward is reduced, via the penalty function. Miners are not obliged to include large transactions just as senders are not obliged to pay higher fees.


What happens as monero network hash rate decreases I've noticed the network hashrate has decreased, does that mean anything for overall monero future.

What happens if the network hashrate gets too low? What level is dangerously low?

Just wondering, I am a bit of a newb so just wondering. Thank you

Value of a coin and hash rate goes hand in hand.
If value of coin decrease, then miners will have less reward for their mining and will rather go mine some other more profitable coin.

So if a coin is used only by 2 people and have low value. The hash rate needed to run network is tiny, but network is still secure.

Motive behind doing a 51% attack is economic and when value of coin decrease, there is less interest to do an 51% attack, since attacker would gain less.
So when overall miners hash rate decrease and price of coin decrease, there is no higher danger for a 51% attack as before.


Stratum - Connected (unsecure) I am mining with Claymore CryptoNote GPU Miner v9.7 Beta - POOL Catalyst 15.12. I am getting the message "Stratum - Connected (unsecure)".

What does this mean?

It probably means you're connected via HTTP, and not HTTPS. Theoretically, it means a malicious ISP or router in the middle of your path to the mining pool could replace your monero address with their own, or change your shares to invalid ones, etc. In practice, the risk is extremely low.


Password to join xmrpool Question might seem silly, but I'm so lost on this part! Here's what happened: I followed this tuto to start mining. Everything is going fine, so I wanted to log in XMRPool. I read the "Get started page", but I still can't figure out which username and password are mine.

Coinsidering the fact that I used this line to start mining: sudo ./minerd -a cryptonight -o stratum+tcp://MININGPOOL:PORT -u WALLET_ADDRESS -p MINER_NAME, my username shoudl be WALLET_ADDRESS and my password MINER_NAME but it's not working. I tried a lot of thing, added +difficulty to username, also :email to password but still not working. Do you guys have any clue?

You don't need to "login" to pool per say. Username is almost always your wallet address. Password can usually literally be anything, something you can use to identify which of your machines is mining. Most pools allow you to use the format anything:you@example.com so you can get alerts and such like at your email address.


Are mining pools shares based on prescribed difficulty or the actual difficulty you hash a block with? I'm mining Monero as part of a pool (specifically this pool -- https://mixpools.org/xmr/).  I'm using a CryptoNoter package to do the mining.  The pool will send back work taht looks like

{"data":"{"type":"job","params":{"blob":"0606ecdd8fd605cbcc264b629c5e203dfa0b7d7334fc2e566b7c6f76186400be6ddab987e3f5c50000000006ca7ff4d00389adf9260f6351ad72a5a1fc1dd271bea01ebdfbb78177e4791205","job_id":"999074511538701","target":"6ab30200"}}

I assume "target" means difficulty (if this is wrong, please correct me immediately).  I have two questions.  If I find a nonce that hashes the block at this difficulty,

If I find a nonce that hashes the block, reaching the minimum target set above, do I get credit for the minimum target or the target at which I was able to solve the block -- assuming those two things are not the same?
Are the number of shares I receive one or is it one times the difficulty set by the job?

You're are correct in assuming target is the same as difficulty

Question 1: You are just credited for the difficulty nothing more. You are set with a threshold to meet to prove you are mining however these shares hold no value unless they are the solution to the current block so you will not be rewarded extra for mining below the threshold, neither will you be paid extra for finding the block solution.

Question 2: The number of "shares" you receive is relative to your difficulty those with a higher difficulty will receive more shares.


How do I compile monero with debugging symbols? I've tried make debug but when I try to set a breakpoint in gdb I see this:

Reading symbols from build/release/bin/monerod...done.
(gdb) b tx_pool.cpp:225
No source file named tx_pool.cpp.
Make breakpoint pending on future shared library load? (y or [n]) n
(gdb) b src/cryptonode_core/tx_pool.cpp:225
No source file named src/cryptonode_core/tx_pool.cpp.
Make breakpoint pending on future shared library load? (y or [n]) n
(gdb)

How can I set up debugging for monero?

"make debug" will build monero with debugging symbols. You will need to debug the binary from build/debug/bin/monerod though, not the one from build/release/bin/monerod.


How to hash a blob from monero pool? I am trying to program my own miner using a node.js server (this is for learning/exploration, not profitability).

I am subscribed to a monero pool socket and am receiving jobs like this:

{ jsonrpc: '2.0',
  method: 'job',
  params:
   { blocktemplate_blob: '07078286e9da05f1...',
     difficulty: 51779148158,
     height: 1625346,
     reserved_offset: 128,
     client_nonce_offset: 140,
     client_pool_offset: 136,
     target_diff: 5000,
     job_id: 'gJrlffjmKa7b/thYkVFuioukLzf/',
     id: '294f72b5-638f-4915-90ae-67db09dd4212' } }

I am trying to understand the next steps from here. My understanding is that I hash the blob + nonce (which is a random number?), see if the hash is below difficulty, and repeat with different nonces.

I have a few questions about this.

Is there a programmatic example of this being done? I found a function called processShare here where they verify if a resultHash is correct. But with all their classes, buffers, threads, etc its hard to actually understand what's happening.
Is documentation on the returned variables anywhere? What is hieght? I think I understand difficulty, but target_diff ?
Is there perhaps an example blob, nonce, and difficulty for a successful share that I can test with?

Realize I'm asking for a lot of info here. If you can help me out, feel free to PM me and I'd be happy to donate to your wallet.

Firstly it looks like the job you have is for a mining proxy, not a miner.

A miner hashes a blockhashing_blob. To get a block hashing blob (which answers point #1) you have to update the blocktemplate_blob (after converting the hex to binary) with the data you want in the reserved space (at offset reserved_offset), then get a hashing blob (which in the monero codebase you can use get_block_hashing_blob - which is what the pool uses in one of it's node modules). Hash the hashing blob by incrementing the nonce in the hashhing blob until your hash is below the target difficulty (note also the target difficulty needs a conversion like target = 0xFFFFFFFFFFFFFFFFULL / (0xFFFFFFFFULL / ((uint64_t)target)). This is all a little redundant though because a pool will give you a hashing blob when the client is a miner, not a proxy.

Point #2 height is the blocks height, target_diff is the target difficulty. The miner is expected to find a hash to this target.

Point #3 just connect to any pool with an existing miner whilst doing a network trace.


What encryption algorithm is used for the wallet.keys file? I know that the wallet keys file contains an encrypted version of your private keys, but am just curious what encryption algorithm is used to do this, and also where is it done in the source code?

ChaCha8; the key derivation is done with CryptoNight.
https://github.com/monero-project/monero/blob/e06530e2d97a0a44f1f954b0d9a49e522e2ca74a/src/wallet/wallet2.cpp#L1362

Specifically note L1429 which calls https://github.com/monero-project/monero/blob/e06530e2d97a0a44f1f954b0d9a49e522e2ca74a/src/crypto/chacha8.c#L43


What are the different commands for `balance [detail]` in monero-wallet-cli Playing around with multisig subaddresses, I found we can create as many subaddresses as we want in any "account". I can have several accounts with several subaddresses for each account, that's pretty amazing and congratulations to the Monero Dev team by giving us these features.

When I want to search for a specific subaddress payment, what is the command, using the monero-wallet-cli, to check the amount received to that subaddress?

I tried with balance_per_subaddress or balance_all and neither worked. I ran the help command and it doesn't list any balance related commands other than balance [detail].

Thank you

The command balance detail will show your balance for each address in your current account.

The command account will show you the balance in each account.

The command account switch N, where N is the number/index of an account, will switch to that account. You can then use the command balance detail per above to show the balance of each address in that account.

The command show_transfers is what you use to identify specific transactions. For example, to see all incoming transactions to subaddress index 3 of the current account, run show_transfers in index=3.

There is detailed help on all the commands by running help [command]. E.g. help show_transfers.


How to get a Monero Transaction Hash to check incoming deposit on MoneroAddress.org generated address - without CLI or GUI wallet? I need some help with following!

I have set up a monero address with moneroaddress.org.

I want to be able to check if that address has received a monero payment using any available online tools / websites.

I do not want to use Monero Wallet CLI or GUI.

I have my moneroaddress.org Public Address

I have my moneroaddress.org Mnemonic seed

I have my moneroaddress.org Spend Key

I have my moneroaddress.org View Key

I have a couple of questions:

Apart from the moneroaddress.org generated monero Public Address, what other data/information do I need to confirm the transaction has been completed by using any of the online / website tools available?

Where can I go / is it possible to confirm Monreo has been deposited to my moneroaddress.org generated monero address without having a Monero CLI or GUI wallet and / or without creating a view only wallet with CLI or GUI?

I know about mymonero.org, but if i do not have any monero in the wallet to pay the importation fee - how can i complete the import?

What is the Transaction Hash and how do I create one / get one for my transaction i.e. where I receive a monero deposit to my moneroaddress.org address

Any other useful / relevant information (i.e. relevant but not asked above) will be appreciated.

Thanks

A transaction hash is a way of uniquely identifying a transaction.

If you have a transaction hash, you can use xmrchain.net to locate and examine the transaction, and then decrypt it to see the amount of incoming funds and verify those funds were destined for your wallet address. Here is an example transaction, where you can enter your Monero address and private view key to decrypt it: https://xmrchain.net/tx/f733590f7c139d512be0237f81e420a1ad07b19f264e74ad2c599606e61b5a6d

There are only two ways to determine the transaction hash for an incoming transaction. Either the person that sent you the funds tells you the hash, or you need to scan every transaction on the blockchain to check if any of them are destined for you.

Therefore if you aren't told the transaction hash, you're going to need to use some kind of wallet software that can scan the blockchain. You may not want to use the official Monero CLI or GUI, and may not be able to use mymonero.org, but you're going to have to use some kind of wallet. I don't know of any other trustworthy mymonero.org alternative, which means you'll have to download and install some other kind of Monero wallet software. If you're going to have to do that, you might as well use the official Monero GUI or CLI.

If the reason you don't want to download and install software is because you don't want to download the entire blockchain, then you can install the Monero GUI and connect to a remote node. You can find a list of remote nodes here: https://moneroworld.com/#nodes This means you won't have to download the entire blockchain, and your wallet will instead simply scan the blockchain for transactions destined for you.


How to keep lots of Monero wallets in sync? I run a service that involves ~500 separate Monero wallets, since they all need unique private keys. To make wallet access faster, I keep the wallets in sync constantly with a simple Python script that opens the wallets one at a time, waits for them to sync, then closes the wallet again.

I'm worried that this isn't as efficient as it could be; my server is constantly at max CPU due to this, and as my service grows, it becomes more difficult. So I'm wondering - is there a better way of doing this?

Thanks

Seeing as you have custody of the wallets, it would seem to make a whole lot more sense to track the funds via subaddresses in a single RPC wallet. Should you still want to dish out individual wallets, you can provide a means to move funds between the master RPC wallet and any other wallet at that time of need.

However, I would question any service creating full wallets for end-users as it's essentially promoting a false sense of security - you (the provider) still have the custody even if you dish out private keys.

Lastly, as you are finding, holding (and maintaining) hundreds of independent full wallets is never going to scale well because each wallet independently needs to scan blocks for transactions. Using subaddresses solves this problem.

In summary, I suggest rethinking the design.


Monero fork wont mine blocks after height 3062 I have forked Monero and created the genesis block. Everything seems to be working fine till the block height reaches 3062 and then there are no blocks mined after that. Currently, my blockchain is running Monero v7. The current difficulty is 31946276 and the network hash rate is 266.218 kH/s. Its been 5 hours the height has been at 3062.

I am getting the below warning in my daemon, I am not sure if the issue is related.

2019-02-02 07:49:34.903 [P2P6]  WARN    global  src/p2p/net_node.inl:1332       No incoming connections - check firewalls/routers allow port 17070

I have also set the default p2p port to 17070 in the config.

Can anyone help me fix this please? Thanks in advance.

Block creation sometimes takes more time and sometimes less, also the time to be mined increases with difficulty.

Your daemon functions properly without any incoming connections, but if you want to open port 17070 in the right way, you have to forward/open it in your router too and not only in Linux/Windows firewall.


Is avoiding significant advantage by an specific hardware an active goal of the Monero developers? Given that significant advantages in a specific hardware leave out a lot of people that don't posses that specific hardware and leads to mining centralization, is there an active effort to improve the mining algorithm used in Monero to avoid this and harvest the computational power from many devices?

Based on above comments ... No. CryptoNight is the exact opposite of what "hardware-agnostic" means. In particular, CryptoNight is designed to run best on CPUs, and run less efficiently on GPUs and other accelerated compute devices.

An algorithm that is truly hardware-agnostic would run efficiently on any compute device.


Does the new v5 hardfork low fee option create a risk for blockchain bloat? I understand the only thing limiting people from inserting, for example, a 180MB FLAC encoded recording of The Sign into the tx-extra field in a Monero transaction is the high fees they pay per kb.

Considering the v5 hardfork creates a new fee tier that allows very cheap transactions per kb, doesn't this create a new risk for inordinate blockchain bloat, where people could potentially include an abusive amount of data in tx-extra for very little money?

I understand the only thing limiting people from inserting, for example, a 180MB FLAC encoded recording of The Sign into the tx-extra field in a Monero transaction is the high fees they pay per kb.

That's the 2nd limiting thing, really. First, we'd have to somehow get to a block size median of min. 90MB. The dynamic block size and reward penalty make it expensive. Not only that, but 51% miners can veto a median increase even if there is enough fee pressure to justify an increase. Also, 51% miners can "reset" the median to a lower value and have the "attacker" work his way up all over again - paying the price all again.

  Considering the v5 hardfork creates a new fee tier that allows very cheap transactions per kb, doesn't this create a new risk for inordinate blockchain bloat, where people could potentially include an abusive amount of data in tx-extra for very little money?

Well, it will not really be "very cheap". It will be exactly 4x cheaper than what it is now. It should create smoother experience for "normal" users because 4x multiplier will become wallet default (the cost/TX will be the same as it is right now pre-HF). We can assume pools will use 1x, so "normal" human-made transactions should skip the queue of pool payouts. Any "spam" at 1x would also not be felt by users sticking to the defaults as they would skip over the "spam". When the network usage would drop, it would make room for those 1x TX-es which could get into blocks - and so what? Some of them would be pool payouts, some of them could be "spam" but they would really achieve nothing other than writing some useless data to the blockchain.

Sure, if you want to systematically abuse the network, you could put whatever into the TX-extra and see where it gets you. You could also use a mixin of 10000 if you want to bloat the size of a single TX or you could spam the network with 10000 "normal" TX-es but if you want to prevent normal use you'd have to beat the default fee of x4, which is at around 0.3$/12kB. Chances are, the network would function just fine despite this spam so why would anyone bother?

Since Monero has strong privacy features, we can't really differentiate between transactions so some cost must be there to encourage rational use and that's all we can really do.


Could monero benefit from research done for bitcoin? I'm interested if optimizations designed for bitcoin could work for monero, such as:

segregated witness / flexible transactions (http://zander.github.io/posts/Flexible_Transactions/) - is this even applicable to monero, or does it already have a neat transaction format?
xtreme thinblocks (https://bitco.in/forum/threads/buip010-passed-xtreme-thinblocks.774/) - is it even relevant, were there any studies done for monero block propagation times? Could it benefit from this kind of approach?

Research builds upon prior research, so yes, definitely. For example, RingCT builds on both Nicolas van Saberhagen's Cryptonote and Gregory Maxwell's Confidential Transactions for bitcoin, and merges them.

I hear some kind of SegWit is theoretically possible with Monero, though I do not know the specifics.

Block propagation is currently not very optimized I think. Transactions are sent twice.

Of course, every bit of research may not be applicable to Monero, but given both currencies are "standard" output based PoW curencies, there will be some overlap.


Changing block-sync-size within GUI or running monerod This answer explains how to start the daemon with a specified block-sync-size:

  ./monerod --block-sync-size 10

How can I do the same thing from the Monero GUI or from a Monero daemon that is already running?

First of all, to clarify for the readers, this flag will change the batch of blocks that is fetched to 10, from a default of 200 blocks per batch.

  How can I do the same thing from the Monero GUI

If you are using the GUI, simply add --block-sync-size 10 as daemon startup flag. You can do this on the Settings page of the GUI. Note that you need to restart the GUI in order to utilize the flag.

  from a Monero daemon that is already running?

You cannot add the flag to a daemon that is already running, as this is a flag that should be added upon startup.

The startup flag is added as follows if you use the CLI tools.

On Windows make sure to launch it from the command line. Go to the folder monerod is located and make sure your cursor isn't located on any of the files. Subsequently do SHIFT + right click and it will give you an option to "Open command window here". Lastly, type the following command:

monerod --block-sync-size 10

On Linux and Mac OS X you should use the terminal to launch monerod. Note that this has to be done from the directory monerod is located in. The command is as follows:

./monerod --block-sync-size 10


Got some problem on trying to make new GUI wallet translation I'd like to translate the GUI wallet for traditional Chinese

That might be the only thing I can contribute for now

But I never did this kind of work before, so did a little search on that

Then I download the en.ts file from github

https://github.com/monero-project/monero-core/tree/master/translations

When I open it with my Qt linguist, it showed unexpected tag error

I don't understand what happened.

Seems some symbol needs to escape in that file, but how?

I got the problem.

I compared the file content I downloaded and the file on github

there are extra sections start like this

html lang="en" class=" is-copy-enabled is-u2f-enabled"

Then I changed the way download file:

Right-click save as from raw page instead on the github file list

And it just works! Thanks !


About shares in mining pool I know that profits are assigned by the shares. But I want to know some details about computing the share.
For example, I get a job with difficulty 25000 to solve:

Do I need to finish 25000 times of hash computing in a limited time to get a valid share?

or

Is there a possibility that I just need to finish parts of the 25000 to get a valid share?
In extreme cases, do I only need to calculate one hash to get a valid share?

This problem has bothered me for a long time. Can anyone help me solve this problem? Thanks!

First, not all shares are of equal value. A share with a difficulty of 25000 is worth more that a share with a difficulty of 250.
Second, it's worth understanding that difficulty (in PoW terms) is harder the lower the number, but in pools, will often be termed the other way round. I.e. they refer to the same thing but flipped around. With PoW you are trying to find a number smaller than another number. For example, with 0 being the hardest and 10 being the easiest, if you have a difficulty of 3, you are trying to find a number smaller than 3 (so 0, 1 or 2). With a difficulty of 3 (smallest hardest), you can flip that around to say greater than 7, and this is what you'll see with pools when referring to share difficulty. As 7 increases, the work is harder (and worth more), because you're ultimately trying to find a number smaller than max minus difficulty.
The hash function is just giving you a random number between 0 and 2^256-1. In the example above with 0 being hardest and 10 being easiest, that would be equivalent to a hash function returning a random number between 0 and 9.

Do I need to finish 25000 times of hash computing in a limited time to get a valid share?

No, you do not need to hash 25000 times to solve a job with a difficulty (in pool terms) of 25000. You need to find a valid hash* within a certain amount of time. The pool will send you work based on how quickly you solved previous work so you end up submitting work at an approximate rate, typically ~30 seconds per job.
*Note that 25000 is only the top 32 bits of the actual difficulty number. See this answer which explains further.

Is there a possibility that I just need to finish parts of the 25000 to get a valid share? In extreme cases, do I only need to calculate one hash to get a valid share?

You will on average find a valid hash (number) within the timeframe the pool targeted your job difficulty for. Sometimes it will take you longer, others less; extremes included.


Hash rate of CPU is the same as that of GPU My GPU:gtx1050ti
My cpu: ryzen 5 1500x
Both of them have a same H/s of 320.
I'm using xmr-stack for both. Nvidia version for GPU and CPU for CPU.
Why is it so?

If you expect the GPU to be much faster, your question may be answered here: Is it better to mine with a CPU or GPU

Your numbers sound reasonable for the CPU, and mostly consistent with reported numbers for the GPU. That said, I've got a bit better performance out of XMR-Stak than ccminer on my GTX 950 card. I also made a test of numerous configurations for blocks and threads for my card, and there are certainly numerous settings that will cause it to underperform.

I am running XMR-Stak-CPU and XMR-Stak-NVIDIA, and can share my rates for some of the workers for comparison if that's any help.

AMD FX-6300 Six-Core Processor   : 274 H/s
  > low_power_mode on 1/6 cores

NVIDIA GeForce GTX 950           : 251 H/s
  > 32 threads x 18 blocks

Intel i7-7700K @ 4.20GHz         : 340 H/s
  > low_power_mode on 0/4 cores

2 x Intel Xeon E5-2620 @ 2.00GHz : 288 H/s
  > low_power_mode on 2/12 cores

I run all of these on headless Linux, mostly Ubuntu 16.04, and with the latest CUDA.


Why don't the XMR-Stak Linux release binaries support NVIDIA GPUs for cryptonight_r? The pre-compiled binaries download for XMR-Stak state that the Linux pre-built binaries don't support cryptonight_r (and thus Monero), for NVIDIA GPUs.
Downloading and testing this verifies that, yes, this is correct (of course it is :-) The release notes state you have to build yourself in this case.

My question is: Why is this so? It used to be, before the April algorithm update, that the pre-built binaries worked fine on Linux with NVIDIA GPUs.
Googling around, I can't find an obvious answer as to what the problem is, neither on Reddit nor GitHub nor here. Hopefully someone knows the details and can share.

Is it as simple as the CUDA SDK requiring an older version of GCC and the developer not wanting to bother with that? Is there some (actual or perceived) licensing problem? Is there some personal vendetta against nvidia-on-linux?

Enquiring minds want to know.

XMR-Stak makes use of NVRTC for mining CN/R on NVIDIA GPUs. NVRTC was added in 1cb52145, and then was disabled in 42112950 for the Linux release build.

On Windows, they ship the NVRTC shared libraries (.dll files) alongside the release executable, and because of the way Windows searches for needed DLLs, it will also search in the current directory of the executable for them - meaning they will be found and loaded fine at runtime.

On Linux, you cannot just place shared libraries in the same directory as the application and expect the loader to find them. It doesn't work like this on Linux. There are a number of ways to achieve the same, but each way has its own strengths and weaknesses. So I can only presume it comes down to how important this is to the developers & community - especially given that CN/R is only really a stop-gap until RandomX is released, and the fact that Linux users are likely far more comfortable compiling and installing from source than your average Windows user.


Replay attack and Cryptonotes There are 2 Cryptonote networks (Dashcoin and Quazarcoin) which forked. On both of them the forks have stable hashrate.

Are replay attacks a thing in Cryptonote and are there any technical solutions in the protocol to prevent replay attacks? Is simply moving funds to a new wallet preventing replay attacks?

If you define a replay attack as sending a tx to two different forks, and the tx being mined on both, then it is necessarily allowed, otherwise deep reorgs would not be possible, and they are possible, and have happened.

Network wide, one way to prevent this would be to tag a tx with the hash of a block which must be in the history of the block containing that tx. This way, you could tag your tx with a block which is on the fork you're spending on. The other fork could not mine that tx (assuming the miners there don't decide to start ignoring that rule). Such tagged hash information looks like it'd be prunable after a while.

If the network doesn't have any particular replay protection, and as a user you want to ensure your coins aren't replayed on another fork, I think moving your coins may not be enough for 100% certainty, as the other fork might also replay the tx which moved those coins, leaving your coins in the same state on both forks. However, it seems safe to assume the two chains will be different in their output set: in that case, it looks like moving your coins while referencing one fake output which does not exist on the other chain would work: the tx will not be valid on the other chain. I speculate that once the output set diverges, most transactions become automatically invalid on the other chain as they become more and more likely to include this-chain-only outputs as their fake outs.


Who will receive the Monero tail emission After 18 million coins or by may 2022  the last block would be mined and tail emission follows. Thus, who will receive this tail emission?

After 18 million coins or by may 2022 the last block would be mined

After ~18 million coins, the last pre-tail emission block will be mined. After this, all blocks mined will have a block reward of 0.6 Monero.

  Who will receive this tail emission?

The miners who mine the blocks.


Sent Monero to Shapeshift Mined my first monero.. got 0.42 in three months and was very excited to cash in for some December pocket money but it never arrived shapeshift even though my monero wallet showed it was sent.. that was on Jan 3rd already:(

Was sent to Shapeshift monero address: 46yzCCD3Mza9tRj7aqPSaxVbbePtuAeKzf8Ky2eRtcXGcEgCg1iTBio6N4sPmznfgGEUGDoBz5CLxZ2XPTyZu1yoCAG7zt6

Transaction hash : b3d3799e6bbd64a01c10c5a24ed2dbcf720d9e8f2c2e8326d32d8fbecc154f8c

Monero was sent from wallet :
46joGMni2bodekfqWVte51YgWoDtcCLQHQ1xx4ddsf5UFqekRpqrgBoWbwaVe4vUMveKAzAiA4j8xgUi29TpKXpm41dzPjn

Know it's not a lot but worth almost R2000 in South Africa which is alot:)

Hope someone can help me find it..not sure what else would be needed but will update as required.. holding thumbs

If you did not include a paymentID shapeshift can not identify you as the payee so will not credit you if this is the case contact their support. I'm afraid your Monero may be lost.


How can I speed up receiving my XMR First-time poster. Thanks for reading.
I've setup the GUI client and transferred some XMR. The client is "waiting for the daemon to sync" and I've read the posts about this being necessary. Thing is, I'm 4 days into sync now (on SSD) and unable to access my XMR as a result - I've verified that I own the amount using my view key, so all good there.
Question is: Is there a way that I can get access to my coins now without needing to wait for the whole blockchain to sync. At the current rate, it looks like it'll be another 4 -5 days

It's possible that when you first set up the wallet you chose Simple Mode (bootstrap) or Advanced Mode, both of which require downloading the blockchain to your computer. If so, there is a Simple Mode (without bootstrap) that instead of downloading the blockchain, connects to a remote node, allowing you access to your funds almost instantaneously. It should be noted that this may compromise some aspects of your privacy. The remote node will have access to your IP address for example (unless you're using a VPN or ToR).
To check your wallet mode, go to Settings > Info and see Wallet mode:

If you are not in Simple Mode, and are happy to accept the trade-offs that come with using a remote node, you can switch your wallet mode.
If your wallet is open, you need to close it first. Go to Settings > Wallet > Close this wallet:

The main menu (Welcome to Monero screen) will open. At the bottom left, click on Change wallet mode button, and on the next page select Simple Mode. Next, open your wallet file again.

The wallet should automatically connect to a remote mode and show your balance, but in the event it doesn't there's info on how to find a remote public node in the guide on getmonero.org: https://www.getmonero.org/tr/resources/user-guides/remote_node_gui.html


I tried to use aeon . But my first transaction to wallet is in the blockchain but not in my balance How to solve when my balance remains at zero after a transaction present in the block chain?

The options available are :

address              Show current wallet public address
  balance              Show current wallet balance
  bc_height            Show blockchain height
  help                 Show this help
  incoming_transfers   incoming_transfers [available|unavailable] - Show incoming transfers - all of them or filter them by availability
  payments             payments <payment_id_1> [<payment_id_2> ... <payment_id_N>] - Show payments <payment_id_1>, ... <payment_id_N>
  refresh              Resynchronize transactions and balance
  save                 Save wallet synchronized data
  save_bc              Save current blockchain data
  seed                 Get deterministic seed
  set_log              set_log <level> - Change current log detalization level, <level> is a number 0-4
  spendkey             Get spendkey
  start_mining         start_mining [<number_of_threads>] - Start mining in daemon
  stop_mining          Stop mining in daemon
  transfer             transfer <mixin_count> <addr_1> <amount_1> [<addr_2> <amount_2> ... <addr_N> <amount_N>] [payment_id] - Transfer <amount_1>,... <amount_N> to <address_1>,... <address_N>, respectively. <mixin_count> is the number of transactions yours is indistinguishable from (from 0 to maximum available)
  viewkey              Get viewkey

The current aeon has a known bug which causes the wallet to skip over blocks without parsing them. This means any transaction in those blocks will be ignored.

To fix this, you need to set refresh-from-block-height to 0 (or a height prior to your wallet original creation) and run "rescan_bc". Type "set" to see the current value, and if it's 1 million or more, type "set
refresh-from-block-height 0" then "rescan_bc". Your aeon should then appear after the rescan is complete (this does not download the blockchain again, it just parses the copy already on your machine).


Recovering monero wallet files on drive that was previously dualbooting Windows and linux. Now I only run linux I need to do what is explained in the title. I forgot writing down mnemonic key and account address, so I have no clue how else to recover my wallet.. Can anyone help?

I've done that before (Win10 to Mint18).

It's as simple as copying the two wallet files (<Wallet name> without extension and <Wallet name>.keys) from Windows' Monero folder to Linux's Monero directory, start GUI/CLI wallet client on Linux, and enter your wallet password. The Linux executable is happy with wallet files generated by Windows executable. I believe the files will also work across architectures (x86/x64/ARM) but I have only tried x64 to x64.

As long as you still have access to your Windows partition (and the files therein), these steps should bring your wallet back with all funds intact. If your Windows partition is intact but you can't access it, consult your Linux distribution's documentation and/or head to Unix.SE.

If, however, your Windows partition is gone and you don't have the wallet files nor your mnemonic seed, your Monero are unfortunately lost. Take it as a lesson learnt and have proper backups in the future.


How do I stop locking my balance when executing transactions? I have a wallet with 0.1XMR in it. I did a test transaction of 0.00001XMR, which I sent to another address owned by an exchange.

After sending this tiny transaction, my unlocked balance went from 0.1 to 0.

I need to be able to transfer many small amounts of XMR, as I am running a faucet service. Why is my total balance now locked, and how do I prevent this in the future?

It's not a case of how much is in your wallet, rather how many outputs you own. If you only have 1 output, when you do a transfer, the recipient get's a new output with part of your spend output and you get the rest into a new change output. This answer explains nicely.

So this brings us to the question of how to prevent this. There is no way to prevent the locking of funds in the above scenario. However, what you can of course do is batch your transfers. If you need to send money to multiple people within the confirmation time (locked time), both commands transfer and transfer_split allow sending to multiple people in the same transaction.


What is the rationale behind keeping transactions in the mempool longer after they were in an orphaned block? In a question about maximum block size and mempool behavior user36303 said:

"Transactions will stay for a day in the pool before being dropped. This increases to seven days for those transactions were once in a block which was reorganized."

What is the rationale behind keeping transactions in the mempool longer if they were part of a reorg?

Based on current transaction volume (and a small reorg) there does not appear to be a need for a 7 day period for such transaction (because they can be confirmed much faster.

However if transaction volumes suddenly much higher (before the dynamic block size limit can fully adjust) and if the reorg was substantial (very large pools of transactions being moved to the mempool) then more than one day might be needed for confirmation.