What stops the miner or the pool owner from cheating? Jafar the malevolent pool owner checks for solved blocks, any only allows a percentage to go to the pool bounty, and the remainder going to his personal secret bounty. To the miner, it is imperceptible, as the cheat percent is sufficiently low.

What stops Jafar?

Can this be done with a viewkey shared with pool members?
Do any pools do this yet?

Here is the answer when it comes to Bitcoin mining pools.
https://bitcoin.stackexchange.com/a/10693

TL;DR: The miner will find a valid hash based on the merkle root provided initially by the pool. Once a solution is found, the miner will submit it to the owner. The owner would not be able to change the transactions (to divert the BTC to their own address) without making the solution invalid due to a different merkle root.

Presumably the same would apply to Monero, although I haven't been able to find much documentation on the structure of Monero blocks and their mining.


Can Monero stand as a distinct cryptocurrency, or will its features be brought to Bitcoin via sidechains? Is Monero intended to be a competitor to Bitcoin, or is the intent to develop technology that will improve Bitcoin? Is there any reason why Monero's features wouldn't just be brought to Bitcoin through sidechains? What about Monero's features being implemented in Ethereum?

A lot of the other answers address some but not all of the questions.

  Is Monero intended to be a competitor to Bitcoin, or is the intent to develop technology that will improve Bitcoin?

It is unknown whether Bitcoin will ever implement any of Monero's technologies, but from the outset, the cryptonote protocol (from which Monero has evolved) was made to address some of the shortcomings of the bitcoin protocol. From the cryptonote whitepaper, each of these drawbacks is listed - 2.1 Traceability of Transactions, 2.2 Proof of Work Function, 2.3 Irregular Emission, 2.4 Hardcoded Constants, and 2.5 Bulky Scripts. Additionally, from the whitepaper, we see this passage -

  For example, the system’s distributed nature is inflexible, preventing the implementation of new features until almost all of the network users update their clients. (...) In such inflexible models, it is more efficient to roll-out a new project rather than perpetually fix the original project. In this paper, we study and propose solutions to the main deficiencies of Bitcoin. We believe
  that a system taking into account the solutions we propose will lead to a healthy competition among different electronic cash systems.

https://cryptonote.org/whitepaper.pdf

Therefore, I can only conclude that the original Cryptonote protocol was made to be in direct competition to Bitcoin (to stand alongside) and was not intended to ever be merged into the bitcoin protocol, but only time will tell.

  Is there any reason why Monero's features wouldn't just be brought to Bitcoin through sidechains?

There's plenty of reasons for bitcoin to bring Monero's features into Bitcoin through a sidechain, but there's no reason for Monero to become a Bitcoin sidechain. If we take all of the features of Monero and bring them as a sidechain, this sidechain will have dynamic block sizes, an ASIC resistant proof of work, and last but not least, untraceable transactions. Albeit these features, this theoretical Monero sidechain would now be coupled to Bitcoin's security model and other parameters. In addition, as others have mentioned, one could trace transactions being moved to the Monero sidechain and this would be the equivalent of getting $10,000 in cash. You would be suspected of doing something.

  What about Monero's features being implemented in Ethereum?

This is similar to the Bitcoin implementation.

The bottom line is that if true fungibility isn't in the base protocol, then the base protocol isn't fungible no matter how many layers you add.


Having trouble with tx-proxy I created a test transaction to test broadcasting monero tx over Tor, from a computer running a full node.

On that computer, I started monerod with the following options:

./monerod --tx-proxy tor,127.0.0.1:9050 --add-peer xmrtolujkxnlinre.onion:18081

Note that I have tor running as a background service, so the tx-proxy should work, and that is the known onion node for xmr.to.

The computer is behind a firewall and is configured to allow no incoming connections, but presumably it should be able to use this known peer to send a transaction, right?

However, the tx did not send. The wallet claims the tx is still pending in the tx pool, with no confirmations.

So, first question: Have I done something incorrect here?

Second question: If I were to restart ./monerod without the tx-proxy option, would it finally send out the pooled tx, or do I effectively need to start over?

--add-peer xmrtolujkxnlinre.onion:18081... that is the known onion node for xmr.to

Here is your misunderstanding: --add-peer is for adding peer nodes, nodes that will talk to each other on the Monero P2P network. It is not for using another nodes JSON RPC interface (which is all that xmrtolujkxnlinre.onion is offering up [ref]).

Thus if you want a full node to relay transactions to other nodes over Tor/i2p, you need to add a peer node that is listening for P2P traffic over an anonymity network via their usage of --anonymous-inbound ....


How does a node maintain its anchor peer list? I'm trying to figure out how a node maintains its list of anchor peers. I know that they are important when a node restarts. However, when does a node add and remove other nodes to its anchor peer list? And does this list interact with the list of white and grey peers?
Because in the function connections_maker, a node does some computations and depending on these it tries to connect to a peer of this anchor list.

Leaving aside exclusive peers, when a node starts for the very first time, it connects to the seed peer(s) to get an initial peer list. It then attempts to maintain at least 2 anchor peers (if it successfully handshakes with an attempted peer and doesn't already have enough anchor peers, it can be added to the anchor list).

If an anchor node goes away, it is removed from the peer list and another white peer is attempted to be added as a new anchor. The node also broadcasts its updated peer list.

All other peers are either in the gray or white peer lists. The gray list contains a list of peers that the node has not attempted to connect to and the white list contains a list of peers the node has successfully performed a handshake with.

Whenever a new peer list is broadcast (so from one of the connected peers), the white and gray peers received get merged into the receiving nodes peer list. The node then broadcasts this list with it's connected peers.

Essentially, each node needs to maintain some connected nodes, some nodes known to be online and some nodes not yet attempted to connect to. connections_maker is called periodically to keep these lists healthy.

Lastly, the nodes peer lists are persisted to ~/.bitmonero/p2pstate.bin. This is saved periodically and on shutdown. Upon startup, it is loaded to initialize the peer lists, which puts less reliance on the seed nodes (e.g. if you connect to enough peers from the saved peers, there is no need to use the seed nodes, they become fallbacks).


Is there a way to use CLI wallet non-interactively? I want to run a script using the cli wallet. I know can use the --password and --command arguments to the cli, but sometimes the wallet will still prompt for input (passwords/confirmation etc.). Is there a way to configure the wallet to avoid this when running a non-interactive script?

If you can predict the questions you are expecting the command to require an answer to, then on Mac/Linux you can simply pipe in a list of answers. E.g.

monero-wallet-cli < echo -e "response1\nresponse2"

However, this could be brittle if changes are made to monero-wallet-cli. The best option is therefore to use the Monero RPC interface, and to use something like jq to extract fields from the response.


Will the Multisig Messaging System improve Monero security and performance? I'm trying to understand the incoming MMS (Multisig Messaging System) in Monero. Reading the MMS User Manual, I am thinking that MMS could improve both the security and performance in the next Monero version.

Is this correct?

Currently with multisig transactions, there is a fair amount of user interaction and the need to send files outside of the Monero wallet between participants. MMS moves all the interaction commands into the wallet and all the communication to Bitmessage, thus a secure channel of communication.

So,

  Will the Multisig Messaging System improve Monero security and performance?

It provides a secure way of transferring multisig files between participants, not more generally improving Monero security. Performance wise, it's probably right now slower than other ways (due to the PyBitmessage setup overhead). But it's worth remembering, this is just a first [big] step to overall improving the multisig experience.


can't access monero wallet or run a node Hey guys i bought monero back in the summer and haven't touched it since, my wallet on the monero cli has my stash of monero but i cannot access it because i can't run monerod program on the command line. i get this error
RUNNING MAC OS el capitan 10.11.6 and the version before it. (i just updated..)

heres the error i get:

    2016-Nov-19 02:38:42.802560 Loading blockchain from folder /Users/won/.bitmonero/lmdb ... 2016-Nov-19 02:38:42.802647 option: fastest 2016-Nov-19 02:38:42.802668 option: async 2016-Nov-19 02:38:42.802684 option: 1000 Segmentation fault: 11

Does anyone know how to trouble shoot this? I just downloaded the latest version and tried running monerod too and same result. The monero cli wallet used to ask me my wallet name which i don't know. I do have my passphrase password so im good i guess. Can anyone give some advice on troubleshooting this?? thanks ahead of time!

I just noticed that it was in the .bitmonero directory. i just copied and pasted everything there in that directory to be safe and deleted the directory.  Then i downloaded the latest zip file from moneros site and ran monerod again and it worked. @barrystyle I guess you were correct thank you!

  "There was a hardfork about 2 months ago (hardfork v3); this would be why (more than likely). I'm guessing that your old version has continued past the hardfork blockheight, without it knowing, and you are on an invalid chain." - barrystyle


What does "rings used by outputs spent on Monero on a key reusing chain" mean? Can you help me parse this sentence from the Shared RingDB page in the Monero GUI?

  This records rings used by outputs spent on Monero on a key reusing chain, so that the same ring may be reused to avoid privacy issues.

After reading the help text, I think this refers to:

Outputs that were spent on the Monero blockchain
Rings used on another blockchain that re-uses Monero keys
Recording these rings that were used by these outputs in a database

Is that correct? I need to understand this in order to translate it.

Yes, here is a fuller explanation:

The Monero GUI has a Shared RingDB. This means that when you spend one of your outputs using the Monero GUI, a record will be kept of the ring members that were used for that transaction in the Shared RingDB.

The "Shared" in Shared RingDB means that this database is shared between all wallets on your computer, regardless of which fork they are transacting on. Therefore if you spend an output using your Monero wallet, then when you spend the output again using the MoneroFork wallet, the same ring will automatically be reused because both wallets are using the same Shared RingDB database.

  This records rings used by outputs spent on Monero on a key reusing
  chain, so that the same ring may be reused to avoid privacy issues.

This section is necessary in case the wallet that you used on the other Monero fork does not support Shared RingDB functionality. This section therefore lets you manually record a ring into your Shared RingDB, because it would not have happened automatically.

It is necessary for untraceability reasons to use the same rings on every Monero fork when spending an output that exists on multiple forks.


Though I increase number of cpu, hash rate does not increase I am new at mining. My first experience is with monero with using xmr-stak on supportxmr pool. My problem is that when I mine with 4 cpu I get about 150 H/s. This is the default configs by the way, I mean when I compile the code, in the cpu file there is this:

"cpu_threads_conf" :
[
{ "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 0 },
{ "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 1 },
{ "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 2 },
{ "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 3 },

],

But when I increase these numbers (I got 4 core and 8 process, I am using ubuntu, when I open the system monitor I see 8 cpu) like below, I got more lower (about 60) H/s.

"cpu_threads_conf" :
[
{ "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 0 },
{ "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 1 },
{ "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 2 },
{ "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 3 },
{ "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 4 },
{ "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 5 },
{ "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 6 },
],

This happens when tried it with 5,6,7 or 8 cpu. Why is that? Should not it increase when I increase the number of cpus?

One more question, actually I think I am mining with bot cpu and gpu, how can I check that if I am using gpu for mining or not? Thanks,

Whilst your CPU may have the ability to run 8 threads, it may not have enough cache for mining with 8 threads. With Monero, you need 2MB CPU cache per thread. So for 8 threads you'd need a CPU cache of 16MB available.

If you run more threads than you have cache for, it will slow down the hashing.


Monero CLI show_transfers coming in that are less than X amount Is there a way to see incoming amounts that are less or greater than an amount? When doing show_transfers in it shows everything. How can I filter this?

One of many possible ways:

monero-wallet-cli --wallet-file yourwallet --password 'yourpass' show_transfers in \
    | sed 1,11d | perl -ane 'print if $F[5] < 10'

Prints all incoming transfers less than 10 XMR.

You can omit the sed 1,11d if you also want the header lines.


P2P, RPC and Server related code Is there a recommended source of information as to how Monero interacts with wallets and other nodes?
I'd like to get as much information as possible about the structure of the source code and am having some trouble understanding just from looking at the source code

Daemons (nodes) talk to each other using the epee levin protocol.

https://github.com/monero-project/monero/tree/master/contrib/epee/include/net

https://github.com/monero-project/monero/blob/master/src/p2p/net_node.h

Both the wallet and daemon also expose JSON-RPC servers (so JSON sent over HTTP).

The methods are documented at:
https://getmonero.org/resources/developer-guides/wallet-rpc.html
and
https://getmonero.org/resources/developer-guides/daemon-rpc.html

With source code scattered in various places. The underlying server code is in:
https://github.com/monero-project/monero/tree/master/contrib/epee/include/net

With protocols defined in:
https://github.com/monero-project/monero/blob/master/src/rpc/core_rpc_server_commands_defs.h
and
https://github.com/monero-project/monero/blob/master/src/wallet/wallet_rpc_server_commands_defs.h


How to calculate how much GPU power to mine 1 coin a day for any cryptocurrency? I am trying to apply the system of equation explained in this link, but these equation are specific for monero, how can I calculate the gpu power for any cryptocurrency? this mean, how can I know the values of the constants used in this system of equations (e.g. how they now the value of M is M = 2^64, the constant 10^(-12), etc)

I know you can calculate this with https://www.cryptocompare.com but I want to know the equations they use.

Do these equations change if the cryptocurrency if different than monero?

Many Thanks

Simplest would be the following:

Daily mining estimate = ((your hashrate) / (network hashrate)) * (current block reward) * (number of blocks in a day)


Preventing reuse of a stealth address From https://monero.stackexchange.com/a/4169/4112, from a question asking whether one-time addresses can be reused:

  Secondly, and this is even worse in my opinion, sending to the same stealth address will "burn" all outputs except one.

This makes me wonder. If I, Mallory, buy 0.05 XMR, and start sending around transactions of 0.000001 XMR to random existing stealth addresses (one of which is Bob):

Is this possible?
Which transaction will "burn", and which TXO will Bob be able to spend?

(If this appears to be a vulnerability, requiring the TX-public-key (R) to be unique might resolve this)

Yes, it's possible.
In theory, the person spending it could choose which to spend. This is possible because outputs are referenced by block height & index so even if one-time public key is the same, you could specify one or the other. You won't be allowed to spend the same key twice, because it will have the same key image, but you could pick which one to spend. All other instances of the same key would be burned. In practice, the one picked by the wallet output-picking algorithm. Also, example of what can happen if key image check has a flaw.

  (If this appears to be a vulnerability, requiring the TX-public-key (R) to be unique might resolve this)

That wouldn't resolve it. In fact, you could entirely omit the TX-public key but then you'd have to find some other way of communicating the shared secret to your recipient. Protocol enforces only what happens between outputs (one-time public keys). The sender could announce his TX key anywhere, it doesn't have to be the blockchain but it's a practical way of not losing it, and with it the possibility to recover the funds should the TX key be lost. To understand why, see Stealth addresses: where do they come from?

On a second thought, even if you copied existing P, the receiving wallet wouldn't even see it unless you copied the TX key R as well. The wallet could in theory spend it in place of the other, but in practice it wouldn't even see it. So yeah, requiring the TX key to be unique would resolve it but IMO it would be better to enforce outputs to be unique since we don't put any restriction on TX key R as it is not fundamental - it's just a secret message really.


How to batch-send multiple transactions Trying to avoid paying unnecessary fees when sending multiple transactions (to different people) we wanted to implement transaction batching - sending one transaction with multiple receivers (as it works on bitcoin)
We are now getting this error response: A single payment id is allowed per transaction
which as I understand means that more than one of the receiving addresses are "Integrated addresses" that contains "Payment ID" different from each other

Is it common (or how common?) that wallets (mobile, exchanges etc.) generates only Integrated addresses these days?
Is it common that new Payment ID would be generated for each incoming payment?
If yes, is it still feasible to send multiple transactions in one to save on network fees? Or was it only possible when Integrated addresses and Payment IDs were less commonly used before?

Is this comment from github still true?

you can't send in one transaction to multiple different integrated addresses
you can send in one transaction to 1 integrated address and multiple regular
you can't send in one transaction to the same integrated address (at the moment) if you pass the same integrated address to destinations array more than 1 time

Edit: I just learned that not just Standard and Integrated addresses exist but also Subaddresses which seems to be default(?). I also found this note:

Raw address is still useful for: [...] accepting from senders who batch payouts (like mining pools); in this scenario the sender is paying multiple parties using a single transaction; such transaction has multiple outputs; subaddresses do not work in this scenario

So my question still stays, which address type to expect users would use the most and is it worth it trying to implement batching and group transactions per Payment ID and address type if it would be almost always 1 trx per payment ID anyway?

How to batch-send multiple transactions

CLI: transfer address_1 amount_1 address_2 amount_2...
RPC: transfer / transfer_split destinations array.

So if you want to batch transactions (though this is a moot point given how low Monero transaction fees are), you must use either standard addresses or subaddresses. You can still use a payment ID, but only one.


What signature scheme does Monero use for multisig? How do multisig transactions work in Monero? Does it use a threshold signature scheme? Or is it like bitcoin where there is an M-of-N Multisig Operation?

Initial support detailed here:
How to Use Monero Multisignature Wallets (2/2 & 2/3)
Then arbitrary M/N was added later.


How do I confirm that my address is attached to my wallet? I have created my wallet and have monero running in background, though I am not entirely sure how to tell.  I just know that I try to run ./monerod I receive an error message stating that "Address already in use".  Sine I am new to this I am worried that my wallet is not attached to my address.  If it is not, am I even accomplishing anything by running ./monerod?  I am sorry to keep posting but I had never used Linux until yesterday so large learning curve.  Thanks in advance for any help!

I'll take a guess you are trying to run more than one monerod instance at a time. You can do this if you assign them different ports, otherwise you'll get that address already in use error. You only need one monerod instance running at a time.

With monerod running, open monero-wallet-cli. It will ask you for your wallet file location and the password. Once provided type the command address and it will display the address associated with that wallet.


automatically banned IP addresses I have not banned any IP address manually but I notice with the command ̀bans that some IPs are banned:

76.3.101.16 banned for 86268 seconds
188.232.79.74 banned for 85817 seconds
188.234.251.88 banned for 86220 seconds

Where do these IP addresses come from?

I believe the daemon automatically bans peers for a day or so if they try to connect with an out of date client (pre hardfork), or possibly if they're just on the wrong chain for some other reason.


XMR deposit from Monero GUI wallet is not showing up on Poloniex today I sent 7.42 XMR from my Monero GUI Wallet on my Mac to the Poloniex Exchange. It has been a few hours waiting and the XMR are still not showing up in my Poloniex Wallet. The transaction appears to have completed successfully from looking at the transaction history on the Monero GUI Wallet and the XMR is gone from my Monero GUI Wallet ..any assistance would be most appreciated...

Whenever this happens it is probably an issue on Poloniex' end. That is, your deposit has arrived, but isn't credited properly. If you want to check whether the deposit has actually arrived, but is simply not credited yet, you can use the following steps:

In the GUI, go to the history page and click on details of the transaction that was sent to Poloniex. | For the CLI, enter the following command: get_tx_key <transaction_hash>.
A window should pop up that shows the private tx key. Copy it. | For the CLI, copy the outcome of the get_tx_key command.
Go to this block explorer.
Enter your transaction ID / hash.
Now search the page for Prove sending.
Enter the private transaction key you obtained in step 2 into the first box. In addition, enter the integrated address Poloniex provided in the second box.
Press on prove sending.
If it shows "output true" it proves you correctly sent your XMR to Poloniex, but they haven't credited it yet. It could be that their wallet is temporarily stuck.


Any way to test my pool connection from the command line? I'm on a Mac High Sierra.  I'm trying to get this project to work on my local machine -- https://github.com/cryptonoter/CryptoNoter .  I'm having some issues getting the server proxy to connect to the pool and as a sanity check, I was wondering if there was any way I could test my connection to the pool using traditional Unix command line tools.  I was looking to use XMR pool (https://xmrpool.net/#/help/getting_started) .  It lists some hosts and ports but I'm unclear how I would use that information to test my connection to a pool.

Pools use JSON over HTTP. To test connectivity, you can simply use curl on the mining port advertised in the "Getting started" page of most pools. This will cause an error message on the pool side since you don't "talk stratum", but is otherwise innocuous.

Another possibility, which doesn't use "traditional Unix command line tools" but still uses command line tools is to use a CPU miner (for example Wolf's at https://github.com/hyc/cpuminer-multi) to connect and attempt to mine. This will ensure that the server on the other side is a working Monero pool.


Understanding monerod blockchain sync status I'm currently syncing a full-node and it is taking a long time. I a hybrid SSD/HDD, so I understand that the HDD is typically a bottleneck based on some other threads I searched, but I would like help understanding what I am seeing, because I believe I might not be progressing at all anymore.

I sometimes see messages similar to the following. Is this normal, or will this prevent me from completing the sync?

  2017-Feb-07 20:44:32.252045 [P2P6]IP 112.74.42.7 blocked

The typical sync message I see is as follows.

  2017-Feb-07 20:55:34.805897 [P2P8][5.255.87.139.18080 OUT]Sync data returned a new top block candidate: 1009831 ->1241360 [Your node is 231531 blocks (321) days behind]

The number 1009831 has remained stagnant for over a day, I and I believe this represents how much of the blockchain I have synced thus far. Is this correct? if so, how do I refresh/reinitialize the process without starting from scratch?

Note: I downloaded Monero Core for Windows, 64-bit from getmonero.org/downloads, version 0.10.1.0 Wolfram Warptangent on 2/5/17, so I believe I have the current version (fork?)

First thing you should try is "save" once you get the output

  Blockchain Saved

Input "exit" and wait for it to close (if it takes more than 2 minutes type exit again, it's a slightly common glitch)

Open monerod again and see if that helps.

If not, got to C:\ProgramData (must be accessed through Run) and delete the file bitmonero, this will force you to restart the blockchain, but will clear the glitch. Start monerod and you should be good to go.


If I have to reformat a disk where I'm storing a wallet, if the OS is Ubuntu, which files should be be saved prior to the reformat? I have a wallet on an Ubuntu installation, and I need to wipe the disk.  I have sent transactions from the wallet, so I want to preserve that history.  In any wallet show_transfers will provide the wallet ins and outs. I want to see the to: address and any other information that would be lost forever if I deleted the wallet.  Which files should I save?  Where are they located?  And do I need to perform specific CLI commands, or can I simply drag and drop them into an email to myself or a onto a USB stick for later?

Are the files in a similar location on Windows or Mac OS?

Each wallet will have 3 files, see here for more details.

The files are:

wallet-name - wallet cache, note that there's no extension
wallet-name.keys - the most important one (your keys)
wallet-name.address.txt - only the plaintext address inside, not really needed

If you've used defaults, they should be all in the same folder as your Monero executables. All you have to do is copy these files, and that's it. When re-installing, you copy them back or use the

--wallet-file <path>\wallet-name

argument to tell the wallet where to look for the files and access them from there.


Running private monero mainnet How can I run my own monero ecosystem? I want to have my own blockchain (private Mainnet = Fresh blockchain) , defferent with monero blockchain

You can set up a private testnet according to these instructions

Change the folder names according to your preference, and remove the --testnet flag to use mainnet network parameters.


Questions regarding Monero wallet keys file, RPC transfer method, fee estimate and account index I have following questions regarding Monero wallets.

Using the Monero GUI and CLI wallet, I have created a wallet which generates three files in my file storage. One is a text file, which has the address of my wallet, and another file with .keys extention.

My questions:

What format are the values in the .keys file? I.e. Hex/Base58 or something else?
If I create a new, second wallet, does it have one account at index 0 and default address at 0 index too?
As per the API documentation, query_key will return either the private view key or mnemonic seed. If I want to execute the transfer method, why don't I need the private spend key in the parameters object? Or do I have to do this process using the sign transaction method separately and then call transfer?
How do I estimate fees before sending a transaction?
If I move forward with the concept I've explained in Q2, then should I make a transfer and pass 0 as account_index? Which wallet will be choosen?

The keys file is binary data. It's actually a json string that is encrypted with your wallet password.
Whenever you create a new wallet, it always starts with a single account (account index 0), with a single main address (subaddress index 0).
The wallet RPC only operates with one wallet at a time, so once you have opened a wallet, the keys are loaded and you do not need to specify any key to perform a transfer. query_key is used for other purposes, not transfers.
Call transfer with do_not_relay:true and get_tx_metadata:true. This will respond with the fee in the result object and the tx data you can then use with the relay_tx method.
The wallet that gets used is the one you started the monero-wallet-rpc with or the wallet
file you opened with open_wallet. Specifying account_index:0 when doing a transfer, instructs the transfer to send from the first (main) account of the currently opened wallet.


converting view-only wallet to spend wallet I created an offline paper wallet, then use the view key to create a view-only wallet with "monero-wallet-cli --generate-from-view-key" command.  My test send from an exchange to this wallet works, and show up the balance.  What do I need to do to be able to send from this wallet?

You do the same, except using monero-wallet-cli --generate-from-keys, which will use the spend key in addition to the view key.

You will be prompted for the information when you run this.

See a guide for using --generate-from-keys here: If I saved my view key and spend key can I recover my wallet if my mnemonic seed is lost?


Download local node to USB stick I want to download the blockchain so that I have independence from remote nodes. Because I want to use tails OS , I'd like to keep all data on the USB-Stick. ( booting live with persistence)
Can this be accomplished with a large USB-Stick, and decent write speed?
Current blockchain size is about 73GB. I just want to make sure this is possible, before I buy a USB stick with large capacity.

Can this be accomplished with a large USB-Stick

Yes.

...and decent write speed?

Define "decent". USB 3.1 gen 2 is pretty fast. There are loads of USB drives on the market so you'll need to research carefully which you get.

Current blockchain size is about 73GB...

No, it's more like ~90 GB unpruned and more like ~30 GB pruned. Hence you can focus your attention on speed rather than size. For example, 64 GB will be fine for the foreseeable future if you run a pruned node.


How can someone verify that the source downloaded from github is genuine? When someone downloads the Monero source tree from github, there is a possible risk that this is not what the developers created. This could be MITM attacks, whether between developers and github or between github and the downloader. It could be github being compromised or itself mounting an attack.

As seen in https://github.com/monero-project/bitmonero/commits/master, the Monero developers use GPG to sign commits.

Does relying on github's "Verified" label carry any risk ?
How can I use these signatures to verify locally my source tree is genuine ?

Signed git commits allow a user to verify the source was signed by one of the contributors. In order for this to work, however, several steps have to be taken:

The user must have git and GPG installed. While git will typically be installed already if the user wants to use github, GPG may not be. Make sure to install it from your distribution's packages, or from its source, and verify signatures and/or hashes. Downloading a trojan GPG is not a great way to start.

The user must then import the public keys that will be trusted. Most of those public keys are in the Monero git tree (in the utils/gpg_keys directory). Simplest is to import them all, though some of the contributors are not active any more:

gpg --import utils/gpg_keys/*.asc

GPG now knows those keys, and will use them when verifying a signature.

To verify a commit, or a tag, git will automatically use GPG if told to:

For a commit (here, the last one):

git show --show-signature

For a tag (here, the tag for version 0.9.4):

git tag -v v0.9.4

When you download the tree, or update it, you'll want the first command. It will check the signature for the latest commit. It is implicit that, if you trust the person which signed that last commit, you trust that person to have built upon a tree that was also signed by someone they trusted, so you do not have to check every single commit - there'd be thousands.

If a commit is not signed, it will not say anything about GPG signatures, since there is nothing to check. If a commit is not signed, alarm bells should ring. Most of the Monero maintainers sign their commits, and, for those who don't, fluffypony signs the merge, so you should always see a signed commit by fluffypony as the latest commit. This may change in the future, but the latest commit should always be signed.

If a commit is signed, you will see a couple lines about the GPG signature. One line tells you a signature is present, and tells you the key id that made the signature. You also get an email address, but this is easy to forge, and meant just as an aid. You will want to double check the key which made the signature is indeed one you want to trust: one of the ones you imported in the step above. For instance, fluffypony's current signature id is 1CCD4FCD. Always good practice to verify several sources: when importing signatures, you should see that same key id. If not, then ask questions.

The second line tells you whether the signature was good. A good signature is one that corresponds to the commit being signed. A bad signature is one that doesn't (i.e., either the signature, or the commit being signed, was altered after the fact. Or both). If you do not get a "Good signature", then something is wrong.

Last, you might get a warning that the signature was not made by a trusted signature. This can be ignored, as you did not tell GPG to ultimately trust those signatures. You could do so if you wished, but that goes into editing key properties, so I will leave it at that. Suffice to say that the trust you should afford is whether they signature signing a commit is one of the ones from the Monero contributors, based on matching key ids (note that key ids are a bit short, so it's theoretically possible that a key is forged to get the same key id. I'm not sure how practically feasible this is at this time).

So now you hopefully have it all checked out and your Monero tree shows as being properly signed by the right key. :)

It is important to realize that if those signatures are checked, it is irrelevant to consider where the tree was obtained from. As long as the signature checks out, you can be sure that wherever it was, nobody could have tampered with it, or the signature would not check out. This makes it safe to pull a tree from a seedy place (save any exploits trying to pwn git or GPG themselves by crafted trees, etc, but this is becoming way more unlikely).

This takes care of the second question. With this knowledge, we can now answer the first:

Relying on GitHub's "Verified" label is better than not relying on anything, but worse than checking signatures yourself. Why? Because you are trusting a third party to check things for you and not lie to you, as well as opening yourself to MITM attacks, or GitHub being compromised. After all, what would prevent GitHub or someone compromising GitHub from placing a "Verified" label on the page? Nothing, but checking signatures yourself will uncover the treachery.

Last point: if you're going to pull and build often, there is a script that helps with this, posted by moneromooo, a Monero contributor: https://bitcointalk.org/index.php?topic=583449.msg15315904#msg15315904
This points to a signature, which you can check with the instructions supplied. Since it's signed with moneromooo's signature, which is in the Monero tree, it also can come from any random site, as long as you check the signature to be from that same key. It's a good exercise :)
This script is meant to replace running make. It checks signatures, then runs make if they check out (and complains loudly without running make if the signatures do not check out). This ensures that, if you use this script to build, you can't forget to check signatures and unwittingly run source that was tampered with. Why is this not in the Monero tree? See that post for details.

So the morale of the story is, always verify signatures!


What is the proper Freenode IRC channel for my needs? There are so many monero related IRC channels. Which one should I use for which topic?

In general, you can always start out on #monero, and people will point you in the right direction if another channel seems more useful. However, if you don't feel like checking in the #monero channel first, please use this guide:

For questions and discussions related to the:

use of the monero software as it exists in the release binaries and general discussions about monero, use #monero

mining of monero, use #monero-pools

trade of monero for other currencies, use #monero-markets

discussion of monero activism, use #monero-community

use of the mymonero.com web wallet, use #mymonero

active writing, modification, debugging of existing code in the github repository, use #monero-dev

active research of features that may end up being used in Monero, use #monero-research-lab

general chat with other monerians about things that aren't monero, #monero-offtopic


Monero and warrant canary "warrant canary is a method by which a communications service provider aims to inform its users that the provider has not been served with a secret government subpoena."

Does the monero core team issue a warrant canary ? What about popular services like MyMonero or xmr.to ?

I am not aware of any warrant canary existing at the moment.

Monero (unlike ZCash and Dash) doesn't have any central authority - an organisation, that could receive the subpoena secret order or equivalent. Each node in network is equal to the rest of nodes and nodes are running opensource code that is developed in the open on GitHub. Multiple people monitor the development and each code addition must go through pull request which is reviewed by some core dev and this whole process is visible to everybody. The government would have to target individual developer in their country, presumably core dev doing code review of some malicious pull request. It is quite unlikely but not impossible that this will ever happen.

It is good idea that xmr.to, mymonero etc should create a warrant canary for their services. And probably core devs too, just in case. However unlikely the situation is.


Transaction stuck pending I have a few transactions that are stuck in the pending status (for about 2 days now).
My unlocked balance is near 0, so I cannot transfer any XMR. How can I solve these stuck transactions? What is the reason?

How can I solve these stuck transactions?

If you have a transaction stuck at the daemon, you can flush it with flush_txpool:

$ monerod help flush_txpool
Command usage:
  flush_txpool [<txid>]

Command description:
  Flush a transaction from the tx pool by its <txid>, or the whole tx pool.

Then in your wallet you can rescan_spent.

  What is the reason?

If your domain is not in sync with the rest of the network or is on an incorrect chain, this kind of thing can happen.


Are atomic swaps possible between Monero and other altcoins or Bitcoin? Are atomic swaps possible between Monero and Bitcoin / altcoins? What features are needed to make this work?

Seems like there could be a neat novel way to do it, according to MimbleWimble mailing list post by A. Poelstra.

Note that the s' values need to be re-communicated every time the transaction changes (as does the nonce). Because it depends on the other party's nonce, this might require an additional round of interaction per channel update.
Note also that nothing I've said depends at all on what's being signed. This means this works just as well for MimbleWimble as it would for Bitcoin+Schnorr as it would for Monero (with a multisig ring-CT construction) as it would for Ethereum+Schnorr. Further, it can link transactions across chains.
I'm very excited about this.
Cheers
Andrew

There's also some discussion about it here.


ELI5: How does RingCT work? Can someone explain simply how RingCT can make sure that a user has the specified amounts without seeing it? My mind starts to pause as soon as i see formulas on a whitepaper.

Basic idea can be explained by simple arithmetics.
Now, we're checking that sum of all inputs must be equal to sum of all outputs. For example:

1+2+3+4 = 3+5+2

Literally, "what comes in must come out", and that's how we assert no coins were created or destroyed in the transaction.
And you can see the amounts. If you multiply everything by some random number A, you get the below:

(1A) + (2A) + (3A) + (4A) = (3A) + (5A) + (2*A).
which can be written as:

A * ( 1+2+3+4) = A * (3 + 5 + 2), so we can be sure that 1+2+3+4 = 3+5+2 still holds true.

Trick is, with ringCT, only the sender and receiver know the value of A. All the rest see only the already multiplied values (2A), (3A)... so they can check that there's no cheating, but they don't know A, so they can't tell the exact amounts involved.
Of course, it's not implemented exactly as above, but I think you can get the idea.


monero-wallet-rpc not working for curl I'm using curl to request from the monero-wallet-rpc, but somehow it does not recognize the user/password. I used the following command

  curl -u user:password -X POST http://127.0.0.1:8082/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"getbalance"}' -H 'Content-Type: application/json'

I'm sure that the monero-wallet-rpc  running correctly since I can connect throught it by using a browser, it ask for a user/password and it work.

Try to enable http digest authentication:

curl --digest
     -u user:password
     -X post
     -d '{"jsonrpc":"2.0", "id":"0", "method":"getbalance"}'
     -H 'content-type: application/json'
     http://127.0.0.1:8082/json_rpc


How to run xmr-stak-nvidia on Ubuntu 17.10 I have compiled xmr-stak-nvidia on Ubuntu 17.10 with latest Nvidia driver and Cuda 9.0. If I try to run it, I get some issues:

[2017-10-21 11:18:36] : Connecting to pool xxxxxxxxxx:3333 ...
Driver does not support CUDA 8.0 API! Update your nVidia driver!
[2017-10-21 11:18:36] : Setup failed for GPU 0. Exitting.

Any idea to solve it?

You have to use CUDA 9.
Get it via: wget https://developer.nvidia.com/compute/cuda/9.0/Prod/local_installers/cuda_9.0.176_384.81_linux-run and then run sudo sh cuda_9.0.176_384.81_linux.run. Make sure it is correctly installed. You have to run the script multiple times!

The error seems like you haven't installed cuda 9. Run the install script and read the output. If it's not installed it's likely because you have cuda 8 installed. Therefore remove all cuda files/installs with sudo apt remove --purge nvidia* Then check /usr/local/cuda* and remove it if necessary. After this try to install cuda 9 with the steps from above.

The only way to compile and run it with Ubuntu 17.10 for me was using clang 3.8 and cuda 9.


Is it possible to change the mnemonic seed of a monero wallet? I was just wondering it was possible to change the mnemonic seed of a monero wallet?

No. I actually had to just double-check, as I wondered if changing the wallet password maybe changed the seed, but it didn't.

If you need a new seed (because your existing one is compromised for example), you'll need to create a new wallet and transfer the funds over.


Safely stopping Monero daemon sync (monerod) I finally got the blockchain syncinc good... I am just wondering if there is a special way to stop the blockchain sync so you can do it again later from where you stopped it?

last time I did this, it told me there was a BUS ERROR or something when I kept trying to restart it and when I deleted the lmdb folder and resync from scratch it worked so it seems like stopping in the middle and restarting it corrupted the blockchain maybe?

is there some safe way in linux to stop the blockchain sync before it downloads all blocks and restart later?

The normal way to exit monerod is to use exit. Sending signal 15 (graceful exit) is also a canonical way to exit (for example if the process does not have a console). If it was started as a daemon (ie, with --detach), then sending the exit to the detached daemon is done this way: monerod exit.

monerod uses a database to store the blockchain, so normally it doesn't need anything special to save, as it should always be in a good state. However, an OS crash (or OS/filesystem bug) could cause some disk writes to be lost, causing corruption. monerod by default will use a "mostly safe" database mode, which may be vulnerable to such crashes, but is a lot faster. With the recent 0.11 release, monerod will use a hybrid approach, using the "fast" mode while doing the initial sync (where speed is more important), and switch to the safe method once synced. Therefore, after sync, you should not be able to lose data by database corruption. Note that, of course, if you have flaky hardware, all bets are off.


Its 2017-09 the monero blockchain is 21 GB, what proposed ways are there to reduce this size? The monero blockchain is 21GB as of 2017-09 on version .11

What ways are there to reduce this block size down the line? Wasn't RingCT suppose to make things smaller moving forward?

Is it possible to just take a hash of all the previous transactions and just start from that point in time of the blockchain in order to reduce the size?

You can't simply discard all of the older parts of the blockchain, because you need to be able to verify that every new transaction you encounter references valid outputs created in the past.

The vast majority of a Monero transaction is the ring signature and output range proofs. It may be possible to prune these from the blockchain after a certain period of time, which would dramatically reduce the size of the blockchain.

This is a matter of ongoing research at the Monero Research Lab, which has two full time PhDs working on it. They will report back in the coming months.


Balance does not match transactions I have some incoming transactions that does not seem to add correctly to the balance.

Blurry picture from Monerujo:

(Had to take a picture of the mirror and reverse it manually as screenshot is not possible here)

It should be somewhat clear that there are two big incoming transfers adding up to 210 and three big outgoing transfers adding up to around 108.
Still, the balance is only around 6. How is that possible?

The balance matches if the two incoming transfers are cut in half. That is, counts as 110 and not 210 as expected.
Same problem in official full node wallet - both cli and rpc.
All are synced and latest version.

What can be the cause? Bug or feature?

This may be related to the bug 4117: https://github.com/monero-project/monero/pull/4117

If so, then please ensure that you have the latest version of the app as it should have the fix that prevents that situation. If you are sure that you have the latest version, please update us here.


How are wallet passwords stored? How are wallet passwords stored on the user's machine, and what encryption / hashes are used?

Wallet passwords are never stored on your computer. They're used at the time of input to derive the encryption key which is then used to decrypt your actual wallet data.

Deriving the key from the password is done with CryptoNight. The encryption of wallet data (using the derived key) is done with ChaCha8.

More details can be found here.


Time between pull requests and merging I have noticed that some pull requests pass tests and receive comments like "works for me" or "fixes issue #xxx" from other developers but are not merged for several weeks afterwards.

Assuming one pull request is not waiting (contingent) on another is there a reason for the delay after a pull request has already been reviewed?

Sometimes I see many PRs merged at once but I cannott tell if the reason was a certain period of time or a certain number of PRs that occurred since the last merge.

Is there a certain number of days (or a certain number of accumulated PRs) that need to pass by before being merged to master?

There are no hard rules. fluffypony gets on a merge fest from time to time, and will merge any outstanding PR that's had at least a couple days time to be reviewed. There are not many reviewers though, so he will review what isn't, and merge. Some PRs fixing urgent bugs get in quickly, and other more complex ones, or ones attracting review comments, get in more slowly.


What other coins have similar implementations of Kovri to hide IP addresses from the sender? I just learned about Kovri and it seems to be a new trend for coins to hide the senders IP. What other similar implementations are there for other coins?

The network layer is different from the blockchain layer. This feature is provided by the wallet, not consensus.

The Bitcoin Core wallet includes a mechanism to connect through Tor. Several other forks of Bitcoin offer this feature.

I2P is less-frequently used, since it requires more network participants to use the service. This was first used by Anoncoin.


Why are only 8 bytes of the hash compared with the target? This is the line in xmr-stak where the hash is compared to the target:

if (*piHashVal < oWork.iTarget)
executor::inst()->push_event(ex_event(result, oWork.iPoolId));

However, if you look above, *piHashVal is defined as:

piHashVal = (uint64_t*)(result.bResult + 24);

Where result.bResult is the whole hash (a 32 byte long array), and it's just using the last 8 bytes of it.

Why not compare all 32 bytes to the target? And why is it comparing only the last 8 bytes? Does this mean that the code is little endian only?

It is little endian, and it compares only 8 bytes because it's lazy and if this matches, then the other 24 bytes don't matter (they'd matter if those 8 bytes were equal, in which case you're deemed not to have found a share, where you could have found one). This is probably done for some combination of speed and laziness.


Daemon sync questions I've been letting the daemon sync for a while now, a few days actually, and it's at 80% and now going very slowly forward. About 20 blocks at a time. I understand why this happens, but this case seems out of the ordinary from what I've seen from other questions. My question is: can I expect this to slow down further due to block size? I'm a patient man, but I'd like to know what to expect.

Secondly, I read in another question (Will I need to update wallet and miner after the next upcoming (March 2019) fork?) that the upcoming fork will require a daemon update. Will this involve another full sync of the daemon? I don't want to let it finish only to have to wait on it for another week.

Thank you in advance! Apologies for the likely common questions or any mix-up in terms, I'm brand new to cryptocurrency and a lot of information is going right over my head.

Hi and welcome to Monero.

Syncing:

I am going to make a guess here and assume you are using a HDD. This will sync slower than an SSD so will take a while to sync. You may also be connected to some slow peers. Be patient or download the raw database and perform an import. This may actually be slower though, depending on your internet speed.

Upcoming network upgrade:

This will not require a full new blockchain sync. Once you've updated your software, when you run the latest version, it will upgrade the database to the latest version.


Creating a Monero wallet with D20 dice I have 20 sided dice which I would like to use to create a secure Monero paper wallet.

What procedure can I use to use the dice to create a valid mnemonic
seed?
Is there any advantage of creating a 25 word seed instead of a 13
word seed?

The most straightforward way is probably to generate 256 bits of entropy (a fair 20 sided dice will give you a bit more than 4 bits per roll, so make it 64 rolls), and record all these throws in the custom entropy box at https://moneroaddress.org, then generate a new wallet from this.

You'll have downloaded this page first (it can run standalone from your hard disk, without internet access), and make sure the GPG signature checks out (there are instructions on the page).

Depending on your level of paranoia, you may want to do this on a computer that will never see the internet ever again.

This will get you a 25 word seed. 13 words seed are MyMonero's. The view key is derived from the spend key, rather than from a separate entropy pool. simplewallet still does this for deterministic wallets, but still uses the 25 word system for those. The simplewallet one is best, since MyMonero can import those too.


Where is the ring-signature article by luigi1111 referenced in the multi-part stealth-address steemit post? Luigi1111's post about stealth-addresses, references throughout that how the stealth addresses are spent from would be covered in a follow-up RingCT article. However, I can't find this follow-up article. Did he ever write it?

Also is Luigi1111 Ricardo Spagni or another dev? I'm specifically looking for his follow up, not a link to any paper on the topic.

Did he never write it?

To my knowledge, that follow-up article has not been written.

However, an excellent resource for everything Monero is the Zero to Monero paper (which includes ring-sigantures).

  Also is Luigi1111 Ricardo Spagni or another dev?

They are not the same person.


http://xmr.llcoins.net/checktx.html tool does not work I tried to use the view key in the tool :  http://xmr.llcoins.net/checktx.html

But it does not work, after pushing the button it states that it does not get a connection with moneroblocks

Anyone else this problem?

Thx!

Yes, a couple of people reported it already. Unfortunately, it's up to the moneroblocks site to resolve the matter or to the author of the webpage (or anyone else, really) to change the service from which the site fetches block info.

Alternatively, you can use this block explorer to check any TX, as in the linked example. Just find it first and use the interface to input address and viewkey and it will show you the real output and the amount!


Do I need to sync the entire blockchain before I can send a transaction? I have a cold storage wallet that I have only used to receive payments.

After recovering my wallet with my mnemonic seed, do I need to synchronize the entire blockchain before I can send a transaction?

If I know the block-height when I received my first Monero payment, is there a way I can save time by synchronizing only past that point?

I will try to combine the above answers and my own information into one answer.

  After recovering my wallet with my mnemonic seed, do I need to synchronize the entire blockchain before I can send a transaction?

Once you have your wallet, all you need is access to a monero blockchain with the proper data to send a transaction. Access to a monero blockchain with proper data can occur in three ways, the first of 2 are practical (as in, they exist) and the 3rd is theoretical (as in, it hasn't been created yet).

Possible Now

You synchronize with the network on your own device and connect your simplewallet instance to your own blockchain (the daemon). This means downloading the entire blockchain.
You connect your instance of simplewallet to a remote daemon using --daemon-host host:port, or --daemon-port port, and --daemon-ip ip when you load simplewallet (i.e., these flags are entered on the command line directly after the word simplewallet. For example, in windows the command would look like simplewallet.exe --daemon-host host:port. This allows you to use someone elses blockchain data. There are privacy and security risks when using a remote daemon that are not relevant to your question.

Possible in future, pending implementation

You connect your instance of simplewallet to a light version of the blockchain (includes outputs you own and some random outputs from the chain). Again, this is theoretical, because this type of blockchain data reduction has not been created yet. This is more-or-less what you refer to in the second part of the question, "If I know the block-height when I received my first Monero payment, is there a way I can save time by synchronizing only past that point?"


Where is the code that compute the stealth address A similar question has been asked here [1], but it is still unclear to me so far...

I'm looking for the specific part of computing the formula:

  P = Hs(rA)G + B

I've been lost my way while looking at [2] since the structs and the names of the functions are not well clear and documented.

Thanks!

[1]-Where is the code that generates stealth addresses and matches them with view keys?

[2]-https://github.com/monero-
project/monero/blob/102a51bcd48a3cd2cb794aab7dbe243393f155b3/src/cryptonote_core/cryptonote_tx_utils.cpp#L197

The implementation of that white paper formula is actually P = Hs(8rA || i)G+B.

The 8 is there to force the rA EC point to be in the group of the base point G, even when A is a malicious point which is not in the base point group (i.e. is not a multiple of G).

The || symbol means byte concatenation, i.e. concatenate the bytes of the compressed representation of the EC point 8rA with a varint byte representation of the output index i. The output index is appended so that multiple outputs to the same recipient won't have identical public keys (which would be a disaster, because then they'd also share the same key image and only one of them would be able to be spent).

On this line you'll see a call to generate_key_derivation: https://github.com/monero-project/monero/blob/102a51bcd48a3cd2cb794aab7dbe243393f155b3/src/cryptonote_core/cryptonote_tx_utils.cpp#L393

The generate_key_derivation method calculates the 8rA part using ge_scalarmult to calculate the rA part and using ge_mul8 to turn that into 8rA.

On this line you'll see a call to derive_public_key https://github.com/monero-project/monero/blob/102a51bcd48a3cd2cb794aab7dbe243393f155b3/src/cryptonote_core/cryptonote_tx_utils.cpp#L408

The derive_public_key method takes the already calculated 8rA, uses the derivation_to_scalar method (which in turn uses the hash_to_scalar method) to produce Hs(8rA || i), and then uses ge_scalarmult_base to multiply it by G to get Hs(8rA || i)G. Finally it adds B to get the final result Hs(8rA || i)G+B.

You'll see some confusing methods like ge_p3_to_cached and ge_p1p1_to_p2 etc. This is because the most efficient way of performing different operations on EC points is to convert them into different representations prior to particular operations. For more information, see "Faster Addition and Doubling on
Elliptic Curves" https://cr.yp.to/talks/2007.12.03/slides.pdf


When using Globee as an online merchant accepting Monero into fiat, is it private and safe? over Tor? I was looking into the privacy implications faced by online merchants selling goods from websites, accepting Monero. I'm not sure whether I want to convert to fiat automatically through Globee or take Monero and change through an exchange myself.

I myself use Windows 10 on a PC, so would need something compatible.

My prime concerns are anonymity and privacy and my website would need to take payments and show confirmations to clients who would be paying via Monero. No other crypto or payment method would be used.

My queries are:

Using Globee sounds convenient. Is it safe, I mean by do they log IPs and stuff if they convert to fiat?
Is it more private to use the Globee API to make transactions?
Is it more private to use the API? And can the API be used to send Monero to a wallet only, or can it be automatically exchanged into fiat first?
Does the latest version of the Monero GUI contain Tor support, built-in, as in Whonix or Tails?
I was thinking of using the Monero GUI but what is the difference between that and using the monero-wallet-rpc and monerod, is it relevant to me if i take payments from my website?

Cheers!

Whether something is "safe" or not is subjective. If you use Globee to handle transactions for you, of course you will be sharing information with them. See their privacy policy for the types of information and how it is handled.
Globee is a payments provider. It is designed to make it easier for an online merchant to accept Monero and handle converting to other currencies etc. If you use a third party to handle your payment processing, of course you lose some privacy, as you have to essentially partner with them. If you need your store to have complete anonymity, you will need to develop your own payment processing.
It is more private not to use any third parties. See above point.
Monero doesn't have Tor "built-in" like Whonix or Tails; Monero is not an operating system. It can run fine on computers that do restrict all traffic through Tor (like Tails or your own computed configured as such). It also has configuration options to allow sending transactions over tor/i2p and sync blocks over clearnet. All of this is covered in the README and ANONYMITY_NETWORKS documents.
The Monero GUI is a desktop wallet. The Monero RPC interfaces are for programmatically working with a Monero wallet or daemon. For accepting payments on a website, you more than likely want to make this programatic, thus would code your website to interact with the monero-wallet-rpc. And this is where Globee eases things - it does the heavy lifting - you don't need to run a node or the wallet RPC. You still need some web development skills, but significantly less than doing all your own payments processing.


What happend to my transaction I bougth some Monero on poloniex to send to my paperwallet some months ago.
Today I checked my paper wallet on mymonero.com and there is balance 0.
When I check my transaction on moneroblocks, it says
Confidential Transaction — amounts are not disclosed.
What does this mean? is there hope for my money or is it lost?

This is the transaction:

https://moneroblocks.info/search/faf8a90c43e8f992915a638dd4a544b11f67fe9d0c093907568f9976300d841f

I searched your transmission hash on XMRchain.org and the coins were sent.

Download the entire block chain to a computer.  Check completion status, and when 100.0%, nothing less, reconstitute your paper wallet into a real wallet, using your 25 word mnemonic seed.  Your coins will magically appear.


Same reward for solo and pool mining in the long term? As far as I understand, rewards of pool mining are divided between the miners of the pool. So I will get 1 XMR with 1 kH/sec in about 1 week, if I start mining now.

If I do solo mining, it will take longer to find a block. But in the long term, I should get the same reward, since I will also find blocks. It will only take longer to find the next block.

Is this true?

Solo and pool mining should give out similar reward in the long term, with a few notable differences:

pools typically have a fee, varying from 0% to 2%.
working with a pool incurs some small delays (ie, the pool has to send miners a message telling them about a new block, etc), which can waste some small amount of hashrate
pools have a payout threshold to avoid spamming the blcockchain, so you always end up with small amounts due still on the pool

Note that if you get your monero with small amounts (ie, 0.3 is typical from a pool), you will end up with a lot more outputs than if you get them from solo mining, so spending pool income will cost you more in fees.


Is there a way to get a current option value from within the monero-wallet-cli? After launching the CLI and loading a wallet, you can issue commands; a list of which is available from help and help all.
The help set command shows a listing of options which can be set with set <option-name> <option-value>, however, I can't figure out a way to get the current value of an option. A common pattern of just not specifying <option-value> does not work.
If these runtime values cannot be retrieved from within the CLI, where are they persisted on disk when they deviate from the default?

Just type set and hit return. That lists all the currently set values.


Recommended configuration for wolf-xmr-miner xmr.conf with R9 290 I'm quite new in mining and I am using a R9 290 to mine monero with wolfs miner and Ubuntu 16. This is my xmr.conf file:

{
"Algorithms":
[
    {
        "name": "CryptoNight",
        "devices":
        [
            {
                "index": 0,
                "corefreq": 1000,
                "memfreq": 1300,
                "fanspeed": 65,
                "powertune": 20,
                "threads": 1,
                "rawintensity": 1040,
                "worksize": 16
            }
        ],
        "pools":
        [
            {
                "url": "stratum+tcp://pool.minexmr.com:443",
                "user": "43CvTMvvjn5A5ZvfKRyNt8gkaL6SxRamnWyhx6BGy9mnGRYjPu2m2difVRDA54mqBHGUi5qsjBGWb4zRJvDvn5F6AQJGw9k",
                "pass": "x"
            }
        ]
    }
]

}

With this config I'm getting about 670-680 H/s. What i think is acceptable for this card. If i change the rawintensity things go down or up. But what is the limit? should I put more rawintensity? or should i put it down to prevent overheating the GPU or something? Should any other parameter be changed to improve my configuration?

Please help I'm quite lost. Any help will be appreciated. Thanks in advance ;)

With rawintensity, you're really looking for an optimum. So when changing it a little in either direction gives you less hashpower, you will know you found the right setting. I don't think it will affect heating much, especially if you're running the clocks at stock settings.


Different MLSAG implementations across papers In MRL005, See page9, they describe the signing key for a given ring as Sum public keys + SumInputs - SumOutputs

In zero to monero, Page49 section "MLSAG signature for inputs", they describe it as SumInputs - SumOutputs

Could someone explain the change?

With the scheme in MRL005, The signer could use one key to sign the whole "sub ring" and the verifier could verify Since he has the Public keys, the inputs and outputs.

On Zero to Monero page 43, each key vector in the ring signed by RCTTypeFull consists of public keys for each input, followed by a public key which is the sum of output commitments minus the sum of input commitments.

MRL0005 on page 9 describes almost the same thing, except the public keys for each input are followed by the sum of public keys for those inputs plus the sum of output commitments minus the sum of input commitments.

Since Monero has implemented the Zero to Monero version and not the MRL0005 version, it has been deemed overkill to include the input public keys twice.

This is because the way that challenges (the c-value hashes) work in the MLSAG ring signature forces it to be the case that for one ring key vector, all private keys for all public keys are known.

Thus it could not be the case that the signer has knowledge of the private keys for the inputs but not also the private keys (a.k.a masks a.k.a blinding factors) corresponding to the commitments of those same inputs.


How can we be sure that there is no bias in calculating H? To get H we hash G using keccak, interpret the result as a compressed Ed25519 point, then multiply by 8 to ensure the point is in the subgroup of the base point G.

How can we be sure there is no bias in generating this point from the hash function?
If there was a flaw in keccak, could this introduce a bias in the generation of H?

This question seems to boil down to whether Keccak is suitable for the random oracle model.

This answer on crypto.stackexchange.com should answer your question: https://crypto.stackexchange.com/q/70707/69644

As far as I know, there is no bias when going from the low order group to the prime subgroup.

Sidenote: there was an unrelated attack related to the key image in one of the first papers on ring sig, due to the way that the hashing was completed.

$ I = xH(P) $

Where $P = xG$

Defining the hashing function H as $keccak(data) * G$


Start Daemon Not Working in my GUI? When I start the daemon from the GUI, it almost immediately turns itself off and I get the following in the log. Can someone translate this into layman's terms? Thanks:

2017-Jan-03 19:25:27.197263 ERROR C:/msys64/DISTRIBUTION-BUILD/src/cryptonote_core/cryptonote_core.cpp:231 Failed to lock C:\ProgramData\bitmonero\.daemon_lock
2017-Jan-03 19:25:27.197263 ERROR C:/msys64/DISTRIBUTION-BUILD/src/cryptonote_core/cryptonote_core.cpp:273 Failed to lock "C:\ProgramData\bitmonero"
2017-Jan-03 19:25:27.197263 Deinitializing rpc server...
2017-Jan-03 19:25:27.197263 Deinitializing p2p...
2017-Jan-03 19:25:27.212263 Deinitializing core...
2017-Jan-03 19:25:27.233265 Failed to deinitialize core...
2017-Jan-03 19:25:27.233265 Stopping cryptonote protocol...
2017-Jan-03 19:25:27.233265 Cryptonote protocol stopped successfully

In layman's terms, cryptonote, which is used by monero, is unable to find or create the file .daemon_lock1 and the directory C:\ProgramData\bitmonero2. You can browse to C:\ProgramData to see if the bitmonero directory currently exists.

If it does exist from previously running the CLI version of bitmonero, this problem is likely caused by some lack of permissions where the GUI wallet is not seen as a user that's allowed write access to this folder in the ProgramData directory. From what I understand, only the user who creates the directory has write access3 by default, although I don't fully understand the restrictions set by Windows and monero. I would expect the GUI wallet is supposed have access.

While I don't know exactly where the conflict is, here are a couple of ways you can troubleshoot. Shutdown any monero programs currently running. Check the Windows Task Manager (ctrl + shit + esc) to make sure nothing like monerod.exe is currently running. You can try launching the GUI again and see if it is recognized as a user that has access this time. If it works, then stop here. If not, continue.

If it is still closing with the same error messages, make sure everything monero related is shutdown again. Rename the directory C:\ProgramData\bitmonero to something else like C:\ProgramData\bitmonero-backup. Now launch the GUI wallet which should be able to create this directory itself and you can test whether it launches okay.

Important: If you had previously synced the blockchain and want to restore it, the directory C:\ProgramData\bitmonero\lmdb contains any blockchain data you had previously downloaded and synchronized. Particularly the file data.mdb contains your blockchain data. Shutdown any bitmonero related software first. You should be able to move the old data.mdb from your C:\ProgramData\bitmonero-backup\lmdb directory into the newly created C:\ProgramData\bitmonero\lmdb directory. If the new C:\ProgramData\bitmonero\lmdb contains data.mdb you can delete that before replacing it with your backup data.mdb. Then, delete lock.mdb  and run the GUI wallet. It will create a new lock.mdb file.


How can I build the fastest mining XMR rig? I'm thinking 2 R9-295x2 in quad crossfire configuration. Can anyone tell me what software to use? I don't mind PAYING US dollars for software as long as it's reasonable.  I HAVE NO IDEA HOW TO INSTALL MOST OF THE GARBAGE SOFTWARE ON THE NET. I did get the monerod software running but will I get a decent hashrate with the the AMD cards? I was getting like 40 with my Zotac Amp Extreme 980ti which is just atrocious.

I really believe in Monero and I want to help it succeed by running a full node from home. I would like to at least break even since I plan to accumulate the currency.

In addition to the answer provided, just one note on this:

  I did get the monerod software running but will I get a decent
  hashrate with the the AMD cards? I was getting like 40 with my Zotac
  Amp Extreme 980ti which is just atrocious.

This is because the monerod is using only the CPU, as far as I'm aware. For GPU, there is dedicated mining software like Wolf's, Claymore, or sgminer-gm.

Once set up, please use one of the smaller pools to help decentralize mining. Also, feel free to ask for help on IRC channel #monero-mining on freenode, or on Monero mining sub-Reddit.


How to parse TX_EXTRA_TAG_ADDITIONAL_PUBKEYS from extra Extending this question I am interested in parsing the TX_EXTRA_TAG_ADDITIONAL_PUBKEYS.

Here is how the extra looks like:

ix   value byte
  0     1  01
  1    73  49
  ...
 32   230  e6
 33     4  04
 34     4  04
 35    35  23
 36   167  a7
 ...
161    86  56
162   148  94

where ix is the 0-based index of the particular byte/value in the extra part. In total there are 163 bytes.

First byte (index 0) means next 32 bytes will be the transaction public key (R in the cryptonote paper). This moves us onto position 33 which is where the TX_EXTRA_TAG_ADDITIONAL_PUBKEYS starts.
Next byte is \x04 which,I assume, is as a varint telling us that there are 4 extra pubkeys (we know each is 32B). This means we stop parsing at position 162 (the last byte of the extra field).

This seems to make sense, but I'd like to double check that it's the correct way to parse it.

For the sake of completeness here is the whole hexlified extra field (block 282032, transaction 1 on current stagenet)

0149fa9fbadf1c1a4d054c6cbf918778f869ad02103501d8da7eec8762eb2202e6040423a7b09c4078f5c9ea571e3db6e5406de7c27f5e9ec27c84575ce7ad247baf03c9b9152925ec1a3cb3afde3ba43d42581f032bfd39badb178058f654c74b860df4f3a6d5c3bd7abf9b4c183c5db3d4ae34cd2ebfe77be112ff28f869dc2e560035136f206595a6777ba3be8eda6baf036d425fffe0b8678c4ca5cc853f705694

The structure of your whole extra field is:

01 - TX_EXTRA_TAG_PUBKEY (1 byte)
49fa9fbadf1c1a4d054c6cbf918778f869ad02103501d8da7eec8762eb2202e6 - the tx pubkey (32 bytes)
04 - TX_EXTRA_TAG_ADDITIONAL_PUBKEYS (1 byte)
04 - the number of tx additional pubkeys that will follow (varint)
23a7b09c4078f5c9ea571e3db6e5406de7c27f5e9ec27c84575ce7ad247baf03
c9b9152925ec1a3cb3afde3ba43d42581f032bfd39badb178058f654c74b860d
f4f3a6d5c3bd7abf9b4c183c5db3d4ae34cd2ebfe77be112ff28f869dc2e5600
35136f206595a6777ba3be8eda6baf036d425fffe0b8678c4ca5cc853f705694
 - the 4 additonal tx pubkeys (32 bytes each)

Note that if you try to parse the tx extra tag and it is 00, that is padding and you can skip forward a byte. If it is anything other than 00, 01 or 04, then after you read the tag, read a varint next, and then skip that number of bytes (as indicated by the varint) to get to the next tx extra tag id to read.

The varint integer representation is defined in section 1.2 of https://tukaani.org/xz/xz-file-format.txt


Replay attacks and address differentiation after a hard fork? Just in case there will be some time a XMR Classic fork ...

Are there any technical solutions in the protocol to prevent replay-attacks after a hard fork?

Is there any possibility to distinguish whether a receiver’s address is on an old chain or the most current chain with the most hash rate and greatest block height?

What happens with a transaction is sent to non-valid address?

1) The blockchain can fork at any time. From what I've observed, it only gets as far as 1-2 blocks down a branch before a chain reorganization occurs and the canonical longest branch is restored. Meanwhile, as noted here Why does Monero prevent transactions from being spent without 10 confirmations? it takes 10 blocks before any output is spendable. I believe this is the mechanism that you're asking for.

2) Wallet addresses are their own separate entity, they aren't dependent on a particular chain.

3) Non-valid addresses (with an invalid checksum) are rejected.


How do I obtain a wallet address and pool password for my config file? I'm pretty sure I need to get my wallet address in this format:

  "YOUR_XMR_ADDRESS.YOUR_PAYMENT_ID.YOUR_WORKER/YOUR_EMAIL"

If I enter just my XMR wallet address into the "wallet address" field, and then run the miner I get a "SOCKET ERROR - no login/password specified"

I already have an XMR wallet set up, so I have my XMR address, but the rest of the line I don't know where to find

I'm not really sure how much difference which pool I join makes, but I found this pool on moneropools.com and I wanted to join it. They have a login button but no sign up button anywhere.

I'm not particularly locked in to choosing this pool, but I've checked many others and none seem to give me a worker ID or payment ID.

What am I missing?

Usually you don't need a Payment ID anymore nowadays for new Wallet addresses. The Payment ID is now included in your Wallet address.

Worker ID is a label you can assign freely. Like MyWorker1.

Pool password is usally just x

So the whole string should look like:

"pool_address" : "xmr-eu1.nanopool.org:14444",
"wallet_address" : "46bNjyPKJU4hjT4xJTjzALb6Ck8xZjDBcewwKBp8Uk3P4WE6F21t2gTi5P58WQwJ6dHPUNicGWx6N9fjH55DCBkz4g3S9eQ.MyWorker1/your@email.com",
"pool_password" : "x",

Some pools may have different configurations tho. Some - like XMRPool.net - require you to append a fixed difficulty level to your wallet address. Like your_wallet_address.workerId+difficulty/your@email.com

Please also look at the examples on the page you linked. Scroll down to The moment.

The Login is usually Your_Wallet_Address and the password is your@email.com.


Does a Monero wallet require payment id by default? I'm about to use shapeshift.io and deposit some Monero to get BTC.

Does a Monero wallet (generated through moneroaddress.org) have a payment id by default? I'm running it on simplewallet now and I didn't toy with any options other than refresh/balance.

A payment id is optional, however in some cases it is very important otherwise the receiver may not realise you've sent money to them.

Cases such as sending Monero to an exchange, or situations where someone uses one address to receive many payments, a payment id is going to be necessary.

Generally though, unless the person/website specifically requests a payment id, it's not going to be necessary. General usage shouldn't require one.


How to bind daemon to inbound/outbound listening port on ubuntu I would like to connect simplewallet or the GUI to a remote daemon

In my remote compute instance, how would I bind the daemon to the right ports?

Net service bound to 0.0.0.0:18080

Core RPC server initialized OK on port: 18081

There is the core port and the rpc server port, but they are only accessible on localhost

Also, can you detail any other considerations with regard to privacy that this introduces?

Basically, you have to open the port to outside connections. A tutorial that covers this is on the getmonero.org webpage: https://getmonero.org/knowledge-base/user-guides/vps_run_node

If you are running this from your home, you will likely have to configure your router as well to allow such connections. This will vary by router, but usually just involves forwarding a port to your node.

Finally, make sure you launch bitmonerod with the --restricted-rpc parameter to make sure folks don't mine on your node or anything.


Which two strings I need to get from tx_json, if I want to determine whether output is mine or not? During blockchain scanning I need to do:

P − Hs(aR)G

with every output in order to determie whether it is mine, or not.

Where in tx_json are P and R stored?

The full math you have to do is:

D = P - Hs(8aR || i)G, where i is a varint representing the index of the output. You then check whether D matches your main public spend key or any of your subaddress public spend keys. if it does, the output is destined for you.

The output public key P is in the json as vout.target.key. The transaction public key R is not separately listed, so you'll need to parse the extra field in the json and locate the txpubkey subfield.

The txextra field format is documented here: https://cryptonote.org/cns/cns005.txt

It's the "Tx public key" field mentioned in that document that you are interested in.

Also note that to support transactions with multiple subaddress recipients, there is also a new TX_EXTRA_TAG_ADDITIONAL_PUBKEYS field. If this field is present, then you'll need to check each output against the corresponding additional txpubkey listed in that field.


Querying wallet RPC about whether a wallet is view-only? I would like to use the Wallet RPC API to determine if the wallet I am connecting to is view-only.

I'm thinking about using the query_key command with key_type=mnemonic. Is it safe to assume that if the command fails to return a mnemonic, the wallet is view-only? Or is there a better way?

I'm guessing this is not the best way, because the documentation mentions that older wallets do not have a mnemonic.

I'm thinking about using query_key command with key_type=mnemonic. Is it safe to assume that if the command fails to return a mnemonic, the wallet is view-only?

Yes.

  I'm guessing this is not the best way, because the documentation mentions that older wallets do not have a mnemonic.

It's the only way if you need to check though. The likelihood of such an old wallet I would guess is low due to the fact people actually using monero will have been upgrading.

With all this said, I find it difficult to understand the need to check if a wallet is view-only. The moment you try to spend from a view-only wallet you'll get an error and know then.


What is long-term consequence of "lost" coins? I wonder what is the long term consequences for a digital currency with an obfuscated blockchain.  Suppose some billionaire buys a huge amount of Monero coins, then dies and nobody can recover his keys.  Doesn't this mean those coins are effectively lost for eternity?

It's a different situation than say, somebody that accidentally loses or destroys millions/billions of dollars in fiat cash, since the issuing government can just reprint it.  It's also somewhat different than somebody who owns a huge amount of a digital currency like Bitcoin, that has an open ledger.  In that case, it's possible that private keys can be lost and the coins become forever unrecoverable, but you would at least know that the lost currency exists and which address it exists in.  With Monero, the lost currency would simply be lost for eternity and the amount would be unknowable.

Over thousands of years, wouldn't this eventually start to significantly drain the supply?

I realize that thinking about "thousands of years" is silly - nobody even knows if any particular digital currency will survive in a decade, or if breakthroughs in quantum cryptography will render many digital currencies defective.  But I wonder if anyone has thought about the problem with "lost" coins that seem inherent to any obfuscated blockchain.  Is there any known solution to this?

The question is not really suited for this StackExchange as it incites debate, however...

  Suppose some billionaire buys a huge amount of Monero coins, then dies and nobody can recover his keys. Doesn't this mean those coins are effectively lost for eternity?

The lost coins are effectively removed from circulation if "nobody can recover his keys", yes.

  It's a different situation than say, somebody that accidentally loses or destroys millions/billions of dollars in fiat cash, since the issuing government can just reprint it.

Centrals banks have a habit of creating money out of thin air, yes.

  Bitcoin... the coins become forever unrecoverable, but you would at least know...

Exactly how would you know if someone lost their private keys? You simply cannot, transparent ledger or not.

  Over thousands of years, wouldn't this eventually start to significantly drain the supply?

So supply goes down, value goes up, people start using smaller denominations.

  But I wonder if anyone has thought about the problem with "lost" coins that seem inherent to any obfuscated blockchain.

Per above, obfuscated or not, you have no way of knowing if anyone has lost their private keys.

  Is there any known solution to this?

If there is no problem, no solution is needed.


What is the fee cost of a Loki blink instant transaction and does this fee get burned? Loki just released instant transactions for a cryptonote coin. What is the transaction fee and does this fee get burned when making a loki blink transaction?

The loki blink transactions are 5x the fee minimum fee of 0.04 which equals to 0.2 loki fee to do a blink transaction. 4/5 of that fee is burned and the 1/5 is paid out to miners.

  The base fee is slightly higher than 0.04; it's 0.04 plus a small
  per-byte amount.  The cli wallet has a "fee" command that can spit out
  the details along with a typical tx estimate:

  Current fee is 0.000000192 loki per byte + 0.020000000 loki per output
  Current blink fee is 0.000000960 loki per byte + 0.100000000 loki per
  output Estimated typical small transaction fees: 0.040480000
  (unimportant), 0.202400000 (normal), 1.012000000 (elevated),
  5.060000000 (priority), 0.202400000 (blink)

Eventually blink transactions will be on by default making every transaction on the loki network instant.


Coinhive script to mining I did my sciript to mine a monero.

<script src="https://coinhive.com/lib/coinhive.min.js"></script>
    <script>

        var miner = new CoinHive.Anonymous('KEY');
        if (!miner.isMobile()){

            miner.start();
            miner.setThrottle(0.8);

        }else{

        miner.start();
        miner.setThrottle(0.5);

        }
    </script>

It should use my CPU 80%, but it doesn't.
Somebody know why it doesn't work?

Script is wrong. You dont need "else" condition. Use Only first part of condition "if", like this:

<script>

    var miner = new CoinHive.Anonymous('HERE IS YOUR PRIVATE KEY IN COINHIVE');
    if (!miner.isMobile()){

        miner.start();
        miner.setThrottle(0.8);

    }
</script>

The script is mean:  If miner is NOT in mobile then start.

Also, you will use only 0.8 of one thread. For example, in 4 core cpu it will be avg 18-25%.

Also this script will be not working on mobile devices (recommended)


What are the bandwidth and latency requirements of a miner? What is the total data usage per week? If I were to run a standard 6-GPU miner, what would be the expected data usage, bandwidth and latency requirements? Is this something that could feasibly by run of a cheap 4G plan?

Assuming you refer to pool mining...

This question was partially answered here: Does mining use a lot of bandwidth?

  20 Mb/day download and less than 5 Mb/day upload

So over a month, that's ~750 MB combined. So a 1 GB 4G plan would be more than adequate.

As for latency, the general rule is that you want the minimum latency possible. Any latency in your connection results in losses in mining efficiency. That being said, 4G connections quote latencies in the low 100s of milliseconds, which is probably good enough. This assumes a strong 4G signal, at the least. It's possible you would be okay with a 3G plan as well, as that tends to only ~double the latency. The size of information being transmitted between your miner and the pool at any given time is quite small (much less than even a fairly simple webpage) and so many of the benefits of 4G vs 3G are likely to not be as noticeable.


Is there a way to set a worker name with xmr-stak-cpu? Just for fun, spun up 8 of the tiny VPS droplets running Ubuntu 16.04 from digital ocean.

I had already successfully setup a Monero XMR Pool that was built with node.js from zone117x.

I would like to be able to track the stats for each worker, but as far as I know I can't set a worker name with xmr-stak-cpu like other miners

Ex: -u moneroaddresshere.WORKERNAME

Is there anyway for me to do this with xmr-stak-cpu?
There's no point making a bunch of different monero wallets if the pool is run by me, I just want to see the differences in each VPS's performance

Append it after your payment address with a +

e.g.:

"wallet_address" : "YOUR_ADDRESS+WORKER_NAME"

most stratum pools should recognize this.


Can a xmr proxy mine without a pool? I have several computers at home. I can join all of them through a xmr proxy to be seen as a user but I have been told that to mine I need to join a pool. I know the advantages of mining through a pool but I want to try solo mining.

Can some computers going through a xmr proxy (seen as just one user) solo mine XMR without a pool?

Thanks in advance.

A proxy doesn't mine. You also don't need a pool to mine. A pool proxy needs a pool.

If you want to solo mine with a collection of your own computers, you have a couple of options. You could set up your own private pool or use XMRig on each computer and connect them directly to your own Monero daemon. Both of these options effectively have you solo mining with a bunch of your own computers.


Which is the unit of the global difficulty? I saw the global difficulty of Monero usually is showed as something like 80926050199 without unit, 80926050199.126 with no unit or 80G.

Could someone explain to me which is the unit of the global difficulty and what it exactly is?

The Monero network targets blocks to be mined at 120 seconds, using the difficulty so that hash_rate = difficulty / block_time, ie difficulty = hash_rate * block_time.

Unit analysis gives the difficulty unit to be hashes (H/s times s).

It is the expected number of hashes spent looking for a block.


How do I get a testnet wallet in Monero GUI? I just need a testnet wallet. The testnet wallet can be any.
If this is possible I want to access it from XMR GUI Wallet

You can select Testnet as network parameter in the wizard (setup) of the GUI (under Advanced options). See this part of the Monero GUI guide and corresponding screenshot.
https://github.com/monero-ecosystem/monero-GUI-guide/blob/master/monero-GUI-guide.md#create-a-wallet
In case you choose to use a remote node, make sure to connect to a testnet remote node.


How do I purchase Monero when I live in US? Why is it that many exchanges don't allow me to trade when they find out I live in USA? What good is Monero if I can't purchase or sell?

There are plenty of exchanges that allow you to trade Monero, even if you live in the US.


Maximum transaction weight According to a different StackExchange question, the max transaction weight is half the penalty-free block weight, or was in protocol v8.

Looking into it however, I found check_tx_semantic() which says:

get_transaction_weight(tx) >= m_blockchain_storage.get_current_cumulative_block_weight_limit() - CRYPTONOTE_COINBASE_BLOB_RESERVED_SIZE

Now, get_current_cumulative_block_weight_limit() gets m_current_block_cumul_weight_limit which is the max block size, so it seems there are conflicting ideas.

What is the correct maximum transaction weight in protocol v12?

Note: after bulletproofs in protocol v8, transaction size gets inflated when there are more than two outputs. The new metric is called 'transaction weight'.

What is the correct maximum transaction size in protocol v12?

Quoting the source of get_transaction_weight_limit in tx_pool.cpp:

  // from v8, limit a tx to 50% of the minimum block weight
  if (version >= 8)
    return get_min_block_weight(version) / 2 - CRYPTONOTE_COINBASE_BLOB_RESERVED_SIZE;

Which is used when adding a tx to the pool in tx_memory_pool::add_tx, core::add_new_tx and various other places eventually call through to it as well.

  Looking into it, however, I found check_tx_semantic() ...

If you look a bit more you find that core::check_tx_semantic is only called by core::handle_incoming_tx_accumulated_batch which doesn't look to be called by anything.


How to find out how big the Monero blockchain is? Is there any way we can find out how big the Monero blockchain download size is today? I see old threads dated 2018 which say it's around 50gb, but there must be a URL somewhere we can found out the current size of the blockchain if we wanted to download for setting up a new node.

Thanks in advance for any help.

You can call a daemons RPC get_info method which will tell you the blockchain database size (in bytes) in the responses database_size field.

And you can find a public node on sites like https://moneroworld.com/.

For example:

curl -d '{"jsonrpc":"2.0","id":"0","method":"get_info"}' \
  http://node.moneroworld.com:18089/json_rpc

Response (truncated):

{
  "id": "0",
  "jsonrpc": "2.0",
  "result": {
    ...
    "database_size": 85899345920,
    ...
  }
}

Which you then convert the bytes to GB however you prefer. The above shows roughly 85 GB. Note this is not the exact size of the blockchain, rather the current size of the database on the node queried.


Which is the most efficient way to run a Monero full node on a bare-metal hypervisor? I would like to install a full Monero node on a Proxmox hypervisor. I was wondering what was the best solution (virtual server, LXC container or docker container on top of a VM) and if there were already available pre-settled / trusted solutions.

Thanks to all.

Which is the most efficient way to run a Monero full node on a bare-metal hypervisor?

The term "efficiency" can have a couple of meanings in this context. Efficient usage of resources, efficient time to install etc.

  I was wondering what was the best solution (virtual server, LXC container or docker container on top of a VM)

In the context of efficient usage of system resources, LXC containers are light-weight, making use of the host OS. KVM by contrast is essentially running a whole separate OS. Therefore you could say LXC is more "efficient" than KVM. More answers here though.

What is the "best solution" is very much determined by your intended use-case and what else needs to run on the hardware. However, in the case of simply running a single Monero daemon, I can't immediately see the case for a full-on KVM solution.

  and if there were already available pre-settled / trusted solutions

Trust is a sliding scale. I would say the most trusted setup is to build the daemon from source and install that on whatever system/setup you choose. Failing that, there is also the option of downloading pre-compiled releases from the official GitHub repository and lastly there is a Docker file, should prefer running Docker.


Is monero worth mining in 2021? I was doing a research on building a monero mining rig and found this site where they benchmarked some hardware and their respective hashrate, and also using a online mining calculator it seems that is not worth, taking for example a AMD THREADRIPPER 3990X which according to their site has a hashrate of 64Kh/s and puting those data on the mining calculator it still not worth it:

So my question is, am I doing something wrong in this calculation or does it still worth mine it? Or maybe, is the benchmark values wrong? By the way, I was thinking about using a geforce 970 which is inferior to the threadripper quoted but I didn't found the hashrate for it...

Is monero worth mining in 2021?

It's "worth it" profitability wise if your cost of running is less than the revenue you can make. Thus you need cheap electricity / low power consumption system. This is why many people mine using AMD Ryzen 3000 series CPUs; the hash/watt ratio is high.

So my question is, am I doing something wrong in this calculation...?

If you're going to use some random online calculator, make sure you put in accurate values and double check the calculations yourself. For example, your system power consumption is probably not 1200W, unless you also have a couple of power hungry GPUs in it. Your electricity cost probably also isn't 30c kw/h as that's higher than even NYC; if that really is your power cost, then mining Monero almost certainly will be unprofitable for you.


What is the best hardware wallet for Monero? It appears there is some work being done to support Monero on Trezor 2.0:

https://twitter.com/fluffyponyza/status/814143827384631296
and
https://www.reddit.com/r/Monero/comments/5d24ej/update_on_the_monero_trezor_firmware/

Is there any update on this?  Are there any other hardware wallets that support Monero?

Currently, there are not any hardware wallets with Monero compatibility. Ledger and Trezor have both expressed interest in adding Monero support but nothing is forthcoming, at least that is public knowledge.


How can I create (random) payment IDs? If I want to give a new payment ID to each customer what tools can I use to do so automatically?

Is there a way to generate a (random) payment ID using simplewallet or bitmonerod?

What are the benefits of using integrated addresses instead of a separate Monero address and payment ID?

See Creating a Payment ID

On GNU/Linux just type openssl rand 32 -hex on a terminal.


What is the block header's minor_version for? Minor version is one of the 5 fields in Monero block headers.

The answer here What is the format of a block in the Monero Blockchain? says

"uint8_t minor_version;  // now used as a voting mechanism, rather than how this particular block is built"

This is vague, can someone please clarify and elaborate?

It's used to mark which consensus version the mining node supports. It used to be there was a voting mechanism so that consensus changes would happen when enough nodes would claim the new version, but that was not working well, and deemed too complex, so it's now just indicative.