Protecting myself from myself Assume that I want to hold all the Monero I currently own for at least a certain period of time but lack the discipline to stop myself from trading.  As a horrible trader I want to take control away from myself without at any time transferring my private keys to anyone else for safekeeping.

How can I prevent myself from trading (buying or selling) Monero? For example, if I don't want the ability to trade Monero until after RingCT activation (January 2017) how can I enforce that wish?

How can I protect myself from myself?

Is there a way to protect myself without using monero-wallet-cli in RPC mode?

This isn't available in the wallet software yet, but it is technically possible to set an "unlock_time" on a transaction:

How to use unlock_time?

The idea being that you could pass a future date in UNIX time into this RPC call which would cause funds to be locked until that time has passed. You could then use this to send all of your funds back to your own wallet address. Just test it with a small amount first to make sure you get the date format correct.

If you are looking for more of a deterrent from spending too quickly, you could send it all to a paper wallet and drop it off in a couple secure locations. It is enough of a hassle to retrieve the paper wallet and restore from a seed that you might not go through the trouble.


"Error: Problem fetching info-- rpc_request:" when running monerod as service I have set up monerod to run as a service so it is easier to manage.

Service file:

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

[Service]
User=monero
Group=monero
WorkingDirectory=/mnt/ext/monero/monerod/
RuntimeDirectory=monero/

Type=forking
PIDFile=/run/monero/monerod.pid
ExecStart=/mnt/ext/monero/monerod/monerod --config-file /etc/monerod.conf \
    --detach --pidfile /run/monero/monerod.pid

Restart=always

[Install]
WantedBy=multi-user.target

Config file:

data-dir=/mnt/ext/monero/
log-file=/var/log/monero/monerod.log
log-level=0
no-igd=true
rpc-bind-ip=0.0.0.0
rpc-bind-port=18089
rpc-bind-ipv6-address=IPv6AddrHere
rpc-use-ipv6=true
restricted-rpc=true
confirm-external-bind=true
public-node=true

The service runs as expected, however I am unable to run commands against the daemon.

Example:

Running

./monerod status --rpc-bind-port 18089

Returns

Error: Problem fetching info-- rpc_request:
Height: 2039302/2039302 (100.0%) on mainnet, mining info unavailable, net hash 1.49 GH/s, v12, up to date, 0(out)+0(in) connections

I can't tell whether monerod is actually not connecting to other peers, or if the info can't be fetched.

Did I set up the service incorrectly?

How can I go about running commands against monerod when it is running as a service, and get a response similar to when it is running interactively?

The RPC does not return connection info when running the status command because it is a restricted RPC and restricted RPCs do not return any privacy sensitive info.

In order to get the proper output to the status command it must be run against an unrestricted RPC port.

It is possible to run a node with both restricted and unrestricted RPC ports. This would allow public access to your node through the restricted RPC, while keeping the unrestricted RPC sealed off for your own access.

If you decide to run an unrestricted RPC port make sure it is not exposed to the internet!!! Otherwise you may be jeopardizing your privacy and allowing anyone to control your node and use your CPU to mine for their wallet.


Monero technology information While this SE site is a good source for getting specific questions answered, where can I go to gain good background knowledge and learn technical details about Monero?

A good place to start would be https://getmonero.org/home, try looking at the various topics under Knowledge Base. If you have further specific questions, you can ask on Reddit, IRC, or here.


Obtaining coinbase transaction signature Below is a blocktemplate_blob obtained from calling the getblocktemplate RPC, with reserve size 17.

0606e0d8bad7053a15e11686fefb667985fec2a2c89567e2c9dae9e862c76628a174eb3a00662c000000000282d55f01ffc6d45f01e8e4d19ec2870102e8f49622fd8bfd3b0bd8b20ab9f7fc8e33c7f327b0a6a6bda95096d4ab2150813401dd34b8939c64a4237cbd8ea2fad8bf87a5febbd144655e9e697fdd187a2be949021100000000000000000000000000000000000000

I'm trying to figure out how coinbase transactions are serialized. Based on CNS003 and CNS004, after stripping the block header, transaction version (0x02), unlock time (0x82d55f), num inputs (0x01), transaction type (0xff), block height (0xc6d45f), num outputs (0x01), reward (0xe8e4d19ec28701), and output type (0x02), we are left with

e8f49622fd8bfd3b0bd8b20ab9f7fc8e33c7f327b0a6a6bda95096d4ab2150813401dd34b8939c64a4237cbd8ea2fad8bf87a5febbd144655e9e697fdd187a2be949021100000000000000000000000000000000000000

which I believe consists of the output public key, extra size, and the extra. Removing the extra size and extra leaves us with

e8f49622fd8bfd3b0bd8b20ab9f7fc8e33c7f327b0a6a6bda95096d4ab2150813401dd34b8939c64a4237cbd8ea2fad8bf87a5febbd144655e9e697fdd187a2be94902

How is this coinbase transaction key generated?

Why would you remove extra ? It's in there.
See cn_deserialize.cpp, to which you can give the hex dump of that tx:

cn_deserialize --input aaaaaaaaaaaaaaaaaaaa

This will show you the tx key.


What is meant by "Diffie-Hellman exchange" in the official CryptoNote paper? I've read the official CryptoNote whitepaper and I've stumbled on the following sentence:

  First, the sender performs a Diffie-Hellman exchange to get a shared secret from his data and half of the recipient’s address. Then he computes a one-time destination key, using the shared secret and the second half of the address.

Diffie-Hellman key exchange is a key negotiation mechanism to agree on a common key between two parties using an insecure channel. How can you do a key exchange between two values both available to you? Where is the other party? Where is the insecure channel?

Also, why not use just a simple hash of those two values?

Diffie-Hellman key exchange is a key negotiation mechanism to agree on a common key between two parties using an insecure channel. How can you do a key exchange between two values both available to you?

Both values are not available to the party you want to communicate with. If you were to transmit both values, then someone could intercept them and know the secret as well.

Sender: has TX private key r ("sender's random data" in CN WP) & recipient public view key A.

Recipient: has TX public key R (published on the blockchain) & recipient private view key a.

Product will be the same. You can get the shared secret as either rA or aR.

Where's the money? Money resides on one-time key P (AKA "output"), deterministically constructed from the shared secret and the recipient's public spend key.

The sender is communicating the R and the P via insecure channel - the blockchain. Anyone can see R and P, but only the one knowing both the shared secret and the public spend key will be able to recognize the funds. To spend, he would need the private spend key. Why can he recognize the funds? Because the Ps are deterministically made from shared secret. The sender just computes the aR, generates some P, and if it matches the one in the TX - it must be for him.

It's important to understand that one-time keys are all that exists on the blockchain. An address is nothing but an instruction to sender, allowing him to use the DH to construct such output which only the intended recipient can decode and spend. The address is never recorded to the blockchain.

  I thought the recipient's address is public and therefore no connection is required.

The address is public. Since it's really an instruction, and following the instruction requires some "random data" as an ingredient, nobody can ever tell which instruction was followed to create a particular one-time key (AKA "output") on the blockchain.

  Also, if there is a DH between the sender and the recipient how is that anonymous?

Because what happens is that nobody knows who the "message" is for (message being the output in any TX) unless he's able to reconstruct a match - which means it's either for him, or he's the one who sent it. Anyone receiving needs to take the R, pretend all outputs are "for him" and see if he gets a match. That's also the reason wallet scan takes time.

  Where is the other party?

Other party is the recipient.

  Where is the insecure channel?

That's the blockchain.

  Also, why not use just a simple hash of those two values?

Actually, it's used. Look at how outputs are constructed:

P = H_s(rA||i)G + B

H_s is the hash function, r is the TX private key randomly generated by the sender, i is output index in the TX (0, 1 ...), and B is the recipient public spend key. Note that recipient address is made of A and B.

Send & Receive Process

Here's a step-by-step:

Recipient asks the sender for payment and transmits his address to the sender. That's the two public keys A & B. Suppose Eve is listening on that communication - she now knows the address being transmitted.
Sender generates some random r which will be used as private TX key.
Sender calculates the public TX key by multiplying the r with elliptic curve base-point. R = rG. This goes into TX header, and will be published on the blockchain with the TX. Eve is of course monitoring the blockchain, and now she has A, B, and R.
Sender calculates the P which will hold the funds. P = H_s(rA||i)G + B.
Sender publishes the TX with the R and P to the blockchain. This is practically what defines your TX output side. The rest of the data is the signature & key image. This is all that's recorded. Notice how there's no recipient address :)
Here's where DH happens. The recipient will need to try and reconstruct the P, but to do it he needs all the parts. All parts but one are public, and Eve will also know all of them. Thing is, the recipient doesn't know the last bit (the r) and neither does Eve. Without the r, the recipient could be anyone as hash function makes the output look like it's just some random number, same like any other. However, the recipient doesn't need the r as he knows another secret (his private viewkey a) and he can use it instead. The recipient takes the R and i from the TX, does P' = H_s(aR||i)G + B, and if it matches the one in the TX, ka-ching.

So, without the last secret ingredient, Eve remains clueless. She knows that I gave you my address. She knows about all TX-es on the blockchain. She can't tell whether I ever received anything to that address.

If I, the recipient, leak my a to Eve, she can check the entire blockchain and see all TX-es I received. If you, the sender, leak your r to Eve, she can only check a particular TX against some address and see if it's a match. So, thanks to DH, we both get to keep our secrets but are able to safely communicate the following info "this output was made for you".


Best computer for mining Monero Hi I am a newbie in Mining.
My question is: which one is the best computer for mining Monero?
I know about the electricity costs (for me are extremely low) and I am not interested in become a new crypto millionaire. I only want to mine Monero using the best possible hardware in a range of 2000$. :)

Currently the Ryzen 3000 series CPUs are considered the most cost effective.


If you install Monero GUI over Tails, should you install the blockchain on same drive as Tails I plan to use Tails to install the Monero GUI on a Win 10 PC and then download the blockchain to run a full Monero node.I plan to always use Monero over Tails, The Tails OS will be stored on 32GB USB Flash drive.

My questions:

Can I install the full node (blockchain) on a section of my hardrive on my PC? I discovered that my PC has been partitioned already and I have 150 GB unused. I plan to install my full node here. Or should I install it on the same USB flash drive as the Tails is stored on?
Where would be a good place to store the GUI? Or doesn't it matter? If it is OK i can store the full node and GUI on the Hard Drive.

If you install Monero GUI over Tails, should you install the blockchain on same drive as Tails

You don't have to. This is up to you. If it's not on the same drive, wherever you do sync the blockchain to will need to be mounted in Tails when you want to use it.

  Can I install the full node (blockchain) on a section of my hardrive on my PC?

Yes.

  Or should I install it on the same USB flash drive as the Tails is stored on?

You state above that your flash drive is only 32 GB. Even with a pruned full node, you will struggle to fit both OS and full node on the same drive.

  Where would be a good place to store the GUI? Or doesn't it matter?

Wherever you like. It's your computer.

  If it is OK I can store the full node and GUI on the Hard Drive.

If you have space for them both, that's fine.


Where to find a computation example of the monero traceable ring signature mechanism in a small finite field? In the following coindesk article, The math behind bitcoin, you can find a beautiful example of the ECDSA keypair generation, signature and signature verification algorithms in use in bitcoin. They illustrate the address generation in a finite field of order n=67 and the signing/verification in n=79, which keeps the computations manageable; even with just a calculator.

I suspect that a basic monero/cryptonote calculation example would be quite a bit longer. Still, even such longer article would be interesting to a lot of people, in order to gain a better understanding of what monero/cryptonote actually do.

Does such article exist already? (I could not find one ...)

If there is no such elaborated exercise available, I would certainly be interested in composing (and even publishing) one; if I could find help for corrections and verifications. Do you know of starting point drafts/links/documents, suitable for the composition of such numerical example?

Note: Formulas and formal proofs are interesting in their own right, but I guess that they are not as suitable as starting points like a good numerical example.

Have you tried https://lab.getmonero.org/ and the cryptonote whitepaper(s) here? https://getmonero.org/research-lab/ They have some very thorough documents on the technology at a more academic level.


Two GUI Wallets: One Daemon? I have two GUI wallets (or accounts to be more accurate) on my Windows PC. I can be up to date with the daemon in one, but when I open the other account, the daemon is far behind. Is this normal behavior or is it there an issue here that can be corrected? Thanks in advance.

FWIW, the issue was solved. Perhaps I had two copies of the daemon and the two different wallets were using the different daemons. In any case. All is well now.


Monero privacy features different from coin shuffling used in nxt/ardor? How are Monero privacy features different from coin shuffling used in nxt/ardor? https://nxtwiki.org/wiki/Coin_Shuffling

CoinShuffle is a form of decentralized mixing. For simplicity's sake, you can consider it similar to CoinJoin. You can read the academic paper on CoinShuffle here.

A mixing approach has significant shortfalls compared to Monero's ring signature scheme:

Users must communicate with each other. With Monero, you can include other users' outputs in your ring signature without any active communication.
You must wait for these mixing transactions to be completed. This may take a while for a large number of funds.
It is voluntary, so the entropy set of people participating in CoinShuffle is small. With Monero, every transaction contributes to the entropy set.
Transacted amounts are still visible. With Monero, transaction amounts are hidden.


What calculation/process is being carried out regarding the syncing process What calculation/process is being carried out within the gui, regarding the syncing process of the block chain for running a full node?

The main things going on are:

Getting block information from connected peers
Building/Verifying the blockchain starting with the Genesis Block (block 0) and verifying each block and all transactions in the blocks follow consensus (which changes at various block heights based on historical hard forks) and building a block tree.
Storing the verified blockchain in an LMDB database.

So it is doing network connections/downloading, verifying hashes, and writing to disk.


My balance just disappeared I purchased some coins yesterday which I transferred to my wallet immediately.

Today I created a 2nd Wallet and was trying to send all the coins from wallet #1 to wallet #2. I filled in all details, clicked on "sign transaction", opened a PGP.asc file and got the message "quantity of transactions: 0".

After pressing on "OK" to skip the message, my balance dropped to "0.000000000000". Now both of my wallets have a 0.000000000000 balance.

But the process tab is just showing me my purchase from yesterday, not my transfer from wallet #1 to wallet #2, even though I waited for 5 hours and restarted the GUI multiple times. I even went to the settings and pressed on "Rescan Balance". My coins are still not showing. Can you help me please? I am running GUI Version 0.14.0.0

Assuming you are trying to send a new transaction using cold signing (from the "clicked on "sign transaction"" comment, because you omit all the details of what you're doing), this is likely what happened:

you create an unsigned transaction (at this point, the wallet marks your outputs as spent, since it's sending them, but the wallet still owns those outputs until the transaction ends up on the blockchain)
you sign the transaction
you don't send it to the blockchain, or it gets rejected

If this is indeed the case, the first wallet still has the coins, it's just marked them as spent. They should show up again if you do two things:
- flush_txpool TXID   (in monerod, and replace TXID with the actual transaction ID for that transaction)
- refresh    (in monero-wallet-cli, might need to do it twice)

Since you're using the GUI, you'll have to exit the GUI to do these things. I think it may be possible to do them from within the GUI, but I'm not sure how exactly.


Started back after completion Monero started back synchronizing after completion or connected ! Should I just close the wallet once it completed the next time?

Monero's initial sync of a full node takes up to few days depending on your internet connectivity and also your hardware, which has to verify all synced blocks.

When you loose your internet connection, close your wallet, switch off your device, for obvious reasons your wallet will not be syncing new blocks. But after you start it again, it will resume syncing from its last position, so only blocks you missed in the meantime have to be synced with the network of nodes and verified by your wallet / daemon.

If it starts syncing from scratch after being fully synced, either your blockchain data got deleted / corrupted on your drive or it is a bug and you should report it on GitHub or discuss in the IRC / Telegram chats how to get it solved.


Is it safe to leave "back ground mining" on as long as I want too? I know that the "back ground mining" option with the new 0.11.0.0 version of Monero Core is 'experimental', but is it relatively safe to leave on and not worry about your computer over heating?  Especially if I'm running the GUI on my laptop?  How does it regulate itself?

Yes, leaving it on in the background should be fine. Background mining limits CPU usage to 40%, so you shouldn't have any trouble with overheating.

https://github.com/monero-project/monero/blob/master/src/cryptonote_basic/miner.h#L100

static constexpr uint8_t  BACKGROUND_MINING_DEFAULT_MINING_TARGET_PERCENTAGE        = 40;
static constexpr uint8_t  BACKGROUND_MINING_MIN_MINING_TARGET_PERCENTAGE            = 5;
static constexpr uint8_t  BACKGROUND_MINING_MAX_MINING_TARGET_PERCENTAGE            = 50;

Also FYI, on a laptop it will also check that you're on AC power so it doesn't kill your battery (although you can override that check).


Double spend trying to use cold signing I'm creating transactions in my watch-only wallet and signing them in my offline wallet but each time the transaction is rejected with the message "double spend, invalid input".  I haven't been able to spend anything yet as all of my transactions have been rejected.  Any ideas why I'm getting this error message?
Thanks.

This happens if you're trying to spend outputs which are already spent.
The cold wallet has no access to the blockchain, so you have to tell it which outputs are spent, in this order:

"export_outputs filename" in the hot wallet
"import_outputs filename" in the cold wallet
"export_key_images filename" in the cold wallet
"import_key_images filename" in the hot wallet

Normally this is done automatically as part of the transaction creation system, but if you make any transaction otherwise (or fail to save your wallet after doing something), then it'll go out of sync and you have to do it manually.


reject reason: Low difficulty share I've researched the forum and google and it says this means I am using the wrong algorithm, as far as I know graft (v8) works with monero right ?
This is my first time mining using ccminer and the command I have is as follows:

ccminer-x64 -a graft -o stratum+tcp://xmr-asia1.nanopool.org:14444 -u 47XbbJdJgYbRKrAK88dUe68ZJkbBhZN5WB7gDo43ViocDjpeeZrRgEgeVpgwCqXWQGD5z3YPkrZR3YknFS5sRozKRxyzdJt -p x
pause

I am always getting the following output:

[2018-06-22 17:59:27] Using JSON-RPC 2.0
[2018-06-22 17:59:27] Starting on stratum+tcp://xmr-asia1.nanopool.org:14444
[2018-06-22 17:59:27] NVML GPU monitoring enabled.
[2018-06-22 17:59:27] NVAPI GPU monitoring enabled.
[2018-06-22 17:59:27] 1 miner thread started, using 'cryptonight' algorithm.
[2018-06-22 17:59:27] Stratum difficulty set to 120001 (120.001)
[2018-06-22 17:59:28] GPU #0: GeForce GTX 1080, 6808 MB available, 20 SMX
[2018-06-22 17:59:28] GPU #0: 1280 threads (10.25) with 80 blocks
[2018-06-22 17:59:44] GPU #0: GeForce GTX 1080, 479.53 H/s
[2018-06-22 17:59:44] GPU #0: 1887 MHz 5.63 H/W 85W 54C FAN 43%
[2018-06-22 18:02:04] GPU #0: 1887 MHz 5.17 H/W 92W 65C FAN 52%
[2018-06-22 18:02:11] GPU #0: GeForce GTX 1080, 479.83 H/s
[2018-06-22 18:02:11] accepted: 0/1 (diff 2949.820), 479.68 H/s booooo
[2018-06-22 18:02:11] reject reason: Low difficulty share
[2018-06-22 18:04:23] GPU #0: 1885 MHz 5.09 H/W 94W 68C FAN 55%
[2018-06-22 18:04:41] GPU #0: GeForce GTX 1080, 494.80 H/s
[2018-06-22 18:05:38] GPU #0: 1885 MHz 5.08 H/W 95W 69C FAN 56%
[2018-06-22 18:07:44] GPU #0: 1873 MHz 5.14 H/W 94W 69C FAN 57%
[2018-06-22 18:09:01] GPU #0: GeForce GTX 1080, 499.58 H/s
[2018-06-22 18:09:02] GPU #0: 1873 MHz 5.15 H/W 94W 69C FAN 58%
[2018-06-22 18:09:02] accepted: 0/2 (diff 631.379), 488.43 H/s booooo
[2018-06-22 18:09:02] reject reason: Low difficulty share

what am I doing wrong here?

You are using the wrong algorithm. Monero (XMR) uses cryptonight. However, I'm unaware that ccminer has been updated for v7 (the latest version). I suggest using software the pool recommends / supports.


Monero CPU mining sofware for Solaris 11 OS I have some resources on machine running Solaris 11.3 OS on Intel CPU, but can not find any working software to mine Monero coins. Is there any chances to see it in a near future? Perhaps it is possible to adopt some Linux version? How hard is to change the code? Solaris OS is powerful to aggregate multiple CPUs - perhaps it is worth to try?

The official download source is the best place to get Monero mining software. The Solaris operating system is not officially supported and is different from other OSes, though it shares some similarities with Linux.

In this thread at Reddit the person asks about SPARC CPUs and Solaris, but seems to give up quickly trying.

Q: Is there any chances to see it in a near future?

Maybe.
Q: Perhaps it is possible to adopt some Linux version?

Perhaps.
Q: How hard is to change the code?

Changing the code is simple, getting it to work requires the ability to write software and compile it under the Solaris operating system.
Q: Solaris OS is powerful to aggregate multiple CPUs - perhaps it is worth to try?

Solaris aggregates more SPARC CPUs and the OS runs faster than using Intel x86 CPUs which are limited to 4 to 8 Platinum 8180's (which cost $80K).

The IBM POWER9 has a bigger L1 Cache and is lower priced than Intel.

"Q: Worth it to try?": Worth it to try something else first.

The other ways of doing it (Mining Monero) have many people working on it while those trying under Solaris are few or nearly none.

The operating system Solaris with Intel CPUs isn't much quicker nor does the speed of the operating system make much difference to mining speed. If you used SPARC CPUs you'd be a bit better off and a member of a tiny community.

Best to stick with Windows or Linux and be part of the largest communities.

How many years have you been programming under Solaris and working on improving Monero Software?

If you've been doing that a few years it shouldn't be too difficult. A couple of AMD 7601's under Linux is bound to be cheaper ($10K) and quick at 3100H/s 332w. Use of "free resources" is going to have some limits, especially if you're mining (otherwise the person with the free resources might as well use them themselves).

I don't think it's "worth it" but I can offer this deal: You do it and you can keep what you make.

Your answer is quite opinion based, but I know a fair bit about computers and have checked Monero mining benchmarks. If your time is free the community will appreciate the code you give back. Worth it to you, it's up to you. Not worth it to me.


Background mining + monero-wallet-cli + pool? Is it possible to launch the monero-wallet-cli for mining with the experimental background-mining feature on?

And would it be possible to connect to a pool for that?

Basically I just want my CPU cores to mine whenever my computer goes idle or is underutilizing the cores. As far as I can see the "monerod" miner did not allow for "background mining if idle".

I'm using Arch Linux btw.

The background mining system does not use a pool. It will instruct monerod to mine, and monerod does not use a pool.

Background mining has existed in monerod for a few years. It was just hard to find, and so not used much. This is the reason why it was exposed in the wallet too.

To enable background mining in monerod, you pass extra arguments to start_mining:

help start_mining
Command usage:
  start_mining <addr> [<threads>|auto] [do_background_mining] [ignore_battery]

Command description:
  Start mining for specified address. Defaults to 1 thread and no background mining. Use "auto" to autodetect optimal number of threads.

Note that since it's monerod actually mining, you can then exit monero-wallet-cli and monerod will continue mining. monerod commands work as well, so stop_mining in monerod will then stop background mining, etc.


Is there a reference about format of transaction? Is there a document provides the details of the structure of a transaction. And it provides every item's space also.
For example:
"version": 1 bytes
"unlock_time": 1 bytes
"vin"...

I have checked the CRYPTONOTE STANDARD but I don't think it fits the real Monero transactions..
Please help answer it, many thanks!

Beyond the somewhat dated CN doc you referenced, and if you need more specifics, the best resource is really the code. For example, you can see that the tx prefix is serialized (src):
BEGIN_SERIALIZE()
  VARINT_FIELD(version)
  if(version == 0 || CURRENT_TRANSACTION_VERSION < version) return false;
  VARINT_FIELD(unlock_time)
  FIELD(vin)
  FIELD(vout)
  FIELD(extra)
END_SERIALIZE()

Then just look at the BEGIN_SERIALIZE... for the sub-fields, such as the FIELD(vout) is  defined as std::vector<tx_out> vout; and tx_out being (src), and so on. It's not terribly difficult when you get the hang of it.
As @koe mentioned, Zero2Monero also gives a fairly up-to-date overview. As he also points out, it's not "fixed" so to speak, which is why I'd advise to get comfortable navigating the code definitions, as outlined above.


Remotely connect to my full node with a Jaxx mobile wallet? Will I be able to remotely connect to my own Monero full node from a Jaxx mobile wallet?

Will there be an easy method to choose between several nodes such as a Jaxx node, a node I run from home, the cloud or a Moneroworld node?

I think initially you will not have a choice of node, but that's more of a question you should ask directly to jaxx. As the wallet is not out yet, we cannot look at it and tell you. Only Jaxx can tell you for sure at this point.

Being able to select your node would be a very important option on their wallet for us so I suggest we campaign for that.


xmrpool.net Correct Address? I got everything set up and working on xmrpool.net and am working towards my first payment. I just want the payment to go to my wallet. In my config file I have my address as an integrated address. Is that ok and will I get paid? Or should I have just used my wallet address (with no payment id). I'm fairly new to this so thanks for the help.

Please check that you have more than 0.3 XMR because it is the minimum payout value.

Pool Config:

PPLNS Fee                   0.6%
Solo Fee                    0.4%
BTC Fee                     1.5%
Minimum payout (Wallet)     0.3 XMR
Minimum payout (BTC)        4 XMR
Minimum payout (Exchange)   4 XMR


What was the difference in hashrate power when the March 2018 anti-ASIC Hardfork occurred? What was the percentage drop in hashrate during the 2018 march anti-ASIC hardfork before and after the fork?

Finding this number, can we estimate how many ASIC's were produced?

This is assuming this drop was all due to ASICs, but I'm sure many were also just due to non-upgraded miners. But judging from this drop, we can get an close approximation to how many were produced.

The fork was moved to today (April 6, 2018), so it is hard to tell. Early indications based on block-times are about 80% of the hash-rate is missing. Some of that is non-ASIC miners failing to update on time. We should know more in a week or so.


How do I send XMR to multiple different addresses? For example let's say Alice wants to send moneroj to Bob, Chris and Dave.
Does she have to make 3 separate transactions or can she do just one?

If she can do just one transaction, would the transaction size/fee be <,>,= the tx size/fee of the three 'normal' transactions combined?

She can do just one TX, unless she wants to specify a different payment ID for each recipient.

The CLI wallet supports this, the format is transfer <address> <amount> [<address 2> <amount 2>] ... [<address n> <amount n>] [<payment ID>].

Note how there's only one payment ID. That's because you can specify only one payment ID per TX (for now at least, in theory it could be changed to multiple and it would work as long as everyone recognized and implemented the new convention).

I'm not sure what will be the wallet behavior if some of the addresses have payment ID integrated. Only one can be used, that's for sure, but I'm not sure which one would be picked by the wallet.

About the transaction size (by @kenshi84):
Assuming the ring size being the same, the single multi-destination transaction will be smaller in size than the multiple single-destination transactions combined, since the former can "reuse" the same input ring signatures for all the destinations.


How to move/copy monero wallet and data Is it possible to copy or move the entire monero wallet and all associated/needed data/config files?  Can we basically backup monero wallet as it is setup with blockchain, configs, keys, wallets, all and everything necessary to zip move unzip and use.  Reviewed similar issues but none directly address a formal backup recovery situation which differs from importing mnemonic/keys or blockchain individually to recreate wallets and data. Hope i have explained the similarity and differences to resources linked below.

reviewed:
How do I move the blockchain (data.mdb) to a different directory during (or after) the initial sync without losing the progress?
How do I move the blockchain (data.mdb) to a different directory during (or after) the initial sync without losing the progress?

Moving LMDB from Laptop to SBC?
Moving LMDB from Laptop to SBC?

speed up initial blockchain sync
https://www.monero.how/tutorial-how-to-speed-up-initial-blockchain-sync

While the daemon is not running, you can copy the contents of the ~/.bitmonero directory. This contains the blockchain and a few other files. This is all the data the daemon needs.

For the wallets, three files are created. If you name the wallet X, you'll get files named X, X.keys, X.address.txt. You can copy those as well to backup wallet data.

The blockchain is portable except between machines of different endianness. The wallet keys (the "X.keys" above) are portable everywhere. I'm not sure about the wallet cache data (the "X" above).


Will Monero have wallet clients similar to SPV so that a fully validated node is less necessary? If so, how would it work and how much better/worse would it be compared to using a full node, especially the privacy implications. Obviously as Monero usage increases, end users should be using wallets that are accessible anywhere and a full node hampers that. How will end user clients work in the future?

The lightwallet by jwinterm is probably most similar thing to an SPV wallet so far https://getmonero.org/getting-started/choose

shen-noether is working on a mobile wallet that will connect to a remote node
https://hellomonero.com/tags/shen-noether

Using an SPV wallet can have privacy concerns because the node that you use to relay your transactions needs to be trusted not to log and correlate your IP address with your transaction activity. These concerns can be eliminated by connecting to your own full node. Tools such as Monerodo OS (http://nodebox.link/) should make this process easier.

A framework is in place to support SPV wallets and more wallets are now being developed by Exodus and others. More focus  may return to this area after RingCT is complete.


Distribution of number of inputs and ouputs per transaction over time How does the distribution of the number of inputs/outputs looks like currently ?

How did it evolved ?

For non coinbase transactions, from block [1000000,1500000] grouped by 100000 blocks (green bars corresponds to "recently", i.e from block 1400000 to block 1499999 included).


What are Electrum's mnemonic seeds? I've read on wiki that Monero implemented Electrum's mnemonic seeds.

What are these and what is the differences between other most common seeds?

The seed is a way to encode a bitstring using words that will hopefully be easier to remember.

In this case, the seed is composed of a number of words picked from a 1626 entries list. Each triplet of words can then represent a value between 0 and 4298942375, which is a bit above 2^32. So every 32 bit part of the seed can map to a word triplet, and back to the original value. Instead of remembering a 32 bit number, you remember three words. The monero seed is 25 words: 24 words for the seed (256 bits) and one word as a simple checksum. The name "Electrum" comes from the fact that Monero used Electrum's system.

I can't say anything about the difference with other types of seeds. I'm guessing there's a very large number of variants.


"Insufficient disk space" - but it's not true The monero daemon prints the message:

ERROR   blockchain.db.lmdb  src/blockchain_db/lmdb/db_lmdb.cpp:445  !! WARNING: Insufficient free space to extend database !!: 98593996820

The number displayed at the end of that message changes by small amounts each time, for no apparent reason. Anyway, there is plenty of space on the disk: around 153GB to be precise. Should it be relevant: the underlying file system is ZFS, running under Xubuntu 16.04.

Looking at the monero code, this message is generated by the code

  boost::filesystem::space_info si = boost::filesystem::space(path);
    if(si.available < add_size)
    {
      MERROR("!! WARNING: Insufficient free space to extend database !!: " << si.available / 1LL << 20L);
      return;
    }

I'm not a C++ programmer, but as near as I can tell: (1) the boost utility returns the space in bytes, (2) the display is dividing this by 2^20. So the calculated value should be in MB, or around 153,000 in this case. The huge number being displayed makes no sense that I can see. But anyway, it certainly ought to be bigger than add_size, so why does the code print this error message?

Anyone have a clue what is going on here?

I'm making this an anser because it's too long and there's code, even though it doesn't actually really answer the question:

The message is buggy, / has precedence over <<, it should use si.available >> 20. I expect boost reports 94026, which is quite small. You could try a simple separate program which just prints this:

  #include <iostream>
  #include <boost/filesystem.hpp>
  int main()
  {
      std::cout << boost::filesystem::space("/home").available << std::endl;
      return 0;
  }

Compile it with: g++ filename -lboost_filesystem -lboost_system

Then run it, it should print the amount of space available in /home. If you have the Monero blockchain elsewhere, replace /home with the actual path.

If this does return a wrong number, then it's probably a bug somewhere in boost or ZFS reporting.

--

Based on the comment below, another program:

  #include <stdint.h>
  #include <stdio.h>
  #include <boost/filesystem.hpp>
  int main()
  {
    const uint64_t add_size = 1LL << 30;
    boost::filesystem::space_info si = boost::filesystem::space("/home");
    if(si.available < add_size)
    {
      printf("not enough\n");
    }
    return 0;
  }

This uses the same types and code as monerod.


Can I run my simplewallet node from an external hard drive? Constantly updating and scanning the blockchain for newly discovered blocks is eating up a lot of memory on my Mac. Can I run simplewallet and bitmonerod from my 1 TB external HDD and only when its plugged in?

I cannot afford to have the full node eating away at my memory anymore.

If this is doable, how do I transfer the data from my internal hard drive to my external HDD?

Couple things... is it eating away at your memory (RAM) or storage (disk space)?

If you mean RAM, the answer is no. The computer memory used to run simplewallet and the daemon are not dependent on where things are being stored, at least in any measurable sense.

If you mean disk space, yes, kind of. What I mean by this is that you should still "run" bitmonerod and simplewallet from your primary disk, but specify a data directory on your external hard drive for bitmonerod. On macOS, this involves running the daemon like dEBRUYNE said, as such:

./bitmonerod --data-dir /Volumes/<my external HDD>

Note that you should run this command in the Terminal from the directory where you've save the bitmonerod executable.

To figure out what goes in <my external HDD>, open a Terminal and type

ls /Volumes

This should display a list of all connected volumes. Find your HDD (say, MyHDD), then do

./bitmonerod --data-dir /Volumes/MyHDD

Note that if you have already synced a blockchain in a previous location, you may need to move it or resync.


What does the "X" mean in the XMR ticker symbol? Why was an "X" chosen to be used in the XMR ticker symbol?

"M" and "R" are both contained in the work Monero. What is the meaning of the "X" in the Monero ticker symbol?

Many exchanges prefer a 3 letter ticker symbol. The X is the result of an ISO 4217 standard common for commodities and currencies that are not specific to a certain country. Bitcoin commonly uses XBT instead of BTC for the same reason


Running a Monero node over TOR from external SSD hard drive with wallet Pardon my ignorance, the other day, I asked a question about setting up a Monero node and wallet on my PC. I have now decided not to do that, and instead will set up on an external SSD drive. There is over 150GBs of free space on this drive.  I have no interest in using my node for mining. I will only use it for conducting my own Monero transactions. No incoming or outgoing except what is necessary for transactions.

I intend to setup a website which accepts Monero payments so I'd like to set up a suitable solution from scratch. I will be using the Monero API to accept payments to my wallet. I haven't decided yet which wallet to use as I want to practice using the system first.

I haven’t used crypto before and also I’ve read conflicting info like you shouldn’t keep the node and the wallet in the same place, and I’m not sure how hosting my node from home would affect my privacy (IP) etc. So I’m confused.

My Questions:

Can I set up a node and wallet using Tor, my home PC (Windows 10) and download the blockchain to an SSD hard drive?
Do I need to keep the blockchain download in a separate place to the
wallet? If yes, should I keep the GUI on my PC instead?
Is there actually a url where one begins the process of downloading
the blockchain?
For what I want to do would a GUI or CLI wallet be better? I will
eventually get a cold wallet.
Why do I need the pruned node if I have over 150GBs of space? I
would keep this SSD drive soley for the node.
If I wanted anonymity what would I need to do aside from using TOR
browser, I mean, how to keep my IP address from showing?

Thank you in advance for help.

Yes. Both the CLI and GUI allow you to set a location for storing the blockchain.
No, they do not have to be on different computers.
You just start up the daemon and it syncs from the network. There is a URL for info on downloading the blockchain and importing it, but honestly, syncing from the network is almost always faster these days.
If you are comfortable on the command line, use that, if not, use the GUI. The CLI is more feature rich but the GUI has everything that most people need.
Up to you. There are no particular drawbacks to running a pruned node though, and it means your drive will take considerably longer to fill up.
You already have good anonymity using Monero. Using Tor helps further because it makes it harder to even know you are using Monero.


Does a node that is more geographically centered in the Monero network have a higher chance of mining a block? As nodes are in competition with each other over who mines the next block first, does geography play a role in that competition? Would a 100 KH/sec mining pool located in, for example, Plettenberg Bay, South Africa have a more difficult time winning a block reward than a 100 KH/sec mining pool located in New York City?

What matters is where the last block was found, and this is due to latency. So if the last block was found on a pool server in new york, another pool server located in new york will be notified of the new block a lot faster than a pool located in france.

Granted, we're talking on the scale of milliseconds here, but if you do the napkin calculations of a 1 megahash per second pool, a 100 msec delay between a new york server and a server in france means that the new york server can perform 100,000 hashes before the pool in france is even aware of the new block.

Ultimately, these minuscule advantages are for edge cases when a pool gets lucky and finds a new block very quickly. More often than not, multiple seconds have passed before a new block has been discovered and these latencies do not matter, so ultimately it does not matter where a node is geographically.


How many different developers have made contributions to Monero source code? How many different developers have made commits to Monero source code?

How does this level of developer contribution compare to other cryptocurrencies of a similar marketcap?

Looking at solely GitHub commits, there have been 46 contributors to the bitmonero repository. If we count contributors to other Monero related repositories such as Kovri the number would be significantly larger.

There are many ways to track developer interest but marketcap alone is not the best indicator. One of the most popular developer score rankings is from CoinGecko which currently places Monero 5th among all cryptocurrencies. Just like Github, CoinGecko reports Monero as having 46 contributors.

Bitcoin leads all cryptocurrencies with 347 contributors. Ethereum comes in 2nd with 44 contributors, Counterparty 3rd with 27 contributors and Siacoin 4th with 12 contributors.

From that same Coingecko list, Dash in 6th place has 29 contributors, Storjcoin in 7th place has 15 contributors, the (now defunct) DAO in 8th place has 16 contributors and Ripple in 9th place has 19 contributors and Namecoin in 10th place has 25 contributors

The great majority of all cryptocurrencies are forked from Bitcoin and therefore will have a vastly inflated number of commits, and contributers, solely because of their merging of Bitcoin pull requests. This partially explains the reason why Monero only ranks 5th on the list above despite having more contributors than every project besides Bitcoin according to CoinGecko.

Monero is based on CryptoNote and has an entirely different codebase than Bitcoin. Developer interest is relatively high despite the much steeper learning curve (from those used to the Bitcoin codebase). The fact that academic research of Monero is also higher than most other currencies might be a leading indicator of increased developer interest in the future as documentation to help with the learning curve improves.


How can i get current fee from monero-wallet-rpc I wanna make transactions during monero-wallet-rpc.
When I wanna send some amount I wanna know the fee's before Im transfering the funds to other wallet.

How can i get the fee's regarding a trasaction from monero-wallet-rpc API?

Thanks.

The fee depends (in part) on the exact size of your transaction, and your transaction size depends (in part) on how many outputs you are spending. Therefore to determine the fee, you first need to construct the transaction to determine its size. You can do this using the transfer method with do_not_relay set to true.

If you are happy with the fee, you can then submit the transaction to the network using the relay_tx method.


cryptonote-universal-pool Stratum authentication failed I'm trying to setup the mining pool using https://github.com/fancoder/cryptonote-universal-pool (please do not suggest to use https://github.com/zone117x/node-cryptonote-pool because I also used that and I had a problem with incrementing balances for my miners).

Anyway I've cloned the repo of cryptonote-universal-pool then configured the config.json and then I had a first problem with:

Error: Failed to parse block
at Object.BlockTemplate.nextBlob (/opt/xmr/pool2/lib/pool.js:120:23)
at Object.Miner.getJob (/opt/xmr/pool2/lib/pool.js:297:41)

I changed the package.json "cryptonote-util" from git://github.com/fancoder/node-cryptonote-util.git to git://github.com/lucasjones/node-cryptonote-util.git

After that pool started nicly and I started to test it. Currently I'm trying to connect minerd from another host and I'm getting

[2016-09-13 19:55:36] Stratum authentication failed
[2016-09-13 19:55:36] ...retry after 10 seconds

I checked the configuration and there is nothing about authentication (here is the example of the config https://github.com/fancoder/cryptonote-universal-pool#2-configuration)

My minerd execution looks like this:

./minerd -a cryptonight -o stratum+tcp://<pool_ip>:3333 -u <95 chars wallet address> -p x

I'm stuck at that point. Can anyone explain what is happening or tell me how to debug it?

The first error (failure to parse blocks) is pretty likely to be due to the lack of ringct support in the C++ lib part of the pool code. You seem to have fixed it by using another version.

The second error is most likely due to an address being passed which doesn't match the expected format. This can be due to two reasons: either the address is really wrong (Monero addresses are 95 characters long, and start with a 4), or the pool's address being wrongly set (the pool will compare the first character of the miner address with the pool address' first character and expect the same).

The address validation code is at the end of lib/utils.js (isValidAddress). You can add traces to see which part of it fails.


Could a sidechain with complete transparency be pegged to Monero? Monero is private by default. There are potential use cases for complete transaction transparency that Monero may not be easily be able to solve (even with the view key).

Would is be possible for a developer to create a completely transparent sidechain that is pegged to Monero?

Would is be possible for a developer to create a completely transparent sidechain that is pegged to Monero?

That would certainly be possible. To prevent issues with the mainchain we would have to implement a cryptographic proof, i.e., the amount of XMR that went into the sidechain would have to be equal to the amount of XMR that goes back into the "mainchain". The biggest issue with sidechains currently is how to secure them. One would need to convince miners to secure their sidechain. In sum, it doesn't matter whether the sidechain would be private or (completely) transparent.


I created and executed a transaction to shape shift on the incorrect block chain, can any one help me? I have been through all the notes on the board re: my issue and I still can not figure out where my coins wound up  I was using the most recent GUI wallet on mac os-  I attempted to send XMR - ETH on shape shift   i used the wallet address they provided along with the payment ID they too also provided  the end result was nill after 20 emails with SS the conclusion is I sent them using the wrong blockchain- Can i get the coins back? if so how?  if not where did they go?  If anyone can help I will reward 1 XMR.  I will add as much info as possible below.

TX ID: a0d49f8ebf2f3c94a3642724230356b8862df8acc334575b3ca3958d595f67b7

History

All you need to do is start from scratch. Install the latest wallet, restore your wallet from your seed, and your funds will still be there. You spent the coins on the wrong blockchain, but on the new (correct) blockchain your funds have not been spent. This is confirmed by observing that the txid does not exist when searched for on xmrchain.net

If you don't want to start from scratch, you can instead upgrade your wallet by following instructions here: I forgot to upgrade (from CLI or GUI v0.11 to CLI or GUI v0.12) and, as a result, accidentally synced to the wrong (alternative) chain


How to install/use MoneroPHP on my site? I have the site xmrto.cash and just want to accept and send XMR. I was told MoneroPHP is a good way to do this but am having trouble just understanding how to install and use it.
What is the first step to installing this on my site?

How to install/use MoneroPHP on my site?

The README details how to use the library (which is itself well documented).

What is the first step to installing this on my site?

The first step is to install and run the Monero daemon and wallet RPC applications.
Note, you really don't need to use the library; it largely just wraps the daemon and wallet JSON RPC interfaces. So if you are comfortable making web requests directly in PHP, no wrapper library is needed.


How to create a Genesis Block I would like a plain and simple answer.

How do you create a Genesis block for a new Monero Fork?

I know this has been asked many times before but all I can find is closed questions saying "Duplicated Question" and answers that make no sense. This answer should not have been closed off Creating a genesis block, but it doesnt work, for an entire day

The CryptoNote advice saying run your daemon with --print-genesis-tx argument does not work. How to generate a new genesis tx?

This answer is very cryptic. I don't understand what I am meant to be changing. How can I create a new Monero genesis block?

The genesis block is automatically created for you from the genesis transaction and the genesis nonce that is hard coded here: https://github.com/monero-project/monero/blob/3ad4ecd4ff52f011ee94e0e80754b965b82f072b/src/cryptonote_config.h#L162

If you don't care about receiving the funds generated in the genesis transaction, then you can leave it unaltered and just choose any random value for the GENESIS_NONCE in the code mentioned above.

If you do want to receive the funds from the genesis block transaction, then you need to understand how to change the transaction, which is currently hard coded as 013c01ff0001ffffffffffff03029b2e4c0281c0b02e7c53291a94d1d0cbff8883f8024f5142ee494ffbbd08807121017767aafcde9be00dcfd098715ebcf7f410daebc582fda69d24a28e9d0bc890d1

To understand what the different fields in that transaction mean, see How can I create a new Monero genesis block?

To understand what you need to change about that transaction, see Monero Genesis transaction & nonce, specifically:

  create a wallet address and then create a transaction destined for
  your wallet on the main Monero network. You could then use a
  blockchain explorer to inspect the tx public key and output one-time
  public key, and copy/paste that into the genesis transaction.

Therefore, after creating your transaction on the main Monero network, alter the output #1 key field in the genesis transaction to match the output key from your transaction, and alter the transaction pubkey field in the genesis transaction to match the transaction public key from your transaction.

This will cause the destination of the genesis block funds to be your wallet.


Is it possible to integrate anti-keylogger in monero wallet? Is it possible and make sense to integrate anti-keylogger directly into monero wallet, so keyloggers can't read and steal seed/password?

No. A keylogger can run on your keyboard's firmware, or in your computer's BIOS, or as a rootkit. In fact, a sophisticated attacker doesn't even need to drop a keylogger on your computer, they just need a device that is within range of your wifi network and they can detect your keypresses based on how they interfere with the wifi signal.

The answer is not to try defeat keyloggers, it's to use some form of 2FA, which in cryptocurrencies normally comes in the form of a hardware wallet such as Trezor, Ledger, or Keepkey.


Can someone suggest a better way to test transfers for development testing? I have made an experimental fork which was forked from the Monero v0.13 release. The forks main focus is to test post-quantum signature keys for Monero. Although it's working, it still has a lot of bugs and there is a lot to work on still.

I have decided to rebase our current code-base to Monero's master branch, to include fixes from Monero and hopefully increase stability. After rebasing and doing some manual merging (which still isn't complete), I encountered some newly introduced functions that are somewhat blocking the old flow that I have, especially in transfers.

I am asking for your help on what better way to test transfers across multiple wallet addresses. I think I am doing this in an inefficient way for testing stuff and it would be great if you can share some of your experiences in testing Monero.

As for now, this is what I've been doing:

Start daemon with args --testnet --offline --fixed-difficulty 10 --log-level 2 --detach.
Start the wallet with args --testnet --log-level 4, then generate new wallet, then call it wallet1.
Kill wallet-cli, Do the same as step #2, then call the wallet wallet2.
At this point, I just switch to wallet1 start mining, then do a transfer in wallet2.
So wallet2 doesn't receive the transfer funds at all, maybe because they are sharing a daemon.

So this what I've been doing badly, and I know it's wrong. Another way I tried was to launch a VPS as secondary wallet and do the transfer there. That seemed to work but very inefficiently.

Can you share some of our manual transfer tests for a single machine, like running 2 nodes in a single system please?

Please note that I have not yet included a lot of Monero features, one of which is subaddress.

Thanks.
Joseph

You need to run a private testnet. Instructions can be found here: https://github.com/moneroexamples/private-testnet

Without it being private, your mined blocks wont make it onto the real testnet chain because you are mining with a lowered difficulty due to you using the --fixed-difficulty 10 option, and they wont get broadcast due to you using the --offline flag.

Follow the instructions linked above and you'll have a private testnet to play/test with.


Is there any message in Monero's genesis block like there is in Bitcoin's? As the title says, what data was used to seed Monero's genesis block?

None afaik, Monero (then Bitmonero) was launched as a fork of Bytecoin. Not thats impossible as the Bytecoin blockchain is full of messages and cryptic data:

http://bytecoiner.org/bytecoin-early-adopters-and-secret-messages

https://bitcointalk.org/index.php?topic=512747.msg7126913#msg7126913

obs: there is large suspicion that the bytecoin blockchain was faked: https://bitcointalk.org/index.php?topic=740112.0


blockchain refresh mechanism According to the Wolfram Warptangent, Point Release 1 notes, the new Monero release will optimise the wallet blockchain refresh mechanism

What optimizations were made and what is their impact on efficiency or performance? What new refresh functionalities were introduce?

The key derivation (ECDH shared secret) is now only computed once per tx, whereas before it was done per output. With a basic 2 output RingCT transaction, this should amount to approximately a 33% performance improvement (more for old-style transactions with more outputs).


How many transactions can fit in a block? Based on current average transaction sizes, how many transactions can currently fit in a block?
If there is a sudden flood of transactions that exceed the answer to #1 how long can they remain in the mem pool to await confirmation in a later block?

There is no easy answer, since both the block size limit and the transaction sizes are variable.

currently, the block size limit sits at its low limit, which is 60 kB. A transaction size can range from a few hundred bytes to more than 60 kB. With those numbers, you could fit 1 to 100 transactions. With a typical transaction size of 2 kB, you can have 30 in a block, roughly.

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

If blocks are consistently filled, the block limit will go up. Based on a spam attack in 2014, a day is enough for that limit to double. I'm not sure whether the block time change would make it slower, as I do not think the block size median window changed, but I would think it'd make the changes slower.


Hardware update required on Monero mining I am new to mining but after reading and research I am going in with Monero. I am planning to use the Sapphire RX Vega 56 8GB GPU. The motherboard is Asus B250, 8GB RAM. The questions that I have are:

1) After referring to MoneroBenchmarks it seems that Vega 56 cards provide a really good hashrate at low power. But, are there any better options that I can consider? And, when I select a GPU, what configuration of the GPU should I focus on to know which one will be better. I know that efficiency will vary depending on the algorithm I am processing, but besides that is there anything relating to the GPU's config that I should focus on?
2) Regarding the processor, is there one that I should focus on to increase my efficiency? Since the work will be done by the GPUs primarily, so will the choice of processor play a significant role?

Thanks.

Actually, the AMD Radeon VEGA cards, both 56 and 64, are the best options for mining Monero. Nothing is comparable to VEGA and with fine tuning you can reach really high hashrate (about 2000H/s) with really low TDP.

To understand how to config VEGA and miners, useful sources are:

Monero and Vega - the definitive guide
Vega Mining - A
Consolidated Guide

Regarding the processor, CPU is not important at all and doesn't play a significant role, but if you have a XEON or a RYZEN you can add nice hashrate to total value also mining with CPU.


What pool miners exist that can mine RandomX? In a couple weeks from now, Monero will start using the RandomX PoW algorithm, replacing the current Cryptonight-R. What are the current pool miner software that may be used to mine with this particular algorithm, so that a current miner may use to continue mining after the switch ?

XMRig is the miner with the most actively developed RandomX implementation. It can also seamlessly switch from CN/R to RandomX when the network updates if in your pool config you set the property coin to "coin": "monero". Aside from mining to a pool with XMRig, you can also solo mine against your Monero daemon. This offers a performance improvement over simply mining directly with the daemon's built-in miner.

There is also a version of xmr-stak for RandomX mining, though it should be noted, they simply copied the RandomX code directly from XMRig. Whether this miner supports automatic switching from CN/R or whether the developers plan any unique features w.r.t. RandomX, I cannot answer.


How to convert monero's curve25519 basepoint to bouncycastle This is how to get the curve25519 basepoint in monero (use js console at https://xmr.llcoins.net/)

> var identity = "0100000000000000000000000000000000000000000000000000000000000000"
> var base = ge_scalarmult_base(identity)
> base
"5866666666666666666666666666666666666666666666666666666666666666"

The C++ implementation gives the same string (using rct::scalarmultBase(rct::identity())).

In java, there's a standard crypto library called bouncycastle (maven: org.bouncycastle:bcprov-debug-jdk15on:1.59). The java code in the research lab uses bouncycastle: https://github.com/monero-project/research-lab.git

This is how to print the basepoint using bouncycastle:

ECParameterSpec curve = ECNamedCurveTable.getParameterSpec("curve25519");
ECPoint base = curve.getG();
byte[] bytes = base.getEncoded(true);
for (int i = 0; i < bytes.length; i++) {
  System.out.format("%02x", bytes[i]);
}
// 032aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaad245a

So the basepoint looks a bit different this time. Apparently these are different ways to encode the same curve point. Is there a way to convert one form to the other?

Monero uses ed25519. The code in the github link you referenced (which I helped write) uses curve25519 instead of ed25519. The reason is that that code was to prototype RTRS RingCT, which relies heavily on variable base scalar multiplication. Curve25519 is higher performance at variable base scalar multiplication than ed25519.

Prior to switching that project to curve25519, I'd already written code that uses an ed25519 library in Java, where the ed25519 library was borrowed from the NEM project. You can see the old commit of the ed25519 Java code here: https://github.com/monero-project/research-lab/commit/46d95551ff1852aa2e13a875b25d817a7f044a1c#diff-4c2f0ce20e9eb6549240e4f58175980a


Which fork version is the py-cryptonight hash library using? I was wondering what version the py-cryptonight library is using. For example, is it CryptoNight lite v2, CryptoNight v8, CryptoNight heavy?

As of right now, it's using the latest version of CryptoNight (CNv2, as used in Monero hard-fork v9). CryptoNight lite is not used by Monero, neither is heavy. CN lite first appeared in Aeon IIRC and is (as is heavy) a different algorithm altogether.


What are the differences between Cryptonight-R and Cryptonight v4? Monero is switching to Cryptonight variant 4 (CNv4) in March 2019. CNv4 is based on Cryptonight-R, with some modifications. What are these modifications ?

What are the differences between Cryptonight-R and Cryptonight v4?

They are the one and the same thing [src], just different naming.

Cryptonight variant 4 aka CryptonightR

More accurately though, CryptonightR is proof-of-concept code and Cryptonight-v4 is Monero's implementation of it [src].

This is proof of concept repository and a proposal for the next Monero PoW.
It introduces random integer math into CryptonightV2 main loop.

  ...with some modifications. What are these modifications ?

Just some final tweaks from vtnerd [src]. These are not fundamental changes, rather last minute "tweaks".

These last minute tweaks ensure the original developer of the implementation hasn't also secretly developed an ASIC capable of working with the implementation, and also any other ASIC manufacturers that might have been developing an ASIC whilst the code was available before being PRed to Monero.

Of the tweaks themselves, the addition of an extra register and more memory access routines seem to be the significant tweaks.


How to know when I get paid from mining Monero I just started to mining Monero, using Claymore v3.8. Via CPU.

With my very weak knowledge of mining, I just want to see a "payment" so can be sure that I am not mining for nothing.

I am using Monero GUI for wallet.

Pool: pool.supportxmr.com:5555

Average hashrate: 250 h/z

And set -t 4 (in the readme file, said that if you have i7 CPU use this option)

Total hashes are more than 1.5 million right now.

I also wondering, how can I know that will I be profit from this mining while the computer using electricity, I mean the payment of electricity and gaining Monero from mining via CPU, is it worth it?

You can check with the pool. Many pools will inform you when you stop hashing and when they make payments.


V7 hard fork inputs sorting I've seen that the new hard fork requires the inputs to be sorted. I already had some transactions rejected from my testnet node due to this rule.
So, the question is:
How are the inputs supposed to be sorted?
I need to sort the mixin offsets from min to max?
Is there some definition of this rule somewhere?

Thanks.

The sort is to be done on key images. See src/cryptonote_core/cryptonote_tx_utils.cpp from line 321 on current master.

Are those rejected transactions created by monero-wallet-cli or monero-wallet-gui ? If so, please file a bug on github.


Connecting to remote daemon in testnet is not working I'm studying blockchain and alt coins like Monero. I want to see how transaction works in Monero network because they are all behind the veils. So, I tried to create a testnet account to test transactions, and I finally get XMR on testnet with mining.

But whenever I transfer the coin to my another account on testnet, my wallet says "Error: no connection to daemon. Please make sure daemon is running.".

I opened cli-wallet with using option "./monero-wallet-cli --daemon-host testnet.xmrchain.net:28081 --testnet --trusted-daemon" with using XMRChain daemon.

I think the argument I entered is correct because I can do mining the blocks in the testnet. What could be the problem?

the current code on testnet.xmrchain.net does not allow transfers (it's a bug which is fixed but not yet deployed there). just run your own testnet node.


Is there a benchmark results for mining with monero using different cpu and gpu's? Is there a list of how much each cpu or gpu can hash when mining monero? I read that cpu is better at mining monero than gpu.

maybe this will help you
https://www.servethehome.com/monero-mining-benchmarks-select-dual-intel-xeon-e5-systems/

And I can tell you on my hardware
2 x Intel(R) Xeon(R) CPU E5-2420 0 @ 1.90GHz I got ~ 430 H/s


How do you get the IP address of a Loki Service Node on the network? Is there a way to see the IP address of a Loki service node that is on the network?

On any loki node regardless if its a service node or not, you can run the following command:

curl -sX POST http://localhost:22023/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"get_service_nodes"}' -H 'Content-Type: application/json' | grep -B 4 SERVICE_NODE_ID_HERE

Change localhost if your connecting to a remote loki node and change SERVICE NODE ID to the id you are looking for.


Syncing Monero blockchain and get error not sure that the problem is. Error posted below I got this error all of a sudden, this is also my third time trying to sync the blockchain from scratch.

2017-07-01 02:37:30.764 [P2P7]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1004    [1;33m[167.114.166.199:55957 INC]  Synced 239998/1344461[0m
2017-07-01 02:37:33.263 [P2P3]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1004    [1;33m[192.81.219.211:55014 INC]  Synced 240198/1344461[0m
2017-07-01 02:37:38.763 [P2P9]  ERROR   blockchain  src/cryptonote_core/blockchain.cpp:3383 Error adding block with hash: <d2655d92c4bb008650350bb60658f612297dde0685ebf4cb5735f4c261edfb15> to blockchain, what = Error adding spent key image to db transaction: MDB_PAGE_NOTFOUND: Requested page not found
2017-07-01 02:37:38.764 [P2P9]  WARN    blockchain.db.lmdb  src/blockchain_db/lmdb/db_lmdb.cpp:71   Failed to query m_blocks: MDB_BAD_TXN: Transaction must abort, has a child, or is invalid
2017-07-01 02:37:40.152 [P2P9]  WARN    blockchain.db.lmdb  src/blockchain_db/lmdb/db_lmdb.cpp:71   DB error attempting to fetch block index from hashMDB_BAD_TXN: Transaction must abort, has a child, or is invalid
2017-07-01 02:37:41.714 [P2P9]  WARN    blockchain.db.lmdb  src/blockchain_db/lmdb/db_lmdb.cpp:71   DB error attempting to fetch block index from hashMDB_BAD_TXN: Transaction must abort, has a child, or is invalid
2017-07-01 02:37:41.834 [P2P9]  WARN    blockchain.db.lmdb  src/blockchain_db/lmdb/db_lmdb.cpp:71   DB error attempting to fetch block index from hashMDB_BAD_TXN: Transaction must abort, has a child, or is invalid
2017-07-01 02:37:45.188 [P2P9]  WARN    blockchain.db.lmdb  src/blockchain_db/lmdb/db_lmdb.cpp:71   Failed to query m_blocks: MDB_BAD_TXN: Transaction must abort, has a child, or is invalid
2017-07-01 02:37:47.176 [P2P9]  WARN    blockchain.db.lmdb  src/blockchain_db/lmdb/db_lmdb.cpp:71   Failed to query m_blocks: MDB_BAD_TXN: Transaction must abort, has a child, or is invalid
2017-07-01 02:37:48.896 [P2P9]  WARN    blockchain.db.lmdb  src/blockchain_db/lmdb/db_lmdb.cpp:71   Failed to query m_blocks: MDB_BAD_TXN: Transaction must abort, has a child, or is invalid

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

To avoid corruptions make sure to always gracefully exit monerod. In addition, make sure you are running the latest version, which is 0.10.3.1 currently.


Monero original giving me this strange line saying upgrade 2018-05-30 23:58:37.090 [P2P7]  WARN    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:272     [1;31m[211.20.7.199:64432 INC]  peer claims higher version that we think - we may be forked from the network and a software upgrade may be needed[0m

So I have been using Monero original for a little while, and now I have noticed that a strange line saying we may be forked from the network etc etc etc.

I am wondering if that is going to cause issues for my node and wallet?

Monero has updated its consensus rules a couple months ago. What some call "Monero original" is just an old Monero version on which some people continued to mine. You need to update your software so it can parse the new blocks/transactions or it will stay on the old chain. Until you do, it will not be able to understand those "new version" blocks, and warn about them.


What is the command to get the block height using the monerod and monero-wallet-cli command? Is there a way to output the current block height using the monerod and monero-wallet-cli command?

monero-wallet-cli bc_height
monerod print_height


Are there any Monero podcasts? Are there any Monero-specific podcasts or episodes related to Monero in a more general podcast?

I'm specifically asking about audio recording rather than videos.

Monero-specific podcasts:

Monero missives : 11 episodes are available on Monero official site. Last one is from March 19th, 2015
Monero Monitor : a podcast started in March 2017 by bigreddmachine

Episodes:

The Bitcoin Game : core member fluffyponyza was the invitee of a double episode in 2017 (part1, part2)


How to create spend key and view key from public address i have to create Monero wallet on https://moneroaddress.org/. And did not note spend key and view key. just note public address.
Is it possible to create spend key and view key from public address?

No. You can obtain them from the seed mnemonic (25 words) if you saved those. If it was possible from the address, then anyone could steal anyone's money.

If you already created the wallet from the keys/seed, you can get them from the wallet. If you just made the address, and closed the window without saving the mnemonic words or keys - that wallet is gone forever.


What keys are being used to create the key image and how is it verified? So i'm trying to pin this down since yesterday and i simply cannot find a definite answer. Read dozens of posts and few papers specifically on this topic and while i developed a "belief" that it has to be this way i still would like to be reassured so i can move on and be sure of what i know.

I understand that in standard ring signature "systems" everyone would have their one pair of public and secret keys and when signing some message they would use a set of public keys from some (maybe randomly chosen) people, and then (depending on the cryptography behind it - RSA/EC) they would do the according crypto-magic using their own private key to derive some keys to fit the equation (in case of rsa) or "close" the ring for EC so that it can be verified with each of the public keys in the signature.

Now lets add one more step towards the monero approach: the one-time keys. Using DH we are able to generate a public key, to which only the recipient is able to derive the one-time secret key using his own "wallet/master-secret-key". We can hide the recipients that way. Great.

Now because we have this anonymity, we do not have the overview of how much money each user has, so we cannot verify (this easy way) if they actually own the money they want to spend in a transaction. So if someone would want to spend 100 xmr we would not be able to tell if they own those or not, so what monero does is it makes you reference the transaction with 100 xmr that has been made to "you" (where you is not your wallet-public-key but the one-time-pk). Now you have to prove somehow, that the transaction was made to you, without giving out, that it actually is you. That is why you use the ring signature for - with crypto-magic help, you prove that you are able to spend the coins, while hiding yourself in a group of, let's say 5 people. All good so far, but what prevents me from spending the same amount of money over and over again with a different set of public keys (so hiding behind other people)? As far nothing.

So now we've come to the key images. Those are used to ensure, that the 100 xmr you received can only be spent once (by you, or more specifically by the wallet you own). The key image is calculated as follows:

I = xH_p(P)

with x being the secret key, and P the public key and H_p the hash function to a point on the curve.

Now to my actual question: which secret and public keys are being used here??

To my understanding it have to be the one-time public and secret keys of the transaction addressed to you. The public key of it is visible to everyone anyway and you are able to retrieve the secret-key of it and this is the way you prove. that you are able to spend that money.
Now this may seem obvious to someone who already understands it or even developed it, but the problem is that everywhere it's stated as "...you use your secret and public key..." or some form of that sentence. Now if i did that i could only create one single transaction with my wallet, according to the along going statements like: "this way it's ensured, that you didn't sign more transactions with the same key". IMHO it's extremely confusing and misguiding and i cannot understand why there is no clear statement on this part like:

I = xH_p(P)

where x is the one-time secret key of the transaction addressed to you and P the corresponding one-time-public-key. It's neither in the papers, nor in the answers provided to similiar questions. The closest i got to a satisfing answer was this post: What is a key image?.

Another question i'm struggling to find a good answer to is: how is the key image verified?

All if found is that it's checked if this key image has been used before, but not if it's actually valid. Is the verification part of the signature check as whole and is not explicitly checked?

I'd be grateful if someone could assure me of my assumptions or correct me if i'm wrong. Thanks in advance!

I = xH_p(P) which secret and public keys are being used here?

x and P are the one-time output private and public keys, respectively.

  To my understanding it have to be the one-time public and secret keys of the transaction addressed to you

There is a transaction public and private key, but this is only related to addressing inputs to particular wallets and allowing the recipient to calculate the correct private and public keys for the outputs destined for them. Ring signatures are purely about proving that the private keys of particular outputs are known.

  how is the key image verified?

  All if found is that it's checked if this key image has been used
  before, but not if it's actually valid. Is the verification part of
  the signature check as whole and is not explicitly checked?

The cryptonote white paper does a good job of putting this into English:

  The meaning of the protocol: by applying L-transformations the signer
  proves that he knows such x that at least one Pi = xG. To make this
  proof non-repeatable we introduce the key image as I = xHp(P). The
  signer uses the same coefficients (ri , ci) to prove almost the same
  statement: he knows such x that at least one Hp(Pi) = I · x^−1

  The signer cannot make two signatures with different I’s and the same x

In other words, the key image could not have just been some random made-up key image, because the verification of the ring signature mathematically proves that for one of the outputs in each ring, the key image the spender declared was calculated as xHp(P), where that x is the same x that the ring signature also proves must have been the secret key of one of the outputs being spent.

Perhaps the simplest way to state this is: Monero uses linkable ring signatures, which is a way of proving that for one particular unidentifiable public key in a set, the corresponding private key is known and that the corresponding key image has been correctly declared.


Selection of outputs with RingCT What are the improvements brought by RingCT regarding selection of inputs and outputs?

Essentially, RingCT increases the number of usable outputs to mix with and reduces the need to use multiple outputs for transactions.

The first part is easy - because RingCT hides the amount, all transactions are interchangable. I can mix a 10 xmr output with a 1000 xmr output... because you can't see the amount on the chain anymore.

For instance, in the old style, if I were to send 123.45 monero, and assume I owned a nice distribution of outputs, the transaction would be created by:

100 monero output
10 monero output
10 monero output
10 monero output

So, if I just started using Monero, its likely all of those outputs are in the same block, therefore they'd all stack in time, and it would be obvious which outputs are the real ones (ok, obvious is a strong word here). If I had a well "seasoned" wallet, they would be distributed over time. Please refer to the SE entry here

Now, with RingCT, I don't need the entire stack. Indeed, the outputs no longer need to be split into those denominations. With a ringCT transaction, if I send you 123.45 XMR, there's gonna be an output for 123.45 xmr, not 5 outputs. And I can use any of my outputs (as inputs for that transaction) that I want. Indeed, with the advent of RingCT, it will probably be the case that wallets will only maintain 1 output.

I have 145.3 xmr in my wallet, all in one output.

I create a transaction to send 20 xmr. I use my 145.3 output, and the change comes back. So I have a new single output of 125.3 xmr. That I can then mix with whatever.


running monerod on background thread always stops after some time When I run monerod on a background fork in linux, it always stops after sometime. Why is this? I have tried using monerod --detach and nohup monerod & and it still stops after awhile. I can't complete a full sync as a result. Does anyone know why this is happening ?

This ended up being because I was running monerod on a child process via remote shell in which case one should use screen to keep the process running should there be a disconnection or run on a system owned background process


Is a Monero hardfork to replace stolen funds impossible due to its untraceability If a hacker was able to steal coins from a major Monero exchange or large owner would Monero developers be able to do anything to recover the stolen funds (assuming they wanted to try)?

Is it possible to revert transactions from a hacker without unmasking the privacy of other Monero users? For the purposes of this question assume that other non related transaction activity occurred on the Monero blockchain after the hack occurred but before it was discovered.

You can ignore the secondary question of whether or not Monero miners would approve a hard fork that would destroy the immutability of the Monero blockchain. This is not meant to be a governance question (or a comparison to the DAO hack) but a technical one.

Due to the nature of mixins in the ring signatures you cannot be 100% sure that uninvolved transactions would not be affected in such event, the blockchain as a whole could be rolled-back for a single incident but it is unlikely to ever happen since no entity holds this kind of power over the Monero blockchain.


Does it make sense to mine Monero if I have free electricity? I have the opportunity to use "free" electricity for keeping one computer running all day and night.
To be clear, the electricity is not actually free of course, it's that I won't be paying the bill.

I wonder if it makes sense to build a computer and use it for mining Monero since there will be no electricity costs, but even if I do, how much could I make out of it? Does it make sense if I am anyway investing some money in buying a good computer for it?

Thanks

How much you might generate in XMR will very much depend on how powerful the computer is you plan on buying. For example, a RaspberryPi probably wont earn you much at all, but a multi-socket EPYC server is another thing entirely. Of course, how much electricity these use is also very different, therefore you should probably double check with the electricity bill payer before investing in a machine that is going to consume more electricity than a typical home PC does.


How to use a remote node on a very bandwitdh restricted connection? I set up a remote node for Monero using SSH tunneling, it works great.

The problem is that it's using quite a bit of bandwidth. I assumed all bandwidth intensive operations were done in the remote node, but my local monero-wallet-cli downloaded hundreds of MBs in a few minutes.

Is there a way to prevent this?

Thanks.

If you update to the coming release, and if the remote node you're using is using a recent daemon (the one that'll come with that release), the bandwidth will be much less when refreshing the wallet.

For current blocks (ie, after the ringct change), the bandwidth should be less than 5% what it was.


How does the dynamic blocksize and the dynamic fees work together in Monero? This mechanism is unique to Monero because it's the only cryptocurrency to have both blocksize and transaction fee dictated by an algorithm, how was this achieved and what is the rationale behind such system?

In addition to the excellent summary by ArticMine already given, here below is shortened & updated version of my research on the topic.
Dynamic Blocksize Penalty
This is the penalty which will be subtracted from the block reward. In practice it means that whenever a penalty is triggered, the start of tail emission will be slightly postponed (it will start later to "give back" the penalized amount), and once tail emission kicks in it will be an effective coin burn because the block emission will no longer depend on current emission as it will be fixed at 0.6 monero per 2-minute-block, as explained by ArticMine.
It can be written as:
P = R * (W - 1) ^ 2,
where P is the dynamic blocksize penalty (monero), R the block emission (monero), and W the blocksize expansion factor (unitless).
The expansion factor is W = B / M where B is the blocksize (kB) of the examined block, and M the blocksize median of previous 100 blocks (kB). For example, an expansion factor of 1.10 means a 10% increase so if the median is 300kB, the expanded block would be 330kB.
At its simplest form, it could be rewritten as:
p = (W - 1) ^ 2
where p = P / R, and can be called relative blocksize penalty (unitless).
For example, blocksize increase of 20% above the median would mean 4% (= 20 ^ 2 / 100%) penalty, increase of 40% would mean 16% (= 40 ^ 2 / 100%) penalty, regardless of the actual value of current median and block emission. This is always true, and easy to remember.
Note that there are no arbitrary constants. The only special treatment is for M < M_0, where M_0 is the minimum penalty-free blocksize, presently at 300kB. The function of this is to prevent unwanted edge cases, too high fee/TX and allow some number of transactions to fit in a block regardless of the current median. While it is a constant, it will become irrelevant once M is stable above it due to regular network use.
To illustrate, imagine if there were 100 empty blocks. The median would be 0 and nobody could transact since there's a hard cap at 2 * M and 2 * 0 == 0. For this reason, M_0 is introduced and used in place of M until M > M_0, allowing normal functioning of the network even after times of no or minimal use. Once the network grows big enough, the median will likely never drop below M_0 and it will become completely irrelevant.
The relationship can also be observed in the below chart.

Dynamic Neutral Fee Formula
This is the fee (monero / kB) needed to compensate the penalty for a given blocksize increase. It can be written as:
F_n = (R / M) * (W - 1).
where R, M and W have been defined above.
We can also express the fee in relative terms normalized to size of block median:
f_n = (W - 1),
where f_n = (F_n * M) / R.
This means that if there are transactions in the TX-pool offering such fee with which the total fees in a 100% full block would be some % of current block emission, the miner could increase the block for the same % and earn the same block reward.
We can plot the relationship for various f_n, as seen below.

Wherever the parabolas cross the x-axis, is the point of neutral blocksize increase. The "sweet spot" is the tip of each parabola, where the miner would earn the maximum possible for a given fee. These are joined by a curve called the optimum curve. For any given TX-pool state, a miner should arrange his block such that it lies as close as possible to that curve.
The current dynamic minimum fee is the curve for f_n = 1.2% which is arbitrarily chosen. It could be any other. It matches priority = 1 in the wallet setting. This means that if everyone offered the minimum fee, miners would still have incentive to increase the blocksize up to 1.2% if the TX-pool is full.
Practical Consequences

The best strategy for the miner is to keep blocks 100%+ full with other people's TX-es. This doesn't necessarily mean increasing the blocksize. -
If the TX-pool is full, he'd want a 100%+ blocksize to earn more on the extra fee-paying transactions.
If the median is already elevated due to some previous rush period and is now under utilized, like blocks being 50% full because there's not enough TX-es in the TX-pool to fill them up, a miner would earn more if he lowered the median as it would bring the fees up. This is important because it means a miner is not motivated to stuff his own dummy TX-es just to keep the median elevated.
A miner has no incentive to reduce the blocksize while the TX-pool is full. While reducing the median would increase the fees, the miner wouldn't earn more in total since he could fit less transactions in a block. He would actually actually earn less, because the fee increase lags behind so he'd initially be filling smaller blocks with same fees/kB, while competing miner could take all those TX-es and earn more than him.
The normalized relative fee is actually constant, ie regardless of the current blocksize, the total fees per block will always be some % of the block reward. This means that the fees will reduce as the block reward reduces. This also means that the cost of a block is shared among those who transacted. The bigger the block, more people share the fee, and individual fee/Tx will be lower.


Was the reasoning behind the large tx extra in minergate's transactions ever revealed? It's absolutely enormous. Was it revealed why it's used?

This is a Minergate block:

http://explore.moneroworld.com/tx/bba343e5e172f07f623fb34c0cbd26519567cc374c5d61d468d370714f3d5b66

This is a regular pool block: http://explore.moneroworld.com/tx/7cddf2da09ec9c890d14ad18b9df7d4cd88e96103a739760a06dc5f91541ba05

Notice in the Minergate block there is this huge tx extra thing: 01c4230d59c83b3042fd82999cfda5be6b77c1673d9442d1f21c7ab9215bdc6c18021198414900000000000000000000000000000321004bff195014248ae22838853bcf293b8945f9baaac693c2d05bafe2f0f3e6c69e

The extra payload appears to be for merged mining, as per the definitions in src/cryptonote_basic/tx_extra.h:

field 0: extra pub key: <c4230d59c83b3042fd82999cfda5be6b77c1673d9442d1f21c7ab9215bdc6c18>
field 1: extra nonce: 9841490000000000000000000000000000
field 2: extra merge mining tag: depth 0, merkle root <4bff195014248ae22838853bcf293b8945f9baaac693c2d05bafe2f0f3e6c69e>

I believe XDN was switching to merge mining with Monero, so it could be this. XDN was abandoned a year ago though. Fantomcoin was also merged mined, but has been dead even longer.


xmr stack cpu closes without any error When I open the program it simply closes without returning any messages. What can I do?

Intel Xeon CPU E5-2640 v3 2.60Ghz Windows Server 2008 R2

Make sure it isn't blocked by an antivirus (including Windows Defender), that would be the usual cause.


Monero or Bitmonero? If Monero is official name of this project, why is the name bitmonero still commonly used?

Even the daemon is named bitmonerod. Are both names Monero or Bitmonero considered correct?

Bitmonerod was the original name provided by thankful_for_today

The community decided to take over the project from TFT following some disagreements and renamed it Monero. The name bitmonerod is still used to refer to the Monero daemon but bitmonero is no longer a correct name for the project. thankful_for_today disappeared and has not posted on Bitcointalk since June 30, 2014.

In addition to changing the name, the trading symbol was also briefly changed to BMR to MRO before the Monero community settles on XMR. XMR was chosen for a specific reason:

  The official ISO 4217 standard specifies three-letter ("Alpha-3") codes for currencies worldwide. Codes beginning with "X", among others, are reserved for special purposes such as non-currency commodities.


SSL handshake failed due to unexpected packet format I am trying to connect to a Monero stage net node to make some basic RPC calls and start building a library for working with Monero however I am getting an SSL error when connectiong.
using System;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using Monero;
using Newtonsoft.Json;

namespace Monero
{
    public class Request
    {
        public readonly string jsonrpc = "2.0";
        public readonly string id = "0";
        public readonly string METHOD = "get_version";
    }
}

namespace Monero_Test
{
    class Program
    {
        static void Main(string[] args)
        {
            Monero.Request c1 = new Monero.Request();
            string json = JsonConvert.SerializeObject(c1);
            Console.WriteLine("Json = {0}", json);

            HttpClient client = new HttpClient();
            try
            {
                var content = new StringContent(json, Encoding.UTF8, "application/json");
                var response = client.PostAsync("https://monero-stagenet.exan.tech:38081/json_rpc", content);
                Console.WriteLine(response.Result.RequestMessage.Content.ReadAsStringAsync().Result);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.InnerException);
            }

            Console.ReadKey();
        }
    }
}

error:
System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.
 ---> System.IO.IOException: The handshake failed due to an unexpected packet format.
   at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslStream.PartialFrameCallback(AsyncProtocolRequest asyncRequest)
--- End of stack trace from previous location where exception was thrown ---

How would I go about rectifying this?

Use a daemon that is up and running
Use a daemon that is running with SSL configured
If using a daemon that is auto-detecting SSL clients, configure your client to allow self-signed certificates.


Best services/soft/pool for home CPU mining today, April 2020? What's list of top sites on your opinion?

Here's a list of pools, helping you to make up your own mind :)

https://miningpoolstats.stream/monero


Monero old version wallet wipeout my xmr I opened my wallet in gui 0.15.0.2, then files amnesia.old_cache and amnesia.unportable was made and my wallet was wipeout. I don't know what's going on.

This is a very old version. Remove the wallet (except the .keys file, which you must keep), get a recent version, run that, and let it rescan the chain.


View Balance without a transaction hash Where and how can I check my Monero balance without having a transaction hash?  As a merchant I just need to control whether a client has payed the Monero to my wallet.  I have a paper wallet.

You cannot view amounts, and thus check your balance, with just a transaction hash. Amounts on the Monero blockchain are encrypted.

What you will need to do is take your paper wallet and restore either a full or view-only wallet using the seed words printed on your paper wallet. Then using the restored wallet you can scan the blockchain for incoming payments.

Refer to the guides: How to make a view-only wallet and Securely purchasing and storing Monero.


Running monerod in the cloud on SSD volume, but with a tight limit on IOPS imposed by the provider. Will the PR #1506 help? I'm running monerod on an Amazon EC2 instance with an SSD volume (gp2 volume type), and synchronization from scratch gets extremely slow after I've used up my burst credits (allowing me up to 3000 IOPS for a limited time instead of 100). See also my question here for details.

My follow up question now is if PR #1506 will significantly decrease disk IOPS as a side effect of addressing issue #1463. The description says that the number of DB txn is reduced to 1 for each batch, and I'm assuming but am not entirely sure that this also means much fewer IOPS on the disk side.

Yes, judging from my test results PR#1506 should reduce the IOPS requirement by at least half.


Will Chained Mempool Transactions ever be possible? If Monero gets large enough Ring Sizes to include potentially unconfirmed inputs, would chained transactions be possible?

Chained Mempool Transactions in Bitcoin allow unconfirmed inputs to be immediately respent. This gives huge UX advantages, including:

Immediate sending of received funds
Multiple transactions possible with only 1 input
Services can do more nifty things*

*See Bitcoin unlimited's post.

Obviously, a chain of 25+ is unrealistic from a privacy perspective, but are there any technical barriers stopping Monero from doing this in the future?

in addition to janowitz answer, chained transactions in monero are currently impossible because inputs are referenced with an index ID that is created when the tx makes it into a block. Thus, in order to make chained txs possible, the system would have to be reworked such that transactions are referenced by a unique identifier, so it doesn't matter where in the chain they end up. This reworking is also important for chain reorganizations.


monerov windows wallet gui.exe showing up as Trojan Why is moneorv windows wallet gui.exe being quarantined as Trojan.BitCoinMiner by malwarebytes ?

Because you can mine MoneroV with it and that is considered a malware by antivirus software. Monero has the same problem (MoneroV wallet is a clone of the Monero wallet).

Other mining software have the same issue. For example XMRig shows up also as a malware.


Maximizing privacy when dealing with pre RingCT outputs When spending from a cold storage wallet with multiple pre RingCT (and no post RingCT) outputs what are the best privacy practices?

Spending in this context means the eventual moving of these funds to a new cold storage address generated by Ledger Nano S when Monero support is available.

I'd do a sweep_all with a bigger ringsize to merge them all in one RCT output, followed by a couple of sweep_all to yourself (AKA "churn") with default ringsize at random intervals.

You can send that first TX directly to your Ledger and then use the Ledger to do the churning TXes, as it will likely be more user friendly than "manually" with the cold wallet CLI where you have to pass around some files. Preferably hide your IP via Tor/VPN if you want to hide the metadata as well.