diff options
author | CJentzsch <jentzsch.software@gmail.com> | 2015-03-05 04:32:26 +0800 |
---|---|---|
committer | Gav Wood <i@gavwood.com> | 2015-03-06 19:19:45 +0800 |
commit | d216143329bbaf1367a05c9e002e96427cd1a2b0 (patch) | |
tree | 067106114eef222adbc9a4628a12495cca1e8f21 | |
parent | 99230a400c3017d46fffefa2e47963d2c15babe2 (diff) | |
download | dexon-solidity-d216143329bbaf1367a05c9e002e96427cd1a2b0.tar.gz dexon-solidity-d216143329bbaf1367a05c9e002e96427cd1a2b0.tar.zst dexon-solidity-d216143329bbaf1367a05c9e002e96427cd1a2b0.zip |
merge
-rw-r--r-- | bcBlockChainTestFiller.json | 6 | ||||
-rw-r--r-- | bcInvalidHeaderTestFiller.json | 88 | ||||
-rw-r--r-- | bcUncleTestFiller.json | 114 | ||||
-rw-r--r-- | bcValidBlockTestFiller.json | 48 | ||||
-rw-r--r-- | blockchain.cpp | 275 |
5 files changed, 331 insertions, 200 deletions
diff --git a/bcBlockChainTestFiller.json b/bcBlockChainTestFiller.json index 827f49c5..8a0bf89f 100644 --- a/bcBlockChainTestFiller.json +++ b/bcBlockChainTestFiller.json @@ -1,10 +1,10 @@ { "minDifficulty" : { "genesisBlockHeader" : { - "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "coinbase" : "0x8888f1f195afa192cfee860698584c030f4c9db1", "difficulty" : "1023", - "extraData" : "42", + "extraData" : "0x42", "gasLimit" : "100000000", "gasUsed" : "0", "number" : "0", @@ -12,7 +12,7 @@ "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "stateRoot" : "0xf99eb1626cfa6db435c0836235942d7ccaa935f1ae247d3f1c21e495685f903a", "timestamp" : "0x54c98c81", - "mixBytes" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "seedHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "nonce" : "0x0102030405060708", "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", diff --git a/bcInvalidHeaderTestFiller.json b/bcInvalidHeaderTestFiller.json index 5665a341..aa32dfba 100644 --- a/bcInvalidHeaderTestFiller.json +++ b/bcInvalidHeaderTestFiller.json @@ -1,13 +1,13 @@ { "log1_wrongBlockNumber" : { "genesisBlockHeader" : { - "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "coinbase" : "0x8888f1f195afa192cfee860698584c030f4c9db1", "difficulty" : "10000", - "extraData" : "42", + "extraData" : "0x42", "gasLimit" : "100000", "gasUsed" : "0", - "mixBytes" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "seedHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "nonce" : "0x0102030405060708", "number" : "0", @@ -57,13 +57,13 @@ "log1_wrongBloom" : { "genesisBlockHeader" : { - "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "coinbase" : "0x8888f1f195afa192cfee860698584c030f4c9db1", "difficulty" : "10000", - "extraData" : "42", + "extraData" : "0x42", "gasLimit" : "100000", "gasUsed" : "0", - "mixBytes" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "seedHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "nonce" : "0x0102030405060708", "number" : "0", @@ -92,7 +92,7 @@ "blocks" : [ { "blockHeader" : { - "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "transactions" : [ { @@ -113,13 +113,13 @@ "wrongCoinbase" : { "genesisBlockHeader" : { - "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "coinbase" : "0x8888f1f195afa192cfee860698584c030f4c9db1", "difficulty" : "10000", - "extraData" : "42", + "extraData" : "0x42", "gasLimit" : "100000", "gasUsed" : "0", - "mixBytes" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "seedHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "nonce" : "0x0102030405060708", "number" : "0", @@ -168,13 +168,13 @@ "wrongDifficulty" : { "genesisBlockHeader" : { - "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "coinbase" : "0x8888f1f195afa192cfee860698584c030f4c9db1", "difficulty" : "10000", - "extraData" : "42", + "extraData" : "0x42", "gasLimit" : "100000", "gasUsed" : "0", - "mixBytes" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "seedHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "nonce" : "0x0102030405060708", "number" : "0", @@ -223,13 +223,13 @@ "DifferentExtraData" : { "genesisBlockHeader" : { - "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "coinbase" : "0x8888f1f195afa192cfee860698584c030f4c9db1", "difficulty" : "10000", - "extraData" : "42", + "extraData" : "0x42", "gasLimit" : "100000", "gasUsed" : "0", - "mixBytes" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "seedHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "nonce" : "0x0102030405060708", "number" : "0", @@ -257,7 +257,7 @@ "blocks" : [ { "blockHeader" : { - "extraData" : "42" + "extraData" : "0x42" }, "transactions" : [ { @@ -278,13 +278,13 @@ "wrongGasLimit" : { "genesisBlockHeader" : { - "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "coinbase" : "0x8888f1f195afa192cfee860698584c030f4c9db1", "difficulty" : "10000", - "extraData" : "42", + "extraData" : "0x42", "gasLimit" : "100000", "gasUsed" : "0", - "mixBytes" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "seedHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "nonce" : "0x0102030405060708", "number" : "0", @@ -334,13 +334,13 @@ "wrongGasUsed" : { "genesisBlockHeader" : { - "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "coinbase" : "0x8888f1f195afa192cfee860698584c030f4c9db1", "difficulty" : "10000", - "extraData" : "42", + "extraData" : "0x42", "gasLimit" : "100000", "gasUsed" : "0", - "mixBytes" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "seedHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "nonce" : "0x0102030405060708", "number" : "0", @@ -389,13 +389,13 @@ "wrongNumber" : { "genesisBlockHeader" : { - "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "coinbase" : "0x8888f1f195afa192cfee860698584c030f4c9db1", "difficulty" : "10000", - "extraData" : "42", + "extraData" : "0x42", "gasLimit" : "100000", "gasUsed" : "0", - "mixBytes" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "seedHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "nonce" : "0x0102030405060708", "number" : "0", @@ -444,13 +444,13 @@ "wrongParentHash" : { "genesisBlockHeader" : { - "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "coinbase" : "0x8888f1f195afa192cfee860698584c030f4c9db1", "difficulty" : "10000", - "extraData" : "42", + "extraData" : "0x42", "gasLimit" : "100000", "gasUsed" : "0", - "mixBytes" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "seedHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "nonce" : "0x0102030405060708", "number" : "0", @@ -499,13 +499,13 @@ "wrongReceiptTrie" : { "genesisBlockHeader" : { - "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "coinbase" : "0x8888f1f195afa192cfee860698584c030f4c9db1", "difficulty" : "10000", - "extraData" : "42", + "extraData" : "0x42", "gasLimit" : "100000", "gasUsed" : "0", - "mixBytes" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "seedHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "nonce" : "0x0102030405060708", "number" : "0", @@ -554,13 +554,13 @@ "wrongStateRoot" : { "genesisBlockHeader" : { - "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "coinbase" : "0x8888f1f195afa192cfee860698584c030f4c9db1", "difficulty" : "10000", - "extraData" : "42", + "extraData" : "0x42", "gasLimit" : "100000", "gasUsed" : "0", - "mixBytes" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "seedHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "nonce" : "0x0102030405060708", "number" : "0", @@ -609,13 +609,13 @@ "wrongTimestamp" : { "genesisBlockHeader" : { - "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "coinbase" : "0x8888f1f195afa192cfee860698584c030f4c9db1", "difficulty" : "10000", - "extraData" : "42", + "extraData" : "0x42", "gasLimit" : "100000", "gasUsed" : "0", - "mixBytes" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "seedHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "nonce" : "0x0102030405060708", "number" : "0", @@ -664,13 +664,13 @@ "wrongTransactionsTrie" : { "genesisBlockHeader" : { - "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "coinbase" : "0x8888f1f195afa192cfee860698584c030f4c9db1", "difficulty" : "10000", - "extraData" : "42", + "extraData" : "0x42", "gasLimit" : "100000", "gasUsed" : "0", - "mixBytes" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "seedHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "nonce" : "0x0102030405060708", "number" : "0", @@ -719,13 +719,13 @@ "wrongUncleHash" : { "genesisBlockHeader" : { - "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "coinbase" : "0x8888f1f195afa192cfee860698584c030f4c9db1", "difficulty" : "10000", - "extraData" : "42", + "extraData" : "0x42", "gasLimit" : "100000", "gasUsed" : "0", - "mixBytes" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "seedHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "nonce" : "0x0102030405060708", "number" : "0", diff --git a/bcUncleTestFiller.json b/bcUncleTestFiller.json new file mode 100644 index 00000000..839e3ba4 --- /dev/null +++ b/bcUncleTestFiller.json @@ -0,0 +1,114 @@ +{ + "minDifficulty" : { + "genesisBlockHeader" : { + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "0x8888f1f195afa192cfee860698584c030f4c9db1", + "difficulty" : "1023", + "extraData" : "0x42", + "gasLimit" : "100000000", + "gasUsed" : "0", + "number" : "0", + "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "stateRoot" : "0xf99eb1626cfa6db435c0836235942d7ccaa935f1ae247d3f1c21e495685f903a", + "timestamp" : "0x54c98c81", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "seedHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "nonce" : "0x0102030405060708", + "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + }, + "pre" : { + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "10000000000000", + "nonce" : "0", + "code" : "", + "storage": {} + } + }, + "blocks" : [ + { + "transactions" : [ + { + "data" : "", + "gasLimit" : "80000050", + "gasPrice" : "1", + "nonce" : "0", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "095e7baea6a6c7c4c2dfeb977efac326af552d87", + "value" : "10" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "", + "gasLimit" : "80000050", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "095e7baea6a6c7c4c2dfeb977efac326af552d87", + "value" : "10" + } + ], + "uncleHeaders" : [ + { + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "0000000000000000000000000000000000000000", + "difficulty" : "2049", + "extraData" : "0x", + "gasLimit" : "99804806", + "gasUsed" : "21000", + "hash" : "e940823998a293aa03c46423d9a9eec91ddca8e5e67445af9ebd3dff3456b4b2", + "mixHash" : "05204ec823225e794cce3f93eebfbd79b654366792ad408c7a206b9c588107d9", + "nonce" : "17ed77999bef2e4b", + "number" : "2", + "parentHash" : "25143742f163f84ac5b5afcb2700f61e24421f756ec9551bd79a254d3310e710", + "receiptTrie" : "3d08abeec9cf28f9a518de4c71ebbfc8021f18dec3ccd0a72ad1fc0f168339d4", + "seedHash" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "stateRoot" : "66120efd3d0e512866232ed57647a33055770ec98eeaddcdbbdedca49a69f9ca", + "timestamp" : "1425490151", + "transactionsTrie" : "da09ee96fda181334d323831e7402e3a4727d9b631059d0ef47f03f817f83f34", + "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + } + ] + }, + { + "transactions" : [ + { + "data" : "", + "gasLimit" : "8000000", + "gasPrice" : "0", + "nonce" : "2", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "095e7baea6a6c7c4c2dfeb977efac326af552d87", + "value" : "10" + } + ], + "uncleHeaders" : [ + { + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "0x8888f1f195afa192cfee860698584c030f4c9db1", + "difficulty" : "1023", + "extraData" : "0x42", + "gasLimit" : "100000000", + "gasUsed" : "0", + "number" : "1", + "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "stateRoot" : "0xf99eb1626cfa6db435c0836235942d7ccaa935f1ae247d3f1c21e495685f903a", + "timestamp" : "0x54c98c81", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "seedHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "nonce" : "0x0102030405060708", + "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + } + ] + } + ] + } +} diff --git a/bcValidBlockTestFiller.json b/bcValidBlockTestFiller.json index abb8afdf..29b2e978 100644 --- a/bcValidBlockTestFiller.json +++ b/bcValidBlockTestFiller.json @@ -2,13 +2,13 @@ "diff1024" : { "genesisBlockHeader" : { - "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "coinbase" : "0x8888f1f195afa192cfee860698584c030f4c9db1", "difficulty" : "1024", - "extraData" : "42", + "extraData" : "0x42", "gasLimit" : "100000", "gasUsed" : "0", - "mixBytes" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "seedHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "nonce" : "0x0102030405060708", "number" : "0", @@ -49,13 +49,13 @@ "gasPrice0" : { "genesisBlockHeader" : { - "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "coinbase" : "0x8888f1f195afa192cfee860698584c030f4c9db1", "difficulty" : "10000", - "extraData" : "42", + "extraData" : "0x42", "gasLimit" : "100000", "gasUsed" : "0", - "mixBytes" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "seedHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "nonce" : "0x0102030405060708", "number" : "0", @@ -95,13 +95,13 @@ "gasLimitTooHigh" : { "genesisBlockHeader" : { - "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "coinbase" : "0x8888f1f195afa192cfee860698584c030f4c9db1", "difficulty" : "10000", - "extraData" : "42", + "extraData" : "0x42", "gasLimit" : "1000000", "gasUsed" : "0", - "mixBytes" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "seedHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "nonce" : "0x0102030405060708", "number" : "0", @@ -141,13 +141,13 @@ "SimpleTx" : { "genesisBlockHeader" : { - "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "coinbase" : "0x8888f1f195afa192cfee860698584c030f4c9db1", "difficulty" : "10000", - "extraData" : "42", + "extraData" : "0x42", "gasLimit" : "100000", "gasUsed" : "0", - "mixBytes" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "seedHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "nonce" : "0x0102030405060708", "number" : "0", @@ -187,13 +187,13 @@ "txOrder" : { "genesisBlockHeader" : { - "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "coinbase" : "0x8888f1f195afa192cfee860698584c030f4c9db1", "difficulty" : "10000", - "extraData" : "42", + "extraData" : "0x42", "gasLimit" : "100000", "gasUsed" : "0", - "mixBytes" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "seedHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "nonce" : "0x0102030405060708", "number" : "0", @@ -242,13 +242,13 @@ "txEqualValue" : { "genesisBlockHeader" : { - "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "coinbase" : "0x8888f1f195afa192cfee860698584c030f4c9db1", "difficulty" : "10000", - "extraData" : "42", + "extraData" : "0x42", "gasLimit" : "100000", "gasUsed" : "0", - "mixBytes" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "seedHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "nonce" : "0x0102030405060708", "number" : "0", @@ -297,13 +297,13 @@ "log1_correct" : { "genesisBlockHeader" : { - "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "coinbase" : "0x8888f1f195afa192cfee860698584c030f4c9db1", "difficulty" : "10000", - "extraData" : "42", + "extraData" : "0x42", "gasLimit" : "100000", "gasUsed" : "0", - "mixBytes" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "seedHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "nonce" : "0x0102030405060708", "number" : "0", @@ -349,13 +349,13 @@ "dataTx" : { "genesisBlockHeader" : { - "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "coinbase" : "0x8888f1f195afa192cfee860698584c030f4c9db1", "difficulty" : "023101", - "extraData" : "42", + "extraData" : "0x42", "gasLimit" : "0x0dddb6", "gasUsed" : "100", - "mixBytes" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "seedHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "nonce" : "0x0102030405060708", "number" : "0", diff --git a/blockchain.cpp b/blockchain.cpp index aea2bab0..55c39f56 100644 --- a/blockchain.cpp +++ b/blockchain.cpp @@ -31,61 +31,10 @@ using namespace dev::eth; namespace dev { namespace test { -bytes createBlockRLPFromFields(mObject& _tObj) -{ - RLPStream rlpStream; - rlpStream.appendList(_tObj.size()); - - if (_tObj.count("parentHash")) - rlpStream << importByteArray(_tObj["parentHash"].get_str()); - - if (_tObj.count("uncleHash")) - rlpStream << importByteArray(_tObj["uncleHash"].get_str()); - - if (_tObj.count("coinbase")) - rlpStream << importByteArray(_tObj["coinbase"].get_str()); - - if (_tObj.count("stateRoot")) - rlpStream << importByteArray(_tObj["stateRoot"].get_str()); - - if (_tObj.count("transactionsTrie")) - rlpStream << importByteArray(_tObj["transactionsTrie"].get_str()); - - if (_tObj.count("receiptTrie")) - rlpStream << importByteArray(_tObj["receiptTrie"].get_str()); - - if (_tObj.count("bloom")) - rlpStream << importByteArray(_tObj["bloom"].get_str()); - - if (_tObj.count("difficulty")) - rlpStream << bigint(_tObj["difficulty"].get_str()); - - if (_tObj.count("number")) - rlpStream << bigint(_tObj["number"].get_str()); - - if (_tObj.count("gasLimit")) - rlpStream << bigint(_tObj["gasLimit"].get_str()); - - if (_tObj.count("gasUsed")) - rlpStream << bigint(_tObj["gasUsed"].get_str()); - - if (_tObj.count("timestamp")) - rlpStream << bigint(_tObj["timestamp"].get_str()); - - if (_tObj.count("extraData")) - rlpStream << importByteArray(_tObj["extraData"].get_str()); - - if (_tObj.count("seedHash")) - rlpStream << importByteArray(_tObj["seedHash"].get_str()); - - if (_tObj.count("mixHash")) - rlpStream << importByteArray(_tObj["mixHash"].get_str()); +bytes createBlockRLPFromFields(mObject& _tObj); +void overwriteBlockHeader(BlockInfo& current_BlockHeader, mObject& blObj); - if (_tObj.count("nonce")) - rlpStream << importByteArray(_tObj["nonce"].get_str()); - return rlpStream.out(); -} void doBlockchainTests(json_spirit::mValue& _v, bool _fillin) { @@ -147,6 +96,7 @@ void doBlockchainTests(json_spirit::mValue& _v, bool _fillin) o["genesisBlockHeader"].get_obj()["stateRoot"] = toString(blockFromFields.stateRoot); o["genesisBlockHeader"].get_obj()["nonce"] = toString(blockFromFields.nonce); o["genesisBlockHeader"].get_obj()["mixHash"] = toString(blockFromFields.mixHash); + o["genesisBlockHeader"].get_obj()["hash"] = toString(blockFromFields.headerHash(WithNonce)); } // create new "genesis" block @@ -211,13 +161,13 @@ void doBlockchainTests(json_spirit::mValue& _v, bool _fillin) txList.push_back(tx); mObject txObject; txObject["nonce"] = toString(tx.nonce()); - txObject["data"] = toHex(tx.data()); + txObject["data"] = "0x" + toHex(tx.data()); txObject["gasLimit"] = toString(tx.gas()); txObject["gasPrice"] = toString(tx.gasPrice()); txObject["r"] = "0x" + toString(tx.signature().r); txObject["s"] = "0x" + toString(tx.signature().s); txObject["v"] = to_string(tx.signature().v + 27); - txObject["to"] = toString(tx.receiveAddress()); + txObject["to"] = tx.isCreation() ? "" : toString(tx.receiveAddress()); txObject["value"] = toString(tx.value()); txArray.push_back(txObject); @@ -232,78 +182,7 @@ void doBlockchainTests(json_spirit::mValue& _v, bool _fillin) if (blObj.count("blockHeader")) { - if (blObj["blockHeader"].get_obj().size() != 14) - { - - BlockInfo tmp = current_BlockHeader; - - if (blObj["blockHeader"].get_obj().count("parentHash")) - tmp.parentHash = h256(blObj["blockHeader"].get_obj()["parentHash"].get_str()); - - if (blObj["blockHeader"].get_obj().count("uncleHash")) - tmp.sha3Uncles = h256(blObj["blockHeader"].get_obj()["uncleHash"].get_str()); - - if (blObj["blockHeader"].get_obj().count("coinbase")) - tmp.coinbaseAddress = Address(blObj["blockHeader"].get_obj()["coinbase"].get_str()); - - if (blObj["blockHeader"].get_obj().count("stateRoot")) - tmp.stateRoot = h256(blObj["blockHeader"].get_obj()["stateRoot"].get_str()); - - if (blObj["blockHeader"].get_obj().count("transactionsTrie")) - tmp.transactionsRoot = h256(blObj["blockHeader"].get_obj()["transactionsTrie"].get_str()); - - if (blObj["blockHeader"].get_obj().count("receiptTrie")) - tmp.receiptsRoot = h256(blObj["blockHeader"].get_obj()["receiptTrie"].get_str()); - - if (blObj["blockHeader"].get_obj().count("bloom")) - tmp.logBloom = LogBloom(blObj["blockHeader"].get_obj()["bloom"].get_str()); - - if (blObj["blockHeader"].get_obj().count("difficulty")) - tmp.difficulty = toInt(blObj["blockHeader"].get_obj()["difficulty"]); - - if (blObj["blockHeader"].get_obj().count("number")) - tmp.number = toInt(blObj["blockHeader"].get_obj()["number"]); - - if (blObj["blockHeader"].get_obj().count("gasLimit")) - tmp.gasLimit = toInt(blObj["blockHeader"].get_obj()["gasLimit"]); - - if (blObj["blockHeader"].get_obj().count("gasUsed")) - tmp.gasUsed = toInt(blObj["blockHeader"].get_obj()["gasUsed"]); - - if (blObj["blockHeader"].get_obj().count("timestamp")) - tmp.timestamp = toInt(blObj["blockHeader"].get_obj()["timestamp"]); - - if (blObj["blockHeader"].get_obj().count("extraData")) - tmp.extraData = importByteArray(blObj["blockHeader"].get_obj()["extraData"].get_str()); - - if (blObj["blockHeader"].get_obj().count("mixHash")) - tmp.mixHash = h256(blObj["blockHeader"].get_obj()["mixHash"].get_str()); - - if (blObj["blockHeader"].get_obj().count("seedHash")) - tmp.seedHash = h256(blObj["blockHeader"].get_obj()["seedHash"].get_str()); - - // find new valid nonce - - if (tmp != current_BlockHeader) - { - current_BlockHeader = tmp; - - ProofOfWork pow; - std::pair<MineInfo, Ethash::Proof> ret; - while (!ProofOfWork::verify(current_BlockHeader)) - { - ret = pow.mine(current_BlockHeader, 1000, true, true); // tie(ret, blockFromFields.nonce) - Ethash::assignResult(ret.second, current_BlockHeader); - } - } - } - else - { - // take the blockheader as is - const bytes c_blockRLP = createBlockRLPFromFields(blObj["blockHeader"].get_obj()); - const RLP c_bRLP(c_blockRLP); - current_BlockHeader.populateFromHeader(c_bRLP, false); - } + overwriteBlockHeader(current_BlockHeader, blObj); } // write block header @@ -321,10 +200,11 @@ void doBlockchainTests(json_spirit::mValue& _v, bool _fillin) oBlockHeader["gasLimit"] = toString(current_BlockHeader.gasLimit); oBlockHeader["gasUsed"] = toString(current_BlockHeader.gasUsed); oBlockHeader["timestamp"] = toString(current_BlockHeader.timestamp); - oBlockHeader["extraData"] = toHex(current_BlockHeader.extraData); + oBlockHeader["extraData"] ="0x" + toHex(current_BlockHeader.extraData); oBlockHeader["mixHash"] = toString(current_BlockHeader.mixHash); oBlockHeader["seedHash"] = toString(current_BlockHeader.seedHash); oBlockHeader["nonce"] = toString(current_BlockHeader.nonce); + oBlockHeader["hash"] = toString(current_BlockHeader.hash); blObj["blockHeader"] = oBlockHeader; @@ -506,7 +386,9 @@ void doBlockchainTests(json_spirit::mValue& _v, bool _fillin) BOOST_CHECK_MESSAGE(txsFromField[i].receiveAddress() == txsFromRlp[i].receiveAddress(), "transaction receiveAddress in rlp and in field do not match"); BOOST_CHECK_MESSAGE(txsFromField[i].value() == txsFromRlp[i].value(), "transaction receiveAddress in rlp and in field do not match"); - BOOST_CHECK_MESSAGE(txsFromField[i] == txsFromRlp[i], "transactions in rlp and in transaction field do not match"); + BOOST_CHECK_MESSAGE(txsFromField[i] == txsFromRlp[i], "transactions from rlp and transaction from field do not match"); + BOOST_CHECK_MESSAGE(txsFromField[i].rlp() == txsFromRlp[i].rlp(), "transactions rlp do not match"); + } // check uncle list @@ -516,6 +398,137 @@ void doBlockchainTests(json_spirit::mValue& _v, bool _fillin) } } +bytes createBlockRLPFromFields(mObject& _tObj) +{ + RLPStream rlpStream; + rlpStream.appendList(_tObj.count("hash") > 0 ? (_tObj.size() - 1) : _tObj.size()); + + if (_tObj.count("parentHash")) + rlpStream << importByteArray(_tObj["parentHash"].get_str()); + + if (_tObj.count("uncleHash")) + rlpStream << importByteArray(_tObj["uncleHash"].get_str()); + + if (_tObj.count("coinbase")) + rlpStream << importByteArray(_tObj["coinbase"].get_str()); + + if (_tObj.count("stateRoot")) + rlpStream << importByteArray(_tObj["stateRoot"].get_str()); + + if (_tObj.count("transactionsTrie")) + rlpStream << importByteArray(_tObj["transactionsTrie"].get_str()); + + if (_tObj.count("receiptTrie")) + rlpStream << importByteArray(_tObj["receiptTrie"].get_str()); + + if (_tObj.count("bloom")) + rlpStream << importByteArray(_tObj["bloom"].get_str()); + + if (_tObj.count("difficulty")) + rlpStream << bigint(_tObj["difficulty"].get_str()); + + if (_tObj.count("number")) + rlpStream << bigint(_tObj["number"].get_str()); + + if (_tObj.count("gasLimit")) + rlpStream << bigint(_tObj["gasLimit"].get_str()); + + if (_tObj.count("gasUsed")) + rlpStream << bigint(_tObj["gasUsed"].get_str()); + + if (_tObj.count("timestamp")) + rlpStream << bigint(_tObj["timestamp"].get_str()); + + if (_tObj.count("extraData")) + rlpStream << fromHex(_tObj["extraData"].get_str()); + + if (_tObj.count("seedHash")) + rlpStream << importByteArray(_tObj["seedHash"].get_str()); + + if (_tObj.count("mixHash")) + rlpStream << importByteArray(_tObj["mixHash"].get_str()); + + if (_tObj.count("nonce")) + rlpStream << importByteArray(_tObj["nonce"].get_str()); + + return rlpStream.out(); +} + +void overwriteBlockHeader(BlockInfo& current_BlockHeader, mObject& blObj) +{ + if (blObj["blockHeader"].get_obj().size() != 14) + { + + BlockInfo tmp = current_BlockHeader; + + if (blObj["blockHeader"].get_obj().count("parentHash")) + tmp.parentHash = h256(blObj["blockHeader"].get_obj()["parentHash"].get_str()); + + if (blObj["blockHeader"].get_obj().count("uncleHash")) + tmp.sha3Uncles = h256(blObj["blockHeader"].get_obj()["uncleHash"].get_str()); + + if (blObj["blockHeader"].get_obj().count("coinbase")) + tmp.coinbaseAddress = Address(blObj["blockHeader"].get_obj()["coinbase"].get_str()); + + if (blObj["blockHeader"].get_obj().count("stateRoot")) + tmp.stateRoot = h256(blObj["blockHeader"].get_obj()["stateRoot"].get_str()); + + if (blObj["blockHeader"].get_obj().count("transactionsTrie")) + tmp.transactionsRoot = h256(blObj["blockHeader"].get_obj()["transactionsTrie"].get_str()); + + if (blObj["blockHeader"].get_obj().count("receiptTrie")) + tmp.receiptsRoot = h256(blObj["blockHeader"].get_obj()["receiptTrie"].get_str()); + + if (blObj["blockHeader"].get_obj().count("bloom")) + tmp.logBloom = LogBloom(blObj["blockHeader"].get_obj()["bloom"].get_str()); + + if (blObj["blockHeader"].get_obj().count("difficulty")) + tmp.difficulty = toInt(blObj["blockHeader"].get_obj()["difficulty"]); + + if (blObj["blockHeader"].get_obj().count("number")) + tmp.number = toInt(blObj["blockHeader"].get_obj()["number"]); + + if (blObj["blockHeader"].get_obj().count("gasLimit")) + tmp.gasLimit = toInt(blObj["blockHeader"].get_obj()["gasLimit"]); + + if (blObj["blockHeader"].get_obj().count("gasUsed")) + tmp.gasUsed = toInt(blObj["blockHeader"].get_obj()["gasUsed"]); + + if (blObj["blockHeader"].get_obj().count("timestamp")) + tmp.timestamp = toInt(blObj["blockHeader"].get_obj()["timestamp"]); + + if (blObj["blockHeader"].get_obj().count("extraData")) + tmp.extraData = importByteArray(blObj["blockHeader"].get_obj()["extraData"].get_str()); + + if (blObj["blockHeader"].get_obj().count("mixHash")) + tmp.mixHash = h256(blObj["blockHeader"].get_obj()["mixHash"].get_str()); + + if (blObj["blockHeader"].get_obj().count("seedHash")) + tmp.seedHash = h256(blObj["blockHeader"].get_obj()["seedHash"].get_str()); + + // find new valid nonce + + if (tmp != current_BlockHeader) + { + current_BlockHeader = tmp; + + ProofOfWork pow; + std::pair<MineInfo, Ethash::Proof> ret; + while (!ProofOfWork::verify(current_BlockHeader)) + { + ret = pow.mine(current_BlockHeader, 1000, true, true); // tie(ret, blockFromFields.nonce) + Ethash::assignResult(ret.second, current_BlockHeader); + } + } + } + else + { + // take the blockheader as is + const bytes c_blockRLP = createBlockRLPFromFields(blObj["blockHeader"].get_obj()); + const RLP c_bRLP(c_blockRLP); + current_BlockHeader.populateFromHeader(c_bRLP, false); + } +} } }// Namespace Close @@ -536,6 +549,10 @@ BOOST_AUTO_TEST_CASE(bcInvalidHeaderTest) dev::test::executeTests("bcInvalidHeaderTest", "/BlockTests", dev::test::doBlockchainTests); } +//BOOST_AUTO_TEST_CASE(bcUncleTest) +//{ +// dev::test::executeTests("bcUncleTest", "/BlockTests", dev::test::doBlockchainTests); +//} BOOST_AUTO_TEST_CASE(userDefinedFileBc) { |