Monero Research Lab Publications MRL-0001 to MRL-0005 have been published.
MRL-0006 - Difficulty Adjustment Algorithms in Cryptocurrency Protocols
have been started.
According to fluffypony
The difficulty research that Surae was working on is quite extensive, but incomplete.
EDIT: as of November 17th, it appears MRL-0006 will be renamed MRL-0007.
I may be wrong but I assume this is the code initialized when you run "diff" in monerod.
uint64_t now = time(NULL);
uint64_t diff = ts > now ? ts - now : now - ts;
if (diff > 24*3600)
strftime(buffer, sizeof(buffer), "%Y-%m-%d", &tm);
strftime(buffer, sizeof(buffer), "%I:%M:%S %p", &tm);
The mining blob is the block header + merkle root + number of TX-es. It's similar to block identifier as defined in CNS003:
Calculation of Block Identifier
The identifier of a block is the result of hashing the following data with Keccak:
size of [block_header, Merkle root hash, and the number of transactions] in bytes (varint)
It means that the network is used by more powerful miners. Difficulty adjusts to the network hashrate (after every block, unlike Bitcoin which adjusts difficulty only every 2016 blocks, around two weeks for 1 block / 10 minutes), meaning it will be more difficult to mine a block the more miners will join the network (if the overall hashrate goes up).
The difficulty adjusts with each block.
The adjustment algorithm examines 720 prior blocks, starting from 15 blocks ago.
Of those 720 blocks, the 60 highest and lowest block times are excluded from the analysis, which leaves 600 blocks.
Out of those 600 blocks, the average block time is determined. This average is then used to adjust the difficulty ...
The Monero network targets blocks to be mined at 120 seconds, using the difficulty so that hash_rate = difficulty / block_time, ie difficulty = hash_rate * block_time.
Unit analysis gives the difficulty unit to be hashes (H/s times s).
It is the expected number of hashes spent looking for a block.
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 ...
An AES round uses the three functions (SubBytes, ShiftRows and MixColumns).
The Wikipedia article on AES has a high-level description of the algorithm and links to the AES standard, reference source code, etc.
The difficulty is simply a number specifying the maximum size for a block's PoW hash. With a difficulty of 80926050199, a block's PoW hash (represented as a big endian integer) must be below a certain number which you get by plugin in 80926050199 to a formula (essentially meaning the hash needs to start with a certain amount of zeros).
Note that a block's ...
With a difficulty of 80G, the network will need to try 80 billion hashes on average to find a new block. The difficulty is adjusted to target a block every 2 minutes or 120 seconds.
So a difficulty of 80G is based on the assumption that the current network hashrate is 80 billion / 120 = 666 MH/s.
If blocks are found faster than expected, it means that the ...
The scratchpad is filled with pseudo-random data based on the state (using rounds of the AES block cipher).
Check https://cryptonote.org/cns/cns008.txt for a detailed description of the algorithm (without the modifications introduced in version 7 of the protocol).
You can find the difficulty of a submitted hash (which is just a big endian hex encoded string) by dividing the base difficulty (2^256-1) by your hash.
As such, nodejs-pool (the most common pool software), checks your submitted hash difficulty as follows:
let hashArray = hash.toByteArray().reverse();
let hashNum = bignum.fromBuffer(new Buffer(hashArray));
To target a block time of a day, difficulty would be adjusted to make the likelihood of finding a block require a days worth of hashing (work). The big drawback to such a large block time would be slow confirmation of transactions.
This is how I understand it to work, and some of it may not be entirely accurate. Monero is set such that a block can be mined approximately every 120 seconds(or two minutes). The difficulty is set in place to allow this to happen; this allows us to have a relative roadmap and control as to how much monero is being "distributed". So if everyone was mining ...
Answering your actual questions:
How many hashes are needed to solve a Monero block of difficulty 1? ... Or, more simply, the average number of hashes (total, across the whole network) required to solve a Monero block of difficulty 1?
The answer is 1. Any valid ("valid" being the correct hashing algorithm), hash will solve for a difficulty of 1.
According to Minergate:
Reward = ((hashrate * block_reward) / current_difficulty) * (1 - pool_fee) * 3600
...where does the 3600 come from? Does anyone know what this formula means or how to use it?
Surely, the reward formula would look more like this :
Block Reward / Difficulty = Value of 1 share
Miner Reward = ((Block Reward / Difficulty) ...
Assuming that the network is healthy which means there are many competing miners for a block. It would not make sense for a miner to keep mining an already published block because by the time it will be able to find that block the blockchain is already longer compared to his chain. Even if there are nodes that would accept it the network will always select ...