Why is it I2P (garlic routing) well suited for Monero (compared to possible alternatives)? Could anyone provide a reasonable explanation of how I2P (garlic routing) works, why is it is well suited for Monero (compared to possible alternatives)?

As compared to Tor which is the most popular now:

i2pd serves the same efforts as Tor, but on a more p2p level, rather than relying on servers.
i2p lends itself more towards our workload.
Monero i2p nodes will also act as general i2p routers, which increases the size of the i2p mixnet and thus has an upshot for both.
Tor is optimised for low-bandwidth clients and high-bandwidth exit nodes, whereas i2p is optimised for internal hidden services. Thus, i2p is significantly faster when routing internal traffic.
i2p's floodfill routers (roughly analogous to Tor's directory servers) aren't hardcoded
i2p is a packet-switched network (as opposed to circuit-switched) which makes it more robust
no client-only peers, all peers route traffic and assist in building and running short-lived tunnels
TCP and UDP are supported, which means that things like OpenAlias can still work over i2p


Is Monero mining profitable with 600 H/s? I checked the hash speed of my system. It is around 600 H/s for an intel i7 processor.
I checked this with crypto compare profit calculator:
Hash power: 600 H/s,
Power consumption: 50w,
Electricity cost: $0.1/KWh,
Pool fees: 1%
It is showing me a loss of $0.12 everyday resulting in a monthly loss of $2.12
What is the actual reality of Monero mining at a hash rate of 600 H/s? I am sure people will not mine for a loss.
Thanks in advance

Hash power: 600 H/s, Power consumption: 50w, Electricity cost: $0.1/KWh, Pool fees: 1%

What is the actual reality of Monero mining at a hash rate of 600 H/s?

Clearly you will make a loss unless the price of XMR grows significantly against the dollar.

I am sure people will not mine for a loss.

Correct. Anyone remotely serious about mining will buy hardware that mines significantly faster than 600 H/s and will locate their hardware where they can secure cheap electricity - the combination of which to make it actually profitable.


restore deterministic wallet from specific date (YYYY-MM-DD) - Error: specified date is in the future I am test restoring a Monero wallet.

./monero-wallet-cli --restore-deterministic-wallet

At this point:

Restore from specific blockchain height (optional, default 0),
or alternatively from specific date (YYYY-MM-DD): 2017-04-21
Error: specified date is in the future

I chose to restore from 2017-04-21 onwards.
Obviously this date is not in the future and if I ask my computer, what date it is:

user@hostname:~$ date
Mon May 29 12:28:20 CEST 2017

he agrees.

What's going wrong here?

I know now what the problem is:
monerod is still syncing and above date is "in the future" because monerod did not get until 2017-04-21 yet ...


Private key generation? What are the technical specifications of a private key?

https://getmonero.org/technical-specs/ doesn't say.

https://en.bitcoin.it/wiki/Private_key shows: "In Bitcoin, a private key is a 256-bit number, which can be represented one of several ways. Here is a private key in hexadecimal - 256 bits in hexadecimal is 32 bytes, or 64 characters in the range 0-9 or A-F. "

I need to generate a private key by coin flipping.

A private spend key is a positive integer lesser than l = 7237005577332262213973186563042994240857116359379907606001950938285454250989 (which is a 253-bit integer). The usual process to make a private spend key is to generate a random 256-bit integer and then reduce it modulo l.

The private spend keys are usually represented in one of the following ways:

32 bytes (little-endian order)
64 hexadecimal characters
25 words (mnemonic seed with 1 checksum word)

You can generate the 256-bit number with coin flips, but then you have to compute its remainder modulo l. Also, instead of using a simple coin flip to determine each bit (e.g. 0 for head, 1 for tail), it is better to use double flips to have better randomness in case the coin has a bias (e.g. 0 for head-tail, 1 for tail-head, ignore head-head and tail-tail).


How to send monero from my cold storage? I have a Monero paper wallet and want to send money from it to another address. What's the easiest way to go about this?

The currently easiest way is to restore your seed using the CLI wallet, spend what you want to spend and immediately send the remainder to a newly created cold storage. See here for some more considerations.

To make syncing the wallet faster, you can start the CLI wallet with --restore-deterministic-wallet --restore-height <h> arguments, where <h> is the block height from which it will start the refresh. If you know the approx date when you sent the first funds to it, use a block explorer to find the No. of block that was a bit before the time you sent the funds and use that number as the starting height. While this will speed up the initial sync significantly, be absolutely sure you use a block height from before your funds came, otherwise you won't see them in that wallet.

PS easier methods are soon to be avaliable. The Trezor firmware is in testing phase, and the new point release will provide option for offline signing, meaning you'll be able to spend from cold storage without ever exposing it to an online computer.


Having trouble getting Bitcoal network to accept submitblock EDIT: I think this is because it was upcased? I downcased the blob and found another block, now my wallet shows a locked balance!

I am solo mining on a easy coin now to learn how mining works, bitcoal.

I get to the point where I find a valid share and generate the submitblock blob, submit the blob to the bitcoal daemon.   The daemon returns me a status of "OK".  But when I check my wallet, it shows 0 balance and 0 locked.

Here is an example of a bitcoal block I mined. At height 433740.

coal block found! 433740 -28119367 03007CCF3A5D0E0C2629D7A6FA046D0F3F4B4B363B44DED73B7519FEE708E9B20F8B0100C3FFD3D4057CCF3A5D0E0C2629D7A6FA046D0F3F4B4B363B44DED73B7519FEE708E9B20F8BE37501000101000000230321001C57F488BC6AD235A27239A2D91ECEED9BFBD4AE316C22FA26FC5B113AE878D801DABC1A01FFCCBC1A088FB714029C0CCF1E29293042DDCF6ED1E734DA39A3EC20150CE3CFB0CF6D9D8934A739AB80897A0257095EDC8FF1598342C38828B487BD85FF8AFB0C328C8E10CC5989DCF02F885D80BBB021023D0A860CD5E20EA1BA808CFD677062D92DDFF8E5A2FDB31F326D18F9DA352B0E8090BCFD0202D169AC87FE133B54C3B0E225BC0677F88BF42C314FB30F2472C275AD246AD07180D0ACF30E0213F2537D16C0E4DB0A9631E8FAB3803320D032EDBF3035DEBB1D5A206B2CD8C98090DFC04A02832574F33121DAF1D6653FD9E445D7FA3B57D33302B55576F5AB55E1D72A2CD780C0EE8ED20B027D76D2F2144CA87760731634851767E97862D43BA2BF82FEE3047E71917C2D7980C0CAF384A3020205C616F21D39C600B7BC14D63541AC832D37BA798492371A208FB0234CBB883D340143490B83021678991C121C7548D187003EAC74FBACA9FA01D71F2F177D1ACC56021100012679701CAE6A00000000000000000000

Here it is on the block explorer http://democats.org/blockchain/block/?name=bitcoal&hash=433740.

And here is me submitting it to the daemon.

curl -X POST http://127.0.0.1:7701/json_rpc -d '{"jsonrpc":"2.0","id":"1","method":"submitblock","params":["03007CCF3A5D0E0C2629D7A6FA046D0F3F4B4B363B44DED73B7519FEE708E9B20F8B0100C3FFD3D4057CCF3A5D0E0C2629D7A6FA046D0F3F4B4B363B44DED73B7519FEE708E9B20F8BE37501000101000000230321001C57F488BC6AD235A27239A2D91ECEED9BFBD4AE316C22FA26FC5B113AE878D801DABC1A01FFCCBC1A088FB714029C0CCF1E29293042DDCF6ED1E734DA39A3EC20150CE3CFB0CF6D9D8934A739AB80897A0257095EDC8FF1598342C38828B487BD85FF8AFB0C328C8E10CC5989DCF02F885D80BBB021023D0A860CD5E20EA1BA808CFD677062D92DDFF8E5A2FDB31F326D18F9DA352B0E8090BCFD0202D169AC87FE133B54C3B0E225BC0677F88BF42C314FB30F2472C275AD246AD07180D0ACF30E0213F2537D16C0E4DB0A9631E8FAB3803320D032EDBF3035DEBB1D5A206B2CD8C98090DFC04A02832574F33121DAF1D6653FD9E445D7FA3B57D33302B55576F5AB55E1D72A2CD780C0EE8ED20B027D76D2F2144CA87760731634851767E97862D43BA2BF82FEE3047E71917C2D7980C0CAF384A3020205C616F21D39C600B7BC14D63541AC832D37BA798492371A208FB0234CBB883D340143490B83021678991C121C7548D187003EAC74FBACA9FA01D71F2F177D1ACC56021100012679701CAE6A00000000000000000000"]}' -H 'Content-Type: application/json'

"{\"id\":\"0\",\"jsonrpc\":\"2.0\",\"result\":{\"status\":\"OK\"}}"

This is because I was submitting an upper cased hex blob. You must submit it as lowercase.


Updated dynamic fee calculation? I'm hoping to find a current reference that explains how the dynamic block size/fee calculation works? This link has a nice explanation, but a community member on reddit suggested it was out-of-date (and the numbers computed certainly don't match up with today's ultra low fees). There's another excellent reference here that explains the block size penalty, but I think it may also be out-of-date, or at least I don't quite understand how to calculate the fee from just this information... especially during "normal" operation where there is no penalty.

It also seems like this would leave the Monero vulnerable to moderate spam attacks given the current medians block sizes are so far below 300 kB... I know the Monero team is pretty on top of these things, so assuming they have implemented additional safeguards?

I think ultimately I'm trying to figure out:
- how does Monero set the fee during normal operation?
- what safeguards (price disincentives) are in place to protect the blockchain against a spam attack?

Thanks for any ideas! I apologize if there is an answer floating around to this question, but I couldn't find it... and trying to interpret the source code is not going too well.

I can only provide a partial answer. I had a similar question How are fees computed? and was linked to the same note on fees that you mentioned. I ultimately found the note to be out of date as well.

It looks like the only description available is to read the code. I believe the fee is being computed in Blockchain::get_dynamic_base_fee and the method seems to depend on whether the version is using fee per byte or per kilo-byte (I believe currently the former is the case).

However, you should be aware that this is not actually fee per byte of transaction size! I guess that would be too easy. It's in fact a based on transaction weight. For most transactions weight = size, but for bulletproof transactions with more than (I think) two outputs, it is computed in a different way. For these transactions weight > size. My guess this is to make sure that these transactions are not too cheap.

It's been awhile since I looked at that, so I forget the exact calculation. If you find it please share.

Edit: Based on the comments below, I believe the weight is computed as follows.

Let s be the size of the transaction, and o be the number of outputs, and w be the weight.

If o < 3 then w = s, otherwise
Let b = 368
Let l be the size of the vector L associated with the transactions bulletproof*
Let c = 0.8(b * 2^(l - 6) - 32(9 + 2l))
Then w = s + c

*Sorry I am not sure what the L vector is, but it seems to be associated with number of outputs, maybe 6 + log(number_of_outputs)?

Also, basically the base fee per byte is computed as:

(r * 3000 * 2^64) / 5*(300000^2)

Where r is the current block reward. The calculation is provided that  median block size is < 300000 bytes which I believe normally is the case.

Please, if this is wrong correct me. I just thought it might be nice to have written up somewhere, so people dont have to go through the code everytime.


Multi VPS servers with monero installed for remote connections. Monero Gateway Redirection? I have a few VPS servers with monero installed. I use these servers when connecting from my desktop or mobile wallet. Every now and then they fail for whatever reason and require a restart. Is there a way to setup some type of gateway server that just redirects to a random VPS server I own when connecting to the gateway? What is this called exactly where you connect to one ip but that ip just redirects you to another ip at random?

I want to be able to goto something like this:

2.2.2.2/get_info

but gets redirected to one of these at random:

3.3.3.3/get_info

4.4.4.4/get_info

5.5.5.5/get_info

you can setup a load balancer using tomcat or nginx.
round robin will choose a random host to forward your request to.
you can setup what's called a health check to add and remove hosts as they fail. a health check makes a request to your hosts behind the load balancer to for example /get_info, if it doesn't receive a response then it know it's not healthy.

You'll have to do a lot of this research yourself on the exact steps. This is definitely outside the scope of monero.


Is it possible to check which of the last blocks is mined by me? Input: monero_addr - address of my wallet that I specified in my miner's config.

Output: [2045661, 2045650, 2045630, ...] - block's heights that was mined by me.

In which direction should I move to get this result?

Using the monero-wallet-cli this is a breeze.

Start the wallet with your miner wallet:

monero-wallet-cli --wallet-file miner-wallet

Then execute:

show_transfers coinbase

Which will list all coinbase (i.e. block reward) transfers. The first column in the output has the block height.


What's the smallest transaction you can send? For example, what if I want to send a person 0.001 USD in Monero to his wallet, would it be possible?

You can send as little as 1 "piconero" (1 atomic unit). This makes no economic sense of course, as the fee will be at least 2 billion times larger (depending on number of inputs).


How can I create a new Monero genesis block? Does anyone know how Monero's genesis block was created (and how I can generate a new one)?

Background information: I want to fork Monero for use as part of a school assignment (there are other things involved but this would be the core).

It's really easy with the Cryptonote 'reference' implementation, just build with no genesis_tx and then run the daemon with --print-genesis-tx but Monero seems to have been forked from Cryptonote before this was added.

I know I can easily build a private testnet (and even call it mainnet) and use the same genesis block but with a daemon on different ports, etc. But I don't think that will get the same level of appreciation from my professor (and I may as well just use the Cryptonote reference in that case).

Edit: Tried to comply better with Stack Exchange guidelines (I'm new).

Go here and screw around with the genesis tx and nonce. You probably also want to change other stuff (network id) to avoid contacting live Monero nodes.

I've helpfully decoded the genesis tx so you know/can guess what to change:

version
01
unlock time (varint, height, 60 here)
3c
vin length (value in)
01
vin #1 (of 1) type (gen, 0xff)
ff
height for gen input
00
vout length (value out)
01
output #1 (of 1) amount (17592186044415 as varint)
ffffffffffff03
output #1 type (to key, 0x02)
02
output #1 key (32 bytes)
9b2e4c0281c0b02e7c53291a94d1d0cbff8883f8024f5142ee494ffbbd088071
extra length in bytes (varint, here 33)
21
extra pubkey tag (0x01)
01
transaction pubkey (32 bytes)
7767aafcde9be00dcfd098715ebcf7f410daebc582fda69d24a28e9d0bc890d1


When sending monero to an address. Does my wallet keep track of the history of where it was sent to? Does the monero wallet keep track of where I sent my coins to? Say someone found all my private keys for my monero wallet. Can they open the wallet and see where I've been spending my coins? This is assuming they have a profile of these addresses I sent to already.

The wallet cache stores the metadata of outgoing transactions (destination address, secret transaction key, transaction note), which is not stored in the blockchain (see also What data do the wallet files contain? for a list of what else is in the wallet cache file).

To have access to these informations, an attacker would need to get the wallet cache file and its password.

If the attacker only gets the private spend key or mnemonic seed, he will have access to the funds in the wallet, but he won't be able to recover the addresses where the wallet sent transactions to in the past.


Security differences between using Monero on PureOS and QubesOS The new Librem laptops available for purchase with Monero offer an option to add a QubesOS operating system to any order. For Monero use exclusively, what are the security differences between PureOS and QubesOS?

In general, QubesOS offers greater security than PureOS. With QubesOS, programs are run in their own virtualized environment. This could offer greater protection if the computer was infected by a malicious program. Here's a good summary comment.

Note that you can install QubesOS on a Librem device with any USB. You do not necessarily need to buy the USB stick from Librem directly.


Why does it take about 5 minutes for a transaction to register on the network? I've noticed that a transaction will not register in a receiver's wallet for about 5 minutes after being sent. In Bitcoin, it is registered immediately and then you wait for confirmations. My question is not about waiting for confirmations in order to unlock balance, but about the simple "registering" that a transfer was sent. Does anybody know why we have this delay?

Transactions that are not yet included in a block are stored in the memory pool. When you submit a transaction to the network, you'll almost immediately see your transaction stored in the memory pool on a blockchain explorer, e.g. http://explore.moneroworld.com . Average block time is 2 minutes, so the newly created outputs will be unlocked roughly after 22 minutes (for 10 confirmations).


I run a full monero node, is there a way to see my node on the network? Can I mark my node some how? I'm running a monero full node. Is there a way to see my node on the network? Is there a way to label my node that others can also see it. Say i wanted to label it as: "Free Open Monero v13 Node"

No. Nodes are just identified by IP addresses.


How easy is it for merchants to accept Monero payments and convert them into fiat? As a merchant I want to limit risk exchange rate fluctuations.

How easy is it for me to convert Monero I receive into my local fiat currency?
How long would the currency conversion typically take?
What amount of slippage might I expect from the conversion based on current liquidity levels?
How does any currency slippage compare to the savings I might receive from accepting Monero instead of paying fees to a typical credit card processor?

Currently their are not any liquid exchanges that will convert Monero into fiat directly, although that is likely to change in the future.

You can either

Send Monero via Shapeshift.io or XMR.to which will send Bitcoin to a fiat payment processor such as Coinbase of Bitpay.;
Convert Monero into a fiat equivalent such as USDT (https://tether.to/) which is available on exchanges such as Poloniex.

Depending on confirmation times, I would approximate:

Converting XMR into fiat via Shapeshift.io or xmr.to to Coinbase, Bitpay or equivalent can easily be completed in 10-20 minutes
Conversion to USDT can happen as soon as you can get your Monero to an exchange (such as Poloniex). The number of deposit confirmations required will depend on the verification level of your account.

I would expect fees to total under 2% (depending on volume) for the xmr.to/shapeshift.io to fiat option and under 1% for the USDT/tether option
The fees will be equivalent or slightly less than the rates chaaged by most credit card companies, without the risk of chargeback and with far superior privacy for your customers.


Monero wallet on Linux Elementary OS I installed wallet Monero on Linux  Elementary OS and I have a problem. I don't have app in my applications. I have only folder /home/user/Monero/
How can I use my wallet if I don't have app?

It is my first time. I am learning about cryptocurrency.

Currently, the GUI isn't distributed as an app. Thus, it has to be started from the terminal. As Linux Elementary is based on Ubuntu, simply perform these steps:

Browse to the directory monero-wallet-gui is located.
Open a new terminal.
Type -> ./start-gui.sh

You should now be able to use the GUI.


Daemon blocks remaining, Daemon is syncing but nothing happening? Finally I have created my Monero wallet, however syncing is going on forever, there is nothing happening. Is this normal?

There are two main possible bottlenecks: your internet and you disk speed.
Check how loaded your disk. If it's HDD and most time load nearby full, you can try to download blockchain on SSD (after that you can move it to HDD because you'll not download entire blockchain so it won't take as many time as first).


What is a scenario when the other members of the ring signature would have multiple keys? Looking at the algorithm for ring signature, n members of the ring can have m keys associated with them.

What is a scenario where the other members, not the signer, would have multiple keys associated with them.

In other words, why would the decoys have multiple keys associated with them?

Edit:

Possibly:

We assume that if a tx has multiple outputs, then all of those outputs belong to the same person. So when we select the decoys, we take all of those outputs and say it is one person's set of keys.

There is only ever one public key per ring member. Transactions are never referenced by ring signatures.

There is one ring per real output being spent. However, it is not the case that there is a separate ring signature per ring. There is a single MLSAG ring signature that signs all rings as part of the same signature.

Therefore, when the MRL-0005 document says "Suppose that each signer of a (generalized) ring containing n members has exactly m keys", "n members" refers to public keys and "m keys" refers to private keys. So if you were spending 3 inputs at a ring size of 7, you'd have n=21 and m=3.


Why is monerod not connecting to any peers? I've downloaded the latest Monero full node (0.10.2.1) for Linux (Ubuntu). When I run monerod from command line, I get the following error:

Failed to connect to any of seed peers, continuing without seeds

Using the log output, I see it keeps trying to connect to 213.167.231.2 and fails.

Any ideas for a fix?

Note: I've disabled all the firewalls on this box and punched port 18080 through the router firewall.

Thanks!

There is a problem with the seed nodes at the moment.
This is fixed in the coming release, hopefully in the next day or two: https://github.com/monero-project/monero/pull/1879

In the meantime, you can supply a node to start from:
./monerod --add-peer 107.152.130.98:18080 --add-peer 212.83.175.67:18080 --add-peer 5.9.100.248:18080
(this is simply adding the first three fallback peers to the command line)


Steps to generate a job for miners using a mining pool I'm working on building a mining pool from scratch and it'd be really helpful if someone explained the steps to generate a job for miners. Let's say I have 10 miners connected to my pool, what are the steps to generate a job for each of the miners.

I know that the first step is to get the block_hashing_blob from the monerod RPC.

Your pool first calls get_block_template and reserving some space by making use of the reserve_size parameter.

You then take the returned blocktemplate_blob, convert the hex data into binary, and modify the data at the offset provided by the returned reserved_offset parameter. This is where you will write your per miner, miner ID for example. So assume you asked for 4 bytes of reserved space, you have 4 bytes you can change at this reserved offset.

Now you have to create a hashing blob for the miner from this data. To do this, you need to make use of two Monero functions: parse_and_validate_block_from_blob and get_block_hashing_blob. The former converts your binary data to a C block structure and the later gets a hashing blob of the block. To use these functions you have to be in a C/C++ environment as they are not exposed via the RPC. Alternatively, you would have to re-implement them in your chosen language.

get_block_hashing_blob is the notable function here and what it does is return the binary data (a blockhashing_blob) of:

The blocks header data
Appended with the blocks merkle tree root hash
Appended with the tx count

Lastly, once you have your binary blockhashing_blob, you convert it to a hex string and send to the miner.


stratum connection interrupted problem stratum connection interrupted problem always present and no yay or accepted. Im using GTX 780 and my hash rate is insanely high.You can refer to the pic below, hope someone can help me solve this problem

The incredible high/impossible hashrate suggest something went wrong indeed.

If you have overclocked your graphics card, then revert to the original factory settings and try again.

Also you should try again with a lower amount of blocks/threads and slowly increase it.

Finally you should also update your drivers to the latest version, if your not already on latest one.


Ubuntu 16.04 LTS 64bit systemctl doesn't work I installed monero on my server and i can run it without any errors, but the systemctl command won't work for me. This is the status:

 ● monero.service - Monero Node Daemon
   Loaded: loaded (/etc/systemd/system/monero.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Do 2017-05-11 16:28:59 CEST; 5s ago
  Process: 16477 ExecStart=/opt/monero/monerod (code=exited, status=1/FAILURE)
 Main PID: 16477 (code=exited, status=1/FAILURE)

Here my /etc/systemd/system/monero.service  file:

[Unit]
Description=Monero Node Daemon
After=network-online.target

[Service]
ExecStart=/opt/monero/monerod
User=root
WorkingDirectory=~
GuessMainPID=no

[Install]
WantedBy=multi-user.target

After run systemctl start monero.service the service run for ~10 seconds before exiting

Try the following:

Type=forking
ExecStart=/opt/monero/monerod --detach


What is the `~/log/dr-monero/net` directory? When I stop the monerod daemon, I can remove the ~/log directory. As soon as I restart the daemon process, it gets recreated. I don't what this cluttering up my home directory, so:

What is it?
Why is it there?
How do I get rid of it (i.e. move to a hidden directory)?

Update: I think this was previously stored under ~/.bitmonero, but as of recently, I suppose with the 0.10.1.0 release, the location seems to have moved?

Dr. Monero was a logging scheme that Rafal "rfree" Freeman created. It was meant to provide statistics and data useful for improving the wire protocol. Unfortunately it was never really completed, and just ended up creating a third logging sub-system.

We're in the process of removing all three logging sub-systems and replacing them with a single known-good library (instead of rolling our own), so this will eventually go away. In the meantime you can either ignore it, or remove it, but it'll be re-created.


Is there a way to check if wallet sees monerod over the LAN? I have a monerod daemon running on a PC (IP 192.168.1.150) and a wallet running on another PC. Sometimes all works, sometimes not and shows:

Error: wallet failed to connect to daemon

I use these commands to launch the programs:

./monerod --rpc-bind-ip 192.168.1.150 --confirm-external-bind

./monero-wallet-cli --daemon-address 192.168.1.150 --wallet-file walletname

So, is there a way to check the connection between daemon and wallet?

With the new 0.13.0.4 Beryllium Bullet version of the daemon and CLI software, all is working fine under Linux. No more issues.


Command to transfer XMR from a subaddress via the monero-wallet-cli command? What are the transfer options to send XMR to an address using one of your subaddresses?

I just imported my private spend key via the cli. Now I have a bunch of untagged subaddresses with coins in them. Do I need to first tag them before I can use them? How do I tag them?

You don't need your addresses to be "tagged".

Quoting the help:

[wallet 456789]: help transfer
Command usage:
  transfer [index=<N1>[,<N2>,...]] [<priority>] [<ring_size>] (<URI> | <address> <amount>) [<payment_id (obsolete)>]

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

So just transfer like:

transfer index=N destination amount

Replacing N with the index of the subaddress you wish to send from, destination with the destination address and amount with the amount you want to send.

Per user36303's comment, it's worth also highlighting that if you need to send from a subaddress that's in an account other then the first main account, you will first need to switch account using account switch <index>.


AUD straight to Monero I'm new to the community - just wondering if there are any ways to purchase Monero with AUD? (Australian dollars) Any exchanges offering? What do you think the chances of them offering it in the next 12 months are? Thanks in advance!!

Lacking a direct answer, the fastest 2 step option is to buy bitcoin and then use https://shapeshift.io to trade bitcoin for monero.

http://poloniex.com might give you a better price than shapeshift and you can buy much more as shapeshift's limits are small. You still have to have bitcoin first and send it to poloniex.


Transaction fee using RPC for non ringct transactions How to get the fee of a transaction using the daemon RPC for non ring-ct transactions ?

For RingCT transactions, I can get the fee using the method /gettransactions and the field txnFee in the response, but there is no such field when version == 1. Example:

curl -X POST http://127.0.0.1:18081/gettransactions \
-d '{"txs_hashes" : ["5dcaf643eff22b7246d9707c99b974893b35eded63f1841442a88a0e951c6c1c"], "decode_as_json": true}' \
-H 'Content-Type: application/json'

The fee is the sum of inputs minus the sum of outputs.
For ringct transactions, those are unknown, so the fee is stored separately, and added to the commitment check when verifying the transaction to ensure the fee is what was really used.


An example of transaction with at least two subaddress destinations Could you provide an example of already mined transaction that has at least two outputs leading to a non-change subaddresses?

If my understanding is correct this should be visible from the blockchain, where the extra field will include the ADDITIONAL_PUBKEYS tag.

This is such an example transaction on stagenet where I sent 1 XMR to a subaddress and 2 XMR to a standard address (and the change goes back to myself):

https://community.xmr.to/explorer/stagenet/tx/bd82785dc41a608b9796eeca31ba6b4b8d7a9c194691c136e2baf916c66fa98a

The tx_extra contains the following information:

01                                                                # standard tx pubkey tag
3b3625cfb65842fc3e445245908f9b171b4e1899543fb70d85424fd9b1c95eb9
04                                                                # additional tx pubkeys tag
03                                                                # number of additional tx pubkeys
fc1776e142ade7a4ad5e00bd27a480013f06c45d5ac80807d3609500bdd26cf2  # additional tx pubkey 0
98705ffac66ef63d67cb5872b6fc222879902edbe7a3ccb83278c82a5fad097c  # additional tx pubkey 1
cfc1d89d5e5fba53a68a238239ebd5f60d60327d22da3ee95a9c070674ea525a  # additional tx pubkey 2

Note that no one can tell which of the three outputs are the change, the subaddress destination, or the standard address destination. Also note that the standard tx pubkey is used for generating shared secrets for destinations using standard addresses.


How can I connect remotely to my own node for other devices? Basically just wondering how I would be able to connect to a remote node that I run on my computer for other devices to use as my main node.

Assuming you're using the CLI tools (since the machine should be up all or most of the time), you should start the daemon process monerod with the --rpc-bind-ip option, and then the IP address of the machine, e.g.:

$ monerod --rpc-bind-ip 192.168.0.100 --detach

Then any other device on the same 192.168.0.* network will be able to point to your internal node, e.g.:

$ monero-wallet-cli --daemon-host 192.168.0.100 --wallet-file ...

If you're not using the CLI tools, but the Monero Wallet GUI instead, you can still pass that --rpc-bind-ip option on the Settings page in the "Daemon startup flags" field. Equally, from other machines, you can point to the remote node in the "Daemon address" field (also on the same Settings page).


Why do incoming transfers appear in my wallet later than in block explorer? ok, so I'm running the standard monero client ( simplewallet ).

Twice now I have received incoming transfers from shapeshift.io.  The shapeshift interface notified me at the moment the xmr transfer was sent and provides a link to a block explorer to view the tx.  So clearly the tx has been broadcast to the network.

Yet nothing appears in my monero wallet for 1-2 minutes.

I tried the balance and the show_transfer commands.

I see that there is an incoming_transfers command, but I did not try it until after the tx already showed up.

I am used to bitcoin and other altcoins get getinfo, getbalance, list_transactions, etc all show incoming transfers as soon as they are broadcast/received.

It's kind of spooky not to see the coins immediately.  Also, I think it would be especially annoying during in-person exchanges.

"hey i sent you the coins".

"hmm, I don't see them."

"still don't see them".   ( 30 seconds later )

"are you sure you sent to the right address?!!".  ( 30 seconds later )

etc.

more than likely there is a way to see them immediately and this is me being a newb, but I wanted to raise the question because I think it is a rough-edge that newbs will bump into a lot, so maybe the devs can address it in the software somehow.

The explorer is likely listing the transasctions that are in the pool (ie, not yet mined). Recent simplewallet will show those with show_tranfers, as "pool".

Bear in mind that a transaction in the pool which hasn't been mined is not yours yet. If all goes well, it'll be yours soon, but you should not trust a pool transaction yet for large amounts if you think the other party might try to scam you.


tx-notify being triggered 2 times per transaction I'm using tx-notify with the monero-wallet-rpc and am having issues understanding the logic behind when tx-notify is triggered.

Right now from what I've experienced so far, tx-notify is triggered twice per transaction.

Once, upon tx being in a pending state (which I think means it's in the mem_pool)

Twice, upon tx being added to a block

I've also noticed that if I stop the monero-wallet-rpc, send a transaction, then start the monero-wallet-rpc a while later; tx-notify will still trigger twice even though the tx already has several confirmations.

I've looked at the code for tx-notify. I only see tx-notify being called once on line 2451. C is foreign to me, so can someone explain to me what the logic behind when tx-notify is triggered and why it's triggered twice?

https://github.com/monero-project/monero/blob/master/src/wallet/wallet2.cpp#L2451

When the tx is seen, whether in the txpool or a block.

So if the tx is seen in the txpool, then tx-notify is triggered.
And the same with a block


Do ALL purchases of XMR get the same privacy treatment? I am brand-new to crypto and very interested in XMR. I am researching a lot, but have not seen anything on this question: Do the following methods have the same privacy?

I buy Monero directly from an individual seller, or
I exchange another altcoin for Monero

I am NOT asking about the privacy of the steps leading up to the transaction -- just the actual transaction involving Monero itself.
Said another way, can I "carefully and safely" buy BTC or another crypto, then exchange it for Monero with the same privacy as if I buy Monero directly?
For those of you with experience, I hope the simplicity of my question is not insulting. I have no one else to ask, no one to train me, and can only figure things out as I read articles and websites online. Thank you in advance for your answer.

Firstly, welcome to the rabbit-hole.

Do ALL purchases of XMR get the same privacy treatment?

Broadly speaking, yes, all Monero transactions have the same level of privacy.
I use the word "broadly" because privacy extends beyond simply what's recorded on the blockchain. For example, if you buy from someone giving them your real identity, they have your identity, a wallet address you gave them etc etc. This is why you'll often see people asking where to buy Monero without KYC. Similarly using anonymity networks such as tor/i2p; the aim is to not divulge any information that can be used to link you to a transaction. So if you transact giving away your identity or things that can be used to help identify you, like your IP address, then no privacy is not the same as someone who transacted over tor and bought without KYC.

Said another way, can I "carefully and safely" buy BTC or another crypto, then exchange it for Monero with the same privacy as if I buy Monero directly?

By using any transparent (i.e. Bitcoin) cryptocurrency you of course have a trail up to the point you get your XMR. The trail ends there though if your forward transactions aren't simply from the same exchange you purchased, i.e. you withdrew your XMR off the exchange to your desktop wallet. If you didn't do this of course the exchange has a record of all transactions you make.
So however you buy, make sure you spend from your personal wallet, not some exchange wallet.
To summarize, on chain the transactions have broadly the same privacy guarantees. Where you buy and how you transact are not — a non-KYC, P2P, tor/i2p, XMR->XMR transaction has much stronger privacy than other routes.


Error Message When Running Monero Core GUI I created a private testnet, mined 60 blocks, and successfully transferred between two simplewallets.

I'd like to transfer from a simplewallet to the monero core gui wallet for testing purposes.

When I launch monero-core it says "Connected" under "Network status".  However, when I try to transfer from simplewallet to monero-core wallet the balance remains 0 in monero-core wallet even after 6 blocks confirmed the transaction in simplewallet.

In the terminal, it says this...

ERROR /home/administrator/monero-core/bitmonero/src/wallet/wallet2.cpp:780 res.blocks.size() != res.output_indices.size(). THROW EXCEPTION: error::wallet_internal_error

Can anyone point me in the right direction?

Using Wolfram Warptangent v0.10.0 release fixed this problem.

https://github.com/monero-project/monero/releases/tag/v0.10.0

However, I found just using the regular public testnet works better than a private testnet . It is difficult to find enough mixins in private testnet.  The minimum mixin is 4.

https://github.com/mbg033/monero-core/issues/53


Restored monerujo wallet key file and password is not working. What could it be? I have a monerujo wallet I have used frequently to send and receive. I tried restoring this wallet and key file to another monerujo wallet but the password is not working. The original monerujo wallet I was using stopped working for whatever reason, which is why i copied the wallet files out. I even tried to use this wallet file on the monero windows client and still says incorrect password. I've been using the same password all this time.
Also I have the backup seed too, but when I restore this seed. The address is completely different from what I have on the monerujo wallet originally.
How can I resolve this?

For whatever reason the wallet cache file was corrupt on my monerujo app. A monero wallet consist of 2 files:

wallet file (wallet_file)
wallet key file (wallet_file.keys)

However, when using the wallet files from monerujo on desktop or cli, it sets the password to something else vs what you use in the mobile app. This is called CrazyPass, which is a long 20-30 character alphanumeric password that looks something like this (spaces included):
XX55 ARPT R3QH Z97K XXXX WTCK LSPK YYA2A FBC2 Y4DD XXXX XXXX GYS3
When opening a corrupt cache wallet file on the desktop, it will throw an error. The only solution here is to delete the wallet_file, but not the keys file. It will regenerate when you open the wallet_file again using your keys file.


How to get a block reward from a block template? I make a get_block_template request to a monerod using a RPC interface.

From response of this request I can get the a value of expected_reward:

expected_reward = block_reward + tx_fees_amount

But I would like to know just a value of block_reward:

block_reward = expected_reward - tx_fees_amount

To do this, I need to know a value of transaction fees in this potential block.

1) How can I get the amount for transaction fees in a potential block?

2) Am I moving in the right way to get a block reward without the transaction fees in it? Maybe there are easier ways?

3) Before writing this question, I looked at the answers to similar questions. There are many formulas for calculation block rewards using a value of coins emission.
Should I move in that direction? But having a only RPC of my monero node I don't know how to request the current emission of monero's coins. Is it possible?

1) How can I get the amount for transaction fees in a potential block?

The easiest method (and just using the RPC interface) to get the block emission separate to the tx fees is probably to subtract the last mined blocks emission (emission_amount of get_coinbase_tx_sum) from the expected_reward (of get_block_template). It's not perfectly accurate but probably accurate enough for most needs.

If you need something more accurate, you would have to calculate the emission for a given block height. An example of calculating emission can be found here, which could easily be rewritten to output the emission for a given height.

As you are wanting to do this from the block template, another approach is simply  parsing the block and adding up the tx fees. That obviously requires code to parse a block and transactions though.

  2) Am I moving in the right way to get a block reward without the transaction fees in it? Maybe there are easier ways?

I can't speak to why you want to know the emission and tx fees separately, but the above methods are ways to achieve it.

  3) ... There are many formulas for calculation block rewards using a value of coins emission. Should I move in that direction?

Again, this is difficult to answer without knowing precisely why you want to split the block reward.


What Android wallet options are there for Monero? What are the top Android wallets for storing monero?

Existing: Monerujo and the source can be found on Github.

Upcoming: official GUI, mymonero, Coinomi (not open-source) - not necessarily in that order

Available for testing: mymonero, official GUI (build yourself, pre-built apk)

Suspicious: Freewallet, which is custodial (they have your keys) and not to be trusted.


PHP Libraries to assist with Monero integration Are there any PHP Libraries available to merchants to make integrating Monero payments easier?

How much time is generally required to integrate a Monero payment infrastructure?

Aside from the decision to keep Monero or convert it to another currency, how much ongoing support is required? Is updating twice a year (when Monero has a hard fork) one of the only times that maintenance will be required?

Any business wanting to accept Monero could contact the community for assistance, ideally no kind of "permission" is required since anyone can use and trade Monero. The idea there is an official structure to support Monero is misleading but the community shall be forthcoming in helping and supporting merchants to integrate Monero since the project's aim is a secure and easy method of transferring wealth.

There are several PHP libraries available with varied degree of quality:

https://github.com/MalMen/PHP-Monero

https://github.com/TheKoziTwo/xmr-integration

https://github.com/PsychicCat/monero-php

https://github.com/monero-integrations/monerophp


Can I disclose transaction id of a transaction to the customer? When I use monero-python to get transaction details for the customer's address that I've given, I get the following data.

{'tx_id': 'efab960da464a6701f1ea4b39ba91c420d71172f9e2ba4d6e1ca9087ad5eb0bf', 'timestamp': datetime.datetime(2018, 8, 6, 12, 40, 56), 'amount': Decimal('10.000000000000')}

Is it safe to show tx_id to the customer?

This is absolutely safe, and the simplest way to let him know payment has been sent.
Using a block explorer tx id will let the customer check in which block it has been included.


Which Monero release should be used on Asus Tinker Board? I noticed there are two ARM releases, v7 and v8, but I couldn't find what version is the Tinker Board.
Which one should I use?

The Tinker Board uses a Rockchip RK3288, which uses an ARM Cortex-A17. According to Wikipedia, that chip implements the ARMv7-A architecture.


monero-win-x64-v0.10.2.1 CLI questions Is this version no longer "colorized"? It's all black and white. Except when I type "status", then the result is in green. Previous versions had blue, green and occasional red messages...just wondering if everything is working correctly with this newest version.

Also, getting a bunch of "RATE LIMIT NOT IMPLEMENTED HERE YET download at unlimited speed?"  What does that mean and what do I do about it?

This version switched to EasyLogger which uses ANSI escape sequences to set colors on the window. Windows 10 has built-in support for these command codes, but on earlier versions you'll need some other terminal program to render them. For some alternatives: https://superuser.com/questions/413073/windows-console-with-ansi-colors-handling/1050078


Who pays Transaction fee? If I want to send someone $20 worth of monero and the transaction fee is $10, does that person only get $10 or the full $20 and I pay the $10, so I would end up paying $30 for a $20 transaction?

Thanks,

You would end up paying the transaction fee.

In every cryptocurrency I know of the sender submits the amount they want to the send to the network PLUS the fee they want to spend. The receiver gets the amount you wanted to send and the miner of your block takes the fee you put up, provided it is high enough.

So yes, if you send $20 of monero with a 10$ fee, you'll end up $30 poorer.


Monero inception - how did bitmonero become monero? I understand that bitmonero was one of the first CryptoNote coins, and at its inception had a different developer team, mainly thankful_for_today.

Then, "the community took over" because of some disagreement and it became monero. But what does this mean? Was the project re-started with new genesis block but with the same name? Was the code just forked? What was the difference and disagreement? What exactly happened at this point in history? Many times I saw mention of this event, or series of events, but never got to understand what happened. Would be nice if it was documented somehow.

Was the project re-started with new genesis block but with the same name?

No, the project was never restarted with a new genesis block. The project simply continued with a new set of stewards of the project. These stewards replaced, or more bluntly put kicked out, the old team, which was led by thankful_for_today. That is, after some discussion on IRC, the "move" / "takeover", in conjunction with a name change, was announced by David Latapie on the Bitcointalk forum. The stewards, better known as the core-team, that replaced thankful_for_today were fluffypony, tacotime, NoodleDoodle, smooth, othe, David Latapie, and eizh. At the end of 2015, the latter two core-team members resigned from the core-team due to time constraints and were replaced by luigi1111 and ArticMine.

  Was the code just forked?

As far as I can see from the Github commit history, the stewards indeed forked the code over to a new Github repository and continued with that. The old repository of thankful_for_today can be found here.

  What was the difference and disagreement?

This basically boils down to thankful_for_today playing the benevolent dictator and pushing changes which the community largely disagreed with. He also pushed changes without conferring with, or simply ignoring, the community. There are more extensive examples in the formal write up, under "the second renaissance".

  What exactly happened at this point in history?

There's a more elaborate and formal write up here. This write up also includes some kind of timeline.


how to use coinhive java script with GPU? i use coinhive simple UI miner and sometimes javascript miner for mining Monero in coinhive.com
can i use GPU instead of CPU for mining in coinhive website?

Coinhive runs on your CPU only. Although it's technically possible to write javascript code that runs on GPU it's not standard and it's not the approach taken by coinhive.

If you have GPUs there are better ways to use them for mining than coinhive, such as joining a mining pool.


Bitcoin Fog account to Monero wallet Need some input here. About 4 days ago I moved some bitcoin from my FOG account to a Monero XMR wallet. It gave me a receiving address which I provided to the FOG account and FOG instantly deducted my 400 dollar plus amount. I have not seen the bitcoin transferred to my Monero wallet not has it bounced and been returned back to my FOG account. All my bitcoin is simply missing. Could anyone advise on what may have happened and/or how I can track this or seek help?

Various scammers have operated under the name "Bitcoin Fog" (and many domains) for years.

They most likely stole your money:
https://www.reddit.com/r/BitcoinFog/

Generally speaking, there should not be a away to accidentally add a Monero address where a Bitcoin address is expected.  It is technically possible of course, but hard to imagine any website being that terribly programmed.  If they are that bad at making websites, then they definitely should not be trusted to handle cryptocurrency anyway.


Where is the best place to propose ideas for Monero What is the best way to propose ideas to the Monero community?

GitHub, official forum, Reddit, IRC, here?

I know that tech discussions are on GitHub, but I don't know which is the best place to propose general ideas for Monero.

#monero on Freenode IRC is probably the best sounding place. Or #monero-dev on Freenode if this is about monero development itself. #monero-research-lab for ideas to do with the theory or R&D.

Note that many people have a funny view of what's about monero development. They think if it involves them using a compiler (or sometimes just involves them), it's about development. That's not correct. If in doubt, try #monero. You'll be redirected if needed.


Issue with unforgeability proof of ASNL in RingCT paper In the RingCT paper, proof of theorem 5.1 (The Aggregate Schnorr Non-linkable ring signature is unforgeable under the discrete logarithm assumption), it is assumed by contradiction that there exists an adversary A capable of forging such ANSL's. The idea being that being able to produce such a forgery would imply solving the discrete logarithm problem for a certain public key P = xG to which A didn't know the private key x in advance.

However, in the proof it is stated: "Supposing that L11 = aG and L12 = bG, with a and b known to A, then(...)" but I don't think we can assume that from the hypothesis, or from the existence or the forgery alone, even though the L's came from the forgery. Am I reading this wrong, or is there a problem with this proof? Note that there is also already github issue on this question, but no response yet.

Github user divbit responded to the issue on Github here. To quote:

Hi, the paper states that it is a sketch of a proof (mainly it's a sketch because the things are no more efficient than the Borromean ones which are mentioned could be used on a previous page, and possibly less efficient according to the Borromean paper, in some cases (e.g. higher bases than 2 or whatever, and I guess at the time of writing the Borromean paper didn't have a proof written out, but it was sort of publicly in progress on their github, so the author didn't want to sort of steal possibly a big chunk of their paper).
Anyway, I think the point in assuming the 'a', 'b' values is that since various other bits of information are determined by the time-travel stuff (since you have to produce L1, L2 before knowing c1, c2) then at the end you need to find a scalar 's' so would need some way to get a scalar from the other bits of information which are already determined at that point). Moving sG by itself, it is easier to find an 's' when you already know a,b, so presumably if you can't find 's' with that advantage, then you can't find 's' without the advantage. But- this section of the paper hasn't been reviewed much, and it is just a sketch, so let me know if you see an error in that. BTW, the author e-mail is apparently not provided at the paper, so one might assume they are not open to correspondence, however, it's sort of publicly known from their github (shen.noether@gmx.com) which is linked on the first page of the paper, so I would assume they are open to correspondence for this type of question.


Can I recover my wallet? I forgot my mnemonic seed. I only have the wallet address, monero payment id and monero transaction id (hash). Is there something I can do to recover my coins or are they lost forever?

No. A wallet address, monero payment id, and monero transaction id are not enough to recover your wallet. You will need the mnemonic seed or spend and view keys


Can the receiver determine the value $r$ from the stealth address? The sender generates $r$, can the receiver determine the value $r$ from the stealth address?

Thanks.

Assuming that by stealth address you mean the output one time key, then no, it it not possible. r is the secret key corresponding to the R public key which gets included in the transaction. The recipient will use that public key only, and never learn r, using the fact that aR == rA.


Are there any Monero specific programming language "libraries" available? I understand that simplewallet has a raw JSON RPC interface available, but are there any specific "helper" libraries available for a relatively modern programming language(PHP, Python, Java, JavaScript, Ruby)?

There are several.

Python: https://github.com/tippero/python-monero

Node js: https://github.com/ShenNoether/monero-nodejs

Php: https://github.com/PsychicCat/monero-php

I think the node and php libraries are for interacting more with simplewallet in particular, but the Python library is for both daemon and wallet I believe.


How to mine monero genesis block reward (monero fork) When i start mining it start from height 1 not height 0.

The genesis block is not mined, it is just made.

See some details:
How can I create a new Monero genesis block?


Is it possible to reset the blockchain with a new genesis block for efficiency? I am researching state prunning, and I saw here that AEON state prunning does helps a bit, with some issues though because of historical reasons (details in the link).

Would it be possible to reset the blockchain history and just keep the "account balances" in a new genesis?
Would we lose any properties of Monero by doing this?

For the sake of this question, let us assume that the history is of no value to us (although I understand that the opposite case could be made).

In Monero, it is impossible to distinguish between spent and unspent outputs. Therefore no one could create a new blockchain with just the unspent outputs from the current blockchain, because the unspent outputs are unknowable.


Restoring Wallet from Keys file I have had to rebuild from source to apply the bug fix for a monero-wallet-cli error here:

Error: refresh failed: internal error: Index out of bounds of hashchain

Before I did, I copied the monero/build/release/bin directory including the Wallet File and Keys file. After re build, I have copied the Wallet and Keys files back to the bin directory.

When I ran monero-wallet-cli, I was asked for Wallet Name and Password but then I got an error.

To fix this, I am trying to follow the guide here:
https://getmonero.org/resources/user-guides/restore_from_keys.html

I need to know the following information: Address, Secret Spendkey, Secret Viewkey

My questions is:

I have the Wallet Address but not the Secret SpendKey and Secret ViewKey. Where are these from?
I Accidentally, lost the 25 word Mnenominc. Are the Wallet coins lost?

You can restore a wallet by either using the keys, .keys file and the password, or the 25-word mnemonic seed.
Restoring from keys
You need to have 3 pieces of data (Address, Secret Spendkey and Secret Viewkey. You can copy them from the wallet - for example, on the GUI wallet under Settings > Seed & Keys) from your wallet.

Open the GUI wallet and, after language selection, select
'Restore wallet from keys or mnemonic seed', then 'Restore from keys' and enter the data.

Using CLI wallet:
Linux - ./monero-wallet-cli --generate-from-keys wallet-name.abc
Windows - monero-wallet-cli.exe --generate-from-keys wallet-name.abc
Next, you'll be asked for the Address, the Spendkey, the
Viewkey, and finally the new password for the re-generated wallet.

You can find all the info about restoring wallet from keys at https://www.getmonero.org/resources/user-guides/restore_from_keys.html.
Restoring from .keys file
You can also use the .keys file which holds the keys info and the password to decrypt it.
The wallet .keys file is, by default, located in C:\Users\<user-name>\Documents\Monero\wallets\<wallet-name> under Windows and ~/Monero/<wallet-name> for Linux.

On the GUI wallet, after language selection, select 'Open a
wallet from file' and open the .keys file. Doing that, the
restoring process will be started.

Using CLI wallet, type:
Linux - ./monero-wallet-cli --wallet-file wallet-name.keys
Windows - monero-wallet-cli.exe --wallet-file wallet-name.keys

Restoring from 25-word mnemonic seed
You must hold the 25-word mnemonic seed that you saved when creating your old Monero wallet.

Retrieve your 25-word mnemonic seed and launch the Monero GUI wallet.
After the language selection, select 'Restore wallet from keys or
mnemonic seed' and then keep 'Restore from seed selected'.

Using CLI wallet:
Linux - ./monero-wallet-cli --restore-deterministic-wallet
Windows - monero-wallet-cli.exe --restore-deterministic-wallet
After the command, you will be prompted to insert wallet file name, password and the 25-word mnemonic seed. You can also choose a specific blockchain height to restore from. After you have entered the 25-word mnemonic seed and have chosen your specific blockchain height, monero-wallet-cli will generate the same public address and view key as your old wallet and begin the refresh process automatically.

You can find additional info on this process on the official guide page https://ww.getmonero.org/resources/user-guides/restore_account.html.

I accidentally lost the 25-word mnemonic seed. Are the wallet coins lost?

If you have lost the keys, the .keys file, and the 25-word mnemonic seed, the coins remain on the wallet, but you will be unable to access them.


Mining with XMRig, what are "expired" shares? So I'm pool mining RandomX using XMRig, and I often see that along with the increasing "accepted" shares, the "expired" shares are also increasing. What does that mean? Am I running the miner correctly? The config.json file I'm using is generated using the XMRig wizard.

Those messages are coming from the pool.

An accepted share is just that; you have worked on a job the pool sent you and submitted the result, which has been accepted. You will be rewarded for it.

An expired share is when you took too long on the job and you will not be rewarded for it.

If you're getting many expired shares, it's typically because the difficulty level of the jobs you are getting from the pool is too high for your hardware. You ideally want jobs that will take no longer than 2 minutes to complete.

Pools usually have different ports for different starting difficulty targets, so ensure you are connecting to the most appropriate pool port for your hardware.

In almost all cases, regardless of the pool port used (thus your starting difficulty target), the pool will automatically adjust the difficulty of the jobs it sends you based on your prior submitted shares. Thus even if you start with a few expired shares, after a few minutes of mining, the pool should start sending you more appropriate difficulty targets.


What software is included in the Monero Core? What software is included in the Monero Core?

https://getmonero.org/downloads/

There are several programs the most important being simplewallet and bitmonerod

There is also a simpleminer a blockchain_import and blockchain_converter tool.

For each account that you create with simplewallet an address, wallet and keys file will be created


What happens to XMR sent to an unexisting address? Is it sent back? What happens to XMR sent to an unexisting address? Is it sent back? Is it lost forever, but if yes where does it go? It still has to show up somewhere in the blockchain...

An 'unexisting address', probably due to a typo, would mean that there would be no known private keys corresponding to the address that funds were sent to. This should be protected against to some degree, because every Monero public address has an in-built checksum to help prevent typos. Since it's impossible to determine private keys from a Monero address, the private keys for this 'unexisting address' will never be able to be determined.

Funds can be sent to any valid address, and it's impossible for the sender or any observer to know the difference between an existing and an 'unexisting' valid address. If funds were sent to such an address, they would still show up on the blockchain as arriving at a fresh "one-time" address. Under normal circumstances, the owner of the destination Monero wallet address would then be able to scan for the presence of any such one-time addresses that are destined for them. They would then be able to determine the private keys necessary to take control of these funds destined for them, and spend the funds when desired.

However, since no such person would exist, the funds would just sit on the blockchain unspent. Since it's impossible to know when funds on the blockchain have been spent or not (due to Monero's privacy mechanisms), no one would know the funds are sitting there forever in limbo. It would not be possible for the sender to recall the transaction, since Monero transactions are irreversible.


How to create a Payment ID with the Monero RPC Wallet? What is the equivalent command for 'integrated_address' on the RPC interface?

Nevermind i found the answer, it's 'make_integrated_address'.
See: https://ww.getmonero.org/resources/developer-guides/wallet-rpc.html#make_integrated_address


When mining in a pool what does current effort actually mean? When mining in a pool what does current effort actually mean? Is my payout reduced when the effort goes to 500% let's say? What is different when the effort is 10% for example?

Mining effort is just the number of submitted hashes divided by the actual difficulty. This calculation then provides how much "effort" the pool should provide to statistically find a block.

When a pool finds a block with a 500% effort, it means it took 5 times more hashes than it was "statistically" needed to find it. When a pool finds a block with a 50% effort, it means it took 2 times less hashes to find it.

As far as I know the only impact this information really has is for the PPLNS pools, this reward system is determined by proportion of your hashes in the PPLNS window of time before the moment block is found. Window of time equals to time required to reach usually 200% block effort.


Can I pool-mine with the default monero daemon? (question as in heading)

It appears there is no such option, but can I make it do so anyway?

No. The daemon cannot pool mine. It generates its own block template, and has no concept of shares.

The other way is possible for some pool mining software, however.


Security concerns with OpenAlias As I understand it if someone is able to hack my DNS server and edit my TXT DNS record on a FQDN (fully qualified domain name) they could alter the Monero address that the associated with my OpenAlias and redirect future payments to an address controlled by the attacker.

Is this understanding correct?

Assume that my DNS service is completely separate from the server hosting my Monero daemon and wallet associated with my OpenAlias address. Am I correct that funds received prior to the DNS server hack will remain completely secure?

Are there any other important OpenAlias related security concerns that I should be aware of over and above the normal security precautions associated with running a daemon and receiving Monero payments?

Yes. Anyone who gains control of the TXT records would be able to change the address they reference. To answer your second question, you are correct that this would not affect any Monero received prior to the TXT record change, so your received funds would remain safe. This is why it is best to think of it as an alias to your address and not as the address itself.

One other security consideration with OpenAlias is that DNS lookups can leak information. Each time your computer does a DNS lookup, it is possible that the lookup is leaked and collected by a third party. The OpenAlias website recommends that you use DNSCrypt for lookups (https://dnscrypt.org/), and also suggests that is is ready to work with alternative DNS systems such as namecoin.

From their website (https://openalias.org/#implement):

  In order to ensure that lookups do not betray the user's privacy it is best to implement DNSCrypt from OpenDNS, and force resolution via a DNSCrypt-compatible resolver. Dependent on your use-case, you may choose to bake DNSCrypt into your software, or bundle dnscrypt-proxy along with your application.

At some point the Monero simplewallet may be updated to use DNSCrypt lookups, but right now it doesn't seem to. Until then, using OpenAlias would potentially leak information that your IP address intends to interact with that Monero address.


Portable mining device What's a good portable (as carrying it in my shoulder together with my laptop) mining device? Besides the laptop, how could I add more power to mining Monero?

Is any device small enough to be carried every day and worth its cost?

Actually, there is no device that is so small that you could carry it with you like a laptop.

You could build your own desktop computer with a small case and a really good processor (that's what is important for mining Monero) but it would most probably still be bigger then a laptop.


Parse error on make_integrated_address I am getting "Parse error" on a make_integrated_address request. How do I fix it?
I generated the payment ID using this command in the terminal : openssl rand 32 -hex
The error looks like this:
{"error": {"code": -32700, "message": "Parse error"}, "id": 0, "jsonrpc": "2.0"}

My request is:
string str = "{\"jsonrpc\":\"2.0\",\"id\":\"0\",\"method\":\"make_integrated_address\",\"params\":{\"standard_address\":\"myaddress\",payment_id:\"1027188273c9f2e53131e303404b6e7d9d3ead01d70ca258d0fa63cb6fd14b93\"}}";

string gg = GetResponse (str);
return gg;

The payment ID you are trying to use is too long (32 bytes, when it should be 8 bytes).
From the documentation:

payment_id - string; (Optional, defaults to a random ID) 16 characters hex encoded.

Example call:
 curl -sd '{"jsonrpc":"2.0","id":"0", "method":"make_integrated_address","params": {"payment_id":"5b67d705bbf72c77"}}' http://localhost:28084/json_rpc

And response:
{
  "id": "0",
  "jsonrpc": "2.0",
  "result": {
    "integrated_address": "A8mA7fFvCnjhmoNQpCrDBQXFM25rqFBZYBq8RepazSLSBwsj5kRtuM9iCSuz3vs9KbfZhrQj1BKRxVCpyqii7pca5EzinX4GnyZEXS34vk",
    "payment_id": "5b67d705bbf72c77"
  }
}

@user36303 also correctly points out you have not quoted the parameter name payment_id.


What is a payment ID, and why is it used? Several exchanges require a payment ID for deposits and withdraws. What is a payment ID in Monero, and why is it used?

This post from a while back on Reddit documents what a payment ID is and how it is used quite nicely. Note that an integrated address includes a payment ID and is a preferable way to send and receive Monero.

Payment IDs are needed when sending to an exchange, such as Poloniex or to a merchant. It allows Poloniex to confirm the transaction is yours, because Poloniex probably gets a lot of incoming transactions on the same address they won't be able to differentiate otherwise without a payment ID.
Hopefully Poloniex will implement "integrated addresses" in the future, which incorporate the payment ID into the receiving address. This improves user convenience and also mitigates the risk that a user forgets to include payment ID when sending his Monero to an exchange.
...
How/why to generate a payment ID
Poloniex will provide you with a payment ID, you can include this when sending a transaction from [monero-wallet-cli or monero-wallet-gui]. Conversely, one can generate a payment ID in [monero-wallet-cli or monero-wallet-gui] and include this in the transaction. MyMonero has such an option too.
[When should you not use a payment ID?]
You don't need to include a payment ID when you are sending to another person. For example, if Alice has to send Bob 1000 XMR it is kind of unnecessary to include a payment ID.
The main reason we need payment IDs in XMR is because it isn't convenient to make a new wallet for every new user. By contrast, in Bitcoin one can easily generate another address in a wallet. Therefore, you don't need something like paymentIDs in Bitcoin because the exchange can easily generate a new address for every new user.

For more information, see the page on payment ID's on the official Monero website.


Can the size of range proofs be reduced? Range proofs are currently quite large, roughly 12-30kb. Is it  likely that range proofs will become smaller in the future through various optimizations?

They are currently 6304 bytes (per output).

This will drop in the future by at least 1024 bytes. Beyond that will change (or not) with design decisions yet to be made.


Is the Monero blockchain database portable between 32 and 64 bit architectures, and little/big endian architectures? Monero uses LMDB for its database. Various data is saved in this database, including integers, such as the difficulty for a given block. LMDB is type agnostic, so does not any particular processing on integers and other types.

Is this database portable between architectures with a different word size, and between architectures with different endianness ? That is, if the blockchain file is copied between such machines, will it work properly ?

In general, LMDB files are architecture-dependent and cannot be moved between different architectures.

In Monero, all LMDB structures are 64-bit clean, so the files are portable between 32 and 64 bit architectures. But they are still endian-dependent, and are not portable across endianness. This hasn't been a concern since the two dominant architectures today, x86 and ARM, both use little-endian integers.

Note that, while LMDB also supports concurrent access across multiple processes, Linux glibc has a design flaw such that interprocess mutexes are different sizes in 32 bit processes vs 64 bit processes. So LMDB files on Linux cannot be concurrently shared between processes of different sizes. This flaw does not exist on other platforms (like e.g. BSD or Windows).


Is it possible to have simplewallet start scanning from a certain block instead of the beginning of the blockchain when refreshing a new wallet? Say I generate a new wallet, and I know for sure that I don't have any transactions appearing prior to block 'X'.

Is it possible to instruct simplewallet to start the scan at a certain block? I'd like to be able to do refresh 'X', or set the last block on the wallet as a command (simplewallet --set-last-block {wallet_name} {block_num}).

In the current code in git, yes there is a --restore-height parameter that does what you want. But for a newly created wallet, simplewallet will find out the current last block from the daemon, and set this parameter automatically, so you don't even need to specify it.

This feature will be in the next release (v0.10.0). With this feature a newly created wallet can sync to a daemon on localhost in just a few seconds.


Pool mining using monerod.exe I was new in crypto mining and have one question. Is it possible to run pools mining using monero wallet gui?if it does how can i use it?

Short Answer

No, its not possible with Monero GUI. In order to mine into pools, you need to use a stand-alone miner, such as XMR CPU Stak, and to launch it with the parameters provided by the mining pool.

Long Answer

The Monero GUI comes in 2 parts, each running its own process:
 * THE GUI per se
 * The Monero daemon

When you mine with you GUI, it uses the miner which is in the daemon. This miner is designed to mine directly to the network. There is no option to mine into a pool.


Is there a way to connect the Monero Core (GUI wallet) to a remote testnet node? I'm trying to make a liveUSB so people can play with the Monero Core GUI, but I don't want them to download the whole testnet blockchain first just to try it out.

Maybe something like...

monero-core --daemon-address arg

You can create your own testnet by running two local nodes, and run a miner locally that mines on the local node blockchain. It has been covered in a reddit thread here: https://www.reddit.com/r/Monero/comments/3x5qwo/how_do_i_make_my_own_testnet_network_with_eg_two/

Demon:

/opt/bitmonero/bitmonerod --testnet --testnet-p2p-bind-port 38080 --no-igd --hide-my-port --testnet-data-dir ~/.bitmonero-node2 --p2p-bind-ip 127.0.0.1 --add-exclusive-node 127.0.0.1:38080

Wallet:

/opt/bitmonero/simplewallet --testnet --daemon-port 28081

Then go into the bitmonero node and start mining with the command:

start_mining <your_testnet_address>

I tested them out myself, and the above commands work no problem on a a low powered machine, you'll have your own testnet in less than a minute.

There is also another set of instructions here, https://moneroexamples.github.io/private-testnet/ , they are far more comprehensive, and a bit much to include here, but the above commands work and establishes the absolute basics.


Correct Monero address but wrong payment id - MyMonero wallet I used changelly to exchange ETH to XMR. While exchanging I entered correct payment address and payment id shown in the mymonero wallet. I closed the mymonero wallet and when reopened it was another payment id now. The exchange already took place with the old paymentid. I have not yet received the payment in my wallet. Can someone please help me

https://xmrchain.net/tx/e2f6ae564acbe10c3d94c659dbe48debb91005e516e3a321c83e0064345e6be3

You don't have to use a payment ID when you're sending to your own wallet. Thus, simply use your wallet's address and nothing else. More information about use cases of the payment ID:

What is a payment ID, and why is it used?

https://monero.stackexchange.com/questions/tagged/payment-id

P.S. If you want to verify that your transaction correctly arrived, use this guide:

How do I, as a recipient, verify that my transaction actually arrived?


Is a cold paper wallet more secure than a cold wallet generated with the CLI or GUI? There are several posts explaining different approaches to generating an offline wallet. The consensus seems to be that a cold paper wallet is the most secure, but can someone explain why?

It is most secure because in the process of generating a cold wallet, the device used to create it is never exposed to a network.

This means that the only piece of information required to spend your funds didn't ever have a chance to be stolen by some hacker! Recall that the only way you 'own' monero is having the correct private spend key (or the 25 word mnemonic). If you completely isolate this piece of information and keep it 'cold' on a piece of paper, the only risk is someone breaking into your house and finding the piece of paper (or a bad random number generator - that's why you need verified software to generate it, too).

Either way to generate it is OK (downloaded copy of https://moneroaddress.org, CLI wallet, or GUI wallet).


Mitigating Risks of Forking Monero When Forking Monero on GitHub, the code base becomes a public repository. The benefit of Forking as opposed to cloning into a private repository is that the link to the original code base is maintained. However, this means that information such as the IP Addresses of the Seed Nodes and the Genesis block are publicly available. What are the risks associated with this and can they mitigated?

the link to the original code base is maintained

Depends what you mean by "link". There is a link to the original code that is maintained whether you fork publicly on GitHub or whether you clone to a private repository.

However, it would make it harder to do things like issue pull requests if you have a clone instead of a fork. See https://stackoverflow.com/questions/6286571/are-git-forks-actually-git-clones

I assume you are just experimenting, which is why you don't want the world to know the IP addresses of your personal test nodes. Obviously if you ever release your cryptocurrency to the public for them to use, you will necessarily leak information about the genesis block and seed nodes whether they have the source code or not.

There is only a security risk associated with disclosing the IP addresses of your personal test nodes if you aren't securing your OS properly, if you fail to launch publicly accessible nodes in "--restricted-rpc" mode, or if it turns out that there exists or that you introduce a bug into the node code that allows an exploit. If these are test nodes, then you should just firewall them off so that only you can access them.

There is no risk to people knowing your genesis block, unless perhaps you are scared that someone else is going to start competing with you to mine your cryptocurrency. But you can mitigate that by just creating a fresh genesis block when you're ready to launch your cryptocurrency to the public.


How does one burn and provide a proof-of-burn in Monero? Is there a way to provide a 'proof of burn' in Monero?

Let's say I wanted to prove I sent some Monero coins to an address that no one has the private keys for.

There is a tradition in Monero that when you want to come up with a public key for which there is no known private key, you calculate that public key as H = hash_to_point(G), which in hex is 8b655970153799af2aeadc9ff1add0ea6c7251d54154cfa92c173a0dd39c1f94.

Therefore providing proof of payment to any wallet with H as the public spend key would be proof of burn.

If we set the private view key of that wallet to the number 1, then the public view key of the wallet will be G, which in hex is 5866666666666666666666666666666666666666666666666666666666666666

The wallet address for that combination of public view and spend keys is: 46uVWiE1d4kWJM3aAoCpHVgDCm5higshGVJBb4ZNpTYARp8rLcCdcA1J8QgRfFWTzmJ8QgRfFWTzmJ8QgRfFWTzmCag5CXT

The stagenet equivalent address is 577XbZ8yGfrWJM3aAoCpHVgDCm5higshGVJBb4ZNpTYARp8rLcCdcA1J8QgRfFWTzmJ8QgRfFWTzmJ8QgRfFWTzmCbXF9hd

The private view key, if you'd like to monitor that wallet, would be 0100000000000000000000000000000000000000000000000000000000000000.

You can use the "prove" feature in the Monero GUI to produce a proof (that will start with the string "OutProofV1") which will prove that you've sent a certain amount of funds to the address.

Of course, this solution means that anyone can monitor that account for incoming funds because the private view key is known.

You can burn funds to a wallet that also has no known private view key by using "H" for both the private view and private spend keys.

The mainnet wallet address for that would be: 46uVWiE1d4kWJM3aAoCpHVgDCm5higshGVJBb4ZNpTYARr4wKeg8fqzWJM3aAoCpHVgDCm5higshGVJBb4ZNpTYAHiN5zud

and the equivalent stagenet address would be:

577XbZ8yGfrWJM3aAoCpHVgDCm5higshGVJBb4ZNpTYARr4wKeg8fqzWJM3aAoCpHVgDCm5higshGVJBb4ZNpTYAHo2TYq6

Note: For historical reasons, Monero has defined H using a slightly different hash_to_point function than is currently used in RingCT. The hash_to_point used for the calculation of H historically has been hash_to_point_simple(G) = 8 * (the bytes of keccak(G) interpreted as an EC point). See How was the generator H for the RingCT scheme chosen?


Is there a sample javascript code of how to generate a monero adddress from a string of characters? I'm looking to make a Javascript brain wallet generator for Monero. Is there a Javascript library to create Monero addresses?

There is Javascript code to generate Monero addresses from an arbitrary string, yes. See https://github.com/moneromooo-monero/monero-wallet-generator/tree/master. This page contains code originally from MyMonero (https://mymonero.com/).

The general idea is to hash the string (preferably using a KDF), and use the resulting hash as the spend key. The view key is obtained from the spend key.


How to put username and password to connect to remote node in the Monero v0.12.3? I tried to connect to my remote node from my monero gui on my linux machine. But there is no option to put in a user/pass to connect to the remote node. Also the format: user:pass@xxxx.com doesn't work either.

You need to press the advanced arrow button (if I recall correctly) below the node address field to display those fields in the settings page.


Monero cli show_transfers transactions for only a specific subaddress I have a few subaddresses with small amount transactions. How do I view only these transactions that were sent to this subaddress? I already switched to the account account switch 1, but when I do show_transfers it shows everything.

How do I view only these transactions that were sent to this subaddress?

[wallet]: help incoming_transfers
Command usage:
  incoming_transfers [available|unavailable] [verbose] [uses] [index=<N1>[,<N2>[,...]]]

Command description:
  Show the incoming transfers, all or filtered by availability and address index.

  Output format:
  Amount, Spent("T"|"F"), "frozen"|"locked"|"unlocked", RingCT, Global Index, Transaction Hash, Address Index, [Public Key, Key Image]

Example:

incoming_transfers index=1

Shows all incoming transfers to subaddress index 1.


Is the operating system changing the hashrate(when mining with cpu)? Currently I'm mining Monero on my raspberry pi (not very efficient I know but for educational purposes). I want to get a higher hashrate and now my question is:

Does a CLI-based OS get you a higher hashrate than one with a graphical desktop?

I don't think so but I'm open to other opinions..

If you are doing CPU and GPU mining you may get a slight hashrate increase running on a non-GUI desktop. The less work your graphics card(s) / CPU(s) are doing should increase hashrate a little, but I wouldn't expect anything drastic.


Why can't Monero use kovri as default for all connections? If the goal of Monero is to have a private by default cryptocurrency network, why can't we make the network interface (daemon) connect to other peers via kovri by default?

This is a copy and paste from an exchange on reddit. Answer looking for improvements and / or editing :)

FP - Not a good idea, then nearly the entire network is at risk of being Sybil attacked. Operating a full node in its entirety on hidden services is something that should be reserved for users in highly adversarial environments who can’t use a remote node for one reason or another.

smooth - It's not because they are more susceptible to isolation attacks. Most users and the network as a whole are best served by connecting to both (their own transactions should only be sent over i2p to prevent any possibility of associating them with an IP address by the above described methods)

Q: i guess I just don't get why connecting via i2p would lead to isolation attack or Sybil. Wouldn't it be the same procedure - hardcode some i2p seed nodes, connect to the seed nodes, get a peer list of i2p-connected peers, and then go from there? Is the problem that making an i2p address is easier than getting more IP addresses?

Smooth: Not only numerically more addresses, but in the case of IP you can take measures to spread out your connections geographically, across ISPs, etc. due to the way IPs are assigned. (I don't think Monero does this now, but Bitcoin does.) With something like i2p or Tor hidden services it is completely opaque and there is no reasonable way to know whether all of the i2p addresses are actually the same attacker.

The other thing is that you do want to make sure there is a robust and attack-resistant interconnection between the i2p and IP networks (one of those papers describes an attack where the attacker arranges for all of the Tor exit nodes to be banned.) How do you do that (other than appointing someone to be responsible for maintaining it, and even then, their specific nodes can be attacked)? The only robust and decentralized way I can think of is to have nodes connect to both by default.

FP: How do the seed nodes know their peers aren’t malicious? The peers could behave well with the seed nodes (which they can trivially identify because it’s hard coded), and misbehave with everyone else.

Q: how is that currently addressed in the existing system?

FP: IPv4 has a cost, and you can make it harder by limiting it to one active peer per C-class, using anchor connections, etc. Here are two resources:

https://arxiv.org/pdf/1410.6079.pdf

https://eprint.iacr.org/2015/263.pdf

The work IPGlider has been doing on Monero is based on that last paper.


What is the block maturity value seen in many pool interfaces? As you can see in this screenshot, a column called "Maturity" is shown on most mining pools' found blocks table. I did my best to find an answer to my own question with keywords such as "monero block maturity" or "cryptonote block maturity", but couldn't find anything.

It seems like a certain number of steps or confirmations needed when a block is found by a pool (I guess it's the same when mining solo), but I can't be sure.

Sub questions: this value obviously goes from x to zero. What's the value of x, and is it always the same? EDIT: Ok, just saw the "Maturity Depth Requirement" in my own screenshot... sorry! Still, this original question remains. ;-)

Thanks a lot!

It seems like a certain number of steps or confirmations needed when a block is found by a pool (I guess it's the same when mining solo), but I can't be sure.

This is exactly right. When a block is mined, it cannot be spent until 60 blocks after it has been mined (with a 2 minute block time, this means roughly 2 hours). The same applies when solo mining. When mining solo, the block reward will show up right away in your wallet, but it won't be in the "unlocked" portion of your balance until 60 more blocks have been mined.


Can monero include actual spent input as previous transaction output? Let's take we have two transactions. In the first transaction, it has 1 input with zero mixins and 3 outputs(stealth addresses). The second transaction has 1 input with one mixins and 2 outputs. Here 1st transaction input is can easily identify as real input being spent because it is zero mixin. Let's assume in the second transaction which has two mixins inside the input. In that one is a mixin and another one is the real one being spent.

My question is if the second transaction input contains the first transaction one output as mixin (one of two), is that mean that is only a decoy for mixins? Can't it be actual spent one in the transaction? Like Bitcoin, chaining the inputs and outputs?

In other word, if in one mixin input (has two ring members), if one is ring member is traceable due to it include transaction used zero mixin. Is that mean remaining ring member is the actual one?

If you are sure a decoy used as ring member is already spent in some other transaction, no matter if the reason is zero-mixin (no longer supported) or n transactions using the same n ring members, which then are obviously all spent, it is not providing any privacy gains for your transaction any more. Also forked chains may increase the amount of obviously spent outputs in special cases.

Monero however doesn't support 0-mixin transactions since 2016, when 0.9.0 Hydrogen Helix has been released. Minimum ring sizes have been raised since then from 3 to 5 and 7 as of today. Additionally blackballing has been introduced, which is a simple blacklist of all obviously spent outputs, no matter for what reason. It prevents your wallet from adding these outputs as decoys to your transactions. The list will be huge (about 1GB) when scanning all ever used outputs, when 0-mixin has been allowed, before the introduction of RingCT eg. but it's only about 2MB when you only consider outputs generated after RingCT introduction. With a raising ring size it's getting harder to generate obviously spent outputs (no matter if intentionally or accidentally).


What is the logic behind multiexp method in bulletproof Monero implementation Could anybody explain the logic behind multiexp method in the bulletproof Monero implementation.
Source code: https://github.com/monero-project/monero/blob/v0.17.1.9/src/ringct/bulletproofs.cc#L85-L94

The function is performing Multi-Exponentiation and is just a stub for using the most efficient algorithm (Straus or Pippenger, cached or uncached), based on the input data.
Some timings in this commit, which have informed selection criteria.


Transaction stuck as "pending" in monero-wallet-cli A transaction I made a few hours ago is stuck as "pending", after sending via monero-wallet-cli. The transaction has not been picked up in a block yet.

I found this comment on Reddit by /u/gingeropolous: https://www.reddit.com/r/Monero/comments/4qilio/transaction_stuck_at_pending_on_simplewallet_how/d4tazy6

Is there a way to "cancel" the transaction without having to do a blockchain rescan like described in that comment? Also, what steps can I take to prevent a transaction from getting stuck as pending in the future?

You can first use the show_transfers command in monero-wallet-cli to see if your transaction shows there. It should show as "pending". Subsequently, you can use the flush_txpool command in monerod (the daemon). The wallet will shortly notice this and change the status of the transaction from "pending" to "failed". In order to get the right balance, however, you also need to run the rescan_spent command in monero-wallet-cli. Note that this minor bug (i.e. not showing the correct balance) is fixed in master currently, but not yet present in the binaries (which you are likely using).

If this doesn't work, you will have to use the rescan_bc command in monero-wallet-cli.

  Also, what steps can I take to prevent a transaction from getting stuck as pending in the future?

Make sure your daemon is fully synced before sending out a transaction.

Source: https://bitcointalk.org/index.php?topic=583449.msg16066918#msg16066918

EDIT 11/9/2017: Currently, transactions will drop from the local mempool after 24 hours, which will result in the transaction status changing to Failed in monero-wallet-cli. Therefore, this answer is not applicable anymore. If, however, your transaction is not relayed and your transaction is time sensitive, you can still apply this answer. You can check if your transaction is relayed by checking the mempool on block explorers like, for instance, XMRchain, MoneroBase, or MoneroBlocks.


How does a user pay a monero node operator via the RPC pay feature? The latest monero update gave users the ability to pay monero node operators via the RPC pay to feature. How does a monerujo android app or monero-cli query the monero address of a node operator to pay them?

The latest monero update gave users the ability to pay...

Actually this feature was released in v0.15, not the latest release.

  How does...

Instead of me copying verbatim the commit message or each related flag/command, here is the direct link to the commit for which the commit message thoroughly documents the feature: github.com/monero-project/monero/commit/289937...


Is xmr.to fast enough for 15 minute time window on bitpay.com? I guess there are no guarantees, but how long does it take on average until bitpay.com gets the money (in the sense of having enough confirmations), starting to count time at the moment when I executed the transfer command in simplewallet?

I'm asking because with monero's 2 minute blocks and bitcoins 10 minute blocks, I can't expect the average time to be better than 12 minutes, but bitpay.com allows me only 15 minutes before the invoice expires.
So there's only 3 minutes margin, and if xmr.to doesn't pay significant fees for the bitcoin transfer I assume the bitcoin transaction will not be fast enough given the congestion on the bitcoin network.

To add to expez's answer, BitPay should already stop the 15 minute countdown once it's found the broadcasted Bitcoin transaction.

To my knowledge some services that use BitPay require confirmation(s) but it shouldn't be an issue as the invoice shouldn't expire after the tx has been broadcast (but not yet confirmed).


How many total days are on the ledger? Is there a tool or a source that tells how many total days are currently on the ledger? I know that monerod tells how many days behind you are on the ledger, but is there an easy way to look up the total number of days without syncing up with the blockchain for the first time?

Edit: This may just need to be a feature request, but I am running a windows machine in this case and seeking a cross platform solution. I was hoping there is a built in argument to do something like the following code in monerod:

LOG_PRINT_CCONTEXT_YELLOW("Sync data returned a new top block candidate: " << m_core.get_current_blockchain_height() << " -> " << hshd.current_height
<< " [Your node is " << std::abs(diff) << " blocks (" << ((abs(diff) - diff_v2) / (24 * 60 * 60 / DIFFICULTY_TARGET_V1)) + (diff_v2 / (24 * 60 * 60 / DIFFICULTY_TARGET_V2)) << " days) "

Part of the output then is something like Your node is 73520 blocks (102 days) behind

If you're on a UNIX-like OS such as Linux or macOS, and have jq installed, you can do this:

curl -s -X POST http://127.0.0.1:18081/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"getblock","params":{"height":1}}' -H 'Content-Type: application/json' | jq '.result.block_header.timestamp' | gawk '{print strftime("%c", $0)}'

Fri 18 Apr 2014 12:49:53

The first part displays the genesis block in JSON format. The jq-filter, selects the "UNIX" timestamp (1397818193), which gets converted to a readable date and time with gawk.

Obviously, instead of 127.0.0.1, you could point to any node, such as node.moneroworld.com. The RPC-call is described in the Daemon RPC Documentation.

Update: I just realized you don't want the date, but the number of days since. The following one-liner, using bc, gives you the number of days:

echo "scale = 1; ($(date +%s) - $(curl -s -X POST http://node.moneroworld.com:18081/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"getblock","params":{"height":1}}' -H 'Content-Type: application/json' | jq '.result.block_header.timestamp')) / 86400" | bc

993.4