From 976c47141401f64ca19107a3d09a098ead217d2b Mon Sep 17 00:00:00 2001 From: CJentzsch Date: Tue, 7 Apr 2015 16:56:27 +0200 Subject: [PATCH 01/47] remove wrong stateroot uncle header test --- test/bcUncleHeaderValiditiyFiller.json | 96 +------------------------- 1 file changed, 1 insertion(+), 95 deletions(-) diff --git a/test/bcUncleHeaderValiditiyFiller.json b/test/bcUncleHeaderValiditiyFiller.json index 9725a3241..edcd298bc 100644 --- a/test/bcUncleHeaderValiditiyFiller.json +++ b/test/bcUncleHeaderValiditiyFiller.json @@ -656,101 +656,7 @@ ] }, - "wrongStateRoot" : { - "genesisBlockHeader" : { - "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "coinbase" : "0x8888f1f195afa192cfee860698584c030f4c9db1", - "difficulty" : "231072", - "extraData" : "0x42", - "gasLimit" : "3141592", - "gasUsed" : "0", - "number" : "0", - "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", - "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "stateRoot" : "0xf99eb1626cfa6db435c0836235942d7ccaa935f1ae247d3f1c21e495685f903a", - "timestamp" : "0x54c98c81", - "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "nonce" : "0x0102030405060708", - "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" - }, - "pre" : { - "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { - "balance" : "10000000000000", - "nonce" : "0", - "code" : "", - "storage": {} - } - }, - "blocks" : [ - { - "transactions" : [ - { - "data" : "", - "gasLimit" : "314159", - "gasPrice" : "1", - "nonce" : "0", - "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", - "to" : "095e7baea6a6c7c4c2dfeb977efac326af552d87", - "value" : "10" - } - ], - "uncleHeaders" : [ - ] - }, - { - "transactions" : [ - { - "data" : "", - "gasLimit" : "314159", - "gasPrice" : "1", - "nonce" : "1", - "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", - "to" : "095e7baea6a6c7c4c2dfeb977efac326af552d87", - "value" : "10" - } - ], - "uncleHeaders" : [ - ] - }, - { - "transactions" : [ - { - "data" : "", - "gasLimit" : "314159", - "gasPrice" : "1", - "nonce" : "2", - "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", - "to" : "095e7baea6a6c7c4c2dfeb977efac326af552d87", - "value" : "10" - } - ], - "uncleHeaders" : [ - { - "overwriteAndRedoPoW" : "stateRoot", - "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "coinbase" : "acde5374fce5edbc8e2a8697c15331677e6ebf0b", - "difficulty" : "230848", - "extraData" : "0x", - "gasLimit" : "4141592", - "gasUsed" : "150000", - "hash" : "9de9879b6a81d1b6c4993c63c90a3c9d1e775f14572694778e828bc64972ae04", - "mixHash" : "b557f905d29ed0fca99d65d0adcce698dee97cf72a13c7cd8d7a7826b8eee770", - "nonce" : "18a524c1790fa83b", - "number" : "2", - "parentHash" : "6134fc6b5d99ee03c4aab1592640f6f9dcbc850668d75d631aee34989b938fae", - "receiptTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "stateRoot" : "bad40b30d613c35dad43e3693329e1b1ee6350f989cf46a288025a1cbfdab9cd", - "timestamp" : "1528353694", - "transactionsTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" - } - ] - } - ] - }, - - "timestampTooLow" : { + "timestampTooLow" : { "genesisBlockHeader" : { "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "coinbase" : "0x8888f1f195afa192cfee860698584c030f4c9db1", From adf244188d10f93e8dffc2c1f6bf8350800b5974 Mon Sep 17 00:00:00 2001 From: CJentzsch Date: Thu, 30 Apr 2015 17:34:06 +0200 Subject: [PATCH 02/47] add wallet test --- .../StateTestsFiller/stWalletTestFiller.json | 59 +++++++++++++++++++ test/libethereum/state.cpp | 4 ++ 2 files changed, 63 insertions(+) create mode 100644 test/libethereum/StateTestsFiller/stWalletTestFiller.json diff --git a/test/libethereum/StateTestsFiller/stWalletTestFiller.json b/test/libethereum/StateTestsFiller/stWalletTestFiller.json new file mode 100644 index 000000000..4472a9120 --- /dev/null +++ b/test/libethereum/StateTestsFiller/stWalletTestFiller.json @@ -0,0 +1,59 @@ +{ + "multiOwnedConstructionNotEnoughGas" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "1000000", + "currentNumber" : "0", + "currentTimestamp" : 1, + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "1000000000000000000", + "code" : "0x", + "nonce" : "0", + "storage" : { + } + } + }, + "transaction" : { + "data" : "0x5b600160006000508190555060016001600050819055503360026000506001600050546101008110602c57005b90900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff0219169083021790555060016000505461010260005060003373ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055505b6109cd806100a16000396000f3006000357c010000000000000000000000000000000000000000000000000000000090048063173825d91461005b5780632f54bf6e1461006c5780637065cb4814610081578063ba51a6df14610092578063f00d4b5d146100a357005b6100666004356103a1565b60006000f35b610077600435610538565b8060005260206000f35b61008c600435610250565b60006000f35b61009d6004356104d1565b60006000f35b6100b16004356024356100b7565b60006000f35b60006040600036808284378201915050604090036040206100d78161057a565b6100e057610249565b61010260005060008573ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000505491506000821461012057610126565b5061024b565b61012f83610538565b6101385761013e565b5061024b565b82600260005083610100811061015057005b90900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff02191690830217905550600061010260005060008673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055508161010260005060008573ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055507fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c60408573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff168152602001604090036040a15b505b505050565b60406000368082843782019150506040900360402061026e8161057a565b6102775761039c565b61028082610538565b6102895761028f565b5061039e565b60fa60016000505410156102a2576102ac565b6102aa610714565b505b60fa60016000505410156102bf576102c5565b5061039e565b600160008181505480929190600101919050555081600260005060016000505461010081106102f057005b90900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff0219169083021790555060016000505461010260005060008473ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c360408373ffffffffffffffffffffffffffffffffffffffff168152602001604090036040a15b505b50565b60006040600036808284378201915050604090036040206103c18161057a565b6103ca576104cb565b61010260005060008473ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000505491506000821461040a57610410565b506104cd565b6000600260005083610100811061042357005b90900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff02191690830217905550600061010260005060008573ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055507f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da60408473ffffffffffffffffffffffffffffffffffffffff168152602001604090036040a15b505b5050565b6040600036808284378201915050604090036040206104ef8161057a565b6104f857610533565b816000600050819055507facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da6040838152602001604090036040a15b505b50565b6000600061010260005060008473ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005054119050610575565b919050565b6000600060006000600061010260005060003373ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050549350600084146105c4576105c9565b61070b565b6101036000506000878152602001908152602001600020600092509250600083835060000160005054146105fc5761061f565b600060005054838350600001600050819055506000838350600101600050819055505b8360020a905060008184845060010160005054161461063d5761070a565b7fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda60403373ffffffffffffffffffffffffffffffffffffffff168152602001878152602001604090036040a160018383506000016000505411156106cf578282506000016000818150548092919060019003919050555080838350600101600082828250541792505081905550610709565b610103600050600087815260200190815260200160002060006000820160005060009055600182016000506000905550506001945061070b565b5b5b50505050919050565b60006000600190505b6001600050548110156109c8575b6001600050548110801561078a57506000600260005082610100811061074d57005b90900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561079c57808060010191505061072b565b5b600160016000505411801561080157506000600260005060016000505461010081106107c557005b90900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b156108205760016000818150548092919060019003919050555061079d565b60016000505481108015610884575060006002600050600160005054610100811061084757005b90900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b80156108da57506000600260005082610100811061089e57005b90900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6108e3576109c3565b600260005060016000505461010081106108f957005b90900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260005082610100811061092e57005b90900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff02191690830217905550806101026000506000600260005084610100811061097357005b90900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055505b61071d565b5b509056", + "gasLimit" : "0x041a8f", + "gasPrice" : "1", + "nonce" : "0", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "", + "value" : "0" + } + }, + + "multiOwnedConstruction2" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : 1, + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "1000000000000000000", + "code" : "0x", + "nonce" : "0", + "storage" : { + } + } + }, + "transaction" : { + "data" : "0x5b600160006000508190555060016001600050819055503360026000506001600050546101008110602c57005b90900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff0219169083021790555060016000505461010260005060003373ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055505b6109cd806100a16000396000f3006000357c010000000000000000000000000000000000000000000000000000000090048063173825d91461005b5780632f54bf6e1461006c5780637065cb4814610081578063ba51a6df14610092578063f00d4b5d146100a357005b6100666004356103a1565b60006000f35b610077600435610538565b8060005260206000f35b61008c600435610250565b60006000f35b61009d6004356104d1565b60006000f35b6100b16004356024356100b7565b60006000f35b60006040600036808284378201915050604090036040206100d78161057a565b6100e057610249565b61010260005060008573ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000505491506000821461012057610126565b5061024b565b61012f83610538565b6101385761013e565b5061024b565b82600260005083610100811061015057005b90900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff02191690830217905550600061010260005060008673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055508161010260005060008573ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055507fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c60408573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff168152602001604090036040a15b505b505050565b60406000368082843782019150506040900360402061026e8161057a565b6102775761039c565b61028082610538565b6102895761028f565b5061039e565b60fa60016000505410156102a2576102ac565b6102aa610714565b505b60fa60016000505410156102bf576102c5565b5061039e565b600160008181505480929190600101919050555081600260005060016000505461010081106102f057005b90900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff0219169083021790555060016000505461010260005060008473ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c360408373ffffffffffffffffffffffffffffffffffffffff168152602001604090036040a15b505b50565b60006040600036808284378201915050604090036040206103c18161057a565b6103ca576104cb565b61010260005060008473ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000505491506000821461040a57610410565b506104cd565b6000600260005083610100811061042357005b90900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff02191690830217905550600061010260005060008573ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055507f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da60408473ffffffffffffffffffffffffffffffffffffffff168152602001604090036040a15b505b5050565b6040600036808284378201915050604090036040206104ef8161057a565b6104f857610533565b816000600050819055507facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da6040838152602001604090036040a15b505b50565b6000600061010260005060008473ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005054119050610575565b919050565b6000600060006000600061010260005060003373ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050549350600084146105c4576105c9565b61070b565b6101036000506000878152602001908152602001600020600092509250600083835060000160005054146105fc5761061f565b600060005054838350600001600050819055506000838350600101600050819055505b8360020a905060008184845060010160005054161461063d5761070a565b7fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda60403373ffffffffffffffffffffffffffffffffffffffff168152602001878152602001604090036040a160018383506000016000505411156106cf578282506000016000818150548092919060019003919050555080838350600101600082828250541792505081905550610709565b610103600050600087815260200190815260200160002060006000820160005060009055600182016000506000905550506001945061070b565b5b5b50505050919050565b60006000600190505b6001600050548110156109c8575b6001600050548110801561078a57506000600260005082610100811061074d57005b90900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561079c57808060010191505061072b565b5b600160016000505411801561080157506000600260005060016000505461010081106107c557005b90900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b156108205760016000818150548092919060019003919050555061079d565b60016000505481108015610884575060006002600050600160005054610100811061084757005b90900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b80156108da57506000600260005082610100811061089e57005b90900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6108e3576109c3565b600260005060016000505461010081106108f957005b90900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260005082610100811061092e57005b90900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff02191690830217905550806101026000506000600260005084610100811061097357005b90900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055505b61071d565b5b509056", + "gasLimit" : "0x0bc2b7", + "gasPrice" : "1", + "nonce" : "0", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "", + "value" : "100" + } + } +} diff --git a/test/libethereum/state.cpp b/test/libethereum/state.cpp index 900f3060f..f89972383 100644 --- a/test/libethereum/state.cpp +++ b/test/libethereum/state.cpp @@ -183,6 +183,10 @@ BOOST_AUTO_TEST_CASE(stMemoryTest) dev::test::executeTests("stMemoryTest", "/StateTests",dev::test::getFolder(__FILE__) + "/StateTestsFiller", dev::test::doStateTests); } +BOOST_AUTO_TEST_CASE(stWalletTest) +{ + dev::test::executeTests("stWalletTest", "/StateTests",dev::test::getFolder(__FILE__) + "/StateTestsFiller", dev::test::doStateTests); +} BOOST_AUTO_TEST_CASE(stCreateTest) { From d300143e12c7a80ba89e89fcd462166f8bfcec67 Mon Sep 17 00:00:00 2001 From: subtly Date: Sat, 2 May 2015 03:55:19 +0100 Subject: [PATCH 03/47] Apply sha3 so that xor operation for kademlia metric isn't skewed by EC point encoding. --- libp2p/NodeTable.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libp2p/NodeTable.h b/libp2p/NodeTable.h index 07247462f..0de2622de 100644 --- a/libp2p/NodeTable.h +++ b/libp2p/NodeTable.h @@ -138,7 +138,7 @@ public: ~NodeTable(); /// Returns distance based on xor metric two node ids. Used by NodeEntry and NodeTable. - static unsigned distance(NodeId const& _a, NodeId const& _b) { u512 d = _a ^ _b; unsigned ret; for (ret = 0; d >>= 1; ++ret) {}; return ret; } + static unsigned distance(NodeId const& _a, NodeId const& _b) { u256 d = sha3(_a) ^ sha3(_b); unsigned ret; for (ret = 0; d >>= 1; ++ret) {}; return ret; } /// Set event handler for NodeEntryAdded and NodeEntryDropped events. void setEventHandler(NodeTableEventHandler* _handler) { m_nodeEventHandler.reset(_handler); } @@ -178,7 +178,7 @@ private: /// Constants for Kademlia, derived from address space. - static unsigned const s_addressByteSize = sizeof(NodeId); ///< Size of address type in bytes. + static unsigned const s_addressByteSize = h256::size; ///< Size of address type in bytes. static unsigned const s_bits = 8 * s_addressByteSize; ///< Denoted by n in [Kademlia]. static unsigned const s_bins = s_bits - 1; ///< Size of m_state (excludes root, which is us). static unsigned const s_maxSteps = boost::static_log2::value; ///< Max iterations of discovery. (discover) From 88193ae7c86aff07b3d7a3b7debc56e3e428c62e Mon Sep 17 00:00:00 2001 From: subtly Date: Sat, 2 May 2015 04:06:21 +0100 Subject: [PATCH 04/47] Limit DNS resolution to ipv4. --- libp2p/Network.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libp2p/Network.cpp b/libp2p/Network.cpp index de054a178..847e6a42d 100644 --- a/libp2p/Network.cpp +++ b/libp2p/Network.cpp @@ -226,7 +226,7 @@ bi::tcp::endpoint Network::resolveHost(string const& _addr) boost::system::error_code ec; // resolve returns an iterator (host can resolve to multiple addresses) bi::tcp::resolver r(s_resolverIoService); - auto it = r.resolve({split[0], toString(port)}, ec); + auto it = r.resolve({bi::tcp::v4(), split[0], toString(port)}, ec); if (ec) clog(NetWarn) << "Error resolving host address..." << LogTag::Url << _addr << ":" << LogTag::Error << ec.message(); else From f22fb7f57f910694b9384889cb5705ab08809c4b Mon Sep 17 00:00:00 2001 From: CJentzsch Date: Sat, 2 May 2015 08:55:05 +0200 Subject: [PATCH 05/47] first wallet tests --- .../stCallCreateCallCodeTestFiller.json | 90 +++++++++++++++++++ .../StateTestsFiller/stWalletTestFiller.json | 31 ++++++- 2 files changed, 120 insertions(+), 1 deletion(-) diff --git a/test/libethereum/StateTestsFiller/stCallCreateCallCodeTestFiller.json b/test/libethereum/StateTestsFiller/stCallCreateCallCodeTestFiller.json index 1fd91b91a..d75439f78 100644 --- a/test/libethereum/StateTestsFiller/stCallCreateCallCodeTestFiller.json +++ b/test/libethereum/StateTestsFiller/stCallCreateCallCodeTestFiller.json @@ -618,6 +618,96 @@ } }, + "createNameRegistratorPreStore1NotEnoughGas": { + "env" : { + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6", + "currentNumber" : "0", + "currentGasLimit" : "100000000", + "currentDifficulty" : "256", + "currentTimestamp" : 1, + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" + }, + "pre" : { + "095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "balance" : "1000000000000000000", + "nonce" : "0", + "code" : "{(MSTORE 0 0x6001600155601080600c6000396000f3006000355415600957005b6020356000 ) (MSTORE8 32 0x35) (MSTORE8 33 0x55) (CREATE 23 0 34) }", + "storage": {} + }, + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "1000000000000000000", + "nonce" : "0", + "code" : "", + "storage": {} + } + }, + "transaction" : { + "nonce" : "0", + "gasPrice" : "1", + "gasLimit" : "0x0129ef", + "to" : "095e7baea6a6c7c4c2dfeb977efac326af552d87", + "value" : "100000", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "data" : "" + } + }, + + "createNameRegistratorPerTxs": { + "env" : { + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6", + "currentNumber" : "0", + "currentGasLimit" : "10000000000", + "currentDifficulty" : "256", + "currentTimestamp" : 1, + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" + }, + "pre" : { + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "1000000000000000000", + "nonce" : "0", + "code" : "", + "storage": {} + } + }, + "transaction" : { + "nonce" : "0", + "gasPrice" : "1", + "gasLimit" : "0xb44e", + "to" : "", + "value" : "100000", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "data" : "0x6001600155601080600c6000396000f3006000355415600957005b60203560003555" + } + }, + + "createNameRegistratorPerTxsNotEnoughGas": { + "env" : { + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6", + "currentNumber" : "0", + "currentGasLimit" : "10000000000", + "currentDifficulty" : "256", + "currentTimestamp" : 1, + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" + }, + "pre" : { + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "1000000000000000000", + "nonce" : "0", + "code" : "", + "storage": {} + } + }, + "transaction" : { + "nonce" : "0", + "gasPrice" : "1", + "gasLimit" : "0xb44d", + "to" : "", + "value" : "100000", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "data" : "0x6001600155601080600c6000396000f3006000355415600957005b60203560003555" + } + }, + "createNameRegistratorendowmentTooHigh": { "env" : { "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6", diff --git a/test/libethereum/StateTestsFiller/stWalletTestFiller.json b/test/libethereum/StateTestsFiller/stWalletTestFiller.json index 4472a9120..bff7915f9 100644 --- a/test/libethereum/StateTestsFiller/stWalletTestFiller.json +++ b/test/libethereum/StateTestsFiller/stWalletTestFiller.json @@ -47,7 +47,7 @@ } }, "transaction" : { - "data" : "0x5b600160006000508190555060016001600050819055503360026000506001600050546101008110602c57005b90900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff0219169083021790555060016000505461010260005060003373ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055505b6109cd806100a16000396000f3006000357c010000000000000000000000000000000000000000000000000000000090048063173825d91461005b5780632f54bf6e1461006c5780637065cb4814610081578063ba51a6df14610092578063f00d4b5d146100a357005b6100666004356103a1565b60006000f35b610077600435610538565b8060005260206000f35b61008c600435610250565b60006000f35b61009d6004356104d1565b60006000f35b6100b16004356024356100b7565b60006000f35b60006040600036808284378201915050604090036040206100d78161057a565b6100e057610249565b61010260005060008573ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000505491506000821461012057610126565b5061024b565b61012f83610538565b6101385761013e565b5061024b565b82600260005083610100811061015057005b90900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff02191690830217905550600061010260005060008673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055508161010260005060008573ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055507fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c60408573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff168152602001604090036040a15b505b505050565b60406000368082843782019150506040900360402061026e8161057a565b6102775761039c565b61028082610538565b6102895761028f565b5061039e565b60fa60016000505410156102a2576102ac565b6102aa610714565b505b60fa60016000505410156102bf576102c5565b5061039e565b600160008181505480929190600101919050555081600260005060016000505461010081106102f057005b90900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff0219169083021790555060016000505461010260005060008473ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c360408373ffffffffffffffffffffffffffffffffffffffff168152602001604090036040a15b505b50565b60006040600036808284378201915050604090036040206103c18161057a565b6103ca576104cb565b61010260005060008473ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000505491506000821461040a57610410565b506104cd565b6000600260005083610100811061042357005b90900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff02191690830217905550600061010260005060008573ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055507f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da60408473ffffffffffffffffffffffffffffffffffffffff168152602001604090036040a15b505b5050565b6040600036808284378201915050604090036040206104ef8161057a565b6104f857610533565b816000600050819055507facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da6040838152602001604090036040a15b505b50565b6000600061010260005060008473ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005054119050610575565b919050565b6000600060006000600061010260005060003373ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050549350600084146105c4576105c9565b61070b565b6101036000506000878152602001908152602001600020600092509250600083835060000160005054146105fc5761061f565b600060005054838350600001600050819055506000838350600101600050819055505b8360020a905060008184845060010160005054161461063d5761070a565b7fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda60403373ffffffffffffffffffffffffffffffffffffffff168152602001878152602001604090036040a160018383506000016000505411156106cf578282506000016000818150548092919060019003919050555080838350600101600082828250541792505081905550610709565b610103600050600087815260200190815260200160002060006000820160005060009055600182016000506000905550506001945061070b565b5b5b50505050919050565b60006000600190505b6001600050548110156109c8575b6001600050548110801561078a57506000600260005082610100811061074d57005b90900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561079c57808060010191505061072b565b5b600160016000505411801561080157506000600260005060016000505461010081106107c557005b90900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b156108205760016000818150548092919060019003919050555061079d565b60016000505481108015610884575060006002600050600160005054610100811061084757005b90900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b80156108da57506000600260005082610100811061089e57005b90900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6108e3576109c3565b600260005060016000505461010081106108f957005b90900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260005082610100811061092e57005b90900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff02191690830217905550806101026000506000600260005084610100811061097357005b90900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055505b61071d565b5b509056", + "data" : "60016000818155818055600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000163390811790915573ffffffffffffffffffffffffffffffffffffffff168152610102602052604080822092909255620151804204610106557f9adeddf84386b336eb7b3e18e7a6099be08fd81ea5d5142f4d2b630f8d20cf0191a1610d4f806100996000396000f3007c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", "gasLimit" : "0x0bc2b7", "gasPrice" : "1", "nonce" : "0", @@ -55,5 +55,34 @@ "to" : "", "value" : "100" } + }, + + "walletConstruction" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "100000000000", + "currentNumber" : "0", + "currentTimestamp" : 1, + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "1000000000000000000", + "code" : "0x", + "nonce" : "0", + "storage" : { + } + } + }, + "transaction" : { + "data" : "0x60016000818155818055600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000163390811790915573ffffffffffffffffffffffffffffffffffffffff168152610102602052604080822092909255620151804204610106557f9adeddf84386b336eb7b3e18e7a6099be08fd81ea5d5142f4d2b630f8d20cf0191a1610d4f806100996000396000f3007c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", + "gasLimit" : "1100000", + "gasPrice" : "1", + "nonce" : "0", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "", + "value" : "100" + } } } From 62c988ac15a9a558b1e701fb8f92b1daa098addc Mon Sep 17 00:00:00 2001 From: yann300 Date: Mon, 4 May 2015 11:46:40 +0200 Subject: [PATCH 06/47] Check gas used for contract deployment and dapp registration. --- mix/ClientModel.cpp | 9 ++-- mix/ClientModel.h | 6 +-- mix/QBigInt.h | 2 +- mix/qml/DeploymentDialog.qml | 88 +++++++++++++++++++++++++++++---- mix/qml/js/NetworkDeployment.js | 67 +++++++++++++++++++++---- 5 files changed, 145 insertions(+), 27 deletions(-) diff --git a/mix/ClientModel.cpp b/mix/ClientModel.cpp index 61a3dee1f..e3bb5534a 100644 --- a/mix/ClientModel.cpp +++ b/mix/ClientModel.cpp @@ -192,11 +192,11 @@ QVariantMap ClientModel::contractAddresses() const return res; } -QVariantMap ClientModel::gasCosts() const +QVariantList ClientModel::gasCosts() const { - QVariantMap res; + QVariantList res; for (auto const& c: m_gasCosts) - res.insert(c.first, QVariant::fromValue(static_cast(c.second))); + res.append(QVariant::fromValue(static_cast(c))); return res; } @@ -299,6 +299,7 @@ void ClientModel::executeSequence(vector const& _sequence, { vector
deployedContracts; onStateReset(); + m_gasCosts.clear(); for (TransactionSettings const& transaction: _sequence) { ContractCallDataEncoder encoder; @@ -364,7 +365,6 @@ void ClientModel::executeSequence(vector const& _sequence, contractAddressesChanged(); } gasCostsChanged(); - m_gasCosts[transaction.contractId] = m_client->lastExecution().gasUsed; } else { @@ -378,6 +378,7 @@ void ClientModel::executeSequence(vector const& _sequence, } callContract(contractAddressIter->second, encoder.encodedData(), transaction); } + m_gasCosts.append(m_client->lastExecution().gasUsed); } onNewTransaction(); } diff --git a/mix/ClientModel.h b/mix/ClientModel.h index 9b0529ae6..3a489622f 100644 --- a/mix/ClientModel.h +++ b/mix/ClientModel.h @@ -147,7 +147,7 @@ public: /// @returns deployed contracts addresses Q_PROPERTY(QVariantMap contractAddresses READ contractAddresses NOTIFY contractAddressesChanged) /// @returns deployed contracts gas costs - Q_PROPERTY(QVariantMap gasCosts READ gasCosts NOTIFY gasCostsChanged) + Q_PROPERTY(QVariantList gasCosts READ gasCosts NOTIFY gasCostsChanged) // @returns the last block Q_PROPERTY(RecordLogEntry* lastBlock READ lastBlock CONSTANT) /// ethereum.js RPC request entry point @@ -217,7 +217,7 @@ signals: private: RecordLogEntry* lastBlock() const; QVariantMap contractAddresses() const; - QVariantMap gasCosts() const; + QVariantList gasCosts() const; void executeSequence(std::vector const& _sequence, std::map const& _accounts, Secret const& _miner); dev::Address deployContract(bytes const& _code, TransactionSettings const& _tr = TransactionSettings()); void callContract(Address const& _contract, bytes const& _data, TransactionSettings const& _tr); @@ -233,7 +233,7 @@ private: std::unique_ptr m_client; std::unique_ptr m_rpcConnector; std::unique_ptr m_web3Server; - std::map m_gasCosts; + QList m_gasCosts; std::map m_contractAddresses; std::map m_contractNames; std::map m_stdContractAddresses; diff --git a/mix/QBigInt.h b/mix/QBigInt.h index 0712ff984..b549a16db 100644 --- a/mix/QBigInt.h +++ b/mix/QBigInt.h @@ -79,7 +79,7 @@ public: ~QBigInt() {} /// @returns the current used big integer. - BigIntVariant internalValue() { return m_internalValue; } + BigIntVariant internalValue() const { return m_internalValue; } /// @returns a string representation of the big integer used. Invokable from QML. Q_INVOKABLE QString value() const; /// Set the value of the BigInteger used. Will use u256 type. Invokable from QML. diff --git a/mix/qml/DeploymentDialog.qml b/mix/qml/DeploymentDialog.qml index f8eeb7a88..1fab27342 100644 --- a/mix/qml/DeploymentDialog.qml +++ b/mix/qml/DeploymentDialog.qml @@ -24,7 +24,9 @@ Dialog { property string packageBase64 property string eth: registrarAddr.text property string currentAccount - property string gasToUse: "0x188132" //gasToUseInput.text + property string gasToUse: gasToUseInput.text + property string gasPrice + property variant gasTotal property variant paramsModel: [] function close() @@ -43,7 +45,6 @@ Dialog { id: 0 }]; - console.log(packageHash); TransactionHelper.rpcCall(requests, function(arg1, arg2) { modelAccounts.clear(); @@ -70,16 +71,27 @@ Dialog { { var ether = QEtherHelper.createEther(balanceRet[k].result, QEther.Wei); comboAccounts.balances.push(ether.format()); + comboAccounts.weiBalances.push(balanceRet[k].result); } balance.text = comboAccounts.balances[0]; }); }); - var gas = 0; - var gasCosts = clientModel.gasCosts; - for (var g in gasCosts) - gas += gasCosts[g]; - gasToUse = gas; + if (clientModel.gasCosts.length === 0) + { + errorDialog.text = qsTr("Please run the state one time before deploying in order to calculate gas requirement."); + errorDialog.open(); + } + else + { + NetworkDeploymentCode.gasPrice(function(price) { + gasPrice = price; + gasPriceInt.setValue(gasPrice); + gasInt.setValue(NetworkDeploymentCode.gasUsed()); + gasTotal = gasInt.multiply(gasPriceInt); + gasToUseInput.text = gasTotal.value(); + }); + } } function stopForInputError(inError) @@ -114,6 +126,16 @@ Dialog { poolLog.start(); } + BigIntValue + { + id: gasInt + } + + BigIntValue + { + id: gasPriceInt + } + Timer { id: poolLog @@ -295,11 +317,13 @@ Dialog { ComboBox { id: comboAccounts property var balances: [] + property var weiBalances: [] onCurrentIndexChanged : { if (modelAccounts.count > 0) { currentAccount = modelAccounts.get(currentIndex).id; balance.text = balances[currentIndex]; + balanceInt.setValue(weiBalances[currentIndex]); } } model: ListModel { @@ -314,21 +338,41 @@ Dialog { anchors.leftMargin: 20 id: balance; } + + BigIntValue + { + id: balanceInt + } } } DefaultLabel { - text: qsTr("Amount of gas to use for each contract deployment: ") + text: qsTr("Amount of gas to use for contract deployment: ") } DefaultTextField { - text: "1000000" Layout.preferredWidth: 350 id: gasToUseInput } + DefaultLabel + { + text: qsTr("Amount of gas to use for dapp registration: ") + } + + BigIntValue + { + id: deployGas; + } + + DefaultTextField + { + Layout.preferredWidth: 350 + id: gasToUseDeployInput + } + DefaultLabel { text: qsTr("Ethereum Application URL: ") @@ -345,6 +389,10 @@ Dialog { id: applicationUrlEth onTextChanged: { appUrlFormatted.text = NetworkDeploymentCode.formatAppUrl(text).join('/'); + NetworkDeploymentCode.checkPathCreationCost(function(pathCreationCost){ + gasToUseDeployInput.text = pathCreationCost; + deployGas.setValue(pathCreationCost); + }); } } @@ -379,6 +427,28 @@ Dialog { id: runAction tooltip: qsTr("Deploy contract(s) and Package resources files.") onTriggered: { + if (contractRedeploy.checked) + { + console.log(gasTotal); + if (balanceInt <= gasTotal.add(deployGas)) + { + errorDialog.text = qsTr("Not enough ether to deploy contract."); + errorDialog.open(); + console.log("fff"); + return; + } + } + else + { + if (balanceInt <= deployGas) + { + errorDialog.text = qsTr("Not enough ether to deploy contract."); + errorDialog.open(); + console.log("mmmm"); + return; + } + } + var inError = []; var ethUrl = NetworkDeploymentCode.formatAppUrl(applicationUrlEth.text); for (var k in ethUrl) diff --git a/mix/qml/js/NetworkDeployment.js b/mix/qml/js/NetworkDeployment.js index fa85ddc54..590a05fb6 100644 --- a/mix/qml/js/NetworkDeployment.js +++ b/mix/qml/js/NetworkDeployment.js @@ -47,6 +47,7 @@ function startDeployProject(erasePrevious) var ctrAddresses = {}; var state = retrieveState(projectModel.deployedState); + console.log(JSON.stringify(state)); if (!state) { var txt = qsTr("Unable to find state " + projectModel.deployedState); @@ -59,6 +60,23 @@ function startDeployProject(erasePrevious) }); } +function checkPathCreationCost(callBack) +{ + var dappUrl = formatAppUrl(deploymentDialog.applicationUrlEth); + checkEthPath(dappUrl, true, function(success) { + callBack((dappUrl.length - 1) * 100000 + 5000 /* 500: register content hash */); + }); +} + +function gasUsed() +{ + var gas = 0; + var gasCosts = clientModel.gasCosts; + for (var g in gasCosts) + gas += gasCosts[g]; + return gas; +} + function retrieveState(state) { for (var k = 0; k < projectModel.stateListModel.count; k++) @@ -113,7 +131,9 @@ function executeTr(trIndex, state, ctrAddresses, callBack) executeTrNextStep(trIndex, state, ctrAddresses, callBack); else { - var rpcParams = { "from": deploymentDialog.currentAccount, "gas": deploymentDialog.gasToUse }; + var gasCost = clientModel.encodeAbiString(clientModel.gasCosts[trIndex]); + console.log("gas " + gasCost); + var rpcParams = { "from": deploymentDialog.currentAccount, "gas": "0x" + gasCost }; var params = replaceParamToken(func.parameters, tr.parameters, ctrAddresses); var encodedParams = clientModel.encodeParams(params, tr.contractId, tr.functionId); @@ -157,6 +177,19 @@ function executeTrNextStep(trIndex, state, ctrAddresses, callBack) callBack(); } +function gasPrice(callBack) +{ + var requests = [{ + jsonrpc: "2.0", + method: "eth_gasPrice", + params: [], + id: jsonRpcRequestId + }]; + rpcCall(requests, function (httpCall, response){ + callBack(JSON.parse(response)[0].result); + }); +} + function finalizeDeployment(deploymentId, addresses) { deploymentStepChanged(qsTr("Packaging application ...")); var deploymentDir = projectPath + deploymentId + "/"; @@ -185,8 +218,8 @@ function finalizeDeployment(deploymentId, addresses) { } //write deployment js var deploymentJs = - "// Autogenerated by Mix\n" + - "contracts = {};\n"; + "// Autogenerated by Mix\n" + + "contracts = {};\n"; for (var c in codeModel.contracts) { var contractAccessor = "contracts[\"" + codeModel.contracts[c].contract.name + "\"]"; deploymentJs += contractAccessor + " = {\n" + @@ -209,16 +242,18 @@ function finalizeDeployment(deploymentId, addresses) { applicationUrlEth = formatAppUrl(applicationUrlEth); deploymentStepChanged(qsTr("Registering application on the Ethereum network ...")); - checkEthPath(applicationUrlEth, function () { + checkEthPath(applicationUrlEth, false, function (success) { + if (!success) + return; deploymentComplete(); deployResourcesDialog.text = qsTr("Register Web Application to finalize deployment."); deployResourcesDialog.open(); }); } -function checkEthPath(dappUrl, callBack) +function checkEthPath(dappUrl, checkOnly, callBack) { - if (dappUrl.length === 1) + if (dappUrl.length === 1 && !checkOnly) registerContentHash(deploymentDialog.eth, callBack); // we directly create a dapp under the root registrar. else { @@ -240,19 +275,20 @@ function checkEthPath(dappUrl, callBack) var errorTxt = qsTr("Path does not exists " + JSON.stringify(dappUrl) + ". Please register using Registration Dapp. Aborting."); deploymentError(errorTxt); console.log(errorTxt); + callBack(false); } else { dappUrl.splice(0, 1); - checkRegistration(dappUrl, addr, callBack); + checkRegistration(dappUrl, addr, callBack, checkOnly); } }); } } -function checkRegistration(dappUrl, addr, callBack) +function checkRegistration(dappUrl, addr, callBack, checkOnly) { - if (dappUrl.length === 1) + if (dappUrl.length === 1 && !checkOnly) registerContentHash(addr, callBack); // We do not create the register for the last part, just registering the content hash. else { @@ -287,20 +323,28 @@ function checkRegistration(dappUrl, addr, callBack) errorTxt = qsTr("Error when creating new owned regsitrar. Please use the regsitration Dapp. Aborting"); deploymentError(errorTxt); console.log(errorTxt); + callBack(false); } else if (normalizeAddress(deploymentDialog.currentAccount) !== normalizeAddress(res[0].result)) { errorTxt = qsTr("You are not the owner of " + dappUrl[0] + ". Aborting"); deploymentError(errorTxt); console.log(errorTxt); + callBack(false); } else if (nextAddr.replace(/0+/g, "") !== "") { dappUrl.splice(0, 1); - checkRegistration(dappUrl, nextAddr, callBack); + checkRegistration(dappUrl, nextAddr, callBack, checkOnly); } else { + if (checkOnly) + { + callBack(true); + return; + } + var txt = qsTr("Registering sub domain " + dappUrl[0] + " ..."); console.log(txt); deploymentStepChanged(txt); @@ -424,6 +468,9 @@ function normalizeAddress(addr) function formatAppUrl(url) { + console.log(" 55 " + url); + if (url.toLowerCase().lastIndexOf("/") === url.length - 1) + url = url.substring(0, url.length - 1); if (url.toLowerCase().indexOf("eth://") === 0) url = url.substring(6); if (url.toLowerCase().indexOf(projectModel.projectTitle + ".") === 0) From a4f4e1dae299b272663854748c9bb9c2ea539fbc Mon Sep 17 00:00:00 2001 From: yann300 Date: Mon, 4 May 2015 17:12:46 +0200 Subject: [PATCH 07/47] When user fill eth url, warn if not enough gas to deploy. --- mix/qml/DeploymentDialog.qml | 18 ++--- mix/qml/js/NetworkDeployment.js | 117 ++++++++++++++++++++++---------- 2 files changed, 92 insertions(+), 43 deletions(-) diff --git a/mix/qml/DeploymentDialog.qml b/mix/qml/DeploymentDialog.qml index 1fab27342..6d26790a5 100644 --- a/mix/qml/DeploymentDialog.qml +++ b/mix/qml/DeploymentDialog.qml @@ -300,7 +300,7 @@ Dialog { { Layout.preferredWidth: 350 id: registrarAddr - text: "c6d9d2cd449a754c494264e1809c50e34d64562b" + text: "c958eeae0f4d11664a9db27d04d86ae1d744d1d9" visible: false } @@ -351,7 +351,7 @@ Dialog { text: qsTr("Amount of gas to use for contract deployment: ") } - DefaultTextField + DefaultLabel { Layout.preferredWidth: 350 id: gasToUseInput @@ -367,7 +367,7 @@ Dialog { id: deployGas; } - DefaultTextField + DefaultLabel { Layout.preferredWidth: 350 id: gasToUseDeployInput @@ -388,10 +388,14 @@ Dialog { width: 200 id: applicationUrlEth onTextChanged: { + if (!modalDeploymentDialog.visible) + return; appUrlFormatted.text = NetworkDeploymentCode.formatAppUrl(text).join('/'); - NetworkDeploymentCode.checkPathCreationCost(function(pathCreationCost){ - gasToUseDeployInput.text = pathCreationCost; - deployGas.setValue(pathCreationCost); + NetworkDeploymentCode.checkPathCreationCost(function(pathCreationCost) + { + deployGas.setValue("" + pathCreationCost + ""); + var gasSpent = deployGas.multiply(gasPriceInt); + gasToUseDeployInput.text = gasSpent.value(); }); } } @@ -434,7 +438,6 @@ Dialog { { errorDialog.text = qsTr("Not enough ether to deploy contract."); errorDialog.open(); - console.log("fff"); return; } } @@ -444,7 +447,6 @@ Dialog { { errorDialog.text = qsTr("Not enough ether to deploy contract."); errorDialog.open(); - console.log("mmmm"); return; } } diff --git a/mix/qml/js/NetworkDeployment.js b/mix/qml/js/NetworkDeployment.js index 28068c0a5..bac4b501b 100644 --- a/mix/qml/js/NetworkDeployment.js +++ b/mix/qml/js/NetworkDeployment.js @@ -63,8 +63,29 @@ function startDeployProject(erasePrevious) function checkPathCreationCost(callBack) { var dappUrl = formatAppUrl(deploymentDialog.applicationUrlEth); - checkEthPath(dappUrl, true, function(success) { - callBack((dappUrl.length - 1) * 100000 + 5000 /* 500: register content hash */); + checkEthPath(dappUrl, true, function(success, cause) { + if (!success) + { + switch (cause) + { + case "rootownedregistrar_notexist": + deploymentError(qsTr("Owned registrar does not exist under the global registrar. Please create one using DApp registration.")); + break; + case "ownedregistrar_creationfailed": + deploymentError(qsTr("The creation of your new owned registrar fails. Please use DApp registration to create one.")); + break; + case "ownedregistrar_notowner": + deploymentError(qsTr("You are not the owner of this registrar. You cannot register your Dapp here.")); + break; + default: + break; + } + } + else + { + deploymentStepChanged(qsTr("Your Dapp can be registered here.")); + callBack((dappUrl.length - 1) * 100000 + 5000); + } }); } @@ -132,7 +153,6 @@ function executeTr(trIndex, state, ctrAddresses, callBack) else { var gasCost = clientModel.encodeAbiString(clientModel.gasCosts[trIndex]); - console.log("gas " + gasCost); var rpcParams = { "from": deploymentDialog.currentAccount, "gas": "0x" + gasCost }; var params = replaceParamToken(func.parameters, tr.parameters, ctrAddresses); var encodedParams = clientModel.encodeParams(params, tr.contractId, tr.functionId); @@ -253,10 +273,15 @@ function finalizeDeployment(deploymentId, addresses) { function checkEthPath(dappUrl, checkOnly, callBack) { - if (dappUrl.length === 1 && !checkOnly) - reserve(deploymentDialog.eth, function() { - registerContentHash(deploymentDialog.eth, callBack); // we directly create a dapp under the root registrar. - }); + if (dappUrl.length === 1) + { + if (!checkOnly) + reserve(deploymentDialog.eth, function() { + registerContentHash(deploymentDialog.eth, callBack); // we directly create a dapp under the root registrar. + }); + else + callBack(true); + } else { // the first owned registrar must have been created to follow the path. @@ -266,7 +291,7 @@ function checkEthPath(dappUrl, checkOnly, callBack) //subRegistrar() jsonrpc: "2.0", method: "eth_call", - params: [ { "gas": "0xffff", "from": deploymentDialog.currentAccount, "to": '0x' + deploymentDialog.eth, "data": "0x5a3a05bd" + str }, "pending" ], + params: [ { "gas": "0xffff", "from": deploymentDialog.currentAccount, "to": '0x' + deploymentDialog.eth, "data": "0xe1fa8e84" + str }, "pending" ], id: jsonRpcRequestId++ }); rpcCall(requests, function (httpRequest, response) { @@ -277,7 +302,7 @@ function checkEthPath(dappUrl, checkOnly, callBack) var errorTxt = qsTr("Path does not exists " + JSON.stringify(dappUrl) + ". Please register using Registration Dapp. Aborting."); deploymentError(errorTxt); console.log(errorTxt); - callBack(false); + callBack(false, "rootownedregistrar_notexist"); } else { @@ -288,25 +313,56 @@ function checkEthPath(dappUrl, checkOnly, callBack) } } +function isOwner(addr, callBack) +{ + var requests = []; + requests.push({ + //getOwner() + jsonrpc: "2.0", + method: "eth_call", + params: [ { "from": deploymentDialog.currentAccount, "to": '0x' + addr, "data": "0xb387ef92" }, "pending" ], + id: jsonRpcRequestId++ + }); + rpcCall(requests, function (httpRequest, response) { + var res = JSON.parse(response); + callBack(normalizeAddress(deploymentDialog.currentAccount) === normalizeAddress(res[0].result)); + }); +} + function checkRegistration(dappUrl, addr, callBack, checkOnly) { - if (dappUrl.length === 1 && !checkOnly) - registerContentHash(addr, callBack); // We do not create the register for the last part, just registering the content hash. + console.log("checkRegistration " + addr + " " + dappUrl.join('|')); + isOwner(addr, function(ret){ + if (!ret) + { + var errorTxt = qsTr("You are not the owner of " + dappUrl[0] + ". Aborting"); + deploymentError(errorTxt); + console.log(errorTxt); + callBack(false, "ownedregistrar_notowner"); + } + else + continueRegistration(dappUrl, addr, callBack, checkOnly); + }); +} + +function continueRegistration(dappUrl, addr, callBack, checkOnly) +{ + if (dappUrl.length === 1) + { + if (!checkOnly) + registerContentHash(addr, callBack); // We do not create the register for the last part, just registering the content hash. + else + callBack(true); + } else { - var txt = qsTr("Checking " + JSON.stringify(dappUrl) + " ... in registrar " + addr); + var txt = qsTr("Checking " + JSON.stringify(dappUrl)); deploymentStepChanged(txt); console.log(txt); var requests = []; var registrar = {} var str = clientModel.encodeStringParam(dappUrl[0]); - requests.push({ - //getOwner() - jsonrpc: "2.0", - method: "eth_call", - params: [ { "gas" : 2000, "from": deploymentDialog.currentAccount, "to": '0x' + addr, "data": "0x02571be3" }, "pending" ], - id: jsonRpcRequestId++ - }); + requests.push({ //register() @@ -318,21 +374,14 @@ function checkRegistration(dappUrl, addr, callBack, checkOnly) rpcCall(requests, function (httpRequest, response) { var res = JSON.parse(response); - var nextAddr = normalizeAddress(res[1].result); + var nextAddr = normalizeAddress(res[0].result); var errorTxt; - if (res[1].result === "0x") + if (res[0].result === "0x") { errorTxt = qsTr("Error when creating new owned regsitrar. Please use the regsitration Dapp. Aborting"); deploymentError(errorTxt); console.log(errorTxt); - callBack(false); - } - else if (normalizeAddress(deploymentDialog.currentAccount) !== normalizeAddress(res[0].result)) - { - errorTxt = qsTr("You are not the owner of " + dappUrl[0] + ". Aborting"); - deploymentError(errorTxt); - console.log(errorTxt); - callBack(false); + callBack(false, "ownedregistrar_creationfailed"); } else if (nextAddr.replace(/0+/g, "") !== "") { @@ -346,7 +395,6 @@ function checkRegistration(dappUrl, addr, callBack, checkOnly) callBack(true); return; } - var txt = qsTr("Registering sub domain " + dappUrl[0] + " ..."); console.log(txt); deploymentStepChanged(txt); @@ -356,7 +404,7 @@ function checkRegistration(dappUrl, addr, callBack, checkOnly) requests.push({ jsonrpc: "2.0", method: "eth_sendTransaction", - params: [ { "from": deploymentDialog.currentAccount, "gas": 20000, "code": "0x600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000163317815561058990819061003990396000f3007c010000000000000000000000000000000000000000000000000000000060003504630198489281146100a757806302571be3146100d957806321f8a721146100e35780632dff6941146100ed5780633b3b57de1461010d5780635a3a05bd1461013d5780635fd4b08a1461017057806389a69c0e1461017c578063b5c645bd146101b0578063be99a9801461022c578063c3d014d614610264578063d93e75731461029857005b73ffffffffffffffffffffffffffffffffffffffff600435166000908152600160205260409020548060005260206000f35b6000808052602081f35b6000808052602081f35b600435600090815260026020819052604090912001548060005260206000f35b600435600090815260026020908152604082205473ffffffffffffffffffffffffffffffffffffffff1680835291f35b600435600090815260026020908152604082206001015473ffffffffffffffffffffffffffffffffffffffff1680835291f35b60008060005260206000f35b6000546102c89060043590602435903373ffffffffffffffffffffffffffffffffffffffff90811691161461052557610585565b600435600090815260026020819052604090912080546001820154919092015473ffffffffffffffffffffffffffffffffffffffff9283169291909116908273ffffffffffffffffffffffffffffffffffffffff166000528173ffffffffffffffffffffffffffffffffffffffff166020528060405260606000f35b6000546102ce906004359060243590604435903373ffffffffffffffffffffffffffffffffffffffff9081169116146102e0576103af565b6000546102d49060043590602435903373ffffffffffffffffffffffffffffffffffffffff9081169116146103b4576103f1565b6000546102da90600435903373ffffffffffffffffffffffffffffffffffffffff9081169116146103f557610522565b60006000f35b60006000f35b60006000f35b60006000f35b600083815260026020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016831790558061034757827fa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc60006040a26103ae565b73ffffffffffffffffffffffffffffffffffffffff8216837ff63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a854560006040a373ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090208390555b5b505050565b600082815260026020819052604080832090910183905583917fa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc91a25b5050565b60008181526002602090815260408083205473ffffffffffffffffffffffffffffffffffffffff16835260019091529020548114610432576104b2565b6000818152600260205260408082205473ffffffffffffffffffffffffffffffffffffffff169183917ff63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a85459190a360008181526002602090815260408083205473ffffffffffffffffffffffffffffffffffffffff16835260019091528120555b600081815260026020819052604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168255600182018054909116905590910182905582917fa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc91a25b50565b60008281526002602052604080822060010180547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905583917fa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc91a25b505056" } ], + params: [ { "from": deploymentDialog.currentAccount, "gas": "#ffff", "code": "0x600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000163317815561058990819061003990396000f3007c010000000000000000000000000000000000000000000000000000000060003504630198489281146100a757806302571be3146100d957806321f8a721146100e35780632dff6941146100ed5780633b3b57de1461010d5780635a3a05bd1461013d5780635fd4b08a1461017057806389a69c0e1461017c578063b5c645bd146101b0578063be99a9801461022c578063c3d014d614610264578063d93e75731461029857005b73ffffffffffffffffffffffffffffffffffffffff600435166000908152600160205260409020548060005260206000f35b6000808052602081f35b6000808052602081f35b600435600090815260026020819052604090912001548060005260206000f35b600435600090815260026020908152604082205473ffffffffffffffffffffffffffffffffffffffff1680835291f35b600435600090815260026020908152604082206001015473ffffffffffffffffffffffffffffffffffffffff1680835291f35b60008060005260206000f35b6000546102c89060043590602435903373ffffffffffffffffffffffffffffffffffffffff90811691161461052557610585565b600435600090815260026020819052604090912080546001820154919092015473ffffffffffffffffffffffffffffffffffffffff9283169291909116908273ffffffffffffffffffffffffffffffffffffffff166000528173ffffffffffffffffffffffffffffffffffffffff166020528060405260606000f35b6000546102ce906004359060243590604435903373ffffffffffffffffffffffffffffffffffffffff9081169116146102e0576103af565b6000546102d49060043590602435903373ffffffffffffffffffffffffffffffffffffffff9081169116146103b4576103f1565b6000546102da90600435903373ffffffffffffffffffffffffffffffffffffffff9081169116146103f557610522565b60006000f35b60006000f35b60006000f35b60006000f35b600083815260026020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016831790558061034757827fa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc60006040a26103ae565b73ffffffffffffffffffffffffffffffffffffffff8216837ff63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a854560006040a373ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090208390555b5b505050565b600082815260026020819052604080832090910183905583917fa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc91a25b5050565b60008181526002602090815260408083205473ffffffffffffffffffffffffffffffffffffffff16835260019091529020548114610432576104b2565b6000818152600260205260408082205473ffffffffffffffffffffffffffffffffffffffff169183917ff63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a85459190a360008181526002602090815260408083205473ffffffffffffffffffffffffffffffffffffffff16835260019091528120555b600081815260026020819052604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168255600182018054909116905590910182905582917fa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc91a25b50565b60008281526002602052604080822060010180547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905583917fa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc91a25b505056" } ], id: jsonRpcRequestId++ }); @@ -377,7 +425,7 @@ function checkRegistration(dappUrl, addr, callBack, checkOnly) //setRegister() jsonrpc: "2.0", method: "eth_sendTransaction", - params: [ { "from": deploymentDialog.currentAccount, "gas": 30000, "to": '0x' + addr, "data": "0x89a69c0e" + crLevel + deploymentDialog.pad(newCtrAddress) } ], + params: [ { "from": deploymentDialog.currentAccount, "gas": "#ffff", "to": '0x' + addr, "data": "0x89a69c0e" + crLevel + deploymentDialog.pad(newCtrAddress) } ], id: jsonRpcRequestId++ }); @@ -435,7 +483,7 @@ function registerContentHash(registrar, callBack) id: jsonRpcRequestId++ }); rpcCall(requests, function (httpRequest, response) { - callBack(); + callBack(true); }); } @@ -469,7 +517,7 @@ function urlHintAddress(callBack) //registrar: get UrlHint addr jsonrpc: "2.0", method: "eth_call", - params: [ { "to": '0x' + deploymentDialog.eth, "from": deploymentDialog.currentAccount, "gas": "0xfffff", "data": "0x3b3b57de" + urlHint }, "pending" ], + params: [ { "to": '0x' + deploymentDialog.eth, "from": deploymentDialog.currentAccount, "data": "0x3b3b57de" + urlHint }, "pending" ], id: jsonRpcRequestId++ }); @@ -490,7 +538,6 @@ function normalizeAddress(addr) function formatAppUrl(url) { - console.log(" 55 " + url); if (url.toLowerCase().lastIndexOf("/") === url.length - 1) url = url.substring(0, url.length - 1); if (url.toLowerCase().indexOf("eth://") === 0) From 2e8f802530ea5a938f145e30d5da491292fc51c7 Mon Sep 17 00:00:00 2001 From: CJentzsch Date: Tue, 5 May 2015 08:00:33 +0200 Subject: [PATCH 08/47] tests for contract multiowned --- .../StateTestsFiller/stWalletTestFiller.json | 587 +++++++++++++++++- 1 file changed, 577 insertions(+), 10 deletions(-) diff --git a/test/libethereum/StateTestsFiller/stWalletTestFiller.json b/test/libethereum/StateTestsFiller/stWalletTestFiller.json index bff7915f9..a5181255b 100644 --- a/test/libethereum/StateTestsFiller/stWalletTestFiller.json +++ b/test/libethereum/StateTestsFiller/stWalletTestFiller.json @@ -18,8 +18,8 @@ } }, "transaction" : { - "data" : "0x5b600160006000508190555060016001600050819055503360026000506001600050546101008110602c57005b90900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff0219169083021790555060016000505461010260005060003373ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055505b6109cd806100a16000396000f3006000357c010000000000000000000000000000000000000000000000000000000090048063173825d91461005b5780632f54bf6e1461006c5780637065cb4814610081578063ba51a6df14610092578063f00d4b5d146100a357005b6100666004356103a1565b60006000f35b610077600435610538565b8060005260206000f35b61008c600435610250565b60006000f35b61009d6004356104d1565b60006000f35b6100b16004356024356100b7565b60006000f35b60006040600036808284378201915050604090036040206100d78161057a565b6100e057610249565b61010260005060008573ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000505491506000821461012057610126565b5061024b565b61012f83610538565b6101385761013e565b5061024b565b82600260005083610100811061015057005b90900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff02191690830217905550600061010260005060008673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055508161010260005060008573ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055507fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c60408573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff168152602001604090036040a15b505b505050565b60406000368082843782019150506040900360402061026e8161057a565b6102775761039c565b61028082610538565b6102895761028f565b5061039e565b60fa60016000505410156102a2576102ac565b6102aa610714565b505b60fa60016000505410156102bf576102c5565b5061039e565b600160008181505480929190600101919050555081600260005060016000505461010081106102f057005b90900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff0219169083021790555060016000505461010260005060008473ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c360408373ffffffffffffffffffffffffffffffffffffffff168152602001604090036040a15b505b50565b60006040600036808284378201915050604090036040206103c18161057a565b6103ca576104cb565b61010260005060008473ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000505491506000821461040a57610410565b506104cd565b6000600260005083610100811061042357005b90900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff02191690830217905550600061010260005060008573ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055507f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da60408473ffffffffffffffffffffffffffffffffffffffff168152602001604090036040a15b505b5050565b6040600036808284378201915050604090036040206104ef8161057a565b6104f857610533565b816000600050819055507facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da6040838152602001604090036040a15b505b50565b6000600061010260005060008473ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005054119050610575565b919050565b6000600060006000600061010260005060003373ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050549350600084146105c4576105c9565b61070b565b6101036000506000878152602001908152602001600020600092509250600083835060000160005054146105fc5761061f565b600060005054838350600001600050819055506000838350600101600050819055505b8360020a905060008184845060010160005054161461063d5761070a565b7fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda60403373ffffffffffffffffffffffffffffffffffffffff168152602001878152602001604090036040a160018383506000016000505411156106cf578282506000016000818150548092919060019003919050555080838350600101600082828250541792505081905550610709565b610103600050600087815260200190815260200160002060006000820160005060009055600182016000506000905550506001945061070b565b5b5b50505050919050565b60006000600190505b6001600050548110156109c8575b6001600050548110801561078a57506000600260005082610100811061074d57005b90900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561079c57808060010191505061072b565b5b600160016000505411801561080157506000600260005060016000505461010081106107c557005b90900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b156108205760016000818150548092919060019003919050555061079d565b60016000505481108015610884575060006002600050600160005054610100811061084757005b90900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b80156108da57506000600260005082610100811061089e57005b90900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6108e3576109c3565b600260005060016000505461010081106108f957005b90900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260005082610100811061092e57005b90900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff02191690830217905550806101026000506000600260005084610100811061097357005b90900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055505b61071d565b5b509056", - "gasLimit" : "0x041a8f", + "data" : "0x60016000818155818055600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000163390811790915573ffffffffffffffffffffffffffffffffffffffff168152610102602052604081209190915561073c90819061006c90396000f3007c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461005a5780632f54bf6e146100d05780637065cb4814610101578063ba51a6df14610125578063f00d4b5d1461014957005b6101726004356000604060003680828437820191505060409003604020610424815b73ffffffffffffffffffffffffffffffffffffffff33166000908152610102602052604081205481828383851461053c575b600086815261010360205260408120805490945090925082146105415761054d565b6101786004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6101826004356040600036808284378201915050604090036040206103148161007c565b6101886004356040600036808284378201915050604090036040206104a88161007c565b61018e60043560243560006040600036808284378201915050604090036040206102298161007c565b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61023257610222565b73ffffffffffffffffffffffffffffffffffffffff8416600090815261010260205260408120549250821461026b575b610271836100d7565b50610224565b610285575b82600283610100851061019457005b50610224565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61031d5761030f565b610326826100d7565b61033c575b60015460fa90101561034257610371565b50610311565b61036f600060015b600154811015610589575b600154811080156105c8575060028161010083106105ab57005b505b60015460fa901015610398575b600180548101908190558290600290610100811061028b57005b50610311565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61042d5761041e565b73ffffffffffffffffffffffffffffffffffffffff8316600090815261010260205260408120549250821461046d575b6000600283610100851061039e57005b50610420565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b610473576104a4565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a1825460019011156105675782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610533565b60008054845560018401555b506001820154600284900a9081166000146104b157610532565b6000868152610103602052604081208181556001908101919091559450610533565b5090565b5b6001805411801561060e575060015460029061010081106105f257005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b1561058d57600101610355565b6001548110801561065d5750600154600290610100811061064057005b015473ffffffffffffffffffffffffffffffffffffffff166000145b156105d557600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01905561058e565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b801561068e5750600281610100831061067257005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610697576106d2565b60015460029061010081106106d757005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b61034a565b015473ffffffffffffffffffffffffffffffffffffffff1660028261010084106106fd57005b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905580610102600060028461010086106106a85700", + "gasLimit" : "141608", "gasPrice" : "1", "nonce" : "0", "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", @@ -28,7 +28,7 @@ } }, - "multiOwnedConstruction2" : { + "multiOwnedConstructionNotEnoughGas2" : { "env" : { "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", "currentDifficulty" : "256", @@ -47,8 +47,8 @@ } }, "transaction" : { - "data" : "60016000818155818055600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000163390811790915573ffffffffffffffffffffffffffffffffffffffff168152610102602052604080822092909255620151804204610106557f9adeddf84386b336eb7b3e18e7a6099be08fd81ea5d5142f4d2b630f8d20cf0191a1610d4f806100996000396000f3007c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", - "gasLimit" : "0x0bc2b7", + "data" : "0x60016000818155818055600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000163390811790915573ffffffffffffffffffffffffffffffffffffffff168152610102602052604081209190915561073c90819061006c90396000f3007c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461005a5780632f54bf6e146100d05780637065cb4814610101578063ba51a6df14610125578063f00d4b5d1461014957005b6101726004356000604060003680828437820191505060409003604020610424815b73ffffffffffffffffffffffffffffffffffffffff33166000908152610102602052604081205481828383851461053c575b600086815261010360205260408120805490945090925082146105415761054d565b6101786004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6101826004356040600036808284378201915050604090036040206103148161007c565b6101886004356040600036808284378201915050604090036040206104a88161007c565b61018e60043560243560006040600036808284378201915050604090036040206102298161007c565b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61023257610222565b73ffffffffffffffffffffffffffffffffffffffff8416600090815261010260205260408120549250821461026b575b610271836100d7565b50610224565b610285575b82600283610100851061019457005b50610224565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61031d5761030f565b610326826100d7565b61033c575b60015460fa90101561034257610371565b50610311565b61036f600060015b600154811015610589575b600154811080156105c8575060028161010083106105ab57005b505b60015460fa901015610398575b600180548101908190558290600290610100811061028b57005b50610311565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61042d5761041e565b73ffffffffffffffffffffffffffffffffffffffff8316600090815261010260205260408120549250821461046d575b6000600283610100851061039e57005b50610420565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b610473576104a4565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a1825460019011156105675782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610533565b60008054845560018401555b506001820154600284900a9081166000146104b157610532565b6000868152610103602052604081208181556001908101919091559450610533565b5090565b5b6001805411801561060e575060015460029061010081106105f257005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b1561058d57600101610355565b6001548110801561065d5750600154600290610100811061064057005b015473ffffffffffffffffffffffffffffffffffffffff166000145b156105d557600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01905561058e565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b801561068e5750600281610100831061067257005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610697576106d2565b60015460029061010081106106d757005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b61034a565b015473ffffffffffffffffffffffffffffffffffffffff1660028261010084106106fd57005b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905580610102600060028461010086106106a85700", + "gasLimit" : "0x090ab0", "gasPrice" : "1", "nonce" : "0", "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", @@ -57,11 +57,11 @@ } }, - "walletConstruction" : { + "multiOwnedConstructionCorrect" : { "env" : { "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", "currentDifficulty" : "256", - "currentGasLimit" : "100000000000", + "currentGasLimit" : "10000000", "currentNumber" : "0", "currentTimestamp" : 1, "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" @@ -76,13 +76,580 @@ } }, "transaction" : { - "data" : "0x60016000818155818055600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000163390811790915573ffffffffffffffffffffffffffffffffffffffff168152610102602052604080822092909255620151804204610106557f9adeddf84386b336eb7b3e18e7a6099be08fd81ea5d5142f4d2b630f8d20cf0191a1610d4f806100996000396000f3007c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", - "gasLimit" : "1100000", + "data" : "0x60016000818155818055600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000163390811790915573ffffffffffffffffffffffffffffffffffffffff168152610102602052604081209190915561073c90819061006c90396000f3007c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461005a5780632f54bf6e146100d05780637065cb4814610101578063ba51a6df14610125578063f00d4b5d1461014957005b6101726004356000604060003680828437820191505060409003604020610424815b73ffffffffffffffffffffffffffffffffffffffff33166000908152610102602052604081205481828383851461053c575b600086815261010360205260408120805490945090925082146105415761054d565b6101786004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6101826004356040600036808284378201915050604090036040206103148161007c565b6101886004356040600036808284378201915050604090036040206104a88161007c565b61018e60043560243560006040600036808284378201915050604090036040206102298161007c565b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61023257610222565b73ffffffffffffffffffffffffffffffffffffffff8416600090815261010260205260408120549250821461026b575b610271836100d7565b50610224565b610285575b82600283610100851061019457005b50610224565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61031d5761030f565b610326826100d7565b61033c575b60015460fa90101561034257610371565b50610311565b61036f600060015b600154811015610589575b600154811080156105c8575060028161010083106105ab57005b505b60015460fa901015610398575b600180548101908190558290600290610100811061028b57005b50610311565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61042d5761041e565b73ffffffffffffffffffffffffffffffffffffffff8316600090815261010260205260408120549250821461046d575b6000600283610100851061039e57005b50610420565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b610473576104a4565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a1825460019011156105675782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610533565b60008054845560018401555b506001820154600284900a9081166000146104b157610532565b6000868152610103602052604081208181556001908101919091559450610533565b5090565b5b6001805411801561060e575060015460029061010081106105f257005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b1561058d57600101610355565b6001548110801561065d5750600154600290610100811061064057005b015473ffffffffffffffffffffffffffffffffffffffff166000145b156105d557600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01905561058e565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b801561068e5750600281610100831061067257005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610697576106d2565b60015460029061010081106106d757005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b61034a565b015473ffffffffffffffffffffffffffffffffffffffff1660028261010084106106fd57005b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905580610102600060028461010086106106a85700", + "gasLimit" : "0x090ab1", "gasPrice" : "1", "nonce" : "0", "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", "to" : "", "value" : "100" } - } + }, + + "multiOwnedChangeOwnerNoArguments" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : 1, + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "6295ee1b4f6dd65047762f924ecd367c17eabf8f" : { + "balance" : "0x64", + "code" : "0x7c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", + "nonce" : "0x00", + "storage" : { + "0x00" : "0x01", + "0x01" : "0x01", + "0x03" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "0x6e369836487c234b9e553ef3f787c2d8865520739d340c67b3d251a33986e58d" : "0x01" + } + }, + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + } + }, + "transaction" : { + "data" : "0xf00d4b5d", + "gasLimit" : "0x0bc2b7", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + }, + + "multiOwnedChangeOwner" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : 1, + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "6295ee1b4f6dd65047762f924ecd367c17eabf8f" : { + "balance" : "0x64", + "code" : "0x7c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", + "nonce" : "0x00", + "storage" : { + "0x00" : "0x01", + "0x01" : "0x01", + "0x03" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "0x6e369836487c234b9e553ef3f787c2d8865520739d340c67b3d251a33986e58d" : "0x01" + } + }, + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + } + }, + "transaction" : { + "data" : "0xf00d4b5d000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b000000000000000000000000aaaf5374fce5edbc8e2a8697c15331677e6ebaaa", + "gasLimit" : "10000000", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + }, + + "multiOwnedChangeOwner_fromNotOwner" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : 1, + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "6295ee1b4f6dd65047762f924ecd367c17eabf8f" : { + "balance" : "0x64", + "code" : "0x7c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", + "nonce" : "0x00", + "storage" : { + "0x00" : "0x01", + "0x01" : "0x01", + "0x03" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "0x6e369836487c234b9e553ef3f787c2d8865520739d340c67b3d251a33986e58d" : "0x01" + } + }, + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + } + }, + "transaction" : { + "data" : "0xf00d4b5d000000000000000000000000b94f5374fce5edbc8e2a8697c15331677e6ebf0b000000000000000000000000aaaf5374fce5edbc8e2a8697c15331677e6ebaaa", + "gasLimit" : "10000000", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + }, + + "multiOwnedChangeOwner_toIsOwner" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : 1, + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "6295ee1b4f6dd65047762f924ecd367c17eabf8f" : { + "balance" : "0x64", + "code" : "0x7c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", + "nonce" : "0x00", + "storage" : { + "0x00" : "0x01", + "0x01" : "0x01", + "0x03" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "0x6e369836487c234b9e553ef3f787c2d8865520739d340c67b3d251a33986e58d" : "0x01" + } + }, + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + } + }, + "transaction" : { + "data" : "0xf00d4b5d000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "gasLimit" : "10000000", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + }, + + "multiOwnedAddOwner" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : 1, + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "6295ee1b4f6dd65047762f924ecd367c17eabf8f" : { + "balance" : "0x64", + "code" : "0x7c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", + "nonce" : "0x00", + "storage" : { + "0x00" : "0x01", + "0x01" : "0x01", + "0x03" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "0x6e369836487c234b9e553ef3f787c2d8865520739d340c67b3d251a33986e58d" : "0x01" + } + }, + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + } + }, + "transaction" : { + "data" : "0x7065cb48000000000000000000000000aaaf5374fce5edbc8e2a8697c15331677e6ebaaa", + "gasLimit" : "10000000", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + }, + + "multiOwnedAddOwnerAddMyself" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : 1, + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "6295ee1b4f6dd65047762f924ecd367c17eabf8f" : { + "balance" : "0x64", + "code" : "0x7c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", + "nonce" : "0x00", + "storage" : { + "0x00" : "0x01", + "0x01" : "0x01", + "0x03" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "0x6e369836487c234b9e553ef3f787c2d8865520739d340c67b3d251a33986e58d" : "0x01" + } + }, + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + } + }, + "transaction" : { + "data" : "0x7065cb48000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "gasLimit" : "10000000", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + }, + + "multiOwnedRemoveOwner" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : 1, + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "6295ee1b4f6dd65047762f924ecd367c17eabf8f" : { + "balance" : "0x64", + "code" : "0x7c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", + "nonce" : "0x00", + "storage" : { + "0x00" : "0x01", + "0x01" : "0x01", + "0x03" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "0x6e369836487c234b9e553ef3f787c2d8865520739d340c67b3d251a33986e58d" : "0x01" + } + }, + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + } + }, + "transaction" : { + "data" : "0x173825d9000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "gasLimit" : "10000000", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + }, + + "multiOwnedRemoveOwnerByNonOwner" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : 1, + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "6295ee1b4f6dd65047762f924ecd367c17eabf8f" : { + "balance" : "0x64", + "code" : "0x7c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", + "nonce" : "0x00", + "storage" : { + "0x00" : "0x01", + "0x01" : "0x01", + "0x03" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "0x6e369836487c234b9e553ef3f787c2d8865520739d340c67b3d251a33986e58d" : "0x01" + } + }, + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + }, + "3fb1cd2cd96c6d5c0b5eb3322d807b34482481d4" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + } + }, + "transaction" : { + "data" : "0x173825d9000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "gasLimit" : "10000000", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "a95defe70ebea7804f9c3be42d20d24375e2a92b9d9666b832069c5f3cd423dd", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + }, + + "multiOwnedRemoveOwner_ownerIsNotOwner" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : 1, + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "6295ee1b4f6dd65047762f924ecd367c17eabf8f" : { + "balance" : "0x64", + "code" : "0x7c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", + "nonce" : "0x00", + "storage" : { + "0x00" : "0x01", + "0x01" : "0x01", + "0x03" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "0x6e369836487c234b9e553ef3f787c2d8865520739d340c67b3d251a33986e58d" : "0x01" + } + }, + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + } + }, + "transaction" : { + "data" : "0x173825d9000000000000000000000000aaaf5374fce5edbc8e2a8697c15331677e6ebaaa", + "gasLimit" : "10000000", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + }, + + "multiOwnedChangeRequirementTo0" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : 1, + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "6295ee1b4f6dd65047762f924ecd367c17eabf8f" : { + "balance" : "0x64", + "code" : "0x7c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", + "nonce" : "0x00", + "storage" : { + "0x00" : "0x01", + "0x01" : "0x01", + "0x03" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "0x6e369836487c234b9e553ef3f787c2d8865520739d340c67b3d251a33986e58d" : "0x01" + } + }, + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + } + }, + "transaction" : { + "data" : "0xba51a6df0000000000000000000000000000000000000000000000000000000000000000", + "gasLimit" : "10000000", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + }, + + "multiOwnedChangeRequirementTo1" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : 1, + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "6295ee1b4f6dd65047762f924ecd367c17eabf8f" : { + "balance" : "0x64", + "code" : "0x7c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", + "nonce" : "0x00", + "storage" : { + "0x00" : "0x01", + "0x01" : "0x01", + "0x03" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "0x6e369836487c234b9e553ef3f787c2d8865520739d340c67b3d251a33986e58d" : "0x01" + } + }, + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + } + }, + "transaction" : { + "data" : "0xba51a6df0000000000000000000000000000000000000000000000000000000000000001", + "gasLimit" : "10000000", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + }, + + "multiOwnedChangeRequirementTo2" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : 1, + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "6295ee1b4f6dd65047762f924ecd367c17eabf8f" : { + "balance" : "0x64", + "code" : "0x7c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", + "nonce" : "0x00", + "storage" : { + "0x00" : "0x01", + "0x01" : "0x01", + "0x03" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "0x6e369836487c234b9e553ef3f787c2d8865520739d340c67b3d251a33986e58d" : "0x01" + } + }, + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + } + }, + "transaction" : { + "data" : "0xba51a6df0000000000000000000000000000000000000000000000000000000000000002", + "gasLimit" : "10000000", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + }, + + "multiOwnedIsOwnerTrue" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : 1, + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "6295ee1b4f6dd65047762f924ecd367c17eabf8f" : { + "balance" : "0x64", + "code" : "0x7c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", + "nonce" : "0x00", + "storage" : { + "0x00" : "0x01", + "0x01" : "0x01", + "0x03" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "0x6e369836487c234b9e553ef3f787c2d8865520739d340c67b3d251a33986e58d" : "0x01" + } + }, + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + } + }, + "transaction" : { + "data" : "0x2f54bf6e000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "gasLimit" : "10000000", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + }, + + "multiOwnedIsOwnerFalse" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : 1, + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "6295ee1b4f6dd65047762f924ecd367c17eabf8f" : { + "balance" : "0x64", + "code" : "0x7c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", + "nonce" : "0x00", + "storage" : { + "0x00" : "0x01", + "0x01" : "0x01", + "0x03" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "0x6e369836487c234b9e553ef3f787c2d8865520739d340c67b3d251a33986e58d" : "0x01" + } + }, + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + } + }, + "transaction" : { + "data" : "0x2f54bf6e000000000000000000000000aaaf5374fce5edbc8e2a8697c15331677e6ebaaa", + "gasLimit" : "10000000", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + }, } From a5b4b7ee20787638d007fb3209c49abb5d082f41 Mon Sep 17 00:00:00 2001 From: CJentzsch Date: Tue, 5 May 2015 10:13:41 +0200 Subject: [PATCH 09/47] add day limit tests --- .../StateTestsFiller/stWalletTestFiller.json | 547 ++++++++++++++++++ 1 file changed, 547 insertions(+) diff --git a/test/libethereum/StateTestsFiller/stWalletTestFiller.json b/test/libethereum/StateTestsFiller/stWalletTestFiller.json index a5181255b..a85e1165e 100644 --- a/test/libethereum/StateTestsFiller/stWalletTestFiller.json +++ b/test/libethereum/StateTestsFiller/stWalletTestFiller.json @@ -652,4 +652,551 @@ "value" : "100" } }, + + "dayLimitConstruction" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : "0xfffffffff", + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + } + }, + "transaction" : { + "data" : "0x60016000818155818055600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000163390811790915573ffffffffffffffffffffffffffffffffffffffff1681526101026020526040812091909155620151804204610106556107ca90819061007690396000f3007c01000000000000000000000000000000000000000000000000000000006000350463173825d981146100705780632f54bf6e146100e65780635c52c2f5146101175780637065cb4814610138578063b20d30a91461015c578063ba51a6df14610180578063f00d4b5d146101a457005b6101cd600435600060406000368082843782019150506040900360402061048b815b73ffffffffffffffffffffffffffffffffffffffff3316600090815261010260205260408120548182838385146105ca575b600086815261010360205260408120805490945090925082146105cf576105db565b6101d36004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6101dd60406000368082843782019150506040900360402061053681610092565b6101e360043560406000368082843782019150506040900360402061037b81610092565b6101e960043560406000368082843782019150506040900360402061052381610092565b6101ef60043560406000368082843782019150506040900360402061050f81610092565b6101f5600435602435600060406000368082843782019150506040900360402061029081610092565b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61029957610289565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146102d2575b6102d8836100ed565b5061028b565b6102ec575b8260028361010085106101fb57005b5061028b565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61038457610376565b61038d826100ed565b6103a3575b60015460fa9010156103a9576103d8565b50610378565b6103d6600060015b600154811015610617575b600154811080156106565750600281610100831061063957005b505b60015460fa9010156103ff575b60018054810190819055829060029061010081106102f257005b50610378565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61049457610485565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146104d4575b6000600283610100851061040557005b50610487565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6104da5761050b565b6101058290555b5050565b6105185761051f565b6000610104555b50565b61052c57610533565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a1825460019011156105f55782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b6105c1565b60008054845560018401555b506001820154600284900a90811660001461053f576105c0565b60008681526101036020526040812081815560019081019190915594506105c1565b5090565b5b6001805411801561069c5750600154600290610100811061068057005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b1561061b576001016103bc565b600154811080156106eb575060015460029061010081106106ce57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b1561066357600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01905561061c565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b801561071c5750600281610100831061070057005b015473ffffffffffffffffffffffffffffffffffffffff166000145b61072557610760565b600154600290610100811061076557005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6103b1565b015473ffffffffffffffffffffffffffffffffffffffff16600282610100841061078b57005b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905580610102600060028461010086106107365700", + "gasLimit" : "0x09b335", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "", + "value" : "100" + } + }, + + "dayLimitConstructionPartial" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : "0xfffffffff", + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + } + }, + "transaction" : { + "data" : "0x60016000818155818055600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000163390811790915573ffffffffffffffffffffffffffffffffffffffff1681526101026020526040812091909155620151804204610106556107ca90819061007690396000f3007c01000000000000000000000000000000000000000000000000000000006000350463173825d981146100705780632f54bf6e146100e65780635c52c2f5146101175780637065cb4814610138578063b20d30a91461015c578063ba51a6df14610180578063f00d4b5d146101a457005b6101cd600435600060406000368082843782019150506040900360402061048b815b73ffffffffffffffffffffffffffffffffffffffff3316600090815261010260205260408120548182838385146105ca575b600086815261010360205260408120805490945090925082146105cf576105db565b6101d36004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6101dd60406000368082843782019150506040900360402061053681610092565b6101e360043560406000368082843782019150506040900360402061037b81610092565b6101e960043560406000368082843782019150506040900360402061052381610092565b6101ef60043560406000368082843782019150506040900360402061050f81610092565b6101f5600435602435600060406000368082843782019150506040900360402061029081610092565b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61029957610289565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146102d2575b6102d8836100ed565b5061028b565b6102ec575b8260028361010085106101fb57005b5061028b565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61038457610376565b61038d826100ed565b6103a3575b60015460fa9010156103a9576103d8565b50610378565b6103d6600060015b600154811015610617575b600154811080156106565750600281610100831061063957005b505b60015460fa9010156103ff575b60018054810190819055829060029061010081106102f257005b50610378565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61049457610485565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146104d4575b6000600283610100851061040557005b50610487565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6104da5761050b565b6101058290555b5050565b6105185761051f565b6000610104555b50565b61052c57610533565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a1825460019011156105f55782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b6105c1565b60008054845560018401555b506001820154600284900a90811660001461053f576105c0565b60008681526101036020526040812081815560019081019190915594506105c1565b5090565b5b6001805411801561069c5750600154600290610100811061068057005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b1561061b576001016103bc565b600154811080156106eb575060015460029061010081106106ce57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b1561066357600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01905561061c565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b801561071c5750600281610100831061070057005b015473ffffffffffffffffffffffffffffffffffffffff166000145b61072557610760565b600154600290610100811061076557005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6103b1565b015473ffffffffffffffffffffffffffffffffffffffff16600282610100841061078b57005b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905580610102600060028461010086106107365700", + "gasLimit" : "0x09b334", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "", + "value" : "100" + } + }, + + "dayLimitConstructionOOG" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : "0xfffffffff", + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + } + }, + "transaction" : { + "data" : "0x60016000818155818055600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000163390811790915573ffffffffffffffffffffffffffffffffffffffff1681526101026020526040812091909155620151804204610106556107ca90819061007690396000f3007c01000000000000000000000000000000000000000000000000000000006000350463173825d981146100705780632f54bf6e146100e65780635c52c2f5146101175780637065cb4814610138578063b20d30a91461015c578063ba51a6df14610180578063f00d4b5d146101a457005b6101cd600435600060406000368082843782019150506040900360402061048b815b73ffffffffffffffffffffffffffffffffffffffff3316600090815261010260205260408120548182838385146105ca575b600086815261010360205260408120805490945090925082146105cf576105db565b6101d36004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6101dd60406000368082843782019150506040900360402061053681610092565b6101e360043560406000368082843782019150506040900360402061037b81610092565b6101e960043560406000368082843782019150506040900360402061052381610092565b6101ef60043560406000368082843782019150506040900360402061050f81610092565b6101f5600435602435600060406000368082843782019150506040900360402061029081610092565b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61029957610289565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146102d2575b6102d8836100ed565b5061028b565b6102ec575b8260028361010085106101fb57005b5061028b565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61038457610376565b61038d826100ed565b6103a3575b60015460fa9010156103a9576103d8565b50610378565b6103d6600060015b600154811015610617575b600154811080156106565750600281610100831061063957005b505b60015460fa9010156103ff575b60018054810190819055829060029061010081106102f257005b50610378565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61049457610485565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146104d4575b6000600283610100851061040557005b50610487565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6104da5761050b565b6101058290555b5050565b6105185761051f565b6000610104555b50565b61052c57610533565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a1825460019011156105f55782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b6105c1565b60008054845560018401555b506001820154600284900a90811660001461053f576105c0565b60008681526101036020526040812081815560019081019190915594506105c1565b5090565b5b6001805411801561069c5750600154600290610100811061068057005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b1561061b576001016103bc565b600154811080156106eb575060015460029061010081106106ce57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b1561066357600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01905561061c565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b801561071c5750600281610100831061070057005b015473ffffffffffffffffffffffffffffffffffffffff166000145b61072557610760565b600154600290610100811061076557005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6103b1565b015473ffffffffffffffffffffffffffffffffffffffff16600282610100841061078b57005b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905580610102600060028461010086106107365700", + "gasLimit" : "0x03d7fc", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "", + "value" : "100" + } + }, + + "dayLimitSetDailyLimit" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : "0xfffffffff", + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + }, + "ec0e71ad0a90ffe1909d27dac207f7680abba42d" : { + "balance" : "0x64", + "code" : "0x7c01000000000000000000000000000000000000000000000000000000006000350463173825d981146100705780632f54bf6e146100e65780635c52c2f5146101175780637065cb4814610138578063b20d30a91461015c578063ba51a6df14610180578063f00d4b5d146101a457005b6101cd600435600060406000368082843782019150506040900360402061048b815b73ffffffffffffffffffffffffffffffffffffffff3316600090815261010260205260408120548182838385146105ca575b600086815261010360205260408120805490945090925082146105cf576105db565b6101d36004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6101dd60406000368082843782019150506040900360402061053681610092565b6101e360043560406000368082843782019150506040900360402061037b81610092565b6101e960043560406000368082843782019150506040900360402061052381610092565b6101ef60043560406000368082843782019150506040900360402061050f81610092565b6101f5600435602435600060406000368082843782019150506040900360402061029081610092565b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61029957610289565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146102d2575b6102d8836100ed565b5061028b565b6102ec575b8260028361010085106101fb57005b5061028b565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61038457610376565b61038d826100ed565b6103a3575b60015460fa9010156103a9576103d8565b50610378565b6103d6600060015b600154811015610617575b600154811080156106565750600281610100831061063957005b505b60015460fa9010156103ff575b60018054810190819055829060029061010081106102f257005b50610378565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61049457610485565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146104d4575b6000600283610100851061040557005b50610487565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6104da5761050b565b6101058290555b5050565b6105185761051f565b6000610104555b50565b61052c57610533565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a1825460019011156105f55782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b6105c1565b60008054845560018401555b506001820154600284900a90811660001461053f576105c0565b60008681526101036020526040812081815560019081019190915594506105c1565b5090565b5b6001805411801561069c5750600154600290610100811061068057005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b1561061b576001016103bc565b600154811080156106eb575060015460029061010081106106ce57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b1561066357600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01905561061c565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b801561071c5750600281610100831061070057005b015473ffffffffffffffffffffffffffffffffffffffff166000145b61072557610760565b600154600290610100811061076557005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6103b1565b015473ffffffffffffffffffffffffffffffffffffffff16600282610100841061078b57005b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905580610102600060028461010086106107365700", + "nonce" : "0x00", + "storage" : { + "0x00" : "0x01", + "0x01" : "0x01", + "0x03" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "0x6e369836487c234b9e553ef3f787c2d8865520739d340c67b3d251a33986e58d" : "0x01" + } + } + }, + "transaction" : { + "data" : "0xb20d30a90000000000000000000000000000000000000000000000000000000000000002", + "gasLimit" : "0x09b335", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "ec0e71ad0a90ffe1909d27dac207f7680abba42d", + "value" : "100" + } + }, + + "dayLimitSetDailyLimitNoData" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : "0xfffffffff", + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + }, + "ec0e71ad0a90ffe1909d27dac207f7680abba42d" : { + "balance" : "0x64", + "code" : "0x7c01000000000000000000000000000000000000000000000000000000006000350463173825d981146100705780632f54bf6e146100e65780635c52c2f5146101175780637065cb4814610138578063b20d30a91461015c578063ba51a6df14610180578063f00d4b5d146101a457005b6101cd600435600060406000368082843782019150506040900360402061048b815b73ffffffffffffffffffffffffffffffffffffffff3316600090815261010260205260408120548182838385146105ca575b600086815261010360205260408120805490945090925082146105cf576105db565b6101d36004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6101dd60406000368082843782019150506040900360402061053681610092565b6101e360043560406000368082843782019150506040900360402061037b81610092565b6101e960043560406000368082843782019150506040900360402061052381610092565b6101ef60043560406000368082843782019150506040900360402061050f81610092565b6101f5600435602435600060406000368082843782019150506040900360402061029081610092565b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61029957610289565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146102d2575b6102d8836100ed565b5061028b565b6102ec575b8260028361010085106101fb57005b5061028b565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61038457610376565b61038d826100ed565b6103a3575b60015460fa9010156103a9576103d8565b50610378565b6103d6600060015b600154811015610617575b600154811080156106565750600281610100831061063957005b505b60015460fa9010156103ff575b60018054810190819055829060029061010081106102f257005b50610378565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61049457610485565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146104d4575b6000600283610100851061040557005b50610487565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6104da5761050b565b6101058290555b5050565b6105185761051f565b6000610104555b50565b61052c57610533565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a1825460019011156105f55782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b6105c1565b60008054845560018401555b506001820154600284900a90811660001461053f576105c0565b60008681526101036020526040812081815560019081019190915594506105c1565b5090565b5b6001805411801561069c5750600154600290610100811061068057005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b1561061b576001016103bc565b600154811080156106eb575060015460029061010081106106ce57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b1561066357600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01905561061c565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b801561071c5750600281610100831061070057005b015473ffffffffffffffffffffffffffffffffffffffff166000145b61072557610760565b600154600290610100811061076557005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6103b1565b015473ffffffffffffffffffffffffffffffffffffffff16600282610100841061078b57005b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905580610102600060028461010086106107365700", + "nonce" : "0x00", + "storage" : { + "0x00" : "0x01", + "0x01" : "0x01", + "0x03" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "0x6e369836487c234b9e553ef3f787c2d8865520739d340c67b3d251a33986e58d" : "0x01" + } + } + }, + "transaction" : { + "data" : "0xb20d30a9", + "gasLimit" : "0x09b335", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "ec0e71ad0a90ffe1909d27dac207f7680abba42d", + "value" : "100" + } + }, + + "dayLimitSetDailyLimitNoData" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : "0xfffffffff", + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + }, + "ec0e71ad0a90ffe1909d27dac207f7680abba42d" : { + "balance" : "0x64", + "code" : "0x7c01000000000000000000000000000000000000000000000000000000006000350463173825d981146100705780632f54bf6e146100e65780635c52c2f5146101175780637065cb4814610138578063b20d30a91461015c578063ba51a6df14610180578063f00d4b5d146101a457005b6101cd600435600060406000368082843782019150506040900360402061048b815b73ffffffffffffffffffffffffffffffffffffffff3316600090815261010260205260408120548182838385146105ca575b600086815261010360205260408120805490945090925082146105cf576105db565b6101d36004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6101dd60406000368082843782019150506040900360402061053681610092565b6101e360043560406000368082843782019150506040900360402061037b81610092565b6101e960043560406000368082843782019150506040900360402061052381610092565b6101ef60043560406000368082843782019150506040900360402061050f81610092565b6101f5600435602435600060406000368082843782019150506040900360402061029081610092565b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61029957610289565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146102d2575b6102d8836100ed565b5061028b565b6102ec575b8260028361010085106101fb57005b5061028b565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61038457610376565b61038d826100ed565b6103a3575b60015460fa9010156103a9576103d8565b50610378565b6103d6600060015b600154811015610617575b600154811080156106565750600281610100831061063957005b505b60015460fa9010156103ff575b60018054810190819055829060029061010081106102f257005b50610378565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61049457610485565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146104d4575b6000600283610100851061040557005b50610487565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6104da5761050b565b6101058290555b5050565b6105185761051f565b6000610104555b50565b61052c57610533565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a1825460019011156105f55782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b6105c1565b60008054845560018401555b506001820154600284900a90811660001461053f576105c0565b60008681526101036020526040812081815560019081019190915594506105c1565b5090565b5b6001805411801561069c5750600154600290610100811061068057005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b1561061b576001016103bc565b600154811080156106eb575060015460029061010081106106ce57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b1561066357600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01905561061c565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b801561071c5750600281610100831061070057005b015473ffffffffffffffffffffffffffffffffffffffff166000145b61072557610760565b600154600290610100811061076557005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6103b1565b015473ffffffffffffffffffffffffffffffffffffffff16600282610100841061078b57005b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905580610102600060028461010086106107365700", + "nonce" : "0x00", + "storage" : { + "0x00" : "0x01", + "0x01" : "0x01", + "0x03" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "0x6e369836487c234b9e553ef3f787c2d8865520739d340c67b3d251a33986e58d" : "0x01" + } + } + }, + "transaction" : { + "data" : "0x5c52c2f5", + "gasLimit" : "0x09b335", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "ec0e71ad0a90ffe1909d27dac207f7680abba42d", + "value" : "100" + } + }, + + "walletConstruction" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : "0xfffffffff", + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + } + }, + "transaction" : { + "data" : "0x60016000818155818055600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000163390811790915573ffffffffffffffffffffffffffffffffffffffff168152610102602052604080822092909255620151804204610106557f9adeddf84386b336eb7b3e18e7a6099be08fd81ea5d5142f4d2b630f8d20cf0191a1610d4f806100996000396000f3007c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "", + "value" : "100" + } + }, + + "walletConstructionPartial" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : "0xfffffffff", + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + } + }, + "transaction" : { + "data" : "0x60016000818155818055600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000163390811790915573ffffffffffffffffffffffffffffffffffffffff168152610102602052604080822092909255620151804204610106557f9adeddf84386b336eb7b3e18e7a6099be08fd81ea5d5142f4d2b630f8d20cf0191a1610d4f806100996000396000f3007c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", + "gasLimit" : "0x0faf5c", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "", + "value" : "100" + } + }, + + "walletConstructionOOG" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : "0xfffffffff", + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + } + }, + "transaction" : { + "data" : "0x60016000818155818055600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000163390811790915573ffffffffffffffffffffffffffffffffffffffff168152610102602052604080822092909255620151804204610106557f9adeddf84386b336eb7b3e18e7a6099be08fd81ea5d5142f4d2b630f8d20cf0191a1610d4f806100996000396000f3007c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", + "gasLimit" : "0x0549a4", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "", + "value" : "100" + } + }, + + "walletKill" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : "0xfffffffff", + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + }, + "ec0e71ad0a90ffe1909d27dac207f7680abba42d" : { + "balance" : "0x64", + "code" : "0x7c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", + "nonce" : "0x00", + "storage" : { + "0x00" : "0x01", + "0x01" : "0x01", + "0x0106" : "0x0c22e4", + "0x03" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "0x6e369836487c234b9e553ef3f787c2d8865520739d340c67b3d251a33986e58d" : "0x01" + } + } + }, + "transaction" : { + "data" : "0xcbf0b0c0000000000000000000000000aaaf5374fce5edbc8e2a8697c15331677e6ebaaa", + "gasLimit" : "10000000", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "ec0e71ad0a90ffe1909d27dac207f7680abba42d", + "value" : "100" + } + }, + + "walletKillNotByOwner" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : "0xfffffffff", + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + }, + "3fb1cd2cd96c6d5c0b5eb3322d807b34482481d4" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + }, + "ec0e71ad0a90ffe1909d27dac207f7680abba42d" : { + "balance" : "0x64", + "code" : "0x7c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", + "nonce" : "0x00", + "storage" : { + "0x00" : "0x01", + "0x01" : "0x01", + "0x0106" : "0x0c22e4", + "0x03" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "0x6e369836487c234b9e553ef3f787c2d8865520739d340c67b3d251a33986e58d" : "0x01" + } + } + }, + "transaction" : { + "data" : "0xcbf0b0c0000000000000000000000000aaaf5374fce5edbc8e2a8697c15331677e6ebaaa", + "gasLimit" : "10000000", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "a95defe70ebea7804f9c3be42d20d24375e2a92b9d9666b832069c5f3cd423dd", + "to" : "ec0e71ad0a90ffe1909d27dac207f7680abba42d", + "value" : "100" + } + }, + + "walletKillToWallet" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : "0xfffffffff", + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + }, + "ec0e71ad0a90ffe1909d27dac207f7680abba42d" : { + "balance" : "0x64", + "code" : "0x7c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", + "nonce" : "0x00", + "storage" : { + "0x00" : "0x01", + "0x01" : "0x01", + "0x0106" : "0x0c22e4", + "0x03" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "0x6e369836487c234b9e553ef3f787c2d8865520739d340c67b3d251a33986e58d" : "0x01" + } + } + }, + "transaction" : { + "data" : "0xcbf0b0c0000000000000000000000000ec0e71ad0a90ffe1909d27dac207f7680abba42d", + "gasLimit" : "10000000", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "ec0e71ad0a90ffe1909d27dac207f7680abba42d", + "value" : "100" + } + }, + + "walletDefault" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : "0xfffffffff", + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + }, + "ec0e71ad0a90ffe1909d27dac207f7680abba42d" : { + "balance" : "0x64", + "code" : "0x7c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", + "nonce" : "0x00", + "storage" : { + "0x00" : "0x01", + "0x01" : "0x01", + "0x0106" : "0x0c22e4", + "0x03" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "0x6e369836487c234b9e553ef3f787c2d8865520739d340c67b3d251a33986e58d" : "0x01" + } + } + }, + "transaction" : { + "data" : "", + "gasLimit" : "10000000", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "ec0e71ad0a90ffe1909d27dac207f7680abba42d", + "value" : "100" + } + }, + + "walletDefaultWithOutValue" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : "0xfffffffff", + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + }, + "ec0e71ad0a90ffe1909d27dac207f7680abba42d" : { + "balance" : "0x64", + "code" : "0x7c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", + "nonce" : "0x00", + "storage" : { + "0x00" : "0x01", + "0x01" : "0x01", + "0x0106" : "0x0c22e4", + "0x03" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "0x6e369836487c234b9e553ef3f787c2d8865520739d340c67b3d251a33986e58d" : "0x01" + } + } + }, + "transaction" : { + "data" : "", + "gasLimit" : "10000000", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "ec0e71ad0a90ffe1909d27dac207f7680abba42d", + "value" : "0" + } + }, + + "walletExecute" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : "0xfffffffff", + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + }, + "ec0e71ad0a90ffe1909d27dac207f7680abba42d" : { + "balance" : "0x64", + "code" : "0x7c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", + "nonce" : "0x00", + "storage" : { + "0x00" : "0x01", + "0x01" : "0x01", + "0x0106" : "0x0c22e4", + "0x03" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "0x6e369836487c234b9e553ef3f787c2d8865520739d340c67b3d251a33986e58d" : "0x01" + } + } + }, + "transaction" : { + "data" : "0xb61d27f6", + "gasLimit" : "10000000", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "ec0e71ad0a90ffe1909d27dac207f7680abba42d", + "value" : "0" + } + }, } From dcf070fa7deb2763f40b0e3775466e025449efbc Mon Sep 17 00:00:00 2001 From: CJentzsch Date: Tue, 5 May 2015 11:01:06 +0200 Subject: [PATCH 10/47] finish wallet state tests --- .../StateTestsFiller/stWalletTestFiller.json | 93 ++++++++++++++++++- 1 file changed, 90 insertions(+), 3 deletions(-) diff --git a/test/libethereum/StateTestsFiller/stWalletTestFiller.json b/test/libethereum/StateTestsFiller/stWalletTestFiller.json index a85e1165e..45bac5bc2 100644 --- a/test/libethereum/StateTestsFiller/stWalletTestFiller.json +++ b/test/libethereum/StateTestsFiller/stWalletTestFiller.json @@ -820,7 +820,7 @@ } }, - "dayLimitSetDailyLimitNoData" : { + "dayLimitResetSpentToday" : { "env" : { "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", "currentDifficulty" : "256", @@ -844,6 +844,8 @@ "storage" : { "0x00" : "0x01", "0x01" : "0x01", + "0x0104" : "0x09", + "0x0105" : "0xff", "0x03" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", "0x6e369836487c234b9e553ef3f787c2d8865520739d340c67b3d251a33986e58d" : "0x01" } @@ -1159,7 +1161,91 @@ } }, - "walletExecute" : { + "walletExecuteOverDailyLimit" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : "0xfffffffff", + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + }, + "ec0e71ad0a90ffe1909d27dac207f7680abba42d" : { + "balance" : "0x64", + "code" : "0x7c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", + "nonce" : "0x00", + "storage" : { + "0x00" : "0x01", + "0x01" : "0x01", + "0x0106" : "0x0c22e4", + "0x03" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "0x6e369836487c234b9e553ef3f787c2d8865520739d340c67b3d251a33986e58d" : "0x01" + } + } + }, + "transaction" : { + "data" : "0xb61d27f6000000000000000000000000aaaf5374fce5edbc8e2a8697c15331677e6ebaaa0000000000000000000000000000000000000000000000000000000000000009", + "gasLimit" : "10000000", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "ec0e71ad0a90ffe1909d27dac207f7680abba42d", + "value" : "0" + } + }, + + "walletConfirm" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "10000000", + "currentNumber" : "0", + "currentTimestamp" : "0xfffffffff", + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + }, + "ec0e71ad0a90ffe1909d27dac207f7680abba42d" : { + "balance" : "0x64", + "code" : "0x7c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", + "nonce" : "0x00", + "storage" : { + "0x00" : "0x01", + "0x01" : "0x01", + "0x0106" : "0x0c22e4", + "0x03" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "0x6e369836487c234b9e553ef3f787c2d8865520739d340c67b3d251a33986e58d" : "0x01", + "0x8b27e3687c602f639012647402e6fb2e9726bba6bdabddb832cdf2462bae7928" : "0xaaaf5374fce5edbc8e2a8697c15331677e6ebaaa", + "0x8b27e3687c602f639012647402e6fb2e9726bba6bdabddb832cdf2462bae7929" : "0x09" + } + } + }, + "transaction" : { + "data" : "0x797af6275fdaa2db933d2913eb85133894a8af175a47872028d01c6369559a15eb76660b", + "gasLimit" : "10000000", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "ec0e71ad0a90ffe1909d27dac207f7680abba42d", + "value" : "0" + } + }, + + "walletExecuteUnderDailyLimit" : { "env" : { "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", "currentDifficulty" : "256", @@ -1183,6 +1269,7 @@ "storage" : { "0x00" : "0x01", "0x01" : "0x01", + "0x0105" : "0xff", "0x0106" : "0x0c22e4", "0x03" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", "0x6e369836487c234b9e553ef3f787c2d8865520739d340c67b3d251a33986e58d" : "0x01" @@ -1190,7 +1277,7 @@ } }, "transaction" : { - "data" : "0xb61d27f6", + "data" : "0xb61d27f6000000000000000000000000aaaf5374fce5edbc8e2a8697c15331677e6ebaaa0000000000000000000000000000000000000000000000000000000000000009", "gasLimit" : "10000000", "gasPrice" : "1", "nonce" : "1", From 92b981cacf3022a3236c6a65f6bbc5d50cb4e8f8 Mon Sep 17 00:00:00 2001 From: winsvega Date: Tue, 5 May 2015 14:47:36 +0300 Subject: [PATCH 11/47] Solidity: Cryptographic funcs fix --- test/libethereum/StateTestsFiller/stSolidityTestFiller.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/libethereum/StateTestsFiller/stSolidityTestFiller.json b/test/libethereum/StateTestsFiller/stSolidityTestFiller.json index c74ced9de..8c3b082dc 100644 --- a/test/libethereum/StateTestsFiller/stSolidityTestFiller.json +++ b/test/libethereum/StateTestsFiller/stSolidityTestFiller.json @@ -128,7 +128,7 @@ "//" : " //ecrecover ", "//" : " } ", "//" : "} ", - "code" : "0x7c01000000000000000000000000000000000000000000000000000000006000350463c04062268114610039578063e0a9fd281461004b57005b61004161005d565b8060005260206000f35b61005361009d565b8060005260206000f35b600061006761009d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016919091179081905560ff16905090565b7f74657374737472696e67000000000000000000000000000000000000000000006000908152600190600a90207f43c4b4524adb81e4e9a5c4648a98e9d320e3908ac5b6c889144b642cd08ae16d14156100f6576100fe565b5060006101eb565b60026020600060007f74657374737472696e67000000000000000000000000000000000000000000008152600a01600060008560325a03f161013c57005b506000517f3c8727e019a42b444667a587b6001251becadabbb36bfed8087a92c18882d111141561016c57610174565b5060006101eb565b60036020600060007f74657374737472696e67000000000000000000000000000000000000000000008152600a01600060008560325a03f16101b257005b506000517fcd566972b5e50104011a92b59fa8e0b1234851ae00000000000000000000000014156101e2576101ea565b5060006101eb565b5b9056", + "code" : "0x6000357c010000000000000000000000000000000000000000000000000000000090048063c04062261461003a578063e0a9fd281461004c57005b61004261005e565b8060005260206000f35b610054610099565b8060005260206000f35b6000610068610099565b600060006101000a81548160ff02191690830217905550600060009054906101000a900460ff169050610096565b90565b60006001905080507f43c4b4524adb81e4e9a5c4648a98e9d320e3908ac5b6c889144b642cd08ae16d60010260407f74657374737472696e67000000000000000000000000000000000000000000008152600a016040900360402014156100ff57610108565b6000905061020e565b7f3c8727e019a42b444667a587b6001251becadabbb36bfed8087a92c18882d11160010260026020600060007f74657374737472696e67000000000000000000000000000000000000000000008152600a0160006000856161da5a03f161016b57005b50600051141561017a57610183565b6000905061020e565b73cd566972b5e50104011a92b59fa8e0b1234851ae6c010000000000000000000000000260036020600060007f74657374737472696e67000000000000000000000000000000000000000000008152600a0160006000856161da5a03f16101e657005b506000516c010000000000000000000000000214156102045761020d565b6000905061020e565b5b9056", "nonce" : "0", "storage" : { } From 16c6d48b58b220ae1f6fc7691c61587ec1c91537 Mon Sep 17 00:00:00 2001 From: CJentzsch Date: Tue, 5 May 2015 15:31:43 +0200 Subject: [PATCH 12/47] add bc wallet test --- .../BlockTestsFiller/bcWalletTestFiller.json | 4060 +++++++++++++++++ .../StateTestsFiller/stWalletTestFiller.json | 2 +- test/libethereum/blockchain.cpp | 5 + 3 files changed, 4066 insertions(+), 1 deletion(-) create mode 100644 test/libethereum/BlockTestsFiller/bcWalletTestFiller.json diff --git a/test/libethereum/BlockTestsFiller/bcWalletTestFiller.json b/test/libethereum/BlockTestsFiller/bcWalletTestFiller.json new file mode 100644 index 000000000..29ca32134 --- /dev/null +++ b/test/libethereum/BlockTestsFiller/bcWalletTestFiller.json @@ -0,0 +1,4060 @@ +{ + "wallet2outOf3txs" : { + "genesisBlockHeader" : { + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "0x8888f1f195afa192cfee860698584c030f4c9db1", + "difficulty" : "131072", + "extraData" : "0x42", + "gasLimit" : "3141592", + "gasUsed" : "0", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "nonce" : "0x0102030405060708", + "number" : "0", + "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "stateRoot" : "0xf99eb1626cfa6db435c0836235942d7ccaa935f1ae247d3f1c21e495685f903a", + "timestamp" : "0x54c98c81", + "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + }, + "expect" : { + "aaaf5374fce5edbc8e2a8697c15331677e6ebaaa" : { + "balance" : "0x09" + } + }, + "pre" : { + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "10000000000", + "nonce" : "0", + "code" : "", + "storage": {} + }, + "3fb1cd2cd96c6d5c0b5eb3322d807b34482481d4" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0", + "storage" : { + } + } + }, + "blocks" : [ + { + "transactions" : [ + { + "data" : "0x60016000818155818055600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000163390811790915573ffffffffffffffffffffffffffffffffffffffff168152610102602052604080822092909255620151804204610106557f9adeddf84386b336eb7b3e18e7a6099be08fd81ea5d5142f4d2b630f8d20cf0191a1610d4f806100996000396000f3007c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "0", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000aaaf5374fce5edbc8e2a8697c15331677e6ebaaa", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb480000000000000000000000003fb1cd2cd96c6d5c0b5eb3322d807b34482481d4", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "2", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0xba51a6df0000000000000000000000000000000000000000000000000000000000000002", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "3", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0xb61d27f6000000000000000000000000aaaf5374fce5edbc8e2a8697c15331677e6ebaaa0000000000000000000000000000000000000000000000000000000000000009", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "4", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x797af6275fdaa2db933d2913eb85133894a8af175a47872028d01c6369559a15eb76660b", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "0", + "secretKey" : "a95defe70ebea7804f9c3be42d20d24375e2a92b9d9666b832069c5f3cd423dd", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + } + ] + }, + + "walletReorganizeOwners" : { + "genesisBlockHeader" : { + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "0x8888f1f195afa192cfee860698584c030f4c9db1", + "difficulty" : "131072", + "extraData" : "0x42", + "gasLimit" : "3141592", + "gasUsed" : "0", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "nonce" : "0x0102030405060708", + "number" : "0", + "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "stateRoot" : "0xf99eb1626cfa6db435c0836235942d7ccaa935f1ae247d3f1c21e495685f903a", + "timestamp" : "0x54c98c81", + "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + }, + "expect" : { + "095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "balance" : "10" + } + }, + "pre" : { + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "10000000000", + "nonce" : "0", + "code" : "", + "storage": {} + }, + "3fb1cd2cd96c6d5c0b5eb3322d807b34482481d4" : { + "balance" : "0x0de0b6b3a75ef08f", + "code" : "0x", + "nonce" : "0", + "storage" : { + } + } + }, + "blocks" : [ + { + "transactions" : [ + { + "data" : "0x60016000818155818055600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000163390811790915573ffffffffffffffffffffffffffffffffffffffff168152610102602052604080822092909255620151804204610106557f9adeddf84386b336eb7b3e18e7a6099be08fd81ea5d5142f4d2b630f8d20cf0191a1610d4f806100996000396000f3007c01000000000000000000000000000000000000000000000000000000006000350463173825d9811461009f5780632f54bf6e146101155780635c52c2f5146101465780637065cb4814610167578063797af6271461018b578063b20d30a91461019e578063b61d27f6146101c2578063ba51a6df146101ec578063cbf0b0c014610210578063f00d4b5d146102345761025d60003411610263576102a8565b6102aa6004356000604060003680828437820191505060409003604020610582815b73ffffffffffffffffffffffffffffffffffffffff331660009081526101026020526040812054818283838514610af6575b60008681526101036020526040812080549094509092508214610afb57610b07565b6102b06004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b6102ba60406000368082843782019150506040900360402061062d816100c1565b6102c0600435604060003680828437820191505060409003604020610472816100c1565b6102c66004355b6000816108c7816100c1565b6102d060043560406000368082843782019150506040900360402061061a816100c1565b6102d6600435602435606460443560006106ce84600061010660005054610d085b62015180420490565b6102e0600435604060003680828437820191505060409003604020610606816100c1565b6102e6600435604060003680828437820191505060409003604020610636816100c1565b6102ec6004356024356000604060003680828437820191505060409003604020610387816100c1565b60006000f35b73ffffffffffffffffffffffffffffffffffffffff33166040908152346060527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9080a15b565b60006000f35b8060005260206000f35b60006000f35b60006000f35b8060005260206000f35b60006000f35b8060005260206000f35b60006000f35b60006000f35b60006000f35b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b61039057610380565b73ffffffffffffffffffffffffffffffffffffffff841660009081526101026020526040812054925082146103c9575b6103cf8361011c565b50610382565b6103e3575b8260028361010085106102f257005b50610382565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b61047b5761046d565b6104848261011c565b61049a575b60015460fa9010156104a0576104cf565b5061046f565b6104cd600060015b600154811015610b43575b60015481108015610b8257506002816101008310610b6557005b505b60015460fa9010156104f6575b60018054810190819055829060029061010081106103e957005b5061046f565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909117905573ffffffffffffffffffffffffffffffffffffffff8316600081815261010260209081526040808320929092559181527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9190a15b505b5050565b61058b5761057c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526101026020526040812054925082146105cb575b600060028361010085106104fc57005b5061057e565b600082905560408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15b5050565b6105d157610602565b6101058290555b5050565b61060f57610616565b6000610104555b50565b6106235761062a565b61063f575b5050565b8173ffffffffffffffffffffffffffffffffffffffff16ff5b505050604081905273ffffffffffffffffffffffffffffffffffffffff3381166060526080859052851660a05260c08290527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32838360e08686878984378201915050915050604090036040a15b5b949350505050565b610711575b6040600036808284379091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160402091506107ba905081610192565b73ffffffffffffffffffffffffffffffffffffffff3381166040526060859052851660805260a08290527f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004838360c08686878984378201915050915050604090036040a18473ffffffffffffffffffffffffffffffffffffffff16846000600060008787808284378201915050600084866185025a03f16107ae57005b50600091506106c69050565b1580156107ea57506000818152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff16145b6107f3576106c5565b600081815261010760209081526040822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001688178155600181018790556002018054858255818452928290209092601f0191909104810190849086861561087a579182015b8281111561087957823582600050559160200191906001019061085b565b5b5090505b80821115610658576000815560010161087e565b6000838152610107602052604081205473ffffffffffffffffffffffffffffffffffffffff1614156108d0575b5b505b919050565b610892576108c0565b600083815261010760205260408120805460018201546002909201805473ffffffffffffffffffffffffffffffffffffffff909216939182918391801561093357820191906000526020600020905b81548152906001019060200180831161091f575b5050600084866185025a03f161094557005b505073ffffffffffffffffffffffffffffffffffffffff3381166040908152606085905260008581526101076020529081206001810154608052805490921660a0526002909101805460c08190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a929060e090839080156109e357820191906000526020600020905b8154815290600101906020018083116109cf575b5050915050604090036040a1600083815261010760209081526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101839055600281018054848255908452828420919392601f909101048101905b80821115610a5d5760008155600101610a49565b5050505060019150506108c2565b73ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115610b215782547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b5b50505050919050565b610aed565b60008054845560018401555b506001820154600284900a908116600014610a6b57610aec565b6000868152610103602052604081208181556001908101919091559450610aed565b5090565b5b60018054118015610bc857506001546002906101008110610bac57005b015473ffffffffffffffffffffffffffffffffffffffff16600014155b15610b47576001016104b3565b60015481108015610c1757506001546002906101008110610bfa57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b15610b8f57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610b48565b015473ffffffffffffffffffffffffffffffffffffffff16600014155b8015610c4857506002816101008310610c2c57005b015473ffffffffffffffffffffffffffffffffffffffff166000145b610c5157610c8c565b6001546002906101008110610c9157005b015473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020555b6104a8565b015473ffffffffffffffffffffffffffffffffffffffff166002826101008410610cb757005b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190911790558061010260006002846101008610610c6257005b5061010480548201905560015b919050565b11610d1257610d25565b600061010455610d206101e3565b610106555b6101045482810110158015610d4257506101055461010454830111155b610cf6575b506000610d0356", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "0", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb480000000000000000000000001aaaa1", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "1", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb480000000000000000000000002aaaa2", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "2", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb480000000000000000000000003aaaa3", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "3", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb480000000000000000000000004aaaa4", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "4", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb480000000000000000000000005aaaa5", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "5", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb480000000000000000000000006aaaa6", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "6", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb480000000000000000000000007aaaa7", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "7", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb480000000000000000000000008aaaa8", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "8", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb480000000000000000000000009aaaa9", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "9", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000010aaaa10", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "10", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000011aaaa11", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "11", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000012aaaa12", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "12", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000013aaaa13", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "13", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000014aaaa14", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "14", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000015aaaa15", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "15", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000016aaaa16", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "16", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000017aaaa17", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "17", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000018aaaa18", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "18", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000019aaaa19", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "19", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000020aaaa20", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "20", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000021aaaa21", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "21", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000022aaaa22", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "22", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000023aaaa23", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "23", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000024aaaa24", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "24", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000025aaaa25", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "25", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000026aaaa26", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "26", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000027aaaa27", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "27", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000028aaaa28", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "28", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000029aaaa29", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "29", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000030aaaa30", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "30", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000031aaaa31", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "31", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000032aaaa32", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "32", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000033aaaa33", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "33", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000034aaaa34", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "34", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000035aaaa35", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "35", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000036aaaa36", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "36", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000037aaaa37", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "37", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000038aaaa38", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "38", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000039aaaa39", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "39", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000040aaaa40", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "40", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000041aaaa41", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "41", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000042aaaa42", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "42", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000043aaaa43", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "43", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000044aaaa44", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "44", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000045aaaa45", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "45", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000046aaaa46", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "46", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000047aaaa47", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "47", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000048aaaa48", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "48", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000049aaaa49", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "49", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000050aaaa50", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "50", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000051aaaa51", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "51", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000052aaaa52", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "52", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000053aaaa53", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "53", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000054aaaa54", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "54", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000055aaaa55", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "55", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000056aaaa56", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "56", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000057aaaa57", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "57", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000058aaaa58", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "58", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000059aaaa59", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "59", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000060aaaa60", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "60", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000061aaaa61", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "61", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000062aaaa62", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "62", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000063aaaa63", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "63", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000064aaaa64", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "64", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000065aaaa65", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "65", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000066aaaa66", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "66", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000067aaaa67", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "67", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000068aaaa68", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "68", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000069aaaa69", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "69", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000070aaaa70", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "70", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000071aaaa71", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "71", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000072aaaa72", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "72", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000073aaaa73", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "73", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000074aaaa74", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "74", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000075aaaa75", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "75", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000076aaaa76", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "76", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000077aaaa77", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "77", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000078aaaa78", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "78", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000079aaaa79", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "79", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000080aaaa80", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "80", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000081aaaa81", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "81", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000082aaaa82", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "82", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000083aaaa83", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "83", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000084aaaa84", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "84", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000085aaaa85", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "85", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000086aaaa86", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "86", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000087aaaa87", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "87", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000088aaaa88", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "88", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000089aaaa89", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "89", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000090aaaa90", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "90", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000091aaaa91", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "91", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000092aaaa92", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "92", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000093aaaa93", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "93", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000094aaaa94", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "94", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000095aaaa95", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "95", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000096aaaa96", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "96", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000097aaaa97", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "97", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000098aaaa98", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "98", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb4800000000000000000000000099aaaa99", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "99", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000100aaaa100", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "100", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000101aaaa101", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "101", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000102aaaa102", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "102", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000103aaaa103", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "103", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000104aaaa104", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "104", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000105aaaa105", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "105", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000106aaaa106", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "106", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000107aaaa107", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "107", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000108aaaa108", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "108", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000109aaaa109", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "109", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000110aaaa110", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "110", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000111aaaa111", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "111", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000112aaaa112", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "112", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000113aaaa113", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "113", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000114aaaa114", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "114", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000115aaaa115", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "115", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000116aaaa116", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "116", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000117aaaa117", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "117", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000118aaaa118", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "118", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000119aaaa119", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "119", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000120aaaa120", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "120", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000121aaaa121", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "121", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000122aaaa122", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "122", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000123aaaa123", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "123", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000124aaaa124", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "124", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000125aaaa125", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "125", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000126aaaa126", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "126", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000127aaaa127", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "127", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000128aaaa128", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "128", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000129aaaa129", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "129", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000130aaaa130", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "130", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000131aaaa131", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "131", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000132aaaa132", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "132", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000133aaaa133", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "133", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000134aaaa134", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "134", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000135aaaa135", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "135", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000136aaaa136", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "136", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000137aaaa137", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "137", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000138aaaa138", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "138", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000139aaaa139", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "139", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000140aaaa140", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "140", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000141aaaa141", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "141", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000142aaaa142", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "142", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000143aaaa143", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "143", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000144aaaa144", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "144", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000145aaaa145", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "145", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000146aaaa146", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "146", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000147aaaa147", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "147", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000148aaaa148", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "148", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000149aaaa149", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "149", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000150aaaa150", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "150", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000151aaaa151", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "151", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000152aaaa152", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "152", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000153aaaa153", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "153", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000154aaaa154", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "154", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000155aaaa155", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "155", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000156aaaa156", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "156", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000157aaaa157", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "157", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000158aaaa158", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "158", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000159aaaa159", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "159", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000160aaaa160", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "160", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000161aaaa161", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "161", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000162aaaa162", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "162", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000163aaaa163", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "163", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000164aaaa164", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "164", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000165aaaa165", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "165", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000166aaaa166", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "166", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000167aaaa167", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "167", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000168aaaa168", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "168", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000169aaaa169", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "169", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000170aaaa170", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "170", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000171aaaa171", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "171", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000172aaaa172", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "172", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000173aaaa173", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "173", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000174aaaa174", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "174", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000175aaaa175", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "175", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000176aaaa176", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "176", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000177aaaa177", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "177", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000178aaaa178", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "178", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000179aaaa179", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "179", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000180aaaa180", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "180", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000181aaaa181", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "181", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000182aaaa182", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "182", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000183aaaa183", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "183", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000184aaaa184", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "184", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000185aaaa185", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "185", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000186aaaa186", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "186", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000187aaaa187", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "187", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000188aaaa188", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "188", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000189aaaa189", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "189", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000190aaaa190", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "190", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000191aaaa191", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "191", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000192aaaa192", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "192", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000193aaaa193", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "193", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000194aaaa194", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "194", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000195aaaa195", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "195", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000196aaaa196", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "196", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000197aaaa197", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "197", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000198aaaa198", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "198", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000199aaaa199", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "199", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000200aaaa200", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "200", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000201aaaa201", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "201", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000202aaaa202", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "202", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000203aaaa203", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "203", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000204aaaa204", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "204", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000205aaaa205", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "205", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000206aaaa206", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "206", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000207aaaa207", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "207", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000208aaaa208", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "208", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000209aaaa209", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "209", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000210aaaa210", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "210", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000211aaaa211", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "211", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000212aaaa212", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "212", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000213aaaa213", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "213", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000214aaaa214", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "214", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000215aaaa215", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "215", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000216aaaa216", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "216", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000217aaaa217", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "217", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000218aaaa218", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "218", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000219aaaa219", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "219", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000220aaaa220", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "220", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000221aaaa221", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "221", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000222aaaa222", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "222", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000223aaaa223", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "223", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000224aaaa224", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "224", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000225aaaa225", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "225", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000226aaaa226", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "226", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000227aaaa227", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "227", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000228aaaa228", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "228", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000229aaaa229", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "229", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000230aaaa230", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "230", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000231aaaa231", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "231", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000232aaaa232", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "232", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000233aaaa233", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "233", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000234aaaa234", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "234", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000235aaaa235", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "235", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000236aaaa236", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "236", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000237aaaa237", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "237", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000238aaaa238", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "238", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000239aaaa239", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "239", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000240aaaa240", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "240", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000241aaaa241", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "241", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000242aaaa242", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "242", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000243aaaa243", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "243", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000244aaaa244", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "244", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000245aaaa245", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "245", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000246aaaa246", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "246", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000247aaaa247", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "247", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000248aaaa248", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "248", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000249aaaa249", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "249", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000250aaaa250", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "250", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000251aaaa251", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "251", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000252aaaa252", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "252", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000253aaaa253", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "253", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000254aaaa254", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "254", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000255aaaa255", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "255", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000256aaaa256", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "256", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x173825d9000000000000000000000000156aaaa156", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "257", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + }, + { + "transactions" : [ + { + "data" : "0x7065cb48000000000000000000000000256aaaa256", + "gasLimit" : "0x0faf5d", + "gasPrice" : "1", + "nonce" : "258", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "value" : "100" + } + ], + "uncleHeaders" : [ + ] + } + ] + } +} diff --git a/test/libethereum/StateTestsFiller/stWalletTestFiller.json b/test/libethereum/StateTestsFiller/stWalletTestFiller.json index 45bac5bc2..f651c40e6 100644 --- a/test/libethereum/StateTestsFiller/stWalletTestFiller.json +++ b/test/libethereum/StateTestsFiller/stWalletTestFiller.json @@ -1285,5 +1285,5 @@ "to" : "ec0e71ad0a90ffe1909d27dac207f7680abba42d", "value" : "0" } - }, + } } diff --git a/test/libethereum/blockchain.cpp b/test/libethereum/blockchain.cpp index 45aa73d86..954e65c8a 100644 --- a/test/libethereum/blockchain.cpp +++ b/test/libethereum/blockchain.cpp @@ -704,6 +704,11 @@ BOOST_AUTO_TEST_CASE(bcGasPricerTest) dev::test::executeTests("bcGasPricerTest", "/BlockTests",dev::test::getFolder(__FILE__) + "/BlockTestsFiller", dev::test::doBlockchainTests); } +BOOST_AUTO_TEST_CASE(bcWalletTest) +{ + dev::test::executeTests("bcWalletTest", "/BlockTests",dev::test::getFolder(__FILE__) + "/BlockTestsFiller", dev::test::doBlockchainTests); +} + BOOST_AUTO_TEST_CASE(userDefinedFile) { dev::test::userDefinedTest("--singletest", dev::test::doBlockchainTests); From 0a84827669c12d655d958073889957b95a156783 Mon Sep 17 00:00:00 2001 From: winsvega Date: Tue, 5 May 2015 16:46:01 +0300 Subject: [PATCH 13/47] Specifing concrete test when filling testsuite --- test/TestHelper.cpp | 6 ++++++ test/TestHelper.h | 2 ++ test/libethereum/state.cpp | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/test/TestHelper.cpp b/test/TestHelper.cpp index eecf6f80d..9e997c495 100644 --- a/test/TestHelper.cpp +++ b/test/TestHelper.cpp @@ -741,6 +741,12 @@ Options::Options() inputLimits = true; bigData = true; } + else if (arg.compare(0, 12, "--singletest") == 0) + { + singletest = true; + if (arg.size() > 12) + singletestName = arg.substr(13); // skip '=' char + } } } diff --git a/test/TestHelper.h b/test/TestHelper.h index 10e76aa96..6d234abea 100644 --- a/test/TestHelper.h +++ b/test/TestHelper.h @@ -188,6 +188,8 @@ public: /// Test selection /// @{ + bool singletest = false; + std::string singletestName; bool performance = false; bool quadratic = false; bool memory = false; diff --git a/test/libethereum/state.cpp b/test/libethereum/state.cpp index 900f3060f..78334fcd1 100644 --- a/test/libethereum/state.cpp +++ b/test/libethereum/state.cpp @@ -43,6 +43,10 @@ void doStateTests(json_spirit::mValue& v, bool _fillin) { for (auto& i: v.get_obj()) { + if (test::Options::get().singletest == true) + if (test::Options::get().singletestName != i.first) + continue; + std::cout << " " << i.first << "\n"; mObject& o = i.second.get_obj(); From 0a954152035d467da2772af0e8ad2fffd7216648 Mon Sep 17 00:00:00 2001 From: yann300 Date: Tue, 5 May 2015 16:30:54 +0200 Subject: [PATCH 14/47] - provide specific gas value for each tr. - display user friendly gas value (for deploy and register). --- mix/ClientModel.cpp | 19 +++--- mix/ClientModel.h | 2 + mix/qml/DeploymentDialog.qml | 102 ++++++++++++++++---------------- mix/qml/Ether.qml | 4 +- mix/qml/js/NetworkDeployment.js | 25 ++++---- mix/qml/js/TransactionHelper.js | 2 +- 6 files changed, 85 insertions(+), 69 deletions(-) diff --git a/mix/ClientModel.cpp b/mix/ClientModel.cpp index 1be42610c..fa5ec1c27 100644 --- a/mix/ClientModel.cpp +++ b/mix/ClientModel.cpp @@ -137,24 +137,29 @@ void ClientModel::mine() QString ClientModel::newSecret() { KeyPair a = KeyPair::create(); - return QString::fromStdString(toHex(a.secret().ref())); + return QString::fromStdString(dev::toHex(a.secret().ref())); } QString ClientModel::address(QString const& _secret) { - return QString::fromStdString(toHex(KeyPair(Secret(_secret.toStdString())).address().ref())); + return QString::fromStdString(dev::toHex(KeyPair(Secret(_secret.toStdString())).address().ref())); +} + +QString ClientModel::toHex(QString const& _int) +{ + return QString::fromStdString(dev::toHex(dev::u256(_int.toStdString()))); } QString ClientModel::encodeAbiString(QString _string) { ContractCallDataEncoder encoder; - return QString::fromStdString(toHex(encoder.encodeBytes(_string))); + return QString::fromStdString(dev::toHex(encoder.encodeBytes(_string))); } QString ClientModel::encodeStringParam(QString const& _param) { ContractCallDataEncoder encoder; - return QString::fromStdString(toHex(encoder.encodeStringParam(_param, 32))); + return QString::fromStdString(dev::toHex(encoder.encodeStringParam(_param, 32))); } QStringList ClientModel::encodeParams(QVariant const& _param, QString const& _contract, QString const& _function) @@ -179,7 +184,7 @@ QStringList ClientModel::encodeParams(QVariant const& _param, QString const& _co QSolidityType const* type = var->type(); QVariant value = _param.toMap().value(var->name()); encoder.encode(value, type->type()); - ret.push_back(QString::fromStdString(toHex(encoder.encodedData()))); + ret.push_back(QString::fromStdString(dev::toHex(encoder.encodedData()))); } return ret; } @@ -346,7 +351,7 @@ void ClientModel::executeSequence(vector const& _sequence, if (type->type().type == SolidityType::Type::Address && value.toString().startsWith("<") && value.toString().endsWith(">")) { QStringList nb = value.toString().remove("<").remove(">").split(" - "); - value = QVariant(QString::fromStdString("0x" + toHex(deployedContracts.at(nb.back().toInt()).ref()))); + value = QVariant(QString::fromStdString("0x" + dev::toHex(deployedContracts.at(nb.back().toInt()).ref()))); } encoder.encode(value, type->type()); } @@ -616,7 +621,7 @@ RecordLogEntry* ClientModel::lastBlock() const strGas << blockInfo.gasUsed; stringstream strNumber; strNumber << blockInfo.number; - RecordLogEntry* record = new RecordLogEntry(0, QString::fromStdString(strNumber.str()), tr(" - Block - "), tr("Hash: ") + QString(QString::fromStdString(toHex(blockInfo.hash().ref()))), QString(), QString(), QString(), false, RecordLogEntry::RecordType::Block, QString::fromStdString(strGas.str())); + RecordLogEntry* record = new RecordLogEntry(0, QString::fromStdString(strNumber.str()), tr(" - Block - "), tr("Hash: ") + QString(QString::fromStdString(dev::toHex(blockInfo.hash().ref()))), QString(), QString(), QString(), false, RecordLogEntry::RecordType::Block, QString::fromStdString(strGas.str())); QQmlEngine::setObjectOwnership(record, QQmlEngine::JavaScriptOwnership); return record; } diff --git a/mix/ClientModel.h b/mix/ClientModel.h index 3a489622f..91b66c76c 100644 --- a/mix/ClientModel.h +++ b/mix/ClientModel.h @@ -162,6 +162,8 @@ public: Q_INVOKABLE QStringList encodeParams(QVariant const& _param, QString const& _contract, QString const& _function); /// Encode parameter Q_INVOKABLE QString encodeStringParam(QString const& _param); + /// To Hex number + Q_INVOKABLE QString toHex(QString const& _int); public slots: /// Setup state, run transaction sequence, show debugger for the last transaction diff --git a/mix/qml/DeploymentDialog.qml b/mix/qml/DeploymentDialog.qml index 6d26790a5..c8b540946 100644 --- a/mix/qml/DeploymentDialog.qml +++ b/mix/qml/DeploymentDialog.qml @@ -17,6 +17,10 @@ Dialog { width: 735 height: 400 visible: false + property int ownedRegistrarDeployGas: 1179075 + property int ownedRegistrarSetSubRegistrarGas: 44719 + property int ownedRegistrarSetContentHashGas: 43691 + property int urlHintSuggestUrlGas: 62832 property alias applicationUrlEth: applicationUrlEth.text property alias applicationUrlHttp: applicationUrlHttp.text property alias localPackageUrl: localPackageUrl.text @@ -24,9 +28,7 @@ Dialog { property string packageBase64 property string eth: registrarAddr.text property string currentAccount - property string gasToUse: gasToUseInput.text property string gasPrice - property variant gasTotal property variant paramsModel: [] function close() @@ -87,9 +89,8 @@ Dialog { NetworkDeploymentCode.gasPrice(function(price) { gasPrice = price; gasPriceInt.setValue(gasPrice); - gasInt.setValue(NetworkDeploymentCode.gasUsed()); - gasTotal = gasInt.multiply(gasPriceInt); - gasToUseInput.text = gasTotal.value(); + ctrDeployCtrLabel.calculateContractDeployGas(); + ctrRegisterLabel.calculateRegisterGas(); }); } } @@ -126,11 +127,6 @@ Dialog { poolLog.start(); } - BigIntValue - { - id: gasInt - } - BigIntValue { id: gasPriceInt @@ -287,6 +283,10 @@ Dialog { id: statesList textRole: "title" model: projectModel.stateListModel + onCurrentIndexChanged : { + ctrDeployCtrLabel.calculateContractDeployGas(); + ctrRegisterLabel.calculateRegisterGas(); + } } } @@ -324,6 +324,8 @@ Dialog { currentAccount = modelAccounts.get(currentIndex).id; balance.text = balances[currentIndex]; balanceInt.setValue(weiBalances[currentIndex]); + ctrDeployCtrLabel.calculateContractDeployGas(); + ctrRegisterLabel.calculateRegisterGas(); } } model: ListModel { @@ -349,28 +351,47 @@ Dialog { DefaultLabel { text: qsTr("Amount of gas to use for contract deployment: ") + id: ctrDeployCtrLabel + function calculateContractDeployGas() + { + var ether = QEtherHelper.createBigInt(NetworkDeploymentCode.gasUsed()); + var gasTotal = ether.multiply(gasPriceInt); + gasToUseInput.value = QEtherHelper.createEther(gasTotal.value(), QEther.Wei, parent); + gasToUseDeployInput.update(); + } } - DefaultLabel - { - Layout.preferredWidth: 350 + Ether { id: gasToUseInput + displayUnitSelection: false + displayFormattedValue: true + Layout.preferredWidth: 350 } DefaultLabel { text: qsTr("Amount of gas to use for dapp registration: ") + id: ctrRegisterLabel + function calculateRegisterGas() + { + if (!modalDeploymentDialog.visible) + return; + appUrlFormatted.text = NetworkDeploymentCode.formatAppUrl(applicationUrlEth.text).join('/'); + NetworkDeploymentCode.checkPathCreationCost(function(pathCreationCost) + { + var ether = QEtherHelper.createBigInt(pathCreationCost); + var gasTotal = ether.multiply(gasPriceInt); + gasToUseDeployInput.value = QEtherHelper.createEther(gasTotal.value(), QEther.Wei, parent); + gasToUseDeployInput.update(); + }); + } } - BigIntValue - { - id: deployGas; - } - - DefaultLabel - { - Layout.preferredWidth: 350 + Ether { id: gasToUseDeployInput + displayUnitSelection: false + displayFormattedValue: true + Layout.preferredWidth: 350 } DefaultLabel @@ -388,15 +409,7 @@ Dialog { width: 200 id: applicationUrlEth onTextChanged: { - if (!modalDeploymentDialog.visible) - return; - appUrlFormatted.text = NetworkDeploymentCode.formatAppUrl(text).join('/'); - NetworkDeploymentCode.checkPathCreationCost(function(pathCreationCost) - { - deployGas.setValue("" + pathCreationCost + ""); - var gasSpent = deployGas.multiply(gasPriceInt); - gasToUseDeployInput.text = gasSpent.value(); - }); + ctrRegisterLabel.calculateRegisterGas(); } } @@ -431,26 +444,6 @@ Dialog { id: runAction tooltip: qsTr("Deploy contract(s) and Package resources files.") onTriggered: { - if (contractRedeploy.checked) - { - console.log(gasTotal); - if (balanceInt <= gasTotal.add(deployGas)) - { - errorDialog.text = qsTr("Not enough ether to deploy contract."); - errorDialog.open(); - return; - } - } - else - { - if (balanceInt <= deployGas) - { - errorDialog.text = qsTr("Not enough ether to deploy contract."); - errorDialog.open(); - return; - } - } - var inError = []; var ethUrl = NetworkDeploymentCode.formatAppUrl(applicationUrlEth.text); for (var k in ethUrl) @@ -561,6 +554,15 @@ Dialog { iconSource: "qrc:/qml/img/note.png" } + BigIntValue + { + id: registerUrlHintGas + Component.onCompleted: + { + setValue(modalDeploymentDialog.urlHintSuggestUrlGas); + } + } + Action { id: registerAction enabled: rowRegister.isOkToRegister() diff --git a/mix/qml/Ether.qml b/mix/qml/Ether.qml index dd9022b81..7a059e04d 100644 --- a/mix/qml/Ether.qml +++ b/mix/qml/Ether.qml @@ -15,9 +15,11 @@ RowLayout { property bool displayFormattedValue; property bool edit; property variant value; + property bool displayUnitSelection onValueChanged: update() Component.onCompleted: update() + function update() { if (value) @@ -45,13 +47,13 @@ RowLayout { } } readOnly: !edit - visible: edit id: etherValueEdit; } ComboBox { id: units + visible: displayUnitSelection; onCurrentTextChanged: { if (value) diff --git a/mix/qml/js/NetworkDeployment.js b/mix/qml/js/NetworkDeployment.js index bac4b501b..b43dd3637 100644 --- a/mix/qml/js/NetworkDeployment.js +++ b/mix/qml/js/NetworkDeployment.js @@ -23,6 +23,7 @@ .import org.ethereum.qml.QSolidityType 1.0 as QSolidityType Qt.include("TransactionHelper.js") +Qt.include("QEtherHelper.js") var jsonRpcRequestId = 1; @@ -84,7 +85,7 @@ function checkPathCreationCost(callBack) else { deploymentStepChanged(qsTr("Your Dapp can be registered here.")); - callBack((dappUrl.length - 1) * 100000 + 5000); + callBack((dappUrl.length - 1) * (deploymentDialog.ownedRegistrarDeployGas + deploymentDialog.ownedRegistrarSetSubRegistrarGas) + deploymentDialog.ownedRegistrarSetContentHashGas); } }); } @@ -94,7 +95,10 @@ function gasUsed() var gas = 0; var gasCosts = clientModel.gasCosts; for (var g in gasCosts) + { gas += gasCosts[g]; + console.log(" gasCost " + gasCosts[g]); + } return gas; } @@ -152,7 +156,7 @@ function executeTr(trIndex, state, ctrAddresses, callBack) executeTrNextStep(trIndex, state, ctrAddresses, callBack); else { - var gasCost = clientModel.encodeAbiString(clientModel.gasCosts[trIndex]); + var gasCost = clientModel.toHex(clientModel.gasCosts[trIndex]); var rpcParams = { "from": deploymentDialog.currentAccount, "gas": "0x" + gasCost }; var params = replaceParamToken(func.parameters, tr.parameters, ctrAddresses); var encodedParams = clientModel.encodeParams(params, tr.contractId, tr.functionId); @@ -275,6 +279,7 @@ function checkEthPath(dappUrl, checkOnly, callBack) { if (dappUrl.length === 1) { + // convenient for dev purpose, should not be possible in normal env. if (!checkOnly) reserve(deploymentDialog.eth, function() { registerContentHash(deploymentDialog.eth, callBack); // we directly create a dapp under the root registrar. @@ -331,7 +336,6 @@ function isOwner(addr, callBack) function checkRegistration(dappUrl, addr, callBack, checkOnly) { - console.log("checkRegistration " + addr + " " + dappUrl.join('|')); isOwner(addr, function(ret){ if (!ret) { @@ -400,11 +404,11 @@ function continueRegistration(dappUrl, addr, callBack, checkOnly) deploymentStepChanged(txt); //current registrar is owned => ownedregistrar creation and continue. requests = []; - + var gasCost = clientModel.toHex(deploymentDialog.ownedRegistrarDeployGas); requests.push({ jsonrpc: "2.0", method: "eth_sendTransaction", - params: [ { "from": deploymentDialog.currentAccount, "gas": "#ffff", "code": "0x600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000163317815561058990819061003990396000f3007c010000000000000000000000000000000000000000000000000000000060003504630198489281146100a757806302571be3146100d957806321f8a721146100e35780632dff6941146100ed5780633b3b57de1461010d5780635a3a05bd1461013d5780635fd4b08a1461017057806389a69c0e1461017c578063b5c645bd146101b0578063be99a9801461022c578063c3d014d614610264578063d93e75731461029857005b73ffffffffffffffffffffffffffffffffffffffff600435166000908152600160205260409020548060005260206000f35b6000808052602081f35b6000808052602081f35b600435600090815260026020819052604090912001548060005260206000f35b600435600090815260026020908152604082205473ffffffffffffffffffffffffffffffffffffffff1680835291f35b600435600090815260026020908152604082206001015473ffffffffffffffffffffffffffffffffffffffff1680835291f35b60008060005260206000f35b6000546102c89060043590602435903373ffffffffffffffffffffffffffffffffffffffff90811691161461052557610585565b600435600090815260026020819052604090912080546001820154919092015473ffffffffffffffffffffffffffffffffffffffff9283169291909116908273ffffffffffffffffffffffffffffffffffffffff166000528173ffffffffffffffffffffffffffffffffffffffff166020528060405260606000f35b6000546102ce906004359060243590604435903373ffffffffffffffffffffffffffffffffffffffff9081169116146102e0576103af565b6000546102d49060043590602435903373ffffffffffffffffffffffffffffffffffffffff9081169116146103b4576103f1565b6000546102da90600435903373ffffffffffffffffffffffffffffffffffffffff9081169116146103f557610522565b60006000f35b60006000f35b60006000f35b60006000f35b600083815260026020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016831790558061034757827fa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc60006040a26103ae565b73ffffffffffffffffffffffffffffffffffffffff8216837ff63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a854560006040a373ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090208390555b5b505050565b600082815260026020819052604080832090910183905583917fa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc91a25b5050565b60008181526002602090815260408083205473ffffffffffffffffffffffffffffffffffffffff16835260019091529020548114610432576104b2565b6000818152600260205260408082205473ffffffffffffffffffffffffffffffffffffffff169183917ff63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a85459190a360008181526002602090815260408083205473ffffffffffffffffffffffffffffffffffffffff16835260019091528120555b600081815260026020819052604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168255600182018054909116905590910182905582917fa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc91a25b50565b60008281526002602052604080822060010180547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905583917fa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc91a25b505056" } ], + params: [ { "from": deploymentDialog.currentAccount, "gas": "0x" + gasCost, "code": "0x600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000163317815561058990819061003990396000f3007c010000000000000000000000000000000000000000000000000000000060003504630198489281146100a757806302571be3146100d957806321f8a721146100e35780632dff6941146100ed5780633b3b57de1461010d5780635a3a05bd1461013d5780635fd4b08a1461017057806389a69c0e1461017c578063b5c645bd146101b0578063be99a9801461022c578063c3d014d614610264578063d93e75731461029857005b73ffffffffffffffffffffffffffffffffffffffff600435166000908152600160205260409020548060005260206000f35b6000808052602081f35b6000808052602081f35b600435600090815260026020819052604090912001548060005260206000f35b600435600090815260026020908152604082205473ffffffffffffffffffffffffffffffffffffffff1680835291f35b600435600090815260026020908152604082206001015473ffffffffffffffffffffffffffffffffffffffff1680835291f35b60008060005260206000f35b6000546102c89060043590602435903373ffffffffffffffffffffffffffffffffffffffff90811691161461052557610585565b600435600090815260026020819052604090912080546001820154919092015473ffffffffffffffffffffffffffffffffffffffff9283169291909116908273ffffffffffffffffffffffffffffffffffffffff166000528173ffffffffffffffffffffffffffffffffffffffff166020528060405260606000f35b6000546102ce906004359060243590604435903373ffffffffffffffffffffffffffffffffffffffff9081169116146102e0576103af565b6000546102d49060043590602435903373ffffffffffffffffffffffffffffffffffffffff9081169116146103b4576103f1565b6000546102da90600435903373ffffffffffffffffffffffffffffffffffffffff9081169116146103f557610522565b60006000f35b60006000f35b60006000f35b60006000f35b600083815260026020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016831790558061034757827fa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc60006040a26103ae565b73ffffffffffffffffffffffffffffffffffffffff8216837ff63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a854560006040a373ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090208390555b5b505050565b600082815260026020819052604080832090910183905583917fa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc91a25b5050565b60008181526002602090815260408083205473ffffffffffffffffffffffffffffffffffffffff16835260019091529020548114610432576104b2565b6000818152600260205260408082205473ffffffffffffffffffffffffffffffffffffffff169183917ff63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a85459190a360008181526002602090815260408083205473ffffffffffffffffffffffffffffffffffffffff16835260019091528120555b600081815260026020819052604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168255600182018054909116905590910182905582917fa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc91a25b50565b60008281526002602052604080822060010180547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905583917fa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc91a25b505056" } ], id: jsonRpcRequestId++ }); @@ -421,11 +425,12 @@ function continueRegistration(dappUrl, addr, callBack, checkOnly) return; } var crLevel = clientModel.encodeStringParam(dappUrl[0]); + var gasCost = clientModel.toHex(deploymentDialog.ownedRegistrarSetSubRegistrarGas); requests.push({ //setRegister() jsonrpc: "2.0", method: "eth_sendTransaction", - params: [ { "from": deploymentDialog.currentAccount, "gas": "#ffff", "to": '0x' + addr, "data": "0x89a69c0e" + crLevel + deploymentDialog.pad(newCtrAddress) } ], + params: [ { "from": deploymentDialog.currentAccount, "gas": "0x" + gasCost, "to": '0x' + addr, "data": "0x89a69c0e" + crLevel + deploymentDialog.pad(newCtrAddress) } ], id: jsonRpcRequestId++ }); @@ -474,12 +479,12 @@ function registerContentHash(registrar, callBack) console.log(txt); var requests = []; var paramTitle = clientModel.encodeStringParam(projectModel.projectTitle); - + var gasCost = clientModel.toHex(deploymentDialog.ownedRegistrarSetContentHashGas); requests.push({ //setContent() jsonrpc: "2.0", method: "eth_sendTransaction", - params: [ { "from": deploymentDialog.currentAccount, "gas": "0xfffff", "to": '0x' + registrar, "data": "0xc3d014d6" + paramTitle + deploymentDialog.packageHash } ], + params: [ { "from": deploymentDialog.currentAccount, "gas": "0x" + gasCost, "to": '0x' + registrar, "data": "0xc3d014d6" + paramTitle + deploymentDialog.packageHash } ], id: jsonRpcRequestId++ }); rpcCall(requests, function (httpRequest, response) { @@ -494,12 +499,12 @@ function registerToUrlHint() urlHintAddress(function(urlHint){ var requests = []; var paramUrlHttp = clientModel.encodeStringParam(deploymentDialog.applicationUrlHttp); - + var gasCost = clientModel.toHex(deploymentDialog.urlHintSuggestUrlGas); requests.push({ //urlHint => suggestUrl jsonrpc: "2.0", method: "eth_sendTransaction", - params: [ { "to": '0x' + urlHint, "from": deploymentDialog.currentAccount, "gas": "0xfffff", "data": "0x584e86ad" + deploymentDialog.packageHash + paramUrlHttp } ], + params: [ { "to": '0x' + urlHint, "from": deploymentDialog.currentAccount, "gas": "0x" + gasCost, "data": "0x584e86ad" + deploymentDialog.packageHash + paramUrlHttp } ], id: jsonRpcRequestId++ }); diff --git a/mix/qml/js/TransactionHelper.js b/mix/qml/js/TransactionHelper.js index be057917c..b0a5caa9e 100644 --- a/mix/qml/js/TransactionHelper.js +++ b/mix/qml/js/TransactionHelper.js @@ -15,7 +15,7 @@ function defaultTransaction() function rpcCall(requests, callBack) { - var jsonRpcUrl = "http://localhost:8080"; + var jsonRpcUrl = "http://localhost:8545"; var rpcRequest = JSON.stringify(requests); console.log(rpcRequest); var httpRequest = new XMLHttpRequest(); From bc9b1714af011fa15028744b94cb3a4ded6df10c Mon Sep 17 00:00:00 2001 From: yann300 Date: Tue, 5 May 2015 16:55:15 +0200 Subject: [PATCH 15/47] small changes --- mix/qml/DeploymentDialog.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mix/qml/DeploymentDialog.qml b/mix/qml/DeploymentDialog.qml index c8b540946..830af2980 100644 --- a/mix/qml/DeploymentDialog.qml +++ b/mix/qml/DeploymentDialog.qml @@ -17,7 +17,7 @@ Dialog { width: 735 height: 400 visible: false - property int ownedRegistrarDeployGas: 1179075 + property int ownedRegistrarDeployGas: 1179075 // TODO: Use sol library to calculate gas requirement for each tr. property int ownedRegistrarSetSubRegistrarGas: 44719 property int ownedRegistrarSetContentHashGas: 43691 property int urlHintSuggestUrlGas: 62832 @@ -300,7 +300,7 @@ Dialog { { Layout.preferredWidth: 350 id: registrarAddr - text: "c958eeae0f4d11664a9db27d04d86ae1d744d1d9" + text: "c6d9d2cd449a754c494264e1809c50e34d64562b" visible: false } From b7d560d3e7ad8f5450dd574ae37fb0679b6be2cc Mon Sep 17 00:00:00 2001 From: chriseth Date: Tue, 5 May 2015 17:08:30 +0200 Subject: [PATCH 16/47] Fix for exception if function hashes not requested. --- solc/CommandLineInterface.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/solc/CommandLineInterface.cpp b/solc/CommandLineInterface.cpp index 0d5f47242..e6f03a2ef 100644 --- a/solc/CommandLineInterface.cpp +++ b/solc/CommandLineInterface.cpp @@ -175,6 +175,9 @@ void CommandLineInterface::handleBytecode(string const& _contract) void CommandLineInterface::handleSignatureHashes(string const& _contract) { + if (!m_args.count(g_argSignatureHashes)) + return; + string out; for (auto const& it: m_compiler->getContractDefinition(_contract).getInterfaceFunctions()) out += toHex(it.first.ref()) + ": " + it.second->externalSignature() + "\n"; From 43f34d35776209d59bc65ddbb0ca9b0e70d494b1 Mon Sep 17 00:00:00 2001 From: winsvega Date: Tue, 5 May 2015 18:15:26 +0300 Subject: [PATCH 17/47] Solidity: cryptographic ecrecover test --- test/TestHelper.cpp | 12 +++++------- test/TestHelper.h | 4 ++-- .../StateTestsFiller/stSolidityTestFiller.json | 8 ++++++-- test/libethereum/state.cpp | 11 ++++++----- 4 files changed, 19 insertions(+), 16 deletions(-) diff --git a/test/TestHelper.cpp b/test/TestHelper.cpp index 9e997c495..144a1a286 100644 --- a/test/TestHelper.cpp +++ b/test/TestHelper.cpp @@ -715,11 +715,10 @@ Options::Options() vmtrace = true; else if (arg == "--filltests") fillTests = true; - else if (arg.compare(0, 7, "--stats") == 0) + else if (arg == "--stats" && i + 1 < argc) { stats = true; - if (arg.size() > 7) - statsOutFile = arg.substr(8); // skip '=' char + statsOutFile = argv[i + 1]; } else if (arg == "--performance") performance = true; @@ -741,11 +740,10 @@ Options::Options() inputLimits = true; bigData = true; } - else if (arg.compare(0, 12, "--singletest") == 0) + else if (arg == "--singletest" && i + 1 < argc) { - singletest = true; - if (arg.size() > 12) - singletestName = arg.substr(13); // skip '=' char + singleTest = true; + singleTestName = argv[i + 1]; } } } diff --git a/test/TestHelper.h b/test/TestHelper.h index 6d234abea..02f509e4c 100644 --- a/test/TestHelper.h +++ b/test/TestHelper.h @@ -188,8 +188,8 @@ public: /// Test selection /// @{ - bool singletest = false; - std::string singletestName; + bool singleTest = false; + std::string singleTestName; bool performance = false; bool quadratic = false; bool memory = false; diff --git a/test/libethereum/StateTestsFiller/stSolidityTestFiller.json b/test/libethereum/StateTestsFiller/stSolidityTestFiller.json index 8c3b082dc..77d2583a3 100644 --- a/test/libethereum/StateTestsFiller/stSolidityTestFiller.json +++ b/test/libethereum/StateTestsFiller/stSolidityTestFiller.json @@ -125,10 +125,14 @@ "//" : " if (ripemd160('teststring') != 0xcd566972b5e50104011a92b59fa8e0b1234851ae) ", "//" : " return false; ", "//" : " ", - "//" : " //ecrecover ", + "//" : " if (ecrecover(0x18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c, ", + "//" : " 28, 0x73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f, ", + "//" : " 0xeeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549) ", + "//" : " != 0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b) ", + "//" : " return false; ", "//" : " } ", "//" : "} ", - "code" : "0x6000357c010000000000000000000000000000000000000000000000000000000090048063c04062261461003a578063e0a9fd281461004c57005b61004261005e565b8060005260206000f35b610054610099565b8060005260206000f35b6000610068610099565b600060006101000a81548160ff02191690830217905550600060009054906101000a900460ff169050610096565b90565b60006001905080507f43c4b4524adb81e4e9a5c4648a98e9d320e3908ac5b6c889144b642cd08ae16d60010260407f74657374737472696e67000000000000000000000000000000000000000000008152600a016040900360402014156100ff57610108565b6000905061020e565b7f3c8727e019a42b444667a587b6001251becadabbb36bfed8087a92c18882d11160010260026020600060007f74657374737472696e67000000000000000000000000000000000000000000008152600a0160006000856161da5a03f161016b57005b50600051141561017a57610183565b6000905061020e565b73cd566972b5e50104011a92b59fa8e0b1234851ae6c010000000000000000000000000260036020600060007f74657374737472696e67000000000000000000000000000000000000000000008152600a0160006000856161da5a03f16101e657005b506000516c010000000000000000000000000214156102045761020d565b6000905061020e565b5b9056", + "code" : "0x6000357c010000000000000000000000000000000000000000000000000000000090048063c04062261461003a578063e0a9fd281461004c57005b61004261005e565b8060005260206000f35b610054610099565b8060005260206000f35b6000610068610099565b600060006101000a81548160ff02191690830217905550600060009054906101000a900460ff169050610096565b90565b60006001905080507f43c4b4524adb81e4e9a5c4648a98e9d320e3908ac5b6c889144b642cd08ae16d60010260407f74657374737472696e67000000000000000000000000000000000000000000008152600a016040900360402014156100ff57610108565b600090506102ec565b7f3c8727e019a42b444667a587b6001251becadabbb36bfed8087a92c18882d11160010260026020600060007f74657374737472696e67000000000000000000000000000000000000000000008152600a0160006000856161da5a03f161016b57005b50600051141561017a57610183565b600090506102ec565b73cd566972b5e50104011a92b59fa8e0b1234851ae6c010000000000000000000000000260036020600060007f74657374737472696e67000000000000000000000000000000000000000000008152600a0160006000856161da5a03f16101e657005b506000516c010000000000000000000000000214156102045761020d565b600090506102ec565b73a94f5374fce5edbc8e2a8697c15331677e6ebf0b60016020600060007f18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c6001028152602001601c81526020017f73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f60010281526020017feeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549600102815260200160006000856161da5a03f16102bd57005b5060005173ffffffffffffffffffffffffffffffffffffffff1614156102e2576102eb565b600090506102ec565b5b9056", "nonce" : "0", "storage" : { } diff --git a/test/libethereum/state.cpp b/test/libethereum/state.cpp index 78334fcd1..ba04d2ccd 100644 --- a/test/libethereum/state.cpp +++ b/test/libethereum/state.cpp @@ -43,13 +43,14 @@ void doStateTests(json_spirit::mValue& v, bool _fillin) { for (auto& i: v.get_obj()) { - if (test::Options::get().singletest == true) - if (test::Options::get().singletestName != i.first) - continue; - - std::cout << " " << i.first << "\n"; mObject& o = i.second.get_obj(); + if (test::Options::get().singleTest && test::Options::get().singleTestName != i.first) + { + o.clear(); + continue; + } + std::cout << " " << i.first << "\n"; BOOST_REQUIRE(o.count("env") > 0); BOOST_REQUIRE(o.count("pre") > 0); BOOST_REQUIRE(o.count("transaction") > 0); From ae740583209da59d902d46150d72f9b969c10432 Mon Sep 17 00:00:00 2001 From: Gav Wood Date: Tue, 5 May 2015 19:33:59 +0200 Subject: [PATCH 18/47] Windows build fixes. --- alethzero/Main.ui | 2 +- alethzero/MainWin.cpp | 1 - libdevcore/Common.h | 4 ++++ libethereum/BlockChain.cpp | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/alethzero/Main.ui b/alethzero/Main.ui index cdd734941..f28f5b5fc 100644 --- a/alethzero/Main.ui +++ b/alethzero/Main.ui @@ -552,7 +552,7 @@ - + QDockWidget::DockWidgetFeatureMask diff --git a/alethzero/MainWin.cpp b/alethzero/MainWin.cpp index 3b89d3398..de5f149ce 100644 --- a/alethzero/MainWin.cpp +++ b/alethzero/MainWin.cpp @@ -145,7 +145,6 @@ Main::Main(QWidget *parent) : #if !ETH_FATDB delete ui->dockWidget_accounts; - delete ui->dockWidget_contracts; #endif #if ETH_DEBUG diff --git a/libdevcore/Common.h b/libdevcore/Common.h index aa18baba5..e5d746372 100644 --- a/libdevcore/Common.h +++ b/libdevcore/Common.h @@ -182,7 +182,11 @@ private: #define DEV_TIMED(S) for (::std::pair<::dev::TimerHelper, bool> __eth_t(#S, true); __eth_t.second; __eth_t.second = false) #define DEV_TIMED_SCOPE(S) ::dev::TimerHelper __eth_t(S) +#if WIN32 +#define DEV_TIMED_FUNCTION DEV_TIMED_SCOPE(__FUNCSIG__) +#else #define DEV_TIMED_FUNCTION DEV_TIMED_SCOPE(__PRETTY_FUNCTION__) +#endif enum class WithExisting: int { diff --git a/libethereum/BlockChain.cpp b/libethereum/BlockChain.cpp index 204203c9d..2f1e58602 100644 --- a/libethereum/BlockChain.cpp +++ b/libethereum/BlockChain.cpp @@ -47,7 +47,7 @@ using namespace dev::eth; namespace js = json_spirit; #define ETH_CATCH 1 -#define ETH_TIMED_IMPORTS 1 +#define ETH_TIMED_IMPORTS 0 #ifdef _WIN32 const char* BlockChainDebug::name() { return EthBlue "8" EthWhite " <>"; } From 65f53a5f28ed564a93e128538f424601c075f240 Mon Sep 17 00:00:00 2001 From: winsvega Date: Tue, 5 May 2015 21:43:26 +0300 Subject: [PATCH 19/47] singletest when refill Solidity Contract Inheritance Test --- .../stSolidityTestFiller.json | 152 ++++++++++++++++++ test/libethereum/state.cpp | 4 +- 2 files changed, 154 insertions(+), 2 deletions(-) diff --git a/test/libethereum/StateTestsFiller/stSolidityTestFiller.json b/test/libethereum/StateTestsFiller/stSolidityTestFiller.json index 77d2583a3..a4243c8dd 100644 --- a/test/libethereum/StateTestsFiller/stSolidityTestFiller.json +++ b/test/libethereum/StateTestsFiller/stSolidityTestFiller.json @@ -1,4 +1,156 @@ { + "ContractInheritance" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "45678256", + "currentGasLimit" : "1000000000000000000000", + "currentNumber" : "120", + "currentTimestamp" : 1, + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "expect" : { + "095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "storage" : { + "0x" : "0x01" + } + } + }, + "pre" : + { + "095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "balance" : "100000", + "//" : "contract base ", + "//" : "{ ", + "//" : " function methodA() returns (uint32) ", + "//" : " { ", + "//" : " return 1; ", + "//" : " } ", + "//" : "} ", + "//" : " ", + "//" : "contract frombase is base ", + "//" : "{ ", + "//" : " function methodA() returns (uint32) ", + "//" : " { ", + "//" : " return 2; ", + "//" : " } ", + "//" : "} ", + "//" : " ", + "//" : "contract main ", + "//" : "{ ", + "//" : " bool returnValue; ", + "//" : " function run() returns (bool) ", + "//" : " { ", + "//" : " returnValue = testInheretance(); ", + "//" : " return returnValue; ", + "//" : " } ", + "//" : " ", + "//" : " function testInheretance() returns (bool res) ", + "//" : " { ", + "//" : " res = true; ", + "//" : " base contract1; ", + "//" : " if (contract1.methodA() != 1) ", + "//" : " return false; ", + "//" : " ", + "//" : " frombase contract2; ", + "//" : " if (contract2.methodA() != 2) ", + "//" : " return false; ", + "//" : " } ", + "//" : "} ", + "code" : "0x6000357c0100000000000000000000000000000000000000000000000000000000900480633e0bca3b1461003a578063c04062261461004c57005b610042610099565b8060005260206000f35b61005461005e565b8060005260206000f35b6000610068610099565b600060006101000a81548160ff02191690830217905550600060009054906101000a900460ff169050610096565b90565b60006000600060019250825060018273ffffffffffffffffffffffffffffffffffffffff166381bda09b60206000827c010000000000000000000000000000000000000000000000000000000002600052600460006000866161da5a03f16100fd57005b505060005163ffffffff1614156101135761011c565b60009250610194565b60028173ffffffffffffffffffffffffffffffffffffffff166381bda09b60206000827c010000000000000000000000000000000000000000000000000000000002600052600460006000866161da5a03f161017457005b505060005163ffffffff16141561018a57610193565b60009250610194565b5b50509056", + "nonce" : "0", + "storage" : { + } + }, + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "50000000", + "nonce" : "0", + "code" : "", + "storage": {} + } + }, + "transaction" : + { + "data" : "run()", + "data" : "0xc0406226", + "gasLimit" : "35000000", + "gasPrice" : "1", + "nonce" : "0", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "095e7baea6a6c7c4c2dfeb977efac326af552d87", + "value" : "0" + } + }, + + "TestOverflow" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "45678256", + "currentGasLimit" : "1000000000000000000000", + "currentNumber" : "120", + "currentTimestamp" : 1, + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "expect" : { + "095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "storage" : { + "0x" : "0x01" + } + } + }, + "pre" : + { + "095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "balance" : "100000", + "//" : "contract main ", + "//" : "{ ", + "//" : " bool returnValue; ", + "//" : " function run() returns (bool) ", + "//" : " { ", + "//" : " returnValue = testOverflow(); ", + "//" : " return returnValue; ", + "//" : " } ", + "//" : " ", + "//" : " function testOverflow() returns (bool res) ", + "//" : " { ", + "//" : " res = true; ", + "//" : " uint256 a = 115792089237316195423570985008687907853269984665640564039457584007913129639935; ", + "//" : " if (a + 1 != 0) ", + "//" : " return false; ", + "//" : " ", + "//" : " uint32 b = 4294967295; ", + "//" : " if (b + 1 != 0) ", + "//" : " return false; ", + "//" : " ", + "//" : " uint64 c = 18446744073709551615; ", + "//" : " if (c + 1 != 0) ", + "//" : " return false; ", + "//" : " } ", + "//" : "} ", + "code" : "0x6000357c0100000000000000000000000000000000000000000000000000000000900480638040cac41461003a578063c04062261461004c57005b610042610099565b8060005260206000f35b61005461005e565b8060005260206000f35b6000610068610099565b600060006101000a81548160ff02191690830217905550600060009054906101000a900460ff169050610096565b90565b60006000600060006001935083507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff925060006001840114156100db576100e4565b6000935061013b565b63ffffffff915060006001830163ffffffff1614156101025761010b565b6000935061013b565b67ffffffffffffffff905060006001820167ffffffffffffffff1614156101315761013a565b6000935061013b565b5b5050509056", + "nonce" : "0", + "storage" : { + } + }, + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "50000000", + "nonce" : "0", + "code" : "", + "storage": {} + } + }, + "transaction" : + { + "data" : "run()", + "data" : "0xc0406226", + "gasLimit" : "35000000", + "gasPrice" : "1", + "nonce" : "0", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "095e7baea6a6c7c4c2dfeb977efac326af552d87", + "value" : "0" + } + }, + "TestStoreGasPrices" : { "env" : { "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", diff --git a/test/libethereum/state.cpp b/test/libethereum/state.cpp index ba04d2ccd..9f676d437 100644 --- a/test/libethereum/state.cpp +++ b/test/libethereum/state.cpp @@ -50,7 +50,7 @@ void doStateTests(json_spirit::mValue& v, bool _fillin) continue; } - std::cout << " " << i.first << "\n"; + std::cout << " " << i.first << std::endl; BOOST_REQUIRE(o.count("env") > 0); BOOST_REQUIRE(o.count("pre") > 0); BOOST_REQUIRE(o.count("transaction") > 0); @@ -67,7 +67,7 @@ void doStateTests(json_spirit::mValue& v, bool _fillin) } catch (Exception const& _e) { - cnote << "Exception:\n" << diagnostic_information(_e); + cnote << "Exception: " << diagnostic_information(_e); theState.commit(); } catch (std::exception const& _e) From 3f3334971b40467bcc008222af5cc61073269b82 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 6 May 2015 01:18:29 +0200 Subject: [PATCH 20/47] windows package fixes --- CMakeLists.txt | 5 ++--- cmake/EthExecutableHelper.cmake | 11 +++++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 667c2fb73..ee10aba1e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -393,16 +393,15 @@ if (WIN32) set(CPACK_PACKAGE_VENDOR "ethereum.org") set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.md") set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") - set(CPACK_PACKAGE_VERSION "0.7") + set(CPACK_PACKAGE_VERSION "0.9") set(CPACK_GENERATOR "NSIS") # seems to be not working # set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/alethzero/alethzero.bmp") # our stuff set(CPACK_COMPONENT_ALETHZERO_GROUP "Applications") - set(CPACK_COMPONENT_THIRD_GROUP "Applications") set(CPACK_COMPONENT_MIX_GROUP "Applications") - set(CPACK_COMPONENTS_ALL alethzero third mix) + set(CPACK_COMPONENTS_ALL alethzero mix) # nsis specific stuff set(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} ethereum") diff --git a/cmake/EthExecutableHelper.cmake b/cmake/EthExecutableHelper.cmake index be4f7ccd1..5908f6ff4 100644 --- a/cmake/EthExecutableHelper.cmake +++ b/cmake/EthExecutableHelper.cmake @@ -126,8 +126,15 @@ macro(eth_install_executable EXECUTABLE) eth_copy_dlls(${EXECUTABLE} ${dll}) endforeach(dll) - install( TARGETS ${EXECUTABLE} RUNTIME - DESTINATION bin + install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/Debug" + DESTINATION . + CONFIGURATIONS Debug + COMPONENT ${EXECUTABLE} + ) + + install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/Release" + DESTINATION . + CONFIGURATIONS Release COMPONENT ${EXECUTABLE} ) From d69b2badcf085cc1d2f27431dfe7a6f7450ba6a2 Mon Sep 17 00:00:00 2001 From: arkpar Date: Wed, 6 May 2015 10:33:30 +0200 Subject: [PATCH 21/47] Fixed accessing deleted widgets --- alethzero/MainWin.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/alethzero/MainWin.cpp b/alethzero/MainWin.cpp index de5f149ce..42951279b 100644 --- a/alethzero/MainWin.cpp +++ b/alethzero/MainWin.cpp @@ -143,10 +143,6 @@ Main::Main(QWidget *parent) : // ui->log->addItem(QString::fromStdString(s)); }; -#if !ETH_FATDB - delete ui->dockWidget_accounts; -#endif - #if ETH_DEBUG m_servers.append("127.0.0.1:30300"); #endif @@ -203,6 +199,9 @@ Main::Main(QWidget *parent) : // QWebEngineInspector* inspector = new QWebEngineInspector(); // inspector->setPage(page); readSettings(); +#if !ETH_FATDB + removeDockWidget(ui->dockWidget_accounts); +#endif installWatches(); startTimer(100); From 5b8614f1788667e256b0445d85bdadc8b5c20c44 Mon Sep 17 00:00:00 2001 From: chriseth Date: Wed, 6 May 2015 10:43:59 +0200 Subject: [PATCH 22/47] Structural gas estimator. --- libevmasm/GasMeter.cpp | 104 ++++++++++++++++++++++++ libevmasm/GasMeter.h | 67 +++++++++++++++ libsolidity/ASTPrinter.cpp | 8 +- libsolidity/ASTPrinter.h | 8 +- libsolidity/ASTVisitor.h | 44 ++++++++++ libsolidity/StructuralGasEstimator.cpp | 108 +++++++++++++++++++++++++ libsolidity/StructuralGasEstimator.h | 59 ++++++++++++++ solc/CommandLineInterface.cpp | 18 ++++- test/GasMeter.cpp | 98 ++++++++++++++++++++++ 9 files changed, 510 insertions(+), 4 deletions(-) create mode 100644 libevmasm/GasMeter.cpp create mode 100644 libevmasm/GasMeter.h create mode 100644 libsolidity/StructuralGasEstimator.cpp create mode 100644 libsolidity/StructuralGasEstimator.h create mode 100644 test/GasMeter.cpp diff --git a/libevmasm/GasMeter.cpp b/libevmasm/GasMeter.cpp new file mode 100644 index 000000000..e5fb0e09a --- /dev/null +++ b/libevmasm/GasMeter.cpp @@ -0,0 +1,104 @@ +/* + This file is part of cpp-ethereum. + + cpp-ethereum is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + cpp-ethereum is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with cpp-ethereum. If not, see . +*/ +/** @file GasMeter.cpp + * @author Christian + * @date 2015 + */ + +#include "GasMeter.h" +#include + +using namespace std; +using namespace dev; +using namespace dev::eth; + +GasMeter::GasConsumption& GasMeter::GasConsumption::operator+=(GasConsumption const& _other) +{ + isInfinite = isInfinite || _other.isInfinite; + if (isInfinite) + return *this; + bigint v = bigint(value) + _other.value; + if (v > std::numeric_limits::max()) + isInfinite = true; + else + value = u256(v); + return *this; +} + +GasMeter::GasConsumption GasMeter::estimateMax(AssemblyItem const& _item) +{ + switch (_item.type()) { + case Push: + case PushTag: + return runGas(Instruction::PUSH1); + case Tag: + return runGas(Instruction::JUMPDEST); + case Operation: + { + GasConsumption gas = runGas(_item.instruction()); + switch (_item.instruction()) + { + case Instruction::SSTORE: + // @todo logic can be improved + gas += c_sstoreSetGas; + break; + case Instruction::SLOAD: + gas += c_sloadGas; + break; + case Instruction::MSTORE: + case Instruction::MSTORE8: + case Instruction::MLOAD: + case Instruction::RETURN: + case Instruction::SHA3: + case Instruction::CALLDATACOPY: + case Instruction::CODECOPY: + case Instruction::EXTCODECOPY: + case Instruction::LOG0: + case Instruction::LOG1: + case Instruction::LOG2: + case Instruction::LOG3: + case Instruction::LOG4: + case Instruction::CALL: + case Instruction::CALLCODE: + case Instruction::CREATE: + case Instruction::EXP: + // @todo logic can be improved + gas = GasConsumption::infinite(); + break; + default: + break; + } + return gas; + break; + } + default: + break; + } + + return GasConsumption::infinite(); +} + +GasMeter::GasConsumption GasMeter::runGas(Instruction _instruction) +{ + if (_instruction == Instruction::JUMPDEST) + return GasConsumption(1); + + int tier = instructionInfo(_instruction).gasPriceTier; + return tier == InvalidTier ? GasConsumption::infinite() : c_tierStepGas[tier]; +} + + diff --git a/libevmasm/GasMeter.h b/libevmasm/GasMeter.h new file mode 100644 index 000000000..63dbc1380 --- /dev/null +++ b/libevmasm/GasMeter.h @@ -0,0 +1,67 @@ +/* + This file is part of cpp-ethereum. + + cpp-ethereum is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + cpp-ethereum is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with cpp-ethereum. If not, see . +*/ +/** @file GasMeter.cpp + * @author Christian + * @date 2015 + */ + +#pragma once + +#include +#include + +namespace dev +{ +namespace eth +{ + +/** + * Class that helps computing the maximum gas consumption for instructions. + */ +class GasMeter +{ +public: + struct GasConsumption + { + GasConsumption(u256 _value = 0, bool _infinite = false): value(_value), isInfinite(_infinite) {} + static GasConsumption infinite() { return GasConsumption(0, true); } + + GasConsumption& operator+=(GasConsumption const& _otherS); + std::ostream& operator<<(std::ostream& _str) const; + + u256 value; + bool isInfinite; + }; + + /// Returns an upper bound on the gas consumed by the given instruction. + GasConsumption estimateMax(AssemblyItem const& _item); + +private: + static GasConsumption runGas(Instruction _instruction); +}; + +inline std::ostream& operator<<(std::ostream& _str, GasMeter::GasConsumption const& _consumption) +{ + if (_consumption.isInfinite) + return _str << "inf"; + else + return _str << _consumption.value; +} + + +} +} diff --git a/libsolidity/ASTPrinter.cpp b/libsolidity/ASTPrinter.cpp index 713059d38..f21ec5e37 100644 --- a/libsolidity/ASTPrinter.cpp +++ b/libsolidity/ASTPrinter.cpp @@ -30,8 +30,10 @@ namespace dev namespace solidity { -ASTPrinter::ASTPrinter(ASTNode const& _ast, string const& _source): - m_indentation(0), m_source(_source), m_ast(&_ast) +ASTPrinter::ASTPrinter(ASTNode const& _ast, + string const& _source, + StructuralGasEstimator::ASTGasConsumption const& _gasCosts +): m_indentation(0), m_source(_source), m_ast(&_ast), m_gasCosts(_gasCosts) { } @@ -503,6 +505,8 @@ void ASTPrinter::endVisit(Literal const&) void ASTPrinter::printSourcePart(ASTNode const& _node) { + if (m_gasCosts.count(&_node)) + *m_ostream << getIndentation() << " Gas costs: " << m_gasCosts.at(&_node) << endl; if (!m_source.empty()) { SourceLocation const& location(_node.getLocation()); diff --git a/libsolidity/ASTPrinter.h b/libsolidity/ASTPrinter.h index 9494bf8cb..dabf6470a 100644 --- a/libsolidity/ASTPrinter.h +++ b/libsolidity/ASTPrinter.h @@ -24,6 +24,7 @@ #include #include +#include namespace dev { @@ -38,7 +39,11 @@ class ASTPrinter: public ASTConstVisitor public: /// Create a printer for the given abstract syntax tree. If the source is specified, /// the corresponding parts of the source are printed with each node. - ASTPrinter(ASTNode const& _ast, std::string const& _source = std::string()); + ASTPrinter( + ASTNode const& _ast, + std::string const& _source = std::string(), + StructuralGasEstimator::ASTGasConsumption const& _gasCosts = {} + ); /// Output the string representation of the AST to _stream. void print(std::ostream& _stream); @@ -128,6 +133,7 @@ private: int m_indentation; std::string m_source; ASTNode const* m_ast; + StructuralGasEstimator::ASTGasConsumption m_gasCosts; std::ostream* m_ostream; }; diff --git a/libsolidity/ASTVisitor.h b/libsolidity/ASTVisitor.h index ec22bd443..fbda50791 100644 --- a/libsolidity/ASTVisitor.h +++ b/libsolidity/ASTVisitor.h @@ -23,6 +23,8 @@ #pragma once #include +#include +#include #include namespace dev @@ -218,5 +220,47 @@ protected: virtual void endVisitNode(ASTNode const&) { } }; +/** + * Utility class that visits the AST in depth-first order and calls a function on each node and each edge. + * Child nodes are only visited if the node callback of the parent returns true. + * The node callback of a parent is called before any edge or node callback involving the children. + * The edge callbacks of all children are called before the edge callback of the parent. + * This way, the node callback can be used as an initializing callback and the edge callbacks can be + * used to compute a "reduce" function. + */ +class ASTReduce: public ASTConstVisitor +{ +public: + /** + * Constructs a new ASTReduce object with the given callback functions. + * @param _onNode called for each node, before its child edges and nodes, should return true to descend deeper + * @param _onEdge called for each edge with (parent, child) + */ + ASTReduce( + std::function _onNode, + std::function _onEdge + ): m_onNode(_onNode), m_onEdge(_onEdge) + { + } + +protected: + bool visitNode(ASTNode const& _node) override + { + m_parents.push_back(&_node); + return m_onNode(_node); + } + void endVisitNode(ASTNode const& _node) override + { + m_parents.pop_back(); + if (!m_parents.empty()) + m_onEdge(*m_parents.back(), _node); + } + +private: + std::vector m_parents; + std::function m_onNode; + std::function m_onEdge; +}; + } } diff --git a/libsolidity/StructuralGasEstimator.cpp b/libsolidity/StructuralGasEstimator.cpp new file mode 100644 index 000000000..2cf8c2a81 --- /dev/null +++ b/libsolidity/StructuralGasEstimator.cpp @@ -0,0 +1,108 @@ +/* + This file is part of cpp-ethereum. + + cpp-ethereum is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + cpp-ethereum is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with cpp-ethereum. If not, see . +*/ +/** + * @author Christian + * @date 2015 + * Gas consumption estimator working alongside the AST. + */ + +#include "StructuralGasEstimator.h" +#include +#include +#include +#include + +using namespace std; +using namespace dev; +using namespace dev::eth; +using namespace dev::solidity; + +map StructuralGasEstimator::performEstimation( + AssemblyItems const& _items, + vector const& _ast +) +{ + map particularCosts; + GasMeter meter; + + for (auto const& item: _items) + particularCosts[item.getLocation()] += meter.estimateMax(item); + + map gasCosts; + auto onNode = [&](ASTNode const& _node) + { + gasCosts[&_node][0] = gasCosts[&_node][1] = particularCosts[_node.getLocation()]; + return true; + }; + auto onEdge = [&](ASTNode const& _parent, ASTNode const& _child) + { + gasCosts[&_parent][1] += gasCosts[&_child][1]; + }; + ASTReduce folder(onNode, onEdge); + for (ASTNode const* ast: _ast) + ast->accept(folder); + + return gasCosts; +} + +map StructuralGasEstimator::breakToStatementLevel( + map const& _gasCosts, + vector const& _roots +) +{ + // first pass: statementDepth[node] is the distance from the deepend statement to node + // in direction of the tree root (or undefined if not possible) + map statementDepth; + auto onNodeFirstPass = [&](ASTNode const& _node) + { + if (dynamic_cast(&_node)) + statementDepth[&_node] = 0; + return true; + }; + auto onEdgeFirstPass = [&](ASTNode const& _parent, ASTNode const& _child) + { + if (statementDepth.count(&_child)) + statementDepth[&_parent] = max(statementDepth[&_parent], statementDepth[&_child] + 1); + }; + ASTReduce firstPass(onNodeFirstPass, onEdgeFirstPass); + for (ASTNode const* node: _roots) + node->accept(firstPass); + + // we use the location of a node if + // - its statement depth is 0 or + // - its statement depth is undefined but the parent's statement depth is at least 1 + map gasCosts; + auto onNodeSecondPass = [&](ASTNode const& _node) + { + return statementDepth.count(&_node); + }; + auto onEdgeSecondPass = [&](ASTNode const& _parent, ASTNode const& _child) + { + bool useNode = false; + if (statementDepth.count(&_child)) + useNode = statementDepth[&_child] == 0; + else + useNode = statementDepth.count(&_parent) && statementDepth.at(&_parent) > 0; + if (useNode) + gasCosts[&_child] = _gasCosts.at(&_child)[1]; + }; + ASTReduce secondPass(onNodeSecondPass, onEdgeSecondPass); + for (ASTNode const* node: _roots) + node->accept(secondPass); + // gasCosts should only contain non-overlapping locations + return gasCosts; +} diff --git a/libsolidity/StructuralGasEstimator.h b/libsolidity/StructuralGasEstimator.h new file mode 100644 index 000000000..b9e976432 --- /dev/null +++ b/libsolidity/StructuralGasEstimator.h @@ -0,0 +1,59 @@ +/* + This file is part of cpp-ethereum. + + cpp-ethereum is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + cpp-ethereum is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with cpp-ethereum. If not, see . +*/ +/** + * @author Christian + * @date 2015 + * Gas consumption estimator working alongside the AST. + */ + +#pragma once + +#include +#include +#include +#include +#include + +namespace dev +{ +namespace solidity +{ + +class StructuralGasEstimator +{ +public: + using ASTGasConsumption = std::map; + + /// Estimates the gas consumption for every assembly item in the given assembly and stores + /// it by source location. + /// @returns a mapping from each AST node to a pair of its particular and syntactically accumulated gas costs. + std::map performEstimation( + eth::AssemblyItems const& _items, + std::vector const& _ast + ); + /// @returns a mapping from nodes with non-overlapping source locations to gas consumptions such that + /// the following source locations are part of the mapping: + /// 1. source locations of statements that do not contain other statements + /// 2. maximal source locations that do not overlap locations coming from the first rule + ASTGasConsumption breakToStatementLevel( + std::map const& _gasCosts, + std::vector const& _roots + ); +}; + +} +} diff --git a/solc/CommandLineInterface.cpp b/solc/CommandLineInterface.cpp index e6f03a2ef..944c8f68a 100644 --- a/solc/CommandLineInterface.cpp +++ b/solc/CommandLineInterface.cpp @@ -42,6 +42,7 @@ #include #include #include +#include using namespace std; namespace po = boost::program_options; @@ -464,6 +465,17 @@ void CommandLineInterface::handleAst(string const& _argStr) // do we need AST output? if (m_args.count(_argStr)) { + StructuralGasEstimator gasEstimator; + vector asts; + for (auto const& sourceCode: m_sourceCodes) + asts.push_back(&m_compiler->getAST(sourceCode.first)); + map gasCosts; + if (m_compiler->getRuntimeAssemblyItems()) + gasCosts = gasEstimator.breakToStatementLevel( + gasEstimator.performEstimation(*m_compiler->getRuntimeAssemblyItems(), asts), + asts + ); + auto choice = m_args[_argStr].as(); if (outputToStdout(choice)) { @@ -473,7 +485,11 @@ void CommandLineInterface::handleAst(string const& _argStr) cout << endl << "======= " << sourceCode.first << " =======" << endl; if (_argStr == g_argAstStr) { - ASTPrinter printer(m_compiler->getAST(sourceCode.first), sourceCode.second); + ASTPrinter printer( + m_compiler->getAST(sourceCode.first), + sourceCode.second, + gasCosts + ); printer.print(cout); } else diff --git a/test/GasMeter.cpp b/test/GasMeter.cpp new file mode 100644 index 000000000..0ffe41712 --- /dev/null +++ b/test/GasMeter.cpp @@ -0,0 +1,98 @@ +/* + This file is part of cpp-ethereum. + + cpp-ethereum is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + cpp-ethereum is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with cpp-ethereum. If not, see . +*/ +/** + * @author Christian + * @date 2015 + * Unit tests for the gas estimator. + */ + +#include +#include +#include +#include + +using namespace std; +using namespace dev::eth; +using namespace dev::solidity; + +namespace dev +{ +namespace solidity +{ +namespace test +{ + +class GasMeterTestFramework: public ExecutionFramework +{ +public: + GasMeterTestFramework() { } + void compile(string const& _sourceCode) + { + m_compiler.setSource(_sourceCode); + ETH_TEST_REQUIRE_NO_THROW(m_compiler.compile(), "Compiling contract failed"); + + StructuralGasEstimator estimator; + AssemblyItems const* items = m_compiler.getRuntimeAssemblyItems(""); + ASTNode const& sourceUnit = m_compiler.getAST(); + BOOST_REQUIRE(items != nullptr); + m_gasCosts = estimator.breakToStatementLevel( + estimator.performEstimation(*items, vector({&sourceUnit})), + {&sourceUnit} + ); + } + +protected: + dev::solidity::CompilerStack m_compiler; + map m_gasCosts; +}; + +BOOST_FIXTURE_TEST_SUITE(GasMeterTests, GasMeterTestFramework) + +BOOST_AUTO_TEST_CASE(non_overlapping_filtered_costs) +{ + char const* sourceCode = R"( + contract test { + bytes x; + function f(uint a) returns (uint b) { + x.length = a; + for (; a < 200; ++a) { + x[a] = 9; + b = a * a; + } + return f(a - 1); + } + } + )"; + compile(sourceCode); + for (auto first = m_gasCosts.cbegin(); first != m_gasCosts.cend(); ++first) + { + auto second = first; + for (++second; second != m_gasCosts.cend(); ++second) + if (first->first->getLocation().intersects(second->first->getLocation())) + { + BOOST_CHECK_MESSAGE(false, "Source locations should not overlap!"); + SourceReferenceFormatter::printSourceLocation(cout, first->first->getLocation(), m_compiler.getScanner()); + SourceReferenceFormatter::printSourceLocation(cout, second->first->getLocation(), m_compiler.getScanner()); + } + } +} + +BOOST_AUTO_TEST_SUITE_END() + +} +} +} From 5f4417de051beb337b47888587fbde8593e680b0 Mon Sep 17 00:00:00 2001 From: yann300 Date: Wed, 6 May 2015 11:39:02 +0200 Subject: [PATCH 23/47] - Fix small diff between GlobalReg and OwnedReg - add currentOwner() in OwnedReg --- alethzero/DappLoader.cpp | 6 +++++- mix/qml/DeploymentDialog.qml | 8 ++++---- mix/qml/js/NetworkDeployment.js | 4 ++-- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/alethzero/DappLoader.cpp b/alethzero/DappLoader.cpp index 7c754f8f5..a91beb2f7 100644 --- a/alethzero/DappLoader.cpp +++ b/alethzero/DappLoader.cpp @@ -69,7 +69,11 @@ DappLocation DappLoader::resolveAppUri(QString const& _uri) string32 name = ZeroString32; QByteArray utf8 = parts[partIndex].toUtf8(); std::copy(utf8.data(), utf8.data() + utf8.size(), name.data()); - address = abiOut
(web3()->ethereum()->call(address, abiIn("subRegistrar(bytes32)", name)).output); + if (address != m_nameReg) + address = abiOut
(web3()->ethereum()->call(address, abiIn("subRegistrar(bytes32)", name)).output); + else + address = abiOut
(web3()->ethereum()->call(address, abiIn("register(bytes32)", name)).output); + domainParts.append(parts[partIndex]); if (!address) { diff --git a/mix/qml/DeploymentDialog.qml b/mix/qml/DeploymentDialog.qml index 830af2980..1fbde3ac9 100644 --- a/mix/qml/DeploymentDialog.qml +++ b/mix/qml/DeploymentDialog.qml @@ -18,9 +18,9 @@ Dialog { height: 400 visible: false property int ownedRegistrarDeployGas: 1179075 // TODO: Use sol library to calculate gas requirement for each tr. - property int ownedRegistrarSetSubRegistrarGas: 44719 - property int ownedRegistrarSetContentHashGas: 43691 - property int urlHintSuggestUrlGas: 62832 + property int ownedRegistrarSetSubRegistrarGas: 50000 + property int ownedRegistrarSetContentHashGas: 50000 + property int urlHintSuggestUrlGas: 70000 property alias applicationUrlEth: applicationUrlEth.text property alias applicationUrlHttp: applicationUrlHttp.text property alias localPackageUrl: localPackageUrl.text @@ -300,7 +300,7 @@ Dialog { { Layout.preferredWidth: 350 id: registrarAddr - text: "c6d9d2cd449a754c494264e1809c50e34d64562b" + text: "ab69f864e49fc4294d18355c4bafb0b91b5e629b" visible: false } diff --git a/mix/qml/js/NetworkDeployment.js b/mix/qml/js/NetworkDeployment.js index b43dd3637..8a833e144 100644 --- a/mix/qml/js/NetworkDeployment.js +++ b/mix/qml/js/NetworkDeployment.js @@ -382,7 +382,7 @@ function continueRegistration(dappUrl, addr, callBack, checkOnly) var errorTxt; if (res[0].result === "0x") { - errorTxt = qsTr("Error when creating new owned regsitrar. Please use the regsitration Dapp. Aborting"); + errorTxt = qsTr("Error when creating new owned registrar. Please use the registration Dapp. Aborting"); deploymentError(errorTxt); console.log(errorTxt); callBack(false, "ownedregistrar_creationfailed"); @@ -408,7 +408,7 @@ function continueRegistration(dappUrl, addr, callBack, checkOnly) requests.push({ jsonrpc: "2.0", method: "eth_sendTransaction", - params: [ { "from": deploymentDialog.currentAccount, "gas": "0x" + gasCost, "code": "0x600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000163317815561058990819061003990396000f3007c010000000000000000000000000000000000000000000000000000000060003504630198489281146100a757806302571be3146100d957806321f8a721146100e35780632dff6941146100ed5780633b3b57de1461010d5780635a3a05bd1461013d5780635fd4b08a1461017057806389a69c0e1461017c578063b5c645bd146101b0578063be99a9801461022c578063c3d014d614610264578063d93e75731461029857005b73ffffffffffffffffffffffffffffffffffffffff600435166000908152600160205260409020548060005260206000f35b6000808052602081f35b6000808052602081f35b600435600090815260026020819052604090912001548060005260206000f35b600435600090815260026020908152604082205473ffffffffffffffffffffffffffffffffffffffff1680835291f35b600435600090815260026020908152604082206001015473ffffffffffffffffffffffffffffffffffffffff1680835291f35b60008060005260206000f35b6000546102c89060043590602435903373ffffffffffffffffffffffffffffffffffffffff90811691161461052557610585565b600435600090815260026020819052604090912080546001820154919092015473ffffffffffffffffffffffffffffffffffffffff9283169291909116908273ffffffffffffffffffffffffffffffffffffffff166000528173ffffffffffffffffffffffffffffffffffffffff166020528060405260606000f35b6000546102ce906004359060243590604435903373ffffffffffffffffffffffffffffffffffffffff9081169116146102e0576103af565b6000546102d49060043590602435903373ffffffffffffffffffffffffffffffffffffffff9081169116146103b4576103f1565b6000546102da90600435903373ffffffffffffffffffffffffffffffffffffffff9081169116146103f557610522565b60006000f35b60006000f35b60006000f35b60006000f35b600083815260026020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016831790558061034757827fa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc60006040a26103ae565b73ffffffffffffffffffffffffffffffffffffffff8216837ff63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a854560006040a373ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090208390555b5b505050565b600082815260026020819052604080832090910183905583917fa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc91a25b5050565b60008181526002602090815260408083205473ffffffffffffffffffffffffffffffffffffffff16835260019091529020548114610432576104b2565b6000818152600260205260408082205473ffffffffffffffffffffffffffffffffffffffff169183917ff63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a85459190a360008181526002602090815260408083205473ffffffffffffffffffffffffffffffffffffffff16835260019091528120555b600081815260026020819052604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168255600182018054909116905590910182905582917fa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc91a25b50565b60008281526002602052604080822060010180547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905583917fa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc91a25b505056" } ], + params: [ { "from": deploymentDialog.currentAccount, "gas": "0x" + gasCost, "code": "0x600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016331781556105cd90819061003990396000f3007c010000000000000000000000000000000000000000000000000000000060003504630198489281146100b257806321f8a721146100e45780632dff6941146100ee5780633b3b57de1461010e5780635a3a05bd1461013e5780635fd4b08a146101715780637dd564111461017d57806389a69c0e14610187578063b387ef92146101bb578063b5c645bd146101f4578063be99a98014610270578063c3d014d6146102a8578063d93e7573146102dc57005b73ffffffffffffffffffffffffffffffffffffffff600435166000908152600160205260409020548060005260206000f35b6000808052602081f35b600435600090815260026020819052604090912001548060005260206000f35b600435600090815260026020908152604082205473ffffffffffffffffffffffffffffffffffffffff1680835291f35b600435600090815260026020908152604082206001015473ffffffffffffffffffffffffffffffffffffffff1680835291f35b60008060005260206000f35b6000808052602081f35b60005461030c9060043590602435903373ffffffffffffffffffffffffffffffffffffffff908116911614610569576105c9565b60005473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff1660005260206000f35b600435600090815260026020819052604090912080546001820154919092015473ffffffffffffffffffffffffffffffffffffffff9283169291909116908273ffffffffffffffffffffffffffffffffffffffff166000528173ffffffffffffffffffffffffffffffffffffffff166020528060405260606000f35b600054610312906004359060243590604435903373ffffffffffffffffffffffffffffffffffffffff90811691161461045457610523565b6000546103189060043590602435903373ffffffffffffffffffffffffffffffffffffffff90811691161461052857610565565b60005461031e90600435903373ffffffffffffffffffffffffffffffffffffffff90811691161461032457610451565b60006000f35b60006000f35b60006000f35b60006000f35b60008181526002602090815260408083205473ffffffffffffffffffffffffffffffffffffffff16835260019091529020548114610361576103e1565b6000818152600260205260408082205473ffffffffffffffffffffffffffffffffffffffff169183917ff63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a85459190a360008181526002602090815260408083205473ffffffffffffffffffffffffffffffffffffffff16835260019091528120555b600081815260026020819052604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168255600182018054909116905590910182905582917fa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc91a25b50565b600083815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001683179055806104bb57827fa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc60006040a2610522565b73ffffffffffffffffffffffffffffffffffffffff8216837ff63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a854560006040a373ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090208390555b5b505050565b600082815260026020819052604080832090910183905583917fa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc91a25b5050565b60008281526002602052604080822060010180547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905583917fa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc91a25b505056" } ], id: jsonRpcRequestId++ }); From 3af40c33078bdfd7de0f04b6f6d43f8a205cd7f3 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 6 May 2015 11:59:59 +0200 Subject: [PATCH 24/47] package solc, eth, ethminer, rlp && abi in cpack nsis installer --- CMakeLists.txt | 8 +++++++- abi/CMakeLists.txt | 3 +-- eth/CMakeLists.txt | 3 +-- ethminer/CMakeLists.txt | 3 +-- rlp/CMakeLists.txt | 3 +-- solc/CMakeLists.txt | 2 +- 6 files changed, 12 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ee10aba1e..0191b110a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -401,7 +401,13 @@ if (WIN32) # our stuff set(CPACK_COMPONENT_ALETHZERO_GROUP "Applications") set(CPACK_COMPONENT_MIX_GROUP "Applications") - set(CPACK_COMPONENTS_ALL alethzero mix) + set(CPACK_COMPONENT_SOLC_GROUP "CLI") + set(CPACK_COMPONENT_ETH_GROUP "CLI") + set(CPACK_COMPONENT_ETHMINER_GROUP "CLI") + set(CPACK_COMPONENT_RLP_GROUP "CLI") + set(CPACK_COMPONENT_ABI_GROUP "CLI") + + set(CPACK_COMPONENTS_ALL alethzero mix solc eth ethminer rlp abi) # nsis specific stuff set(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} ethereum") diff --git a/abi/CMakeLists.txt b/abi/CMakeLists.txt index 82c7c4240..47c581b5b 100644 --- a/abi/CMakeLists.txt +++ b/abi/CMakeLists.txt @@ -12,5 +12,4 @@ add_executable(${EXECUTABLE} ${SRC_LIST}) target_link_libraries(${EXECUTABLE} ethereum) -install( TARGETS ${EXECUTABLE} DESTINATION bin) - +eth_install_executable(${EXECUTABLE}) diff --git a/eth/CMakeLists.txt b/eth/CMakeLists.txt index 962d55373..06c0c9989 100644 --- a/eth/CMakeLists.txt +++ b/eth/CMakeLists.txt @@ -37,5 +37,4 @@ if (DEFINED WIN32 AND NOT DEFINED CMAKE_COMPILER_IS_MINGW) eth_copy_dlls("${EXECUTABLE}" MHD_DLLS) endif() -install( TARGETS ${EXECUTABLE} DESTINATION bin ) - +eth_install_executable(${EXECUTABLE}) diff --git a/ethminer/CMakeLists.txt b/ethminer/CMakeLists.txt index cd8919bb2..7467578fc 100644 --- a/ethminer/CMakeLists.txt +++ b/ethminer/CMakeLists.txt @@ -37,5 +37,4 @@ if (DEFINED WIN32 AND NOT DEFINED CMAKE_COMPILER_IS_MINGW) eth_copy_dlls("${EXECUTABLE}" MHD_DLLS) endif() -install( TARGETS ${EXECUTABLE} DESTINATION bin ) - +eth_install_executable(${EXECUTABLE}) diff --git a/rlp/CMakeLists.txt b/rlp/CMakeLists.txt index 0e2b5f57b..247804dbc 100644 --- a/rlp/CMakeLists.txt +++ b/rlp/CMakeLists.txt @@ -12,5 +12,4 @@ add_executable(${EXECUTABLE} ${SRC_LIST}) target_link_libraries(${EXECUTABLE} devcrypto) -install( TARGETS ${EXECUTABLE} DESTINATION bin) - +eth_install_executable(${EXECUTABLE}) diff --git a/solc/CMakeLists.txt b/solc/CMakeLists.txt index c8e74ed71..14e95a4e7 100644 --- a/solc/CMakeLists.txt +++ b/solc/CMakeLists.txt @@ -17,7 +17,7 @@ target_link_libraries(${EXECUTABLE} ${Boost_FILESYSTEM_LIBRARIES}) target_link_libraries(${EXECUTABLE} ${Boost_PROGRAM_OPTIONS_LIBRARIES}) target_link_libraries(${EXECUTABLE} solidity) -install( TARGETS ${EXECUTABLE} DESTINATION bin ) +eth_install_executable(${EXECUTABLE}) add_library(soljson jsonCompiler.cpp ${HEADERS}) target_link_libraries(soljson solidity) From 4ab07c6dd3b36d036da40a24da32bab56dd7a79d Mon Sep 17 00:00:00 2001 From: chriseth Date: Wed, 6 May 2015 13:56:40 +0200 Subject: [PATCH 25/47] Use std::array. --- libsolidity/StructuralGasEstimator.cpp | 6 +++--- libsolidity/StructuralGasEstimator.h | 7 +++++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/libsolidity/StructuralGasEstimator.cpp b/libsolidity/StructuralGasEstimator.cpp index 2cf8c2a81..c90981a72 100644 --- a/libsolidity/StructuralGasEstimator.cpp +++ b/libsolidity/StructuralGasEstimator.cpp @@ -31,7 +31,7 @@ using namespace dev; using namespace dev::eth; using namespace dev::solidity; -map StructuralGasEstimator::performEstimation( +StructuralGasEstimator::ASTGasConsumptionSelfAccumulated StructuralGasEstimator::performEstimation( AssemblyItems const& _items, vector const& _ast ) @@ -42,7 +42,7 @@ map StructuralGasEstimator::perform for (auto const& item: _items) particularCosts[item.getLocation()] += meter.estimateMax(item); - map gasCosts; + ASTGasConsumptionSelfAccumulated gasCosts; auto onNode = [&](ASTNode const& _node) { gasCosts[&_node][0] = gasCosts[&_node][1] = particularCosts[_node.getLocation()]; @@ -60,7 +60,7 @@ map StructuralGasEstimator::perform } map StructuralGasEstimator::breakToStatementLevel( - map const& _gasCosts, + ASTGasConsumptionSelfAccumulated const& _gasCosts, vector const& _roots ) { diff --git a/libsolidity/StructuralGasEstimator.h b/libsolidity/StructuralGasEstimator.h index b9e976432..df1ae509d 100644 --- a/libsolidity/StructuralGasEstimator.h +++ b/libsolidity/StructuralGasEstimator.h @@ -24,6 +24,7 @@ #include #include +#include #include #include #include @@ -37,11 +38,13 @@ class StructuralGasEstimator { public: using ASTGasConsumption = std::map; + using ASTGasConsumptionSelfAccumulated = + std::map>; /// Estimates the gas consumption for every assembly item in the given assembly and stores /// it by source location. /// @returns a mapping from each AST node to a pair of its particular and syntactically accumulated gas costs. - std::map performEstimation( + ASTGasConsumptionSelfAccumulated performEstimation( eth::AssemblyItems const& _items, std::vector const& _ast ); @@ -50,7 +53,7 @@ public: /// 1. source locations of statements that do not contain other statements /// 2. maximal source locations that do not overlap locations coming from the first rule ASTGasConsumption breakToStatementLevel( - std::map const& _gasCosts, + ASTGasConsumptionSelfAccumulated const& _gasCosts, std::vector const& _roots ); }; From c57305025fcd89ba7f569debb91b277f423d8cae Mon Sep 17 00:00:00 2001 From: chriseth Date: Wed, 6 May 2015 13:56:55 +0200 Subject: [PATCH 26/47] Style. --- libsolidity/ASTPrinter.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libsolidity/ASTPrinter.cpp b/libsolidity/ASTPrinter.cpp index f21ec5e37..0a170f8e1 100644 --- a/libsolidity/ASTPrinter.cpp +++ b/libsolidity/ASTPrinter.cpp @@ -30,7 +30,8 @@ namespace dev namespace solidity { -ASTPrinter::ASTPrinter(ASTNode const& _ast, +ASTPrinter::ASTPrinter( + ASTNode const& _ast, string const& _source, StructuralGasEstimator::ASTGasConsumption const& _gasCosts ): m_indentation(0), m_source(_source), m_ast(&_ast), m_gasCosts(_gasCosts) From cb2e313ae32ba4088c173c7a99ac23d76983a967 Mon Sep 17 00:00:00 2001 From: arkpar Date: Wed, 6 May 2015 10:33:30 +0200 Subject: [PATCH 27/47] Fixed accessing deleted widgets --- alethzero/MainWin.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/alethzero/MainWin.cpp b/alethzero/MainWin.cpp index de5f149ce..42951279b 100644 --- a/alethzero/MainWin.cpp +++ b/alethzero/MainWin.cpp @@ -143,10 +143,6 @@ Main::Main(QWidget *parent) : // ui->log->addItem(QString::fromStdString(s)); }; -#if !ETH_FATDB - delete ui->dockWidget_accounts; -#endif - #if ETH_DEBUG m_servers.append("127.0.0.1:30300"); #endif @@ -203,6 +199,9 @@ Main::Main(QWidget *parent) : // QWebEngineInspector* inspector = new QWebEngineInspector(); // inspector->setPage(page); readSettings(); +#if !ETH_FATDB + removeDockWidget(ui->dockWidget_accounts); +#endif installWatches(); startTimer(100); From 807614bf55dcccab2a6f364b21f7f32902aeb876 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 6 May 2015 15:38:39 +0200 Subject: [PATCH 28/47] cpack package name starts with capital letter --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0191b110a..d1bf691d2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -389,6 +389,7 @@ endif() if (WIN32) # packaging stuff include(InstallRequiredSystemLibraries) + set(CPACK_PACKAGE_NAME "Ethereum") set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "ethereum") set(CPACK_PACKAGE_VENDOR "ethereum.org") set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.md") From ee03387457686442f6ae685da5b234ec9670de90 Mon Sep 17 00:00:00 2001 From: Gav Wood Date: Wed, 6 May 2015 15:54:37 +0200 Subject: [PATCH 29/47] ethashCL doesn't need memory to shadow each GPU. --- libethash-cl/ethash_cl_miner.cpp | 34 +++++++++++++++++++------------- libethash-cl/ethash_cl_miner.h | 7 +++---- libethcore/Ethash.cpp | 6 +++--- libethcore/EthashAux.cpp | 1 - 4 files changed, 26 insertions(+), 22 deletions(-) diff --git a/libethash-cl/ethash_cl_miner.cpp b/libethash-cl/ethash_cl_miner.cpp index 111f92529..42098e09d 100644 --- a/libethash-cl/ethash_cl_miner.cpp +++ b/libethash-cl/ethash_cl_miner.cpp @@ -88,6 +88,13 @@ std::string ethash_cl_miner::platform_info(unsigned _platformId, unsigned _devic return "{ \"platform\": \"" + platforms[platform_num].getInfo() + "\", \"device\": \"" + device.getInfo() + "\", \"version\": \"" + device_version + "\" }"; } +unsigned ethash_cl_miner::get_num_platforms() +{ + std::vector platforms; + cl::Platform::get(&platforms); + return platforms.size(); +} + unsigned ethash_cl_miner::get_num_devices(unsigned _platformId) { std::vector platforms; @@ -117,14 +124,11 @@ void ethash_cl_miner::finish() } } -bool ethash_cl_miner::init(ethash_params const& params, std::function _fillDAG, unsigned workgroup_size, unsigned _platformId, unsigned _deviceId) +bool ethash_cl_miner::init(uint8_t const* _dag, uint64_t _dagSize, unsigned workgroup_size, unsigned _platformId, unsigned _deviceId) { - // store params - m_params = params; - // get all platforms - std::vector platforms; - cl::Platform::get(&platforms); + std::vector platforms; + cl::Platform::get(&platforms); if (platforms.empty()) { cout << "No OpenCL platforms found." << endl; @@ -137,10 +141,10 @@ bool ethash_cl_miner::init(ethash_params const& params, std::function().c_str() << endl; - // get GPU device of the default platform - std::vector devices; + // get GPU device of the default platform + std::vector devices; platforms[_platformId].getDevices(CL_DEVICE_TYPE_ALL, &devices); - if (devices.empty()) + if (devices.empty()) { cout << "No OpenCL devices found." << endl; return false; @@ -171,7 +175,7 @@ bool ethash_cl_miner::init(ethash_params const& params, std::function _fillDAG, unsigned workgroup_size = 64, unsigned _platformId = 0, unsigned _deviceId = 0); - static std::string platform_info(unsigned _platformId = 0, unsigned _deviceId = 0); + static unsigned get_num_platforms(); static unsigned get_num_devices(unsigned _platformId = 0); + static std::string platform_info(unsigned _platformId = 0, unsigned _deviceId = 0); - + bool init(uint8_t const* _dag, uint64_t _dagSize, unsigned workgroup_size = 64, unsigned _platformId = 0, unsigned _deviceId = 0); void finish(); void hash(uint8_t* ret, uint8_t const* header, uint64_t nonce, unsigned count); void search(uint8_t const* header, uint64_t target, search_hook& hook); @@ -43,7 +43,6 @@ public: private: enum { c_max_search_results = 63, c_num_buffers = 2, c_hash_batch_size = 1024, c_search_batch_size = 1024*256 }; - ethash_params m_params; cl::Context m_context; cl::CommandQueue m_queue; cl::Kernel m_hash_kernel; diff --git a/libethcore/Ethash.cpp b/libethcore/Ethash.cpp index e932fced4..011f0b9e0 100644 --- a/libethcore/Ethash.cpp +++ b/libethcore/Ethash.cpp @@ -309,10 +309,10 @@ void Ethash::GPUMiner::workLoop() delete m_miner; m_miner = new ethash_cl_miner; - auto p = EthashAux::params(m_minerSeed); - auto cb = [&](void* d) { EthashAux::full(m_minerSeed, bytesRef((byte*)d, p.full_size)); }; unsigned device = instances() > 1 ? index() : s_deviceId; - m_miner->init(p, cb, 32, s_platformId, device); + + EthashAux::FullType dag = EthashAux::full(m_minerSeed); + m_miner->init(dag->data.data(), dag->data.size(), 32, s_platformId, device); } uint64_t upper64OfBoundary = (uint64_t)(u64)((u256)w.boundary >> 192); diff --git a/libethcore/EthashAux.cpp b/libethcore/EthashAux.cpp index ad7dfe53b..0b9af98ac 100644 --- a/libethcore/EthashAux.cpp +++ b/libethcore/EthashAux.cpp @@ -133,7 +133,6 @@ EthashAux::LightAllocation::~LightAllocation() ethash_delete_light(light); } - EthashAux::FullType EthashAux::full(BlockInfo const& _header, bytesRef _dest, bool _createIfMissing) { return full(_header.seedHash(), _dest, _createIfMissing); From 61cfa1517df949d3edf0b42a6cbe14b9abf470b4 Mon Sep 17 00:00:00 2001 From: Gav Wood Date: Wed, 6 May 2015 15:54:47 +0200 Subject: [PATCH 30/47] Initial stab at KeyManager. --- exp/main.cpp | 90 +++++++++++++++++++++++++++++++++++- libdevcrypto/Common.cpp | 14 ++++-- libdevcrypto/Common.h | 13 ++++-- libdevcrypto/CryptoPP.cpp | 4 +- test/libdevcrypto/crypto.cpp | 4 +- 5 files changed, 112 insertions(+), 13 deletions(-) diff --git a/exp/main.cpp b/exp/main.cpp index 366c5b2ff..973679f3d 100644 --- a/exp/main.cpp +++ b/exp/main.cpp @@ -33,6 +33,7 @@ #endif #include #include +#include #include #include #include @@ -43,6 +44,7 @@ #include #include #include +#include #include #include #include @@ -58,8 +60,94 @@ using namespace dev::eth; using namespace dev::p2p; using namespace dev::shh; namespace js = json_spirit; +namespace fs = boost::filesystem; -#if 0 +#if 1 + +inline h128 fromUUID(std::string const& _uuid) { return h128(boost::replace_all_copy(_uuid, "-", "")); } + +class KeyManager: public Worker +{ +public: + KeyManager() { readKeys(); } + ~KeyManager() {} + + Secret secret(h128 const& _uuid, std::string const& _pass) + { + auto it = m_keys.find(_uuid); + if (it == m_keys.end()) + return Secret(); + return Secret(decrypt(it->second, _pass)); + } + +private: + void readKeys(std::string const& _keysPath = getDataDir("web3") + "/keys") + { + fs::path p(_keysPath); + js::mValue v; + for (fs::directory_iterator it(p); it != fs::directory_iterator(); ++it) + if (is_regular_file(it->path())) + { + cdebug << "Reading" << it->path(); + js::read_string(contentsString(it->path().string()), v); + js::mObject o = v.get_obj(); + int version = o.count("Version") ? stoi(o["Version"].get_str()) : o.count("version") ? o["version"].get_int() : 0; + if (version == 2) + m_keys[fromUUID(o["id"].get_str())] = o["crypto"]; + else + cwarn << "Cannot read key version" << version; + } + } + + static bytes decrypt(js::mValue const& _v, std::string const& _pass) + { + js::mObject o = _v.get_obj(); + bytes pKey; + if (o["kdf"].get_str() == "pbkdf2") + { + auto params = o["kdfparams"].get_obj(); + unsigned iterations = params["c"].get_int(); + bytes salt = fromHex(params["salt"].get_str()); + pKey = pbkdf2(_pass, salt, iterations).asBytes(); + } + else + { + cwarn << "Unknown KDF" << o["kdf"].get_str() << "not supported."; + return bytes(); + } + + // TODO check MAC + h256 mac(o["mac"].get_str()); + (void)mac; + + bytes cipherText = fromHex(o["ciphertext"].get_str()); + bytes ret; + if (o["cipher"].get_str() == "aes-128-cbc") + { + auto params = o["cipherparams"].get_obj(); + h128 key(sha3(h128(pKey, h128::AlignRight)), h128::AlignRight); + h128 iv(params["iv"].get_str()); + decryptSymNoAuth(key, iv, &cipherText, ret); + } + else + { + cwarn << "Unknown cipher" << o["cipher"].get_str() << "not supported."; + return bytes(); + } + + return ret; + } + + std::map m_keys; +}; + +int main() +{ + KeyManager keyman; + cdebug << "Secret key for 0498f19a-59db-4d54-ac95-33901b4f1870 is " << keyman.secret(fromUUID("0498f19a-59db-4d54-ac95-33901b4f1870"), "foo"); +} + +#elif 0 int main() { DownloadMan man; diff --git a/libdevcrypto/Common.cpp b/libdevcrypto/Common.cpp index ec6a9121b..48dd5c384 100644 --- a/libdevcrypto/Common.cpp +++ b/libdevcrypto/Common.cpp @@ -112,13 +112,13 @@ bool dev::decryptSym(Secret const& _k, bytesConstRef _cipher, bytes& o_plain) return decrypt(_k, _cipher, o_plain); } -h128 dev::encryptSymNoAuth(Secret const& _k, bytesConstRef _plain, bytes& o_cipher) +h128 dev::encryptSymNoAuth(h128 const& _k, bytesConstRef _plain, bytes& o_cipher) { h128 iv(Nonce::get()); return encryptSymNoAuth(_k, _plain, o_cipher, iv); } -h128 dev::encryptSymNoAuth(Secret const& _k, bytesConstRef _plain, bytes& o_cipher, h128 const& _iv) +h128 dev::encryptSymNoAuth(h128 const& _k, bytesConstRef _plain, bytes& o_cipher, h128 const& _iv) { o_cipher.resize(_plain.size()); @@ -139,7 +139,7 @@ h128 dev::encryptSymNoAuth(Secret const& _k, bytesConstRef _plain, bytes& o_ciph } } -bool dev::decryptSymNoAuth(Secret const& _k, h128 const& _iv, bytesConstRef _cipher, bytes& o_plaintext) +bool dev::decryptSymNoAuth(h128 const& _k, h128 const& _iv, bytesConstRef _cipher, bytes& o_plaintext) { o_plaintext.resize(_cipher.size()); @@ -175,6 +175,14 @@ bool dev::verify(Public const& _p, Signature const& _s, h256 const& _hash) return s_secp256k1.verify(_p, _s, _hash.ref(), true); } +h256 dev::pbkdf2(string const& _pass, bytes const& _salt, unsigned _iterations) +{ + h256 ret; + PKCS5_PBKDF2_HMAC pbkdf; + pbkdf.DeriveKey(ret.data(), ret.size, 0, (byte*)_pass.data(), _pass.size(), _salt.data(), _salt.size(), _iterations); + return ret; +} + KeyPair KeyPair::create() { static boost::thread_specific_ptr s_eng; diff --git a/libdevcrypto/Common.h b/libdevcrypto/Common.h index 3159f4e7e..50072c1bf 100644 --- a/libdevcrypto/Common.h +++ b/libdevcrypto/Common.h @@ -103,13 +103,13 @@ void encryptECIES(Public const& _k, bytesConstRef _plain, bytes& o_cipher); bool decryptECIES(Secret const& _k, bytesConstRef _cipher, bytes& o_plaintext); /// Encrypts payload with random IV/ctr using AES128-CTR. -h128 encryptSymNoAuth(Secret const& _k, bytesConstRef _plain, bytes& o_cipher); +h128 encryptSymNoAuth(h128 const& _k, bytesConstRef _plain, bytes& o_cipher); /// Encrypts payload with specified IV/ctr using AES128-CTR. -h128 encryptSymNoAuth(Secret const& _k, bytesConstRef _plain, bytes& o_cipher, h128 const& _iv); +h128 encryptSymNoAuth(h128 const& _k, bytesConstRef _plain, bytes& o_cipher, h128 const& _iv); -/// Decrypts payload with specified IV/ctr. -bool decryptSymNoAuth(Secret const& _k, h128 const& _iv, bytesConstRef _cipher, bytes& o_plaintext); +/// Decrypts payload with specified IV/ctr using AES128-CTR. +bool decryptSymNoAuth(h128 const& _k, h128 const& _iv, bytesConstRef _cipher, bytes& o_plaintext); /// Recovers Public key from signed message hash. Public recover(Signature const& _sig, h256 const& _hash); @@ -120,6 +120,9 @@ Signature sign(Secret const& _k, h256 const& _hash); /// Verify signature. bool verify(Public const& _k, Signature const& _s, h256 const& _hash); +/// Derive key via PBKDF2. +h256 pbkdf2(std::string const& _pass, bytes const& _salt, unsigned _iterations); + /// Simple class that represents a "key pair". /// All of the data of the class can be regenerated from the secret key (m_secret) alone. /// Actually stores a tuplet of secret, public and address (the right 160-bits of the public). @@ -164,7 +167,7 @@ struct InvalidState: public dev::Exception {}; /// Key derivation h256 kdf(Secret const& _priv, h256 const& _hash); - + /** * @brief Generator for nonce material */ diff --git a/libdevcrypto/CryptoPP.cpp b/libdevcrypto/CryptoPP.cpp index ff22b9b45..e89857502 100644 --- a/libdevcrypto/CryptoPP.cpp +++ b/libdevcrypto/CryptoPP.cpp @@ -79,7 +79,7 @@ void Secp256k1::encryptECIES(Public const& _k, bytes& io_cipher) ctx.Final(mKey.data()); bytes cipherText; - encryptSymNoAuth(*(Secret*)eKey.data(), bytesConstRef(&io_cipher), cipherText, h128()); + encryptSymNoAuth(h128(eKey), bytesConstRef(&io_cipher), cipherText, h128()); if (cipherText.empty()) return; @@ -139,7 +139,7 @@ bool Secp256k1::decryptECIES(Secret const& _k, bytes& io_text) if (mac[i] != msgMac[i]) return false; - decryptSymNoAuth(*(Secret*)eKey.data(), iv, cipherNoIV, plain); + decryptSymNoAuth(h128(eKey), iv, cipherNoIV, plain); io_text.resize(plain.size()); io_text.swap(plain); diff --git a/test/libdevcrypto/crypto.cpp b/test/libdevcrypto/crypto.cpp index dbbc2dfa0..96826bdf9 100644 --- a/test/libdevcrypto/crypto.cpp +++ b/test/libdevcrypto/crypto.cpp @@ -588,7 +588,7 @@ BOOST_AUTO_TEST_CASE(handshakeNew) BOOST_AUTO_TEST_CASE(ecies_aes128_ctr_unaligned) { - Secret encryptK(sha3("...")); + h128 encryptK(sha3("..."), h128::AlignLeft); h256 egressMac(sha3("+++")); // TESTING: send encrypt magic sequence bytes magic {0x22,0x40,0x08,0x91}; @@ -610,7 +610,7 @@ BOOST_AUTO_TEST_CASE(ecies_aes128_ctr_unaligned) BOOST_AUTO_TEST_CASE(ecies_aes128_ctr) { - Secret k(sha3("0xAAAA")); + h128 k(sha3("0xAAAA"), h128::AlignLeft); string m = "AAAAAAAAAAAAAAAA"; bytesConstRef msg((byte*)m.data(), m.size()); From 8478c2e73a966e761cd8e8da4ba496645b8789d8 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 6 May 2015 16:34:24 +0200 Subject: [PATCH 31/47] program files x64 --- CMakeLists.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index d1bf691d2..da954a955 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -411,6 +411,14 @@ if (WIN32) set(CPACK_COMPONENTS_ALL alethzero mix solc eth ethminer rlp abi) # nsis specific stuff + if (CMAKE_CL_64) + set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") + set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION} (Win64)") + else () + set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") + set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION}") + endif() + set(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} ethereum") set(CPACK_NSIS_HELP_LINK "https://github.com/ethereum/cpp-ethereum") set(CPACK_NSIS_URL_INFO_ABOUT "https://github.com/ethereum/cpp-ethereum") From 7aa4da008bc604ffadd104b5b01a74f4f8816294 Mon Sep 17 00:00:00 2001 From: Gav Wood Date: Wed, 6 May 2015 17:55:06 +0200 Subject: [PATCH 32/47] Minor fix for mining. --- libethereum/BlockChain.cpp | 4 +++- libethereum/CommonNet.h | 2 +- libethereum/EthereumPeer.cpp | 44 +++++++++++++++++++++++++++++++++++- 3 files changed, 47 insertions(+), 3 deletions(-) diff --git a/libethereum/BlockChain.cpp b/libethereum/BlockChain.cpp index d92a3835f..32f346601 100644 --- a/libethereum/BlockChain.cpp +++ b/libethereum/BlockChain.cpp @@ -610,7 +610,6 @@ ImportRoute BlockChain::import(bytes const& _block, OverlayDB const& _db, Import } clog(BlockChainNote) << " Imported and best" << td << " (#" << bi.number << "). Has" << (details(bi.parentHash).children.size() - 1) << "siblings. Route:" << route; - noteCanonChanged(); StructuredLogger::chainNewHead( bi.headerHash(WithoutNonce).abridged(), @@ -643,6 +642,9 @@ ImportRoute BlockChain::import(bytes const& _block, OverlayDB const& _db, Import cnote << "checkBest:" << checkBest; #endif + if (route.size()) + noteCanonChanged(); + if (isKnown(bi.hash()) && !details(bi.hash())) { clog(BlockChainDebug) << "Known block just inserted has no details."; diff --git a/libethereum/CommonNet.h b/libethereum/CommonNet.h index 2083e9919..0b1469f19 100644 --- a/libethereum/CommonNet.h +++ b/libethereum/CommonNet.h @@ -56,7 +56,7 @@ class EthereumPeer; enum { StatusPacket = 0, - GetTransactionsPacket, + NewBlockHashesPacket, TransactionsPacket, GetBlockHashesPacket, BlockHashesPacket, diff --git a/libethereum/EthereumPeer.cpp b/libethereum/EthereumPeer.cpp index 249831540..a3327bbf8 100644 --- a/libethereum/EthereumPeer.cpp +++ b/libethereum/EthereumPeer.cpp @@ -326,7 +326,6 @@ bool EthereumPeer::interpret(unsigned _id, RLP const& _r) transition(Asking::Nothing); break; } - case GetTransactionsPacket: break; // DEPRECATED. case TransactionsPacket: { unsigned itemCount = _r.itemCount(); @@ -565,6 +564,49 @@ bool EthereumPeer::interpret(unsigned _id, RLP const& _r) } break; } +/* case NewBlockHashesPacket: + { + clog(NetMessageSummary) << "NewBlock: " << h; + if (_r.itemCount() == 1) + disable("NewBlock without any data fields."); + else if (host()->isSyncing()) + clog(NetMessageSummary) << "Ignoring since we're already downloading."; + else + { + unsigned knowns = 0; + unsigned unknowns = 0; + for (unsigned i = 0; i < itemCount; ++i) + { + addRating(1); + auto h = _r[i].toHash(); + auto status = host()->m_bq.blockStatus(h); + if (status == QueueStatus::Importing || status == QueueStatus::Ready || host()->m_chain.isKnown(h)) + { + clog(NetMessageSummary) << "block hash ready:" << h << ". Start blocks download..."; + transition(Asking::Blocks); + return true; + } + else if (status == QueueStatus::Bad) + { + cwarn << "block hash bad!" << h << ". Bailing..."; + transition(Asking::Nothing); + return true; + } + else if (status == QueueStatus::Unknown) + { + unknowns++; + m_syncingNeededBlocks.push_back(h); + } + else + knowns++; + m_syncingLastReceivedHash = h; + } + clog(NetMessageSummary) << knowns << "knowns," << unknowns << "unknowns; now at" << m_syncingLastReceivedHash; + transition(Asking::Blocks); + return true; + } + break; + }*/ default: return false; } From 08a9282dac4d414b0a16e95c26707a4d9d74a89e Mon Sep 17 00:00:00 2001 From: Gav Wood Date: Wed, 6 May 2015 18:09:42 +0200 Subject: [PATCH 33/47] Fixed mining in paranoid mode. --- libethereum/BlockChain.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/libethereum/BlockChain.cpp b/libethereum/BlockChain.cpp index 32f346601..c7c8a23ac 100644 --- a/libethereum/BlockChain.cpp +++ b/libethereum/BlockChain.cpp @@ -474,7 +474,7 @@ ImportRoute BlockChain::import(bytes const& _block, OverlayDB const& _db, Import t.restart(); #endif -#if ETH_PARANOIA +#if ETH_PARANOIA || !ETH_TRUE checkConsistency(); #endif @@ -489,7 +489,7 @@ ImportRoute BlockChain::import(bytes const& _block, OverlayDB const& _db, Import ETH_WRITE_GUARDED(x_details) m_details[bi.parentHash].children.push_back(bi.hash()); -#if ETH_TIMED_IMPORTS +#if ETH_TIMED_IMPORTS || !ETH_TRUE collation = t.elapsed(); t.restart(); #endif @@ -497,18 +497,15 @@ ImportRoute BlockChain::import(bytes const& _block, OverlayDB const& _db, Import blocksBatch.Put(toSlice(bi.hash()), (ldb::Slice)ref(_block)); ETH_READ_GUARDED(x_details) extrasBatch.Put(toSlice(bi.parentHash, ExtraDetails), (ldb::Slice)dev::ref(m_details[bi.parentHash].rlp())); + extrasBatch.Put(toSlice(bi.hash(), ExtraDetails), (ldb::Slice)dev::ref(BlockDetails((unsigned)pd.number + 1, td, bi.parentHash, {}).rlp())); extrasBatch.Put(toSlice(bi.hash(), ExtraLogBlooms), (ldb::Slice)dev::ref(blb.rlp())); extrasBatch.Put(toSlice(bi.hash(), ExtraReceipts), (ldb::Slice)dev::ref(br.rlp())); -#if ETH_TIMED_IMPORTS +#if ETH_TIMED_IMPORTS || !ETH_TRUE writing = t.elapsed(); t.restart(); #endif - -#if ETH_PARANOIA - checkConsistency(); -#endif } #if ETH_CATCH catch (InvalidNonce const& _e) @@ -632,6 +629,10 @@ ImportRoute BlockChain::import(bytes const& _block, OverlayDB const& _db, Import m_lastBlockNumber = newLastBlockNumber; } +#if ETH_PARANOIA || !ETH_TRUE + checkConsistency(); +#endif + #if ETH_TIMED_IMPORTS checkBest = t.elapsed(); cnote << "Import took:" << total.elapsed(); @@ -642,7 +643,7 @@ ImportRoute BlockChain::import(bytes const& _block, OverlayDB const& _db, Import cnote << "checkBest:" << checkBest; #endif - if (route.size()) + if (!route.empty()) noteCanonChanged(); if (isKnown(bi.hash()) && !details(bi.hash())) From 73f1747198e3ae3d3cb77e5a8464f3de4acd7733 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 6 May 2015 20:22:36 +0200 Subject: [PATCH 34/47] changed ethereum -> Ethereum in nsis package --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index da954a955..a2b31d174 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -390,7 +390,7 @@ if (WIN32) # packaging stuff include(InstallRequiredSystemLibraries) set(CPACK_PACKAGE_NAME "Ethereum") - set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "ethereum") + set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Ethereum") set(CPACK_PACKAGE_VENDOR "ethereum.org") set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.md") set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") @@ -419,7 +419,7 @@ if (WIN32) set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION}") endif() - set(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} ethereum") + set(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} Ethereum") set(CPACK_NSIS_HELP_LINK "https://github.com/ethereum/cpp-ethereum") set(CPACK_NSIS_URL_INFO_ABOUT "https://github.com/ethereum/cpp-ethereum") set(CPACK_NSIS_CONTACT "ethereum.org") From ee1339c0cc1166e9ae10d7a7f056fca8a6459cde Mon Sep 17 00:00:00 2001 From: subtly Date: Wed, 6 May 2015 21:50:43 +0200 Subject: [PATCH 35/47] Add nodes directly to node table when creating network. --- libp2p/Host.cpp | 6 +++--- libp2p/NodeTable.cpp | 11 ++++++++++- libp2p/NodeTable.h | 6 ++++-- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/libp2p/Host.cpp b/libp2p/Host.cpp index 78c1102c1..56c111d3d 100644 --- a/libp2p/Host.cpp +++ b/libp2p/Host.cpp @@ -208,7 +208,7 @@ void Host::startPeerSession(Public const& _id, RLP const& _rlp, RLPXFrameIO* _io // create session so disconnects are managed auto ps = make_shared(this, _io, p, PeerSessionInfo({_id, clientVersion, _endpoint.address().to_string(), listenPort, chrono::steady_clock::duration(), _rlp[2].toSet(), 0, map()})); - if (protocolVersion != dev::p2p::c_protocolVersion) + if (protocolVersion < dev::p2p::c_protocolVersion) { ps->disconnect(IncompatibleProtocol); return; @@ -759,7 +759,7 @@ void Host::restoreNetwork(bytesConstRef _b) // todo: ipv6, bi::address_v6(i[0].toArray() Node n((NodeId)i[2], NodeIPEndpoint(bi::address_v4(i[0].toArray()), i[1].toInt(), i[1].toInt())); if (i.itemCount() == 3 && n.endpoint.isAllowed()) - m_nodeTable->addNode(n); + m_nodeTable->addNode(n, NodeTable::NodeRelation::Known); else if (i.itemCount() == 10) { n.required = i[3].toInt(); @@ -776,7 +776,7 @@ void Host::restoreNetwork(bytesConstRef _b) if (p->required) requirePeer(p->id, n.endpoint); else - m_nodeTable->addNode(*p.get()); + m_nodeTable->addNode(*p.get(), NodeTable::NodeRelation::Known); } } } diff --git a/libp2p/NodeTable.cpp b/libp2p/NodeTable.cpp index e324b8f86..9002ccee1 100644 --- a/libp2p/NodeTable.cpp +++ b/libp2p/NodeTable.cpp @@ -81,8 +81,17 @@ shared_ptr NodeTable::addNode(Public const& _pubk, NodeIPEndpoint con return addNode(node); } -shared_ptr NodeTable::addNode(Node const& _node) +shared_ptr NodeTable::addNode(Node const& _node, NodeRelation _relation) { + if (_relation) + { + shared_ptr ret(new NodeEntry(m_node, _node.id, _node.endpoint)); + ret->pending = false; + m_nodes[_node.id] = ret; + noteActiveNode(_node.id, _node.endpoint); + return ret; + } + // re-enable tcp checks when NAT hosts are handled by discover // we handle when tcp endpoint is 0 below if (_node.endpoint.address.to_string() == "0.0.0.0") diff --git a/libp2p/NodeTable.h b/libp2p/NodeTable.h index 07247462f..b1e6fc907 100644 --- a/libp2p/NodeTable.h +++ b/libp2p/NodeTable.h @@ -133,6 +133,8 @@ class NodeTable: UDPSocketEvents, public std::enable_shared_from_this using EvictionTimeout = std::pair; ///< First NodeId (NodeIdTimePoint) may be evicted and replaced with second NodeId. public: + enum NodeRelation { Unknown = 0, Known }; + /// Constructor requiring host for I/O, credentials, and IP Address and port to listen on. NodeTable(ba::io_service& _io, KeyPair const& _alias, NodeIPEndpoint const& _endpoint); ~NodeTable(); @@ -149,8 +151,8 @@ public: /// Add node. Node will be pinged and empty shared_ptr is returned if NodeId is uknown. std::shared_ptr addNode(Public const& _pubk, NodeIPEndpoint const& _ep); - /// Add node. Node will be pinged and empty shared_ptr is returned if node has never been seen. - std::shared_ptr addNode(Node const& _node); + /// Add node. Node will be pinged and empty shared_ptr is returned if node has never been seen or NodeId is empty. + std::shared_ptr addNode(Node const& _node, NodeRelation _relation = NodeRelation::Unknown); /// To be called when node table is empty. Runs node discovery with m_node.id as the target in order to populate node-table. void discover(); From ec9a592536a1f6dc65eb264de17e5e306a0b725e Mon Sep 17 00:00:00 2001 From: subtly Date: Wed, 6 May 2015 22:06:47 +0200 Subject: [PATCH 36/47] Prevent mass-connections, which otherwise, would result in all connections then being mass-dropped. --- libp2p/Host.cpp | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/libp2p/Host.cpp b/libp2p/Host.cpp index 56c111d3d..30501eed6 100644 --- a/libp2p/Host.cpp +++ b/libp2p/Host.cpp @@ -226,7 +226,12 @@ void Host::startPeerSession(Public const& _id, RLP const& _rlp, RLPXFrameIO* _io return; } - if (peerCount() > 9 * m_idealPeerCount) + unsigned pendingCount = 0; + { + Guard l(x_pendingNodeConns); + pendingCount = m_pendingPeerConns.size(); + } + if (peerCount() + pendingCount > 9 * m_idealPeerCount) { ps->disconnect(TooManyPeers); return; @@ -271,7 +276,12 @@ void Host::onNodeTableEvent(NodeId const& _n, NodeTableEventType const& _e) clog(NetNote) << "p2p.host.peers.events.peerAdded " << _n << p->endpoint; } } - if (peerCount() < m_idealPeerCount) + unsigned pendingCount = 0; + { + Guard l(x_pendingNodeConns); + pendingCount = m_pendingPeerConns.size(); + } + if (peerCount() + pendingCount < m_idealPeerCount) connect(p); } } @@ -578,7 +588,12 @@ void Host::run(boost::system::error_code const&) // is always live and to ensure reputation and fallback timers are properly // updated. // disconnectLatePeers(); - int openSlots = m_idealPeerCount - peerCount(); + unsigned pendingCount = 0; + { + Guard l(x_pendingNodeConns); + pendingCount = m_pendingPeerConns.size(); + } + int openSlots = m_idealPeerCount - peerCount() - pendingCount; if (openSlots > 0) { list> toConnect; From 82ca50d234b981d219c3ef075b80ceaef70227d0 Mon Sep 17 00:00:00 2001 From: Gav Wood Date: Wed, 6 May 2015 22:21:34 +0200 Subject: [PATCH 37/47] NewBlockHashes packet, basic implementation. --- alethzero/Main.ui | 74 +++++++++++++++++++----------------- alethzero/MainWin.cpp | 1 + eth/main.cpp | 4 +- libethereum/EthereumHost.cpp | 51 +++++++++++++++---------- libethereum/EthereumHost.h | 4 +- libethereum/EthereumPeer.cpp | 34 ++++++++--------- libethereum/EthereumPeer.h | 2 +- libp2p/Host.cpp | 3 +- libp2p/Host.h | 2 + libwebthree/WebThree.cpp | 5 +++ libwebthree/WebThree.h | 5 +++ mix/Web3Server.cpp | 6 +++ 12 files changed, 114 insertions(+), 77 deletions(-) diff --git a/alethzero/Main.ui b/alethzero/Main.ui index f28f5b5fc..736af8684 100644 --- a/alethzero/Main.ui +++ b/alethzero/Main.ui @@ -256,6 +256,19 @@ + + + + + + + + + + Automatic + + + @@ -266,16 +279,6 @@ - - - - 1 - - - 5 - - - @@ -289,20 +292,21 @@ - - - - - + + - + Public IP + + + + Automatic - + Ideal &Peers @@ -312,21 +316,7 @@ - - - - Automatic - - - - - - - Public IP - - - - + &Client Name @@ -336,13 +326,30 @@ - + + + + 1 + + + 5 + + + + Anonymous + + + + true + + + @@ -1751,7 +1758,6 @@ font-size: 14pt verbosity tabWidget urlEdit - idealPeers listenIP port transactionQueue diff --git a/alethzero/MainWin.cpp b/alethzero/MainWin.cpp index 42951279b..62515f171 100644 --- a/alethzero/MainWin.cpp +++ b/alethzero/MainWin.cpp @@ -1774,6 +1774,7 @@ void Main::on_net_triggered() ethereum()->setNetworkId(m_privateChain.size() ? sha3(m_privateChain.toStdString()) : h256()); web3()->startNetwork(); ui->downloadView->setDownloadMan(ethereum()->downloadMan()); + ui->enode->setText(QString::fromStdString(web3()->enode())); } else { diff --git a/eth/main.cpp b/eth/main.cpp index 985e74e59..801ee1a0f 100644 --- a/eth/main.cpp +++ b/eth/main.cpp @@ -407,6 +407,7 @@ void doFarm(MinerType _m, string const& _remote, unsigned _recheckPeriod) int main(int argc, char** argv) { +#if 0 cout << "\x1b[30mEthBlack\x1b[0m" << endl; cout << "\x1b[90mEthCoal\x1b[0m" << endl; cout << "\x1b[37mEthGray\x1b[0m" << endl; @@ -472,7 +473,7 @@ int main(int argc, char** argv) cout << "\x1b[4;35mEthPurpleU\x1b[0m" << endl; cout << "\x1b[4;36mEthCyanU\x1b[0m" << endl; cout << "\x1b[4;37mEthWhiteU\x1b[0m" << endl; - +#endif // Init defaults Defaults::get(); @@ -1051,6 +1052,7 @@ int main(int argc, char** argv) cout << "Transaction Signer: " << sigKey.address() << endl; cout << "Mining Benefactor: " << coinbase << endl; web3.startNetwork(); + cout << "Node ID: " << web3.enode() << endl; if (bootstrap) web3.addNode(p2p::NodeId(), Host::pocHost()); diff --git a/libethereum/EthereumHost.cpp b/libethereum/EthereumHost.cpp index 340ae417f..5744f75fa 100644 --- a/libethereum/EthereumHost.cpp +++ b/libethereum/EthereumHost.cpp @@ -189,7 +189,7 @@ void EthereumHost::maintainTransactions() for (auto const& i: ts) { bool unsent = !m_transactionsSent.count(i.first); - for (auto const& p: randomSelection(100, [&](EthereumPeer* p) { return p->m_requireTransactions || (unsent && !p->m_knownTransactions.count(i.first)); })) + for (auto const& p: randomSelection(0, [&](EthereumPeer* p) { return p->m_requireTransactions || (unsent && !p->m_knownTransactions.count(i.first)); }).second) peerTransactions[p].push_back(i.first); } for (auto const& t: ts) @@ -218,28 +218,28 @@ void EthereumHost::maintainTransactions() } } -std::vector> EthereumHost::randomSelection(unsigned _percent, std::function const& _allow) +pair>, vector>> EthereumHost::randomSelection(unsigned _percent, std::function const& _allow) { - std::vector> candidates; - candidates.reserve(peerSessions().size()); + pair>, vector>> ret; + ret.second.reserve(peerSessions().size()); for (auto const& j: peerSessions()) { auto pp = j.first->cap(); if (_allow(pp.get())) - candidates.push_back(pp); + ret.second.push_back(pp); } - std::vector> ret; - for (unsigned i = (peerSessions().size() * _percent + 99) / 100; i-- && candidates.size();) + ret.second.reserve((peerSessions().size() * _percent + 99) / 100); + for (unsigned i = (peerSessions().size() * _percent + 99) / 100; i-- && ret.second.size();) { - unsigned n = rand() % candidates.size(); - ret.push_back(std::move(candidates[n])); - candidates.erase(candidates.begin() + n); + unsigned n = rand() % ret.second.size(); + ret.first.push_back(std::move(ret.second[n])); + ret.second.erase(ret.second.begin() + n); } return ret; } -void EthereumHost::maintainBlocks(h256 _currentHash) +void EthereumHost::maintainBlocks(h256 const& _currentHash) { // Send any new blocks. auto detailsFrom = m_chain.details(m_latestBlockSent); @@ -253,17 +253,28 @@ void EthereumHost::maintainBlocks(h256 _currentHash) h256s blocks = get<0>(m_chain.treeRoute(m_latestBlockSent, _currentHash, false, false, true)); - for (auto const& p: randomSelection(100, [&](EthereumPeer* p){return !p->m_knownBlocks.count(_currentHash); })) + auto s = randomSelection(0, [&](EthereumPeer* p){ ETH_GUARDED(p->x_knownBlocks) return !p->m_knownBlocks.count(_currentHash); return false; }); + for (shared_ptr const& p: s.first) for (auto const& b: blocks) - if (!p->m_knownBlocks.count(b)) - { - RLPStream ts; - p->prep(ts, NewBlockPacket, 2).appendRaw(m_chain.block(b), 1).append(m_chain.details(b).totalDifficulty); + { + RLPStream ts; + p->prep(ts, NewBlockPacket, 2).appendRaw(m_chain.block(b), 1).append(m_chain.details(b).totalDifficulty); - Guard l(p->x_knownBlocks); - p->sealAndSend(ts); - p->m_knownBlocks.clear(); - } + Guard l(p->x_knownBlocks); + p->sealAndSend(ts); + p->m_knownBlocks.clear(); + } + for (shared_ptr const& p: s.second) + { + RLPStream ts; + p->prep(ts, NewBlockHashesPacket, blocks.size()); + for (auto const& b: blocks) + ts.append(b); + + Guard l(p->x_knownBlocks); + p->sealAndSend(ts); + p->m_knownBlocks.clear(); + } } m_latestBlockSent = _currentHash; } diff --git a/libethereum/EthereumHost.h b/libethereum/EthereumHost.h index c2fffcd82..baa850b5c 100644 --- a/libethereum/EthereumHost.h +++ b/libethereum/EthereumHost.h @@ -80,7 +80,7 @@ public: void noteNewBlocks() { m_newBlocks = true; } private: - std::vector> randomSelection(unsigned _percent = 25, std::function const& _allow = [](EthereumPeer const*){ return true; }); + std::pair>, std::vector>> randomSelection(unsigned _percent = 25, std::function const& _allow = [](EthereumPeer const*){ return true; }); /// Session is tell us that we may need (re-)syncing with the peer. void noteNeedsSyncing(EthereumPeer* _who); @@ -92,7 +92,7 @@ private: void doWork(); void maintainTransactions(); - void maintainBlocks(h256 _currentBlock); + void maintainBlocks(h256 const& _currentBlock); /// Get a bunch of needed blocks. /// Removes them from our list of needed blocks. diff --git a/libethereum/EthereumPeer.cpp b/libethereum/EthereumPeer.cpp index a3327bbf8..c550bd4f7 100644 --- a/libethereum/EthereumPeer.cpp +++ b/libethereum/EthereumPeer.cpp @@ -559,37 +559,33 @@ bool EthereumPeer::interpret(unsigned _id, RLP const& _r) default:; } - Guard l(x_knownBlocks); - m_knownBlocks.insert(h); + ETH_GUARDED(x_knownBlocks) + m_knownBlocks.insert(h); } break; } -/* case NewBlockHashesPacket: + case NewBlockHashesPacket: { - clog(NetMessageSummary) << "NewBlock: " << h; - if (_r.itemCount() == 1) - disable("NewBlock without any data fields."); - else if (host()->isSyncing()) + clog(NetMessageSummary) << "NewBlockHashes"; + if (host()->isSyncing()) clog(NetMessageSummary) << "Ignoring since we're already downloading."; else { unsigned knowns = 0; unsigned unknowns = 0; + unsigned itemCount = _r.itemCount(); for (unsigned i = 0; i < itemCount; ++i) { addRating(1); auto h = _r[i].toHash(); + ETH_GUARDED(x_knownBlocks) + m_knownBlocks.insert(h); auto status = host()->m_bq.blockStatus(h); if (status == QueueStatus::Importing || status == QueueStatus::Ready || host()->m_chain.isKnown(h)) - { - clog(NetMessageSummary) << "block hash ready:" << h << ". Start blocks download..."; - transition(Asking::Blocks); - return true; - } + knowns++; else if (status == QueueStatus::Bad) { cwarn << "block hash bad!" << h << ". Bailing..."; - transition(Asking::Nothing); return true; } else if (status == QueueStatus::Unknown) @@ -599,14 +595,18 @@ bool EthereumPeer::interpret(unsigned _id, RLP const& _r) } else knowns++; - m_syncingLastReceivedHash = h; } - clog(NetMessageSummary) << knowns << "knowns," << unknowns << "unknowns; now at" << m_syncingLastReceivedHash; - transition(Asking::Blocks); + clog(NetMessageSummary) << knowns << "knowns," << unknowns << "unknowns"; + if (unknowns > 0) + { + host()->m_man.resetToChain(m_syncingNeededBlocks); + host()->changeSyncer(this); + transition(Asking::Blocks); + } return true; } break; - }*/ + } default: return false; } diff --git a/libethereum/EthereumPeer.h b/libethereum/EthereumPeer.h index a80d5dadd..75ebab02f 100644 --- a/libethereum/EthereumPeer.h +++ b/libethereum/EthereumPeer.h @@ -129,7 +129,7 @@ private: /// This is built as we ask for hashes. Once no more hashes are given, we present this to the /// host who initialises the DownloadMan and m_sub becomes active for us to begin asking for blocks. h256s m_syncingNeededBlocks; ///< The blocks that we should download from this peer. - h256 m_syncingLastReceivedHash; ///< Hash more recently received from peer. + h256 m_syncingLastReceivedHash; ///< Hash most recently received from peer. h256 m_syncingLatestHash; ///< Peer's latest block's hash, as of the current sync. u256 m_syncingTotalDifficulty; ///< Peer's latest block's total difficulty, as of the current sync. diff --git a/libp2p/Host.cpp b/libp2p/Host.cpp index 78c1102c1..d47f1764e 100644 --- a/libp2p/Host.cpp +++ b/libp2p/Host.cpp @@ -413,7 +413,6 @@ void Host::requirePeer(NodeId const& _n, NodeIPEndpoint const& _endpoint) // create or update m_peers entry shared_ptr p; ETH_RECURSIVE_GUARDED(x_sessions) - { if (m_peers.count(_n)) { p = m_peers[_n]; @@ -425,7 +424,6 @@ void Host::requirePeer(NodeId const& _n, NodeIPEndpoint const& _endpoint) p.reset(new Peer(node)); m_peers[_n] = p; } - } connect(p); } else if (m_nodeTable) @@ -438,6 +436,7 @@ void Host::requirePeer(NodeId const& _n, NodeIPEndpoint const& _endpoint) t->async_wait([this, _n](boost::system::error_code const& _ec) { if (!_ec && m_nodeTable) + // FIXME RACE CONDITION (use weak_ptr or mutex). if (auto n = m_nodeTable->node(_n)) requirePeer(n.id, n.endpoint); }); diff --git a/libp2p/Host.h b/libp2p/Host.h index 375481c38..ea47b58b4 100644 --- a/libp2p/Host.h +++ b/libp2p/Host.h @@ -135,6 +135,8 @@ public: // TODO: P2P this should be combined with peers into a HostStat object of some kind; coalesce data, as it's only used for status information. Peers getPeers() const { RecursiveGuard l(x_sessions); Peers ret; for (auto const& i: m_peers) ret.push_back(*i.second); return ret; } + NetworkPreferences const& networkPreferences() const { return m_netPrefs; } + void setNetworkPreferences(NetworkPreferences const& _p, bool _dropPeers = false) { m_dropPeers = _dropPeers; auto had = isStarted(); if (had) stop(); m_netPrefs = _p; if (had) start(); } /// Start network. @threadsafe diff --git a/libwebthree/WebThree.cpp b/libwebthree/WebThree.cpp index a520190ee..606126e43 100644 --- a/libwebthree/WebThree.cpp +++ b/libwebthree/WebThree.cpp @@ -72,6 +72,11 @@ WebThreeDirect::~WebThreeDirect() m_ethereum.reset(); } +p2p::NetworkPreferences const& WebThreeDirect::networkPreferences() const +{ + return m_net.networkPreferences(); +} + void WebThreeDirect::setNetworkPreferences(p2p::NetworkPreferences const& _n, bool _dropPeers) { auto had = isNetworkStarted(); diff --git a/libwebthree/WebThree.h b/libwebthree/WebThree.h index 90a4aa3c2..ece83abb8 100644 --- a/libwebthree/WebThree.h +++ b/libwebthree/WebThree.h @@ -73,6 +73,7 @@ public: virtual bool haveNetwork() const = 0; + virtual p2p::NetworkPreferences const& networkPreferences() const = 0; virtual void setNetworkPreferences(p2p::NetworkPreferences const& _n, bool _dropPeers) = 0; virtual p2p::NodeId id() const = 0; @@ -88,6 +89,8 @@ public: /// Is network working? there may not be any peers yet. virtual bool isNetworkStarted() const = 0; + + std::string enode() const { return "enode://" + toHex(id().ref()) + "@" + (networkPreferences().publicIPAddress.empty() ? "127.0.0.1" : networkPreferences().publicIPAddress) + ":" + toString(networkPreferences().listenPort); } }; @@ -164,6 +167,8 @@ public: bool haveNetwork() const override { return m_net.haveNetwork(); } + p2p::NetworkPreferences const& networkPreferences() const override; + void setNetworkPreferences(p2p::NetworkPreferences const& _n, bool _dropPeers = false) override; p2p::NodeId id() const override { return m_net.id(); } diff --git a/mix/Web3Server.cpp b/mix/Web3Server.cpp index 4acb262df..7edc73060 100644 --- a/mix/Web3Server.cpp +++ b/mix/Web3Server.cpp @@ -70,6 +70,12 @@ class EmptyNetwork : public dev::WebThreeNetworkFace return false; } + p2p::NetworkPreferences const& networkPreferences() const override + { + static const p2p::NetworkPreferences c_ret; + return c_ret; + } + void setNetworkPreferences(p2p::NetworkPreferences const& _n, bool _dropPeers) override { (void)_n; From 242d22e67d3cddf804fcb27f814b07ad1c93105a Mon Sep 17 00:00:00 2001 From: subtly Date: Wed, 6 May 2015 22:21:51 +0200 Subject: [PATCH 38/47] dry --- libp2p/Host.cpp | 15 +++------------ libp2p/Host.h | 5 +++++ 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/libp2p/Host.cpp b/libp2p/Host.cpp index 30501eed6..d4a89ca5b 100644 --- a/libp2p/Host.cpp +++ b/libp2p/Host.cpp @@ -226,12 +226,7 @@ void Host::startPeerSession(Public const& _id, RLP const& _rlp, RLPXFrameIO* _io return; } - unsigned pendingCount = 0; - { - Guard l(x_pendingNodeConns); - pendingCount = m_pendingPeerConns.size(); - } - if (peerCount() + pendingCount > 9 * m_idealPeerCount) + if (peerSlotsAvailable(Ingress)) { ps->disconnect(TooManyPeers); return; @@ -276,12 +271,7 @@ void Host::onNodeTableEvent(NodeId const& _n, NodeTableEventType const& _e) clog(NetNote) << "p2p.host.peers.events.peerAdded " << _n << p->endpoint; } } - unsigned pendingCount = 0; - { - Guard l(x_pendingNodeConns); - pendingCount = m_pendingPeerConns.size(); - } - if (peerCount() + pendingCount < m_idealPeerCount) + if (peerSlotsAvailable(Egress)) connect(p); } } @@ -588,6 +578,7 @@ void Host::run(boost::system::error_code const&) // is always live and to ensure reputation and fallback timers are properly // updated. // disconnectLatePeers(); + // todo: update peerSlotsAvailable() unsigned pendingCount = 0; { Guard l(x_pendingNodeConns); diff --git a/libp2p/Host.h b/libp2p/Host.h index 375481c38..6455bef62 100644 --- a/libp2p/Host.h +++ b/libp2p/Host.h @@ -162,6 +162,8 @@ protected: void restoreNetwork(bytesConstRef _b); private: + enum PeerSlotRatio { Egress = 1, Ingress = 9 }; + bool havePeerSession(NodeId _id) { RecursiveGuard l(x_sessions); return m_sessions.count(_id) ? !!m_sessions[_id].lock() : false; } /// Determines and sets m_tcpPublic to publicly advertised address. @@ -169,6 +171,9 @@ private: void connect(std::shared_ptr const& _p); + /// Returns true if pending and connected peer count is less than maximum + bool peerSlotsAvailable(PeerSlotRatio _type) { Guard l(x_pendingNodeConns); return peerCount() + m_pendingPeerConns.size() > _type * m_idealPeerCount; } + /// Ping the peers to update the latency information and disconnect peers which have timed out. void keepAlivePeers(); From 6ffe9dfcbcc593f0d46cb5dd993f521c314af885 Mon Sep 17 00:00:00 2001 From: Gav Wood Date: Wed, 6 May 2015 22:22:32 +0200 Subject: [PATCH 39/47] 25% of new blocks to be dispersed as blocks rather than hashes. --- libethereum/EthereumHost.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libethereum/EthereumHost.cpp b/libethereum/EthereumHost.cpp index 5744f75fa..34d5eb504 100644 --- a/libethereum/EthereumHost.cpp +++ b/libethereum/EthereumHost.cpp @@ -253,7 +253,7 @@ void EthereumHost::maintainBlocks(h256 const& _currentHash) h256s blocks = get<0>(m_chain.treeRoute(m_latestBlockSent, _currentHash, false, false, true)); - auto s = randomSelection(0, [&](EthereumPeer* p){ ETH_GUARDED(p->x_knownBlocks) return !p->m_knownBlocks.count(_currentHash); return false; }); + auto s = randomSelection(25, [&](EthereumPeer* p){ ETH_GUARDED(p->x_knownBlocks) return !p->m_knownBlocks.count(_currentHash); return false; }); for (shared_ptr const& p: s.first) for (auto const& b: blocks) { From 8b284fea13976cf67ef3629b3c17bf27a966d559 Mon Sep 17 00:00:00 2001 From: subtly Date: Wed, 6 May 2015 22:32:58 +0200 Subject: [PATCH 40/47] Fix wrong comparison in peerSlotsAvailable. --- libp2p/Host.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libp2p/Host.h b/libp2p/Host.h index 6455bef62..56529af80 100644 --- a/libp2p/Host.h +++ b/libp2p/Host.h @@ -172,7 +172,7 @@ private: void connect(std::shared_ptr const& _p); /// Returns true if pending and connected peer count is less than maximum - bool peerSlotsAvailable(PeerSlotRatio _type) { Guard l(x_pendingNodeConns); return peerCount() + m_pendingPeerConns.size() > _type * m_idealPeerCount; } + bool peerSlotsAvailable(PeerSlotRatio _type) { Guard l(x_pendingNodeConns); return peerCount() + m_pendingPeerConns.size() < _type * m_idealPeerCount; } /// Ping the peers to update the latency information and disconnect peers which have timed out. void keepAlivePeers(); From c72b218d8806eb08d36201054f2744ea386b48b5 Mon Sep 17 00:00:00 2001 From: subtly Date: Wed, 6 May 2015 23:10:47 +0200 Subject: [PATCH 41/47] Code review. Fix inverted peer slot check. --- libp2p/Host.cpp | 6 ++---- libp2p/Host.h | 2 +- libp2p/NodeTable.cpp | 2 +- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/libp2p/Host.cpp b/libp2p/Host.cpp index d4a89ca5b..57784ca9d 100644 --- a/libp2p/Host.cpp +++ b/libp2p/Host.cpp @@ -226,7 +226,7 @@ void Host::startPeerSession(Public const& _id, RLP const& _rlp, RLPXFrameIO* _io return; } - if (peerSlotsAvailable(Ingress)) + if (!peerSlotsAvailable(Ingress)) { ps->disconnect(TooManyPeers); return; @@ -580,10 +580,8 @@ void Host::run(boost::system::error_code const&) // todo: update peerSlotsAvailable() unsigned pendingCount = 0; - { - Guard l(x_pendingNodeConns); + ETH_GUARDED(x_pendingNodeConns) pendingCount = m_pendingPeerConns.size(); - } int openSlots = m_idealPeerCount - peerCount() - pendingCount; if (openSlots > 0) { diff --git a/libp2p/Host.h b/libp2p/Host.h index 56529af80..192487206 100644 --- a/libp2p/Host.h +++ b/libp2p/Host.h @@ -162,7 +162,7 @@ protected: void restoreNetwork(bytesConstRef _b); private: - enum PeerSlotRatio { Egress = 1, Ingress = 9 }; + enum PeerSlotRatio { Egress = 2, Ingress = 9 }; bool havePeerSession(NodeId _id) { RecursiveGuard l(x_sessions); return m_sessions.count(_id) ? !!m_sessions[_id].lock() : false; } diff --git a/libp2p/NodeTable.cpp b/libp2p/NodeTable.cpp index 9002ccee1..42f1cad02 100644 --- a/libp2p/NodeTable.cpp +++ b/libp2p/NodeTable.cpp @@ -83,7 +83,7 @@ shared_ptr NodeTable::addNode(Public const& _pubk, NodeIPEndpoint con shared_ptr NodeTable::addNode(Node const& _node, NodeRelation _relation) { - if (_relation) + if (_relation == Known) { shared_ptr ret(new NodeEntry(m_node, _node.id, _node.endpoint)); ret->pending = false; From dd305e4ed21dee6fa613eef36db3314bf5203290 Mon Sep 17 00:00:00 2001 From: Gav Wood Date: Wed, 6 May 2015 23:28:10 +0200 Subject: [PATCH 42/47] Version bump. --- libdevcore/Common.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libdevcore/Common.cpp b/libdevcore/Common.cpp index 72b5543a8..7b9d74155 100644 --- a/libdevcore/Common.cpp +++ b/libdevcore/Common.cpp @@ -28,7 +28,7 @@ using namespace dev; namespace dev { -char const* Version = "0.9.14"; +char const* Version = "0.9.15"; void HasInvariants::checkInvariants() const { From 32adf87f92f85c53bb75b78248951e639709b54c Mon Sep 17 00:00:00 2001 From: subtly Date: Thu, 7 May 2015 02:23:28 +0200 Subject: [PATCH 43/47] Fix macos builds following changes from #1809. --- abi/CMakeLists.txt | 6 +++++- cmake/EthExecutableHelper.cmake | 1 + eth/CMakeLists.txt | 6 +++++- ethminer/CMakeLists.txt | 7 ++++++- rlp/CMakeLists.txt | 7 ++++++- solc/CMakeLists.txt | 6 +++++- 6 files changed, 28 insertions(+), 5 deletions(-) diff --git a/abi/CMakeLists.txt b/abi/CMakeLists.txt index 47c581b5b..3cc6b2594 100644 --- a/abi/CMakeLists.txt +++ b/abi/CMakeLists.txt @@ -12,4 +12,8 @@ add_executable(${EXECUTABLE} ${SRC_LIST}) target_link_libraries(${EXECUTABLE} ethereum) -eth_install_executable(${EXECUTABLE}) +if (APPLE) + install(TARGETS ${EXECUTABLE} DESTINATION bin) +else() + eth_install_executable(${EXECUTABLE}) +endif() diff --git a/cmake/EthExecutableHelper.cmake b/cmake/EthExecutableHelper.cmake index 5908f6ff4..1d1cb887b 100644 --- a/cmake/EthExecutableHelper.cmake +++ b/cmake/EthExecutableHelper.cmake @@ -94,6 +94,7 @@ macro(eth_install_executable EXECUTABLE) # This tool and next will inspect linked libraries in order to determine which dependencies are required if (${CMAKE_CFG_INTDIR} STREQUAL ".") + # TODO: This should only happen for GUI application set(APP_BUNDLE_PATH "${CMAKE_CURRENT_BINARY_DIR}/${EXECUTABLE}.app") else () set(APP_BUNDLE_PATH "${CMAKE_CURRENT_BINARY_DIR}/\$ENV{CONFIGURATION}/${EXECUTABLE}.app") diff --git a/eth/CMakeLists.txt b/eth/CMakeLists.txt index 06c0c9989..0e56eb9f5 100644 --- a/eth/CMakeLists.txt +++ b/eth/CMakeLists.txt @@ -37,4 +37,8 @@ if (DEFINED WIN32 AND NOT DEFINED CMAKE_COMPILER_IS_MINGW) eth_copy_dlls("${EXECUTABLE}" MHD_DLLS) endif() -eth_install_executable(${EXECUTABLE}) +if (APPLE) + install(TARGETS ${EXECUTABLE} DESTINATION bin) +else() + eth_install_executable(${EXECUTABLE}) +endif() diff --git a/ethminer/CMakeLists.txt b/ethminer/CMakeLists.txt index 7467578fc..af38c0c84 100644 --- a/ethminer/CMakeLists.txt +++ b/ethminer/CMakeLists.txt @@ -37,4 +37,9 @@ if (DEFINED WIN32 AND NOT DEFINED CMAKE_COMPILER_IS_MINGW) eth_copy_dlls("${EXECUTABLE}" MHD_DLLS) endif() -eth_install_executable(${EXECUTABLE}) +if (APPLE) + install(TARGETS ${EXECUTABLE} DESTINATION bin) +else() + eth_install_executable(${EXECUTABLE}) +endif() + diff --git a/rlp/CMakeLists.txt b/rlp/CMakeLists.txt index 247804dbc..92d0c7978 100644 --- a/rlp/CMakeLists.txt +++ b/rlp/CMakeLists.txt @@ -12,4 +12,9 @@ add_executable(${EXECUTABLE} ${SRC_LIST}) target_link_libraries(${EXECUTABLE} devcrypto) -eth_install_executable(${EXECUTABLE}) +if (APPLE) + install(TARGETS ${EXECUTABLE} DESTINATION bin) +else() + eth_install_executable(${EXECUTABLE}) +endif() + diff --git a/solc/CMakeLists.txt b/solc/CMakeLists.txt index 14e95a4e7..e60d3c8cf 100644 --- a/solc/CMakeLists.txt +++ b/solc/CMakeLists.txt @@ -17,7 +17,11 @@ target_link_libraries(${EXECUTABLE} ${Boost_FILESYSTEM_LIBRARIES}) target_link_libraries(${EXECUTABLE} ${Boost_PROGRAM_OPTIONS_LIBRARIES}) target_link_libraries(${EXECUTABLE} solidity) -eth_install_executable(${EXECUTABLE}) +if (APPLE) + install(TARGETS ${EXECUTABLE} DESTINATION bin) +else() + eth_install_executable(${EXECUTABLE}) +endif() add_library(soljson jsonCompiler.cpp ${HEADERS}) target_link_libraries(soljson solidity) From 306ab656692a07c84dacb8f28f6c84512e550a44 Mon Sep 17 00:00:00 2001 From: CJentzsch Date: Thu, 7 May 2015 11:01:56 +0200 Subject: [PATCH 44/47] gasPrice 0 test --- .../StateTestsFiller/stSpecialTestFiller.json | 42 +++++++++++++++++-- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/test/libethereum/StateTestsFiller/stSpecialTestFiller.json b/test/libethereum/StateTestsFiller/stSpecialTestFiller.json index 440e37a17..7ffc5f28d 100644 --- a/test/libethereum/StateTestsFiller/stSpecialTestFiller.json +++ b/test/libethereum/StateTestsFiller/stSpecialTestFiller.json @@ -1,5 +1,5 @@ { - "makeMoney" : { + "makeMoney" : { "env" : { "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6", "currentNumber" : "0", @@ -8,7 +8,7 @@ "currentTimestamp" : 1, "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" }, - "expect" : { + "expect" : { "095e7baea6a6c7c4c2dfeb977efac326af552d87" : { "balance" : "1000000000000000000" }, @@ -60,7 +60,7 @@ "currentTimestamp" : 1, "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" }, - "expect" : { + "expect" : { "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { "balance" : "1000" } @@ -84,5 +84,41 @@ "to" : "b94f5374fce5edbc8e2a8697c15331677e6ebf0b", "value" : "501" } + }, + + "gasPrice0" : { + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "256", + "currentGasLimit" : "1000000", + "currentNumber" : "0", + "currentTimestamp" : 1, + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "pre" : { + "095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "balance" : "1000000000000000000", + "code" : "0x6001600101600055", + "nonce" : "0", + "storage" : { + } + }, + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "1000000000000000000", + "code" : "0x", + "nonce" : "0", + "storage" : { + } + } + }, + "transaction" : { + "data" : "", + "gasLimit" : "0xa033", + "gasPrice" : "0", + "nonce" : "0", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "095e7baea6a6c7c4c2dfeb977efac326af552d87", + "value" : "100000" + } } } From 7c8de3f0ea14f47babd037947ec7235f9a9c1023 Mon Sep 17 00:00:00 2001 From: chriseth Date: Thu, 7 May 2015 11:05:05 +0200 Subject: [PATCH 45/47] Added assertions. --- libsolidity/StructuralGasEstimator.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libsolidity/StructuralGasEstimator.cpp b/libsolidity/StructuralGasEstimator.cpp index c90981a72..ececd7116 100644 --- a/libsolidity/StructuralGasEstimator.cpp +++ b/libsolidity/StructuralGasEstimator.cpp @@ -36,6 +36,7 @@ StructuralGasEstimator::ASTGasConsumptionSelfAccumulated StructuralGasEstimator: vector const& _ast ) { + solAssert(std::count(_ast.begin(), _ast.end(), nullptr) == 0, ""); map particularCosts; GasMeter meter; @@ -64,6 +65,7 @@ map StructuralGasEstimator::breakToSta vector const& _roots ) { + solAssert(std::count(_roots.begin(), _roots.end(), nullptr) == 0, ""); // first pass: statementDepth[node] is the distance from the deepend statement to node // in direction of the tree root (or undefined if not possible) map statementDepth; From 97f936d30ce16e9873eba437d6c3d0043f773afb Mon Sep 17 00:00:00 2001 From: Gav Wood Date: Thu, 7 May 2015 11:52:35 +0200 Subject: [PATCH 46/47] Only report worker stuff when it's laggy. Cleanups ETH_ -> DEV_ --- alethzero/MainWin.cpp | 4 +++ libdevcore/Common.cpp | 12 +++++++- libdevcore/Common.h | 16 +++++++++-- libdevcore/Guards.h | 20 ++++++------- libdevcore/Worker.cpp | 45 +++++++++++++++-------------- libethereum/BlockChain.cpp | 10 +++---- libethereum/Client.cpp | 56 ++++++++++++++++++------------------ libethereum/EthereumHost.cpp | 2 +- libethereum/EthereumPeer.cpp | 4 +-- libethereum/Farm.h | 2 +- libp2p/Host.cpp | 8 +++--- 11 files changed, 102 insertions(+), 77 deletions(-) diff --git a/alethzero/MainWin.cpp b/alethzero/MainWin.cpp index 62515f171..e5504cab2 100644 --- a/alethzero/MainWin.cpp +++ b/alethzero/MainWin.cpp @@ -1371,6 +1371,8 @@ void Main::on_transactionQueue_currentItemChanged() s << "
Log Bloom: " << receipt.bloom() << "
"; else s << "
Log Bloom: Uneventful
"; + s << "
Gas Used: " << receipt.gasUsed() << "
"; + s << "
End State: " << receipt.stateRoot().abridged() << "
"; auto r = receipt.rlp(); s << "
Receipt: " << toString(RLP(r)) << "
"; s << "
Receipt-Hex: " Span(Mono) << toHex(receipt.rlp()) << "
"; @@ -1564,6 +1566,8 @@ void Main::on_blocks_currentItemChanged() s << "
Log Bloom: " << receipt.bloom() << "
"; else s << "
Log Bloom: Uneventful
"; + s << "
Gas Used: " << receipt.gasUsed() << "
"; + s << "
End State: " << receipt.stateRoot().abridged() << "
"; auto r = receipt.rlp(); s << "
Receipt: " << toString(RLP(r)) << "
"; s << "
Receipt-Hex: " Span(Mono) << toHex(receipt.rlp()) << "
"; diff --git a/libdevcore/Common.cpp b/libdevcore/Common.cpp index 7b9d74155..be8152b55 100644 --- a/libdevcore/Common.cpp +++ b/libdevcore/Common.cpp @@ -36,9 +36,19 @@ void HasInvariants::checkInvariants() const BOOST_THROW_EXCEPTION(FailedInvariant()); } +struct TimerChannel: public LogChannel { static const char* name(); static const int verbosity = 0; }; + +#ifdef _WIN32 +const char* TimerChannel::name() { return EthRed " ! "; } +#else +const char* TimerChannel::name() { return EthRed " ⚡ "; } +#endif + TimerHelper::~TimerHelper() { - cdebug << "Timer" << id << t.elapsed() << "s"; + auto e = m_t.elapsed(); + if (!m_ms || e * 1000 > m_ms) + clog(TimerChannel) << m_id << e << "s"; } } diff --git a/libdevcore/Common.h b/libdevcore/Common.h index e5d746372..e0872b5d4 100644 --- a/libdevcore/Common.h +++ b/libdevcore/Common.h @@ -169,15 +169,17 @@ private: #define DEV_INVARIANT_CHECK (void)0; #endif +/// Simple scope-based timer helper. class TimerHelper { public: - TimerHelper(char const* _id): id(_id) {} + TimerHelper(char const* _id, unsigned _msReportWhenGreater = 0): m_id(_id), m_ms(_msReportWhenGreater) {} ~TimerHelper(); private: - boost::timer t; - char const* id; + boost::timer m_t; + char const* m_id; + unsigned m_ms; }; #define DEV_TIMED(S) for (::std::pair<::dev::TimerHelper, bool> __eth_t(#S, true); __eth_t.second; __eth_t.second = false) @@ -188,6 +190,14 @@ private: #define DEV_TIMED_FUNCTION DEV_TIMED_SCOPE(__PRETTY_FUNCTION__) #endif +#define DEV_TIMED_IF(S, MS) for (::std::pair<::dev::TimerHelper, bool> __eth_t(::dev::TimerHelper(#S, MS), true); __eth_t.second; __eth_t.second = false) +#define DEV_TIMED_SCOPE_IF(S) ::dev::TimerHelper __eth_t(S, MS) +#if WIN32 +#define DEV_TIMED_FUNCTION_IF(MS) DEV_TIMED_SCOPE_IF(__FUNCSIG__, MS) +#else +#define DEV_TIMED_FUNCTION_IF(MS) DEV_TIMED_SCOPE_IF(__PRETTY_FUNCTION__, MS) +#endif + enum class WithExisting: int { Trust = 0, diff --git a/libdevcore/Guards.h b/libdevcore/Guards.h index d060108ef..2d3eced32 100644 --- a/libdevcore/Guards.h +++ b/libdevcore/Guards.h @@ -81,9 +81,9 @@ using SpinGuard = std::lock_guard; * Mutex m; * unsigned d; * ... - * ETH_GUARDED(m) d = 1; + * ETH_(m) d = 1; * ... - * ETH_GUARDED(m) { for (auto d = 10; d > 0; --d) foo(d); d = 0; } + * ETH_(m) { for (auto d = 10; d > 0; --d) foo(d); d = 0; } * @endcode * * There are several variants of this basic mechanism for different Mutex types and Guards. @@ -95,7 +95,7 @@ using SpinGuard = std::lock_guard; * Mutex m; * int d; * ... - * ETH_GUARDED(m) + * ETH_(m) * { * for (auto d = 50; d > 25; --d) * foo(d); @@ -107,19 +107,19 @@ using SpinGuard = std::lock_guard; * @endcode */ -#define ETH_GUARDED(MUTEX) \ +#define DEV_GUARDED(MUTEX) \ for (GenericGuardBool __eth_l(MUTEX); __eth_l.b; __eth_l.b = false) -#define ETH_READ_GUARDED(MUTEX) \ +#define DEV_READ_GUARDED(MUTEX) \ for (GenericGuardBool __eth_l(MUTEX); __eth_l.b; __eth_l.b = false) -#define ETH_WRITE_GUARDED(MUTEX) \ +#define DEV_WRITE_GUARDED(MUTEX) \ for (GenericGuardBool __eth_l(MUTEX); __eth_l.b; __eth_l.b = false) -#define ETH_RECURSIVE_GUARDED(MUTEX) \ +#define DEV_RECURSIVE_GUARDED(MUTEX) \ for (GenericGuardBool __eth_l(MUTEX); __eth_l.b; __eth_l.b = false) -#define ETH_UNGUARDED(MUTEX) \ +#define DEV_UNGUARDED(MUTEX) \ for (GenericUnguardBool __eth_l(MUTEX); __eth_l.b; __eth_l.b = false) -#define ETH_READ_UNGUARDED(MUTEX) \ +#define DEV_READ_UNGUARDED(MUTEX) \ for (GenericUnguardSharedBool __eth_l(MUTEX); __eth_l.b; __eth_l.b = false) -#define ETH_WRITE_UNGUARDED(MUTEX) \ +#define DEV_WRITE_UNGUARDED(MUTEX) \ for (GenericUnguardBool __eth_l(MUTEX); __eth_l.b; __eth_l.b = false) } diff --git a/libdevcore/Worker.cpp b/libdevcore/Worker.cpp index a68c18958..7d790ccf6 100644 --- a/libdevcore/Worker.cpp +++ b/libdevcore/Worker.cpp @@ -29,7 +29,7 @@ using namespace dev; void Worker::startWorking() { - cnote << "startWorking for thread" << m_name; +// cnote << "startWorking for thread" << m_name; Guard l(x_work); if (m_work) { @@ -42,65 +42,66 @@ void Worker::startWorking() m_work.reset(new thread([&]() { setThreadName(m_name.c_str()); - cnote << "Thread begins"; +// cnote << "Thread begins"; while (m_state != WorkerState::Killing) { WorkerState ex = WorkerState::Starting; bool ok = m_state.compare_exchange_strong(ex, WorkerState::Started); - cnote << "Trying to set Started: Thread was" << (unsigned)ex << "; " << ok; +// cnote << "Trying to set Started: Thread was" << (unsigned)ex << "; " << ok; + (void)ok; startedWorking(); - cnote << "Entering work loop..."; +// cnote << "Entering work loop..."; workLoop(); - cnote << "Finishing up worker thread..."; +// cnote << "Finishing up worker thread..."; doneWorking(); // ex = WorkerState::Stopping; // m_state.compare_exchange_strong(ex, WorkerState::Stopped); ex = m_state.exchange(WorkerState::Stopped); - cnote << "State: Stopped: Thread was" << (unsigned)ex; +// cnote << "State: Stopped: Thread was" << (unsigned)ex; if (ex == WorkerState::Killing || ex == WorkerState::Starting) m_state.exchange(ex); - cnote << "Waiting until not Stopped..."; - while (m_state == WorkerState::Stopped) - this_thread::sleep_for(chrono::milliseconds(20)); +// cnote << "Waiting until not Stopped..."; + DEV_TIMED_IF(Worker stopping, 100) + while (m_state == WorkerState::Stopped) + this_thread::sleep_for(chrono::milliseconds(20)); } })); - cnote << "Spawning" << m_name; +// cnote << "Spawning" << m_name; } - cnote << "Waiting until Started..."; - while (m_state != WorkerState::Started) - this_thread::sleep_for(chrono::microseconds(20)); + DEV_TIMED_IF(Start worker, 100) + while (m_state != WorkerState::Started) + this_thread::sleep_for(chrono::microseconds(20)); } void Worker::stopWorking() { - cnote << "stopWorking for thread" << m_name; - ETH_GUARDED(x_work) + DEV_GUARDED(x_work) if (m_work) { - cnote << "Stopping" << m_name; WorkerState ex = WorkerState::Started; m_state.compare_exchange_strong(ex, WorkerState::Stopping); - cnote << "Waiting until Stopped..."; - while (m_state != WorkerState::Stopped) - this_thread::sleep_for(chrono::microseconds(20)); + DEV_TIMED_IF(Stop worker, 100) + while (m_state != WorkerState::Stopped) + this_thread::sleep_for(chrono::microseconds(20)); } } void Worker::terminate() { // cnote << "stopWorking for thread" << m_name; - ETH_GUARDED(x_work) + DEV_GUARDED(x_work) if (m_work) { - cnote << "Terminating" << m_name; m_state.exchange(WorkerState::Killing); - m_work->join(); + DEV_TIMED_IF(Terminate worker, 100) + m_work->join(); + m_work.reset(); } } diff --git a/libethereum/BlockChain.cpp b/libethereum/BlockChain.cpp index c7c8a23ac..192cff34c 100644 --- a/libethereum/BlockChain.cpp +++ b/libethereum/BlockChain.cpp @@ -486,7 +486,7 @@ ImportRoute BlockChain::import(bytes const& _block, OverlayDB const& _db, Import // This is safe in practice since the caches don't get flushed nearly often enough to be // done here. details(bi.parentHash); - ETH_WRITE_GUARDED(x_details) + DEV_WRITE_GUARDED(x_details) m_details[bi.parentHash].children.push_back(bi.hash()); #if ETH_TIMED_IMPORTS || !ETH_TRUE @@ -495,7 +495,7 @@ ImportRoute BlockChain::import(bytes const& _block, OverlayDB const& _db, Import #endif blocksBatch.Put(toSlice(bi.hash()), (ldb::Slice)ref(_block)); - ETH_READ_GUARDED(x_details) + DEV_READ_GUARDED(x_details) extrasBatch.Put(toSlice(bi.parentHash, ExtraDetails), (ldb::Slice)dev::ref(m_details[bi.parentHash].rlp())); extrasBatch.Put(toSlice(bi.hash(), ExtraDetails), (ldb::Slice)dev::ref(BlockDetails((unsigned)pd.number + 1, td, bi.parentHash, {}).rlp())); @@ -623,7 +623,7 @@ ImportRoute BlockChain::import(bytes const& _block, OverlayDB const& _db, Import m_blocksDB->Write(m_writeOptions, &blocksBatch); m_extrasDB->Write(m_writeOptions, &extrasBatch); - ETH_WRITE_GUARDED(x_lastBlockHash) + DEV_WRITE_GUARDED(x_lastBlockHash) { m_lastBlockHash = newLastBlockHash; m_lastBlockNumber = newLastBlockNumber; @@ -981,7 +981,7 @@ bool BlockChain::isKnown(h256 const& _hash) const if (_hash == m_genesisHash) return true; - ETH_READ_GUARDED(x_blocks) + DEV_READ_GUARDED(x_blocks) if (!m_blocks.count(_hash)) { string d; @@ -989,7 +989,7 @@ bool BlockChain::isKnown(h256 const& _hash) const if (d.empty()) return false; } - ETH_READ_GUARDED(x_details) + DEV_READ_GUARDED(x_details) if (!m_details.count(_hash)) { string d; diff --git a/libethereum/Client.cpp b/libethereum/Client.cpp index 394b0007e..01426527f 100644 --- a/libethereum/Client.cpp +++ b/libethereum/Client.cpp @@ -244,13 +244,13 @@ void Client::startedWorking() // TODO: currently it contains keys for *all* blocks. Make it remove old ones. cdebug << "startedWorking()"; - ETH_WRITE_GUARDED(x_preMine) + DEV_WRITE_GUARDED(x_preMine) m_preMine.sync(m_bc); - ETH_READ_GUARDED(x_preMine) + DEV_READ_GUARDED(x_preMine) { - ETH_WRITE_GUARDED(x_working) + DEV_WRITE_GUARDED(x_working) m_working = m_preMine; - ETH_WRITE_GUARDED(x_postMine) + DEV_WRITE_GUARDED(x_postMine) m_postMine = m_preMine; } } @@ -259,13 +259,13 @@ void Client::doneWorking() { // Synchronise the state according to the head of the block chain. // TODO: currently it contains keys for *all* blocks. Make it remove old ones. - ETH_WRITE_GUARDED(x_preMine) + DEV_WRITE_GUARDED(x_preMine) m_preMine.sync(m_bc); - ETH_READ_GUARDED(x_preMine) + DEV_READ_GUARDED(x_preMine) { - ETH_WRITE_GUARDED(x_working) + DEV_WRITE_GUARDED(x_working) m_working = m_preMine; - ETH_WRITE_GUARDED(x_postMine) + DEV_WRITE_GUARDED(x_postMine) m_postMine = m_preMine; } } @@ -309,7 +309,7 @@ void Client::killChain() void Client::clearPending() { h256Set changeds; - ETH_WRITE_GUARDED(x_postMine) + DEV_WRITE_GUARDED(x_postMine) { if (!m_postMine.pending().size()) return; @@ -317,7 +317,7 @@ void Client::clearPending() // appendFromNewPending(m_postMine.logBloom(i), changeds); changeds.insert(PendingChangedFilter); m_tq.clear(); - ETH_READ_GUARDED(x_preMine) + DEV_READ_GUARDED(x_preMine) m_postMine = m_preMine; } @@ -434,7 +434,7 @@ ExecutionResult Client::call(Address _dest, bytes const& _data, u256 _gas, u256 { State temp; // cdebug << "Nonce at " << toAddress(_secret) << " pre:" << m_preMine.transactionsFrom(toAddress(_secret)) << " post:" << m_postMine.transactionsFrom(toAddress(_secret)); - ETH_READ_GUARDED(x_postMine) + DEV_READ_GUARDED(x_postMine) temp = m_postMine; temp.addBalance(_from, _value + _gasPrice * _gas); Executive e(temp, LastHashes(), 0); @@ -461,13 +461,13 @@ ProofOfWork::WorkPackage Client::getWork() bool Client::submitWork(ProofOfWork::Solution const& _solution) { bytes newBlock; - DEV_TIMED(working) ETH_WRITE_GUARDED(x_working) + DEV_TIMED(working) DEV_WRITE_GUARDED(x_working) if (!m_working.completeMine(_solution)) return false; - ETH_READ_GUARDED(x_working) + DEV_READ_GUARDED(x_working) { - DEV_TIMED(post) ETH_WRITE_GUARDED(x_postMine) + DEV_TIMED(post) DEV_WRITE_GUARDED(x_postMine) m_postMine = m_working; newBlock = m_working.blockData(); } @@ -499,17 +499,17 @@ void Client::syncTransactionQueue() h256Set changeds; TransactionReceipts newPendingReceipts; - DEV_TIMED(working) ETH_WRITE_GUARDED(x_working) + DEV_TIMED(working) DEV_WRITE_GUARDED(x_working) tie(newPendingReceipts, m_syncTransactionQueue) = m_working.sync(m_bc, m_tq, *m_gp); if (newPendingReceipts.empty()) return; - ETH_READ_GUARDED(x_working) - DEV_TIMED(post) ETH_WRITE_GUARDED(x_postMine) + DEV_READ_GUARDED(x_working) + DEV_TIMED(post) DEV_WRITE_GUARDED(x_postMine) m_postMine = m_working; - ETH_READ_GUARDED(x_postMine) + DEV_READ_GUARDED(x_postMine) for (size_t i = 0; i < newPendingReceipts.size(); i++) appendFromNewPending(newPendingReceipts[i], changeds, m_postMine.pending()[i].sha3()); changeds.insert(PendingChangedFilter); @@ -561,7 +561,7 @@ void Client::onChainChanged(ImportRoute const& _ir) bool preChanged = false; State newPreMine; - ETH_READ_GUARDED(x_preMine) + DEV_READ_GUARDED(x_preMine) newPreMine = m_preMine; // TODO: use m_postMine to avoid re-evaluating our own blocks. @@ -572,11 +572,11 @@ void Client::onChainChanged(ImportRoute const& _ir) if (isMining()) cnote << "New block on chain."; - ETH_WRITE_GUARDED(x_preMine) + DEV_WRITE_GUARDED(x_preMine) m_preMine = newPreMine; - DEV_TIMED(working) ETH_WRITE_GUARDED(x_working) + DEV_TIMED(working) DEV_WRITE_GUARDED(x_working) m_working = newPreMine; - ETH_READ_GUARDED(x_postMine) + DEV_READ_GUARDED(x_postMine) for (auto const& t: m_postMine.pending()) { clog(ClientNote) << "Resubmitting post-mine transaction " << t; @@ -584,7 +584,7 @@ void Client::onChainChanged(ImportRoute const& _ir) if (ir != ImportResult::Success) onTransactionQueueReady(); } - ETH_READ_GUARDED(x_working) DEV_TIMED(post) ETH_WRITE_GUARDED(x_postMine) + DEV_READ_GUARDED(x_working) DEV_TIMED(post) DEV_WRITE_GUARDED(x_postMine) m_postMine = m_working; changeds.insert(PendingChangedFilter); @@ -609,11 +609,11 @@ void Client::onPostStateChanged() cnote << "Post state changed: Restarting mining..."; if (isMining() || remoteActive()) { - DEV_TIMED(working) ETH_WRITE_GUARDED(x_working) + DEV_TIMED(working) DEV_WRITE_GUARDED(x_working) m_working.commitToMine(m_bc); - ETH_READ_GUARDED(x_working) + DEV_READ_GUARDED(x_working) { - DEV_TIMED(post) ETH_WRITE_GUARDED(x_postMine) + DEV_TIMED(post) DEV_WRITE_GUARDED(x_postMine) m_postMine = m_working; m_miningInfo = m_postMine.info(); } @@ -694,7 +694,7 @@ void Client::checkWatchGarbage() { // watches garbage collection vector toUninstall; - ETH_GUARDED(x_filtersWatches) + DEV_GUARDED(x_filtersWatches) for (auto key: keysOf(m_watches)) if (m_watches[key].lastPoll != chrono::system_clock::time_point::max() && chrono::system_clock::now() - m_watches[key].lastPoll > chrono::seconds(20)) { @@ -733,7 +733,7 @@ eth::State Client::state(h256 _block) const eth::State Client::state(unsigned _txi) const { - ETH_READ_GUARDED(x_postMine) + DEV_READ_GUARDED(x_postMine) return m_postMine.fromPending(_txi); assert(false); return State(); diff --git a/libethereum/EthereumHost.cpp b/libethereum/EthereumHost.cpp index 34d5eb504..299984a16 100644 --- a/libethereum/EthereumHost.cpp +++ b/libethereum/EthereumHost.cpp @@ -253,7 +253,7 @@ void EthereumHost::maintainBlocks(h256 const& _currentHash) h256s blocks = get<0>(m_chain.treeRoute(m_latestBlockSent, _currentHash, false, false, true)); - auto s = randomSelection(25, [&](EthereumPeer* p){ ETH_GUARDED(p->x_knownBlocks) return !p->m_knownBlocks.count(_currentHash); return false; }); + auto s = randomSelection(25, [&](EthereumPeer* p){ DEV_GUARDED(p->x_knownBlocks) return !p->m_knownBlocks.count(_currentHash); return false; }); for (shared_ptr const& p: s.first) for (auto const& b: blocks) { diff --git a/libethereum/EthereumPeer.cpp b/libethereum/EthereumPeer.cpp index c550bd4f7..85bdf33e9 100644 --- a/libethereum/EthereumPeer.cpp +++ b/libethereum/EthereumPeer.cpp @@ -559,7 +559,7 @@ bool EthereumPeer::interpret(unsigned _id, RLP const& _r) default:; } - ETH_GUARDED(x_knownBlocks) + DEV_GUARDED(x_knownBlocks) m_knownBlocks.insert(h); } break; @@ -578,7 +578,7 @@ bool EthereumPeer::interpret(unsigned _id, RLP const& _r) { addRating(1); auto h = _r[i].toHash(); - ETH_GUARDED(x_knownBlocks) + DEV_GUARDED(x_knownBlocks) m_knownBlocks.insert(h); auto status = host()->m_bq.blockStatus(h); if (status == QueueStatus::Importing || status == QueueStatus::Ready || host()->m_chain.isKnown(h)) diff --git a/libethereum/Farm.h b/libethereum/Farm.h index fda9d64c3..9acb375ad 100644 --- a/libethereum/Farm.h +++ b/libethereum/Farm.h @@ -127,7 +127,7 @@ public: */ void resetMiningProgress() { - ETH_READ_GUARDED(x_minerWork) + DEV_READ_GUARDED(x_minerWork) for (auto const& i: m_miners) i->resetHashCount(); resetTimer(); diff --git a/libp2p/Host.cpp b/libp2p/Host.cpp index 17ae1a8f1..8ba04b0e7 100644 --- a/libp2p/Host.cpp +++ b/libp2p/Host.cpp @@ -176,7 +176,7 @@ void Host::startPeerSession(Public const& _id, RLP const& _rlp, RLPXFrameIO* _io { // session maybe ingress or egress so m_peers and node table entries may not exist shared_ptr p; - ETH_RECURSIVE_GUARDED(x_sessions) + DEV_RECURSIVE_GUARDED(x_sessions) { if (m_peers.count(_id)) p = m_peers[_id]; @@ -257,7 +257,7 @@ void Host::onNodeTableEvent(NodeId const& _n, NodeTableEventType const& _e) if (Node n = m_nodeTable->node(_n)) { shared_ptr p; - ETH_RECURSIVE_GUARDED(x_sessions) + DEV_RECURSIVE_GUARDED(x_sessions) { if (m_peers.count(_n)) { @@ -412,7 +412,7 @@ void Host::requirePeer(NodeId const& _n, NodeIPEndpoint const& _endpoint) { // create or update m_peers entry shared_ptr p; - ETH_RECURSIVE_GUARDED(x_sessions) + DEV_RECURSIVE_GUARDED(x_sessions) if (m_peers.count(_n)) { p = m_peers[_n]; @@ -579,7 +579,7 @@ void Host::run(boost::system::error_code const&) // todo: update peerSlotsAvailable() unsigned pendingCount = 0; - ETH_GUARDED(x_pendingNodeConns) + DEV_GUARDED(x_pendingNodeConns) pendingCount = m_pendingPeerConns.size(); int openSlots = m_idealPeerCount - peerCount() - pendingCount; if (openSlots > 0) From d89330f4473c6a96af3d000a9eb0c49c7e6e864b Mon Sep 17 00:00:00 2001 From: Jan Willem Penterman Date: Thu, 7 May 2015 12:04:34 +0200 Subject: [PATCH 47/47] phonehome sent wrong innermean (innerMean * (trials -2)) , so by default it setn avergage hashrate * 3. --- eth/main.cpp | 3 ++- ethminer/main.cpp | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/eth/main.cpp b/eth/main.cpp index 801ee1a0f..cb051aad1 100644 --- a/eth/main.cpp +++ b/eth/main.cpp @@ -317,8 +317,9 @@ void doBenchmark(MinerType _m, bool _phoneHome, unsigned _warmupDuration = 15, u innerMean += rate; } f.stop(); + innerMean /= (_trials - 2); cout << "min/mean/max: " << results.begin()->second.rate() << "/" << (mean / _trials) << "/" << results.rbegin()->second.rate() << " H/s" << endl; - cout << "inner mean: " << (innerMean / (_trials - 2)) << " H/s" << endl; + cout << "inner mean: " << innerMean << " H/s" << endl; (void)_phoneHome; #if ETH_JSONRPC || !ETH_TRUE diff --git a/ethminer/main.cpp b/ethminer/main.cpp index 19324945f..02ccf2dd8 100644 --- a/ethminer/main.cpp +++ b/ethminer/main.cpp @@ -188,8 +188,9 @@ void doBenchmark(MinerType _m, bool _phoneHome, unsigned _warmupDuration = 15, u innerMean += rate; } f.stop(); + innerMean /= (_trials - 2); cout << "min/mean/max: " << results.begin()->second.rate() << "/" << (mean / _trials) << "/" << results.rbegin()->second.rate() << " H/s" << endl; - cout << "inner mean: " << (innerMean / (_trials - 2)) << " H/s" << endl; + cout << "inner mean: " << innerMean << " H/s" << endl; (void)_phoneHome; #if ETH_JSONRPC || !ETH_TRUE