Though your first sentence is not actually a question, I shall refute your statement. Energy is never burned using POW or wasted, every single bit of it serves an extremely valuable purpose, no miner is wasting energy, they all get paid for their contribution and that contribution is proportional to the usefulness and value of the network as a whole. It uses ...
Let me present some arguments.
As an ecological dilemma
Let's consider the scale of mining operations energy consumption. I will take a random mining rig consisting of 6 AMD 480 GPUs, and giving 3450h/s for my calculation. Each GPU has a TDP of 150W, and that gives us 261W/kH.
Actual Monero network hashrate is 30MH/s and market cap. 90mil USD.
There are two modifications: the scratchpad is only half the size of regular Cryptonight (1 MB rather than 2 MB) and the number of AES iterations is halved (half a million rather than a million). This makes a light hash about 4 times as fast as a regular one.
It's a bit hard to tell how this change influences blockchain sync since different machines will ...
One of the main reasons Cuckoo cycle is atractive when compared to Cryptonight is that it is very fast to verify. This is one drawback of Cryptonight: it makes all operations that need to verify Cryptonight hashes slower.
Another reason to want a switch to Cuckoo cycle would be to keep the CPU/GPU/ASIC performance within a reasonable scale. Should ASICs pop ...
Double spends are prevented by the use of key images, which are sent along with each output being spent in a transaction, and which are checked for uniqueness before allowing the transaction.
In the Cryptonote protocol, an output's private key can be used to uniquely generate a key image in such a way that a miner can check a purported key image really is ...
There is a high-level description of this algorithm at http://cpucoinlist.com/cryptocurrency-algorithms/wild-keccack/ which reports as follows:
Wild Keccak is a Keccak hybrid which uses blockchain data as
scratchpad. After each Keccak round, pseudo-randomly addressed [state
vector used as addresses] data is taken from scratchpad and XORed with
Each transaction generates a key image. In the CryptoNote protocol, key images used more than once are rejected by the blockchain as double-spends. When a new transaction is received, the miner need only verify that the key image does not already exist in the database.
When your wallet is scanning the blockchain, it must check each transaction output in ...
PoW is more secure than PoS in that it costs nothing to try to fork a PoS chain. An attacker can try to make as many different chains as they can with a PoS chain, but with PoW if you try to fork the chain and you fail, that orphaned block took time and energy, because your computer is hashing away, working. There is no work needed in PoS mining, therefore ...
I think the overall answer is "it's ridiculously impractical to perform by hand". The Cryptonight hash operates over a 2 megabyte data space, using multiple rounds of AES along with a variety of other cryptographic hash algorithms. What human is going to have the patience to write out 2 million bytes of data even once, let alone multiple times?
I would ...
In versions 1 to 6 of the protocol, the CryptoNight algorithm was very roughly:
state = keccak(block_data)
scratchpad = fill_scratchpad(state)
loop 524,288 times
address = compute_address(scratchpad, state)
address = compute_address(scratchpad, state)
text = reduce(scratchpad, ...
The role of PoW is only to order transactions chronologically, nothing else. Thing is, PoW is the only known way to have the authority on transaction ordering be decentralized. PoS can't work for that purpose. There's some good research on this: https://download.wpsoftware.net/bitcoin/pos.pdf
The problem boils down to the fact that, with PoS, what you're ...
I like the question because an answer to it will give a better understanding, from first principles, of the underlying algorithms.
So question 1 has two parts:
1a) How does the CryptoNight PoW algorithm work at all?
That's specified here: https://cryptonote.org/cns/cns008.txt
1b) How does it really work, on a low level, looking at elementary instructions?...
the miner, who found the block, will be rewarded with some Moneros, in the expenses of the sender.
That also happens, and it is called a transaction fee. Transaction fees are small: 0.002 XMR (per output, or Kb, I am not sure).
On the other hand, what you are observing is the block reward of about 10 XMR per block found which seems wasteful at first glance,...
Yes, that's basically what would happen if Monero switched to any other PoW. A good example is Vertcoin's switch from Scrypt-N to Lyra2RE (and then to Lyra2REv2).
Essentially, the changeover works like every other hardfork in the network. A future block height would be picked as the changeover point, after which the proofs of work in the block would have ...
I think the CryptoNote website's page about the egalitarian proof of work is about the inner working of the hash function, not about how the hash of a block is computed (which is basically cn_slow_hash(block_header + tree_hash(block_transaction_hashes)) as you thought).
Internally, the Scrypt function computes blocks of pseudo-random data. Something like:
Generally you can simply look at the value of the current block reward as an indication of how much electricity it takes to secure the network. At 8.7 XMR per block it costs about 78k USD in electricity to secure the network each day.
Based on this, lets roughly say it is 0.15 USD / Kwh, so 78k/0.15 = 514,800 Kwh each day.
cn_slow_hash is CryptoNight. cn_fast_hash is Keccak. As the names imply, the former is much slower than the latter. Both hash a contiguous buffer. Cryptonight is used for PoW and KDF, while Keccak is used for everything else.
tree_hash is a merkle tree hasher: it works on a binary tree of hashes, and uses cn_fast_hash for the actual buffer hashing.
Monero's genesis block dates back from April 2014. The first PoW change was in 2018.
The full history is:
| block | date | PoW algorithm
| 0 | 2014-04-18 | Cryptonight (retroactively CNv0)
| 1546000 | 2018-04-06 | Cryptonight variant 1 (CNv1)
| 1685555 | 2018-10-18 | Cryptonight variant 2 (CNv2)
One Monero block is (1 << 21) / 16 [Source (Lines 40, 43 and 90): https://github.com/monero-project/monero/blob/master/src/crypto/slow-hash.c#L40 ].
The Monero block reward = (M - A) * 2-20 * 10-12, where A = current circulation. Source: https://monero.stackexchange.com/a/4254/2828 .
With Monero the difficulty is dynamically adjusted so that Blocks ...
Quoting SChernykh (one of the CryptonightR authors):
CryptonightR is a modification to Cryptonight whereas RandomX is done completely from scratch. The main purpose of CryptonightR is to be the next PoW for Monero until RandomX is ready.
Which leads to why RandomX needs more auditing/testing. RandomX is a completely new PoW algorithm, not just a modified ...
How to get a decimal value of difficulty (480045) by a hexadecimal value of a given target in hex (f3220000) ?
Swap endian f3220000 and remove padding gets 22f3, then 0x100000001 / 0x22f3 yields: 480045.
How to get a hexadecimal value of target (f3220000) by a decimal value of a given difficulty (480045)?
((2^256-1) / 480045) >> 224 is ...
The simplest reason why Monero uses Proof of Work (PoW) is because it is guaranteed to work and was the only option at the time (2014).
It is entirely possible that Proof of Stake consensus algorithms will dominate PoW algorithms in the future, but at the time of this answer (2017), this is not the case.
Monero is using quite a number of new ...
The arrival of quantum computers (QC) isn't necessarily a reason to change the PoW. It would only be necessary if the first generation of quantum computers are so fast that only a small investment is required to attack the network.
That scenario would allow the first person to build / buy a QC to attack the network.
If on the other hand--and I think this ...
The process to compute the mining blob can be described by the following pseudo-code:
miner_transaction = build_miner_transaction(...)
miner_transaction_id = compute_transaction_id(miner_transaction)
header = serialize(build_block_header(...))
transaction_ids = append(miner_transaction_id, other_transaction_ids...)
count = serialize_varint(...
The question to ask isn't 'Can this be done?' but rather 'Is this something we can benefit from?'.
Since you did ask explicitly if it was possible, I'll address that first:
Yes, it's absolutely possible for Monero to adopt this proposed PoW algorithm. The PoW algorithm is orthogonal to the issue of privacy, as long as the PoW algorithm chosen isn't one ...
Based on this answer, an efficient device to mine Moneroj at the moment can produce ca. 6 H/s/W. That's around 20 MH/kWh.
The current difficulty of the network is around 6.5 billion (average number of hashes to find a block), or ca. 200 billion hashes an hour (30 blocks per hour).
So that puts the required electricity consumption at approximately 200,000 (...
At block 1788000, Monero will switch PoW from CryptoNight variant 2 to variant 4
The current naming is a little misleading as we are really on variant 3 right now, with the next being variant 4. This is because variant 2 actually spanned 2 releases in quick succession. Naming aside...
How is that second goal technically achieved in practice ?
The best ...