mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	Added random test creater
This commit is contained in:
		
							parent
							
								
									ea27fbe5f3
								
							
						
					
					
						commit
						5b3c47aa05
					
				| @ -1,12 +1,14 @@ | |||||||
| cmake_policy(SET CMP0015 NEW) | cmake_policy(SET CMP0015 NEW) | ||||||
| 
 | 
 | ||||||
| aux_source_directory(. SRC_LIST) | aux_source_directory(. SRC_LIST) | ||||||
|  | list(REMOVE_ITEM SRC_LIST "./createRandomTest.cpp") | ||||||
| 
 | 
 | ||||||
| include_directories(..) | include_directories(..) | ||||||
| link_directories(../libethcore) | link_directories(../libethcore) | ||||||
| link_directories(../libethereum) | link_directories(../libethereum) | ||||||
| 
 | 
 | ||||||
| add_executable(testeth ${SRC_LIST}) | add_executable(testeth ${SRC_LIST}) | ||||||
|  | add_executable(createRandomTest createRandomTest.cpp vm.cpp) | ||||||
| 
 | 
 | ||||||
| target_link_libraries(testeth ethereum) | target_link_libraries(testeth ethereum) | ||||||
| target_link_libraries(testeth ethcore) | target_link_libraries(testeth ethcore) | ||||||
| @ -14,6 +16,13 @@ target_link_libraries(testeth secp256k1) | |||||||
| target_link_libraries(testeth gmp) | target_link_libraries(testeth gmp) | ||||||
| target_link_libraries(testeth ${CRYPTOPP_LS}) | target_link_libraries(testeth ${CRYPTOPP_LS}) | ||||||
| 
 | 
 | ||||||
|  | target_link_libraries(createRandomTest ethereum) | ||||||
|  | target_link_libraries(createRandomTest ethcore) | ||||||
|  | target_link_libraries(createRandomTest boost_chrono) | ||||||
|  | target_link_libraries(createRandomTest boost_unit_test_framework) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| if ("${TARGET_PLATFORM}" STREQUAL "w64") | if ("${TARGET_PLATFORM}" STREQUAL "w64") | ||||||
| 	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libgcc -static-libstdc++") | 	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libgcc -static-libstdc++") | ||||||
| 	target_link_libraries(testeth boost_system-mt-s) | 	target_link_libraries(testeth boost_system-mt-s) | ||||||
|  | |||||||
							
								
								
									
										154
									
								
								createRandomTest.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										154
									
								
								createRandomTest.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,154 @@ | |||||||
|  | /*
 | ||||||
|  |     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 <http://www.gnu.org/licenses/>.
 | ||||||
|  | */ | ||||||
|  | /** @file createRandomTest.cpp
 | ||||||
|  |  * @author Christoph Jentzsch <jentzsch.simulationsoftware@gmail.com> | ||||||
|  |  * @date 2014 | ||||||
|  |  * Creating a random virtual machine test. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #include <string> | ||||||
|  | #include <iostream> | ||||||
|  | #include <boost/random.hpp> | ||||||
|  | #include <boost/chrono.hpp> | ||||||
|  | #include <boost/filesystem/path.hpp> | ||||||
|  | #pragma GCC diagnostic ignored "-Wunused-parameter" | ||||||
|  | #include <json_spirit/json_spirit.h> | ||||||
|  | #include <json_spirit/json_spirit_reader_template.h> | ||||||
|  | #include <json_spirit/json_spirit_writer_template.h> | ||||||
|  | #include <libdevcore/CommonIO.h> | ||||||
|  | #include <libdevcore/CommonData.h> | ||||||
|  | #include <libevmface/Instruction.h> | ||||||
|  | #include "vm.h" | ||||||
|  | 
 | ||||||
|  | using namespace std; | ||||||
|  | using namespace json_spirit; | ||||||
|  | using namespace dev; | ||||||
|  | 
 | ||||||
|  | void doMyTests(json_spirit::mValue& v); | ||||||
|  | 
 | ||||||
|  | int main(int argc, char *argv[]) | ||||||
|  | { | ||||||
|  | 	if (argc!=2) | ||||||
|  | 	{ | ||||||
|  | 		cout << "usage: createRandomTest <filename>\n"; | ||||||
|  | 		return 0; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	// create random code
 | ||||||
|  | 
 | ||||||
|  | 	boost::random::mt19937 gen; | ||||||
|  | 
 | ||||||
|  | 	auto now = boost::chrono::steady_clock::now().time_since_epoch(); | ||||||
|  | 	auto timeSinceEpoch = boost::chrono::duration_cast<boost::chrono::nanoseconds>(now).count(); | ||||||
|  | 	gen.seed(static_cast<unsigned int>(timeSinceEpoch)); | ||||||
|  | 	boost::random::uniform_int_distribution<> lengthOfCodeDist(2, 16); | ||||||
|  | 	boost::random::uniform_int_distribution<> opcodeDist(0, 255); | ||||||
|  | 	boost::random::variate_generator<boost::mt19937&, | ||||||
|  | 			boost::random::uniform_int_distribution<> > randGen(gen, opcodeDist); | ||||||
|  | 
 | ||||||
|  | 	int lengthOfCode  = lengthOfCodeDist(gen); | ||||||
|  | 	string randomCode; | ||||||
|  | 
 | ||||||
|  | 	for (int i = 0; i < lengthOfCode; ++i) | ||||||
|  | 	{ | ||||||
|  | 		randomCode += toHex(toCompactBigEndian(randGen())); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	// read template test file
 | ||||||
|  | 
 | ||||||
|  | 	mValue v; | ||||||
|  | 	boost::filesystem::path p(__FILE__); | ||||||
|  | 	boost::filesystem::path dir = p.parent_path(); | ||||||
|  | 	string s = asString(contents(dir.string() + "/randomTestFiller.json")); | ||||||
|  | 	read_string(s, v); | ||||||
|  | 
 | ||||||
|  | 	// insert new random code
 | ||||||
|  | 	v.get_obj().find("randomVMtest")->second.get_obj().find("pre")->second.get_obj().begin()->second.get_obj()["code"] = "0x" + randomCode; | ||||||
|  | 
 | ||||||
|  | 	// execute code in vm
 | ||||||
|  | 	doMyTests(v); | ||||||
|  | 
 | ||||||
|  | 	// write new test
 | ||||||
|  | 	string filename = argv[1]; | ||||||
|  | 	writeFile(filename, asBytes(json_spirit::write_string(v, true))); | ||||||
|  | 
 | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void doMyTests(json_spirit::mValue& v) | ||||||
|  | { | ||||||
|  | 	for (auto& i: v.get_obj()) | ||||||
|  | 	{ | ||||||
|  | 		mObject& o = i.second.get_obj(); | ||||||
|  | 
 | ||||||
|  | 		assert(o.count("env") > 0); | ||||||
|  | 		assert(o.count("pre") > 0); | ||||||
|  | 		assert(o.count("exec") > 0); | ||||||
|  | 
 | ||||||
|  | 		eth::VM vm; | ||||||
|  | 		test::FakeExtVM fev; | ||||||
|  | 		fev.importEnv(o["env"].get_obj()); | ||||||
|  | 		fev.importState(o["pre"].get_obj()); | ||||||
|  | 
 | ||||||
|  | 		o["pre"] = mValue(fev.exportState()); | ||||||
|  | 
 | ||||||
|  | 		fev.importExec(o["exec"].get_obj()); | ||||||
|  | 		if (!fev.code) | ||||||
|  | 		{ | ||||||
|  | 			fev.thisTxCode = get<3>(fev.addresses.at(fev.myAddress)); | ||||||
|  | 			fev.code = &fev.thisTxCode; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		vm.reset(fev.gas); | ||||||
|  | 		bytes output; | ||||||
|  | 		try | ||||||
|  | 		{ | ||||||
|  | 			output = vm.go(fev).toBytes(); | ||||||
|  | 		} | ||||||
|  | 		catch (Exception const& _e) | ||||||
|  | 		{ | ||||||
|  | 			cnote << "VM did throw an exception: " << diagnostic_information(_e); | ||||||
|  | 		} | ||||||
|  | 		catch (std::exception const& _e) | ||||||
|  | 		{ | ||||||
|  | 			cnote << "VM did throw an exception: " << _e.what(); | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		// delete null entries in storage for the sake of comparison
 | ||||||
|  | 
 | ||||||
|  | 		for (auto  &a: fev.addresses) | ||||||
|  | 		{ | ||||||
|  | 			vector<u256> keystoDelete; | ||||||
|  | 			for (auto &s: get<2>(a.second)) | ||||||
|  | 			{ | ||||||
|  | 				if (s.second == 0) | ||||||
|  | 					keystoDelete.push_back(s.first); | ||||||
|  | 			} | ||||||
|  | 			for (auto const key: keystoDelete ) | ||||||
|  | 			{ | ||||||
|  | 				get<2>(a.second).erase(key); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		o["env"] = mValue(fev.exportEnv()); | ||||||
|  | 		o["exec"] = mValue(fev.exportExec()); | ||||||
|  | 		o["post"] = mValue(fev.exportState()); | ||||||
|  | 		o["callcreates"] = fev.exportCallCreates(); | ||||||
|  | 		o["out"] = "0x" + toHex(output); | ||||||
|  | 		fev.push(o, "gas", vm.gas()); | ||||||
|  | 	} | ||||||
|  | } | ||||||
							
								
								
									
										29
									
								
								randomTestFiller.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								randomTestFiller.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,29 @@ | |||||||
|  | { | ||||||
|  |     "randomVMtest": { | ||||||
|  |         "env" : { | ||||||
|  |             "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6", | ||||||
|  |             "currentNumber" : "0", | ||||||
|  |             "currentGasLimit" : "1000000", | ||||||
|  |             "currentDifficulty" : "256", | ||||||
|  |             "currentTimestamp" : 1, | ||||||
|  |             "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" | ||||||
|  |         }, | ||||||
|  |         "pre" : { | ||||||
|  |             "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : { | ||||||
|  |                 "balance" : "1000000000000000000", | ||||||
|  |                 "nonce" : 0, | ||||||
|  |                 "code" : "random", | ||||||
|  |                 "storage": {} | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         "exec" : { | ||||||
|  |             "address" : "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", | ||||||
|  |             "origin" : "cd1722f3947def4cf144679da39c4c32bdc35681", | ||||||
|  |             "caller" : "cd1722f3947def4cf144679da39c4c32bdc35681", | ||||||
|  |             "value" : "1000000000000000000", | ||||||
|  |             "data" : "", | ||||||
|  |             "gasPrice" : "100000000000000", | ||||||
|  |             "gas" : "10000" | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										21
									
								
								vm.cpp
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								vm.cpp
									
									
									
									
									
								
							| @ -22,6 +22,7 @@ | |||||||
| 
 | 
 | ||||||
| #include "vm.h" | #include "vm.h" | ||||||
| #include <libdevcore/CommonIO.h> | #include <libdevcore/CommonIO.h> | ||||||
|  | #include <boost/filesystem/path.hpp> | ||||||
| 
 | 
 | ||||||
| #define FILL_TESTS | #define FILL_TESTS | ||||||
| 
 | 
 | ||||||
| @ -97,7 +98,7 @@ bool FakeExtVM::call(Address _receiveAddress, u256 _value, bytesConstRef _data, | |||||||
| 			{ | 			{ | ||||||
| 				cnote << "not able to call to : " << myAddress << "\n"; | 				cnote << "not able to call to : " << myAddress << "\n"; | ||||||
| 				cnote << "in FakeExtVM you can only make a call to " << na << "\n"; | 				cnote << "in FakeExtVM you can only make a call to " << na << "\n"; | ||||||
| 				BOOST_THROW_EXCEPTION(FakeExtVMFailure() << errinfo_comment("Address not callable in FakeExtVM\n") << errinfo_wrongAddress(myAddress)); | 				BOOST_THROW_EXCEPTION(FakeExtVMFailure() << errinfo_comment("Address not callable in FakeExtVM\n") << errinfo_wrongAddress(toString(myAddress))); | ||||||
| 				return false; | 				return false; | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| @ -123,7 +124,7 @@ bool FakeExtVM::call(Address _receiveAddress, u256 _value, bytesConstRef _data, | |||||||
| 			{ | 			{ | ||||||
| 				cnote << "not able to call to : " << (_codeAddressOverride ? _codeAddressOverride : _receiveAddress) << "\n"; | 				cnote << "not able to call to : " << (_codeAddressOverride ? _codeAddressOverride : _receiveAddress) << "\n"; | ||||||
| 				cnote << "in FakeExtVM you can only make a call to " << na << "\n"; | 				cnote << "in FakeExtVM you can only make a call to " << na << "\n"; | ||||||
| 				BOOST_THROW_EXCEPTION(FakeExtVMFailure() << errinfo_comment("Address not callable in FakeExtVM\n") << errinfo_wrongAddress(_codeAddressOverride ? _codeAddressOverride : _receiveAddress)); | 				BOOST_THROW_EXCEPTION(FakeExtVMFailure() << errinfo_comment("Address not callable in FakeExtVM\n") << errinfo_wrongAddress(toString(_codeAddressOverride ? _codeAddressOverride : _receiveAddress))); | ||||||
| 				return false; | 				return false; | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| @ -610,16 +611,26 @@ void doTests(json_spirit::mValue& v, bool _fillin) | |||||||
| 
 | 
 | ||||||
| void executeTests(const string& _name) | void executeTests(const string& _name) | ||||||
| { | { | ||||||
|  | 	const char* testPath = getenv("ETHEREUM_TEST_PATH"); | ||||||
|  | 	if (testPath == NULL) | ||||||
|  | 	{ | ||||||
|  | 		cnote << " could not find environment variable ETHEREUM_TEST_PATH \n"; | ||||||
|  | 		testPath = "../../../tests/vmtests"; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| #ifdef FILL_TESTS | #ifdef FILL_TESTS | ||||||
| 	try | 	try | ||||||
| 	{ | 	{ | ||||||
| 		cnote << "Populating VM tests..."; | 		cnote << "Populating VM tests..."; | ||||||
| 		json_spirit::mValue v; | 		json_spirit::mValue v; | ||||||
| 		string s = asString(contents("../../../cpp-ethereum/test/" + _name + "Filler.json")); | 		boost::filesystem::path p(__FILE__); | ||||||
|  | 		boost::filesystem::path dir = p.parent_path(); | ||||||
|  | 		string s = asString(contents(dir.string() + "/" + _name + "Filler.json")); | ||||||
| 		BOOST_REQUIRE_MESSAGE(s.length() > 0, "Contents of " + _name + "Filler.json is empty."); | 		BOOST_REQUIRE_MESSAGE(s.length() > 0, "Contents of " + _name + "Filler.json is empty."); | ||||||
| 		json_spirit::read_string(s, v); | 		json_spirit::read_string(s, v); | ||||||
| 		dev::test::doTests(v, true); | 		dev::test::doTests(v, true); | ||||||
| 		writeFile("../../../tests/vmtests/" + _name + ".json", asBytes(json_spirit::write_string(v, true))); | 
 | ||||||
|  | 		writeFile(*testPath + "/" + _name + ".json", asBytes(json_spirit::write_string(v, true))); | ||||||
| 	} | 	} | ||||||
| 	catch (Exception const& _e) | 	catch (Exception const& _e) | ||||||
| 	{ | 	{ | ||||||
| @ -635,7 +646,7 @@ void executeTests(const string& _name) | |||||||
| 	{ | 	{ | ||||||
| 		cnote << "Testing VM..." << _name; | 		cnote << "Testing VM..." << _name; | ||||||
| 		json_spirit::mValue v; | 		json_spirit::mValue v; | ||||||
| 		string s = asString(contents("../../../tests/vmtests/" + _name + ".json")); | 		string s = asString(contents(*testPath + "/" + _name + ".json")); | ||||||
| 		BOOST_REQUIRE_MESSAGE(s.length() > 0, "Contents of " + _name + ".json is empty. Have you cloned the 'tests' repo branch develop?"); | 		BOOST_REQUIRE_MESSAGE(s.length() > 0, "Contents of " + _name + ".json is empty. Have you cloned the 'tests' repo branch develop?"); | ||||||
| 		json_spirit::read_string(s, v); | 		json_spirit::read_string(s, v); | ||||||
| 		dev::test::doTests(v, false); | 		dev::test::doTests(v, false); | ||||||
|  | |||||||
| @ -281,6 +281,91 @@ | |||||||
|         } |         } | ||||||
|     }, |     }, | ||||||
| 
 | 
 | ||||||
|  |     "mul4": { | ||||||
|  |         "env" : { | ||||||
|  |         "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6", | ||||||
|  |         "currentNumber" : "0", | ||||||
|  |         "currentGasLimit" : "1000000", | ||||||
|  |         "currentDifficulty" : "256", | ||||||
|  |         "currentTimestamp" : 1, | ||||||
|  |         "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" | ||||||
|  |         }, | ||||||
|  |         "pre" : { | ||||||
|  |         "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : { | ||||||
|  |             "balance" : "1000000000000000000", | ||||||
|  |             "nonce" : 0, | ||||||
|  |             "code" : "{ [[ 0 ]] (* 0x8000000000000000000000000000000000000000000000000000000000000000 115792089237316195423570985008687907853269984665640564039457584007913129639935) }", | ||||||
|  |             "storage": {} | ||||||
|  |         } | ||||||
|  |         }, | ||||||
|  |         "exec" : { | ||||||
|  |             "address" : "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", | ||||||
|  |             "origin" : "cd1722f3947def4cf144679da39c4c32bdc35681", | ||||||
|  |             "caller" : "cd1722f3947def4cf144679da39c4c32bdc35681", | ||||||
|  |             "value" : "1000000000000000000", | ||||||
|  |             "data" : "", | ||||||
|  |             "gasPrice" : "100000000000000", | ||||||
|  |             "gas" : "10000" | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  | 
 | ||||||
|  |     "mul5": { | ||||||
|  |         "env" : { | ||||||
|  |         "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6", | ||||||
|  |         "currentNumber" : "0", | ||||||
|  |         "currentGasLimit" : "1000000", | ||||||
|  |         "currentDifficulty" : "256", | ||||||
|  |         "currentTimestamp" : 1, | ||||||
|  |         "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" | ||||||
|  |         }, | ||||||
|  |         "pre" : { | ||||||
|  |         "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : { | ||||||
|  |             "balance" : "1000000000000000000", | ||||||
|  |             "nonce" : 0, | ||||||
|  |             "code" : "{ [[ 0 ]] (* 0x8000000000000000000000000000000000000000000000000000000000000000 0x8000000000000000000000000000000000000000000000000000000000000000) }", | ||||||
|  |             "storage": {} | ||||||
|  |         } | ||||||
|  |         }, | ||||||
|  |         "exec" : { | ||||||
|  |             "address" : "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", | ||||||
|  |             "origin" : "cd1722f3947def4cf144679da39c4c32bdc35681", | ||||||
|  |             "caller" : "cd1722f3947def4cf144679da39c4c32bdc35681", | ||||||
|  |             "value" : "1000000000000000000", | ||||||
|  |             "data" : "", | ||||||
|  |             "gasPrice" : "100000000000000", | ||||||
|  |             "gas" : "10000" | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  | 
 | ||||||
|  |     "mul6": { | ||||||
|  |         "env" : { | ||||||
|  |         "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6", | ||||||
|  |         "currentNumber" : "0", | ||||||
|  |         "currentGasLimit" : "1000000", | ||||||
|  |         "currentDifficulty" : "256", | ||||||
|  |         "currentTimestamp" : 1, | ||||||
|  |         "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" | ||||||
|  |         }, | ||||||
|  |         "pre" : { | ||||||
|  |         "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : { | ||||||
|  |             "balance" : "1000000000000000000", | ||||||
|  |             "nonce" : 0, | ||||||
|  |             "code" : "{ [[ 0 ]] (* 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) }", | ||||||
|  |             "storage": {} | ||||||
|  |         } | ||||||
|  |         }, | ||||||
|  |         "exec" : { | ||||||
|  |             "address" : "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", | ||||||
|  |             "origin" : "cd1722f3947def4cf144679da39c4c32bdc35681", | ||||||
|  |             "caller" : "cd1722f3947def4cf144679da39c4c32bdc35681", | ||||||
|  |             "value" : "1000000000000000000", | ||||||
|  |             "data" : "", | ||||||
|  |             "gasPrice" : "100000000000000", | ||||||
|  |             "gas" : "10000" | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|     "sub0": { |     "sub0": { | ||||||
|         "env" : { |         "env" : { | ||||||
|         "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6", |         "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6", | ||||||
|  | |||||||
| @ -530,6 +530,61 @@ | |||||||
|             "gas" : "10000" |             "gas" : "10000" | ||||||
|         } |         } | ||||||
|     }, |     }, | ||||||
|  |     "jump0_jumpdest0": { | ||||||
|  |         "env" : { | ||||||
|  |         "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6", | ||||||
|  |         "currentNumber" : "0", | ||||||
|  |         "currentGasLimit" : "1000000", | ||||||
|  |         "currentDifficulty" : "256", | ||||||
|  |         "currentTimestamp" : 1, | ||||||
|  |         "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" | ||||||
|  |         }, | ||||||
|  |         "pre" : { | ||||||
|  |         "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : { | ||||||
|  |             "balance" : "1000000000000000000", | ||||||
|  |             "nonce" : 0, | ||||||
|  |             "code" : "0x602360085860015d600257", | ||||||
|  |             "storage": {} | ||||||
|  |         } | ||||||
|  |         }, | ||||||
|  |         "exec" : { | ||||||
|  |             "address" : "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", | ||||||
|  |             "origin" : "cd1722f3947def4cf144679da39c4c32bdc35681", | ||||||
|  |             "caller" : "cd1722f3947def4cf144679da39c4c32bdc35681", | ||||||
|  |             "value" : "1000000000000000000", | ||||||
|  |             "data" : "", | ||||||
|  |             "gasPrice" : "100000000000000", | ||||||
|  |             "gas" : "10000" | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  | 
 | ||||||
|  |     "jump0_jumpdest1": { | ||||||
|  |         "env" : { | ||||||
|  |         "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6", | ||||||
|  |         "currentNumber" : "0", | ||||||
|  |         "currentGasLimit" : "1000000", | ||||||
|  |         "currentDifficulty" : "256", | ||||||
|  |         "currentTimestamp" : 1, | ||||||
|  |         "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" | ||||||
|  |         }, | ||||||
|  |         "pre" : { | ||||||
|  |         "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : { | ||||||
|  |             "balance" : "1000000000000000000", | ||||||
|  |             "nonce" : 0, | ||||||
|  |             "code" : "0x602360075860015d600257", | ||||||
|  |             "storage": {} | ||||||
|  |         } | ||||||
|  |         }, | ||||||
|  |         "exec" : { | ||||||
|  |             "address" : "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", | ||||||
|  |             "origin" : "cd1722f3947def4cf144679da39c4c32bdc35681", | ||||||
|  |             "caller" : "cd1722f3947def4cf144679da39c4c32bdc35681", | ||||||
|  |             "value" : "1000000000000000000", | ||||||
|  |             "data" : "", | ||||||
|  |             "gasPrice" : "100000000000000", | ||||||
|  |             "gas" : "10000" | ||||||
|  |         } | ||||||
|  |     }, | ||||||
| 
 | 
 | ||||||
|     "jumpi0": { |     "jumpi0": { | ||||||
|         "env" : { |         "env" : { | ||||||
| @ -559,6 +614,34 @@ | |||||||
|         } |         } | ||||||
|     }, |     }, | ||||||
| 
 | 
 | ||||||
|  |     "jumpi1_jumpdest": { | ||||||
|  |         "env" : { | ||||||
|  |         "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6", | ||||||
|  |         "currentNumber" : "0", | ||||||
|  |         "currentGasLimit" : "1000000", | ||||||
|  |         "currentDifficulty" : "256", | ||||||
|  |         "currentTimestamp" : 1, | ||||||
|  |         "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" | ||||||
|  |         }, | ||||||
|  |         "pre" : { | ||||||
|  |         "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : { | ||||||
|  |             "balance" : "1000000000000000000", | ||||||
|  |             "nonce" : 0, | ||||||
|  |             "code" : "0x60236001600a5960015d600257", | ||||||
|  |             "storage": {} | ||||||
|  |         } | ||||||
|  |         }, | ||||||
|  |         "exec" : { | ||||||
|  |             "address" : "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", | ||||||
|  |             "origin" : "cd1722f3947def4cf144679da39c4c32bdc35681", | ||||||
|  |             "caller" : "cd1722f3947def4cf144679da39c4c32bdc35681", | ||||||
|  |             "value" : "1000000000000000000", | ||||||
|  |             "data" : "", | ||||||
|  |             "gasPrice" : "100000000000000", | ||||||
|  |             "gas" : "10000" | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  | 
 | ||||||
|     "jumpi1": { |     "jumpi1": { | ||||||
|         "env" : { |         "env" : { | ||||||
|         "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6", |         "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6", | ||||||
|  | |||||||
| @ -129,7 +129,7 @@ | |||||||
|             }, |             }, | ||||||
|             "945304eb96065b2a98b57a48a06ae28d285a71b5" : { |             "945304eb96065b2a98b57a48a06ae28d285a71b5" : { | ||||||
|                 "balance" : "23", |                 "balance" : "23", | ||||||
|                 "code" : "0x600035560f6009590060203560003557", |                 "code" : "0x600035560f600a59005d60203560003557", | ||||||
|                 "nonce" : "0", |                 "nonce" : "0", | ||||||
|                 "storage" : { |                 "storage" : { | ||||||
|                 } |                 } | ||||||
| @ -255,6 +255,42 @@ | |||||||
|         } |         } | ||||||
|     }, |     }, | ||||||
| 
 | 
 | ||||||
|  |     "callcodeToReturn1": { | ||||||
|  |         "env" : { | ||||||
|  |             "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6", | ||||||
|  |             "currentNumber" : "0", | ||||||
|  |             "currentGasLimit" : "10000000", | ||||||
|  |             "currentDifficulty" : "256", | ||||||
|  |             "currentTimestamp" : 1, | ||||||
|  |             "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" | ||||||
|  |         }, | ||||||
|  |         "pre" : { | ||||||
|  |             "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : { | ||||||
|  |                 "balance" : "1000000000000000000", | ||||||
|  |                 "nonce" : 0, | ||||||
|  |                 "code" : "{ (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (MSTORE 32 0xaaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa ) [[ 0 ]] (CALLCODE 500 0x945304eb96065b2a98b57a48a06ae28d285a71b5 23 0 64 0 2 ) }", | ||||||
|  |                 "storage": {} | ||||||
|  |             }, | ||||||
|  |             "945304eb96065b2a98b57a48a06ae28d285a71b5" : { | ||||||
|  |                 "balance" : "23", | ||||||
|  |                 "code" : "0x6001600157603760005560026000f2", | ||||||
|  |                 "nonce" : "0", | ||||||
|  |                 "storage" : { | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |         }, | ||||||
|  |         "exec" : { | ||||||
|  |             "address" : "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", | ||||||
|  |             "origin" : "cd1722f3947def4cf144679da39c4c32bdc35681", | ||||||
|  |             "caller" : "cd1722f3947def4cf144679da39c4c32bdc35681", | ||||||
|  |             "value" : "100000", | ||||||
|  |             "data" : "", | ||||||
|  |             "gasPrice" : "100000000000000", | ||||||
|  |             "gas" : "10000000000000" | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|     "CallToNameRegistratorOutOfGas": { |     "CallToNameRegistratorOutOfGas": { | ||||||
|         "env" : { |         "env" : { | ||||||
| @ -274,7 +310,7 @@ | |||||||
|             }, |             }, | ||||||
|             "945304eb96065b2a98b57a48a06ae28d285a71b5" : { |             "945304eb96065b2a98b57a48a06ae28d285a71b5" : { | ||||||
|                 "balance" : "23", |                 "balance" : "23", | ||||||
|                 "code" : "0x600035560f6009590060203560003557", |                 "code" : "0x600035560f600a59005d60203560003557", | ||||||
|                 "nonce" : "0", |                 "nonce" : "0", | ||||||
|                 "storage" : { |                 "storage" : { | ||||||
|                 } |                 } | ||||||
| @ -310,7 +346,7 @@ | |||||||
|             }, |             }, | ||||||
|             "945304eb96065b2a98b57a48a06ae28d285a71b5" : { |             "945304eb96065b2a98b57a48a06ae28d285a71b5" : { | ||||||
|                 "balance" : "23", |                 "balance" : "23", | ||||||
|                 "code" : "0x600035560f6009590060203560003557", |                 "code" : "0x600035560f600a59005d60203560003557", | ||||||
|                 "nonce" : "0", |                 "nonce" : "0", | ||||||
|                 "storage" : { |                 "storage" : { | ||||||
|                 } |                 } | ||||||
| @ -346,7 +382,7 @@ | |||||||
|             }, |             }, | ||||||
|             "945304eb96065b2a98b57a48a06ae28d285a71b5" : { |             "945304eb96065b2a98b57a48a06ae28d285a71b5" : { | ||||||
|                 "balance" : "23", |                 "balance" : "23", | ||||||
|                 "code" : "0x600035560f6009590060203560003557", |                 "code" : "0x600035560f600a59005d60203560003557", | ||||||
|                 "nonce" : "0", |                 "nonce" : "0", | ||||||
|                 "storage" : { |                 "storage" : { | ||||||
|                 } |                 } | ||||||
| @ -382,7 +418,7 @@ | |||||||
|             }, |             }, | ||||||
|             "945304eb96065b2a98b57a48a06ae28d285a71b5" : { |             "945304eb96065b2a98b57a48a06ae28d285a71b5" : { | ||||||
|                 "balance" : "23", |                 "balance" : "23", | ||||||
|                 "code" : "0x600035560f6009590060203560003557", |                 "code" : "0x600035560f600a59005d60203560003557", | ||||||
|                 "nonce" : "0", |                 "nonce" : "0", | ||||||
|                 "storage" : { |                 "storage" : { | ||||||
|                 } |                 } | ||||||
| @ -419,7 +455,7 @@ | |||||||
|             }, |             }, | ||||||
|             "945304eb96065b2a98b57a48a06ae28d285a71b5" : { |             "945304eb96065b2a98b57a48a06ae28d285a71b5" : { | ||||||
|                 "balance" : "23", |                 "balance" : "23", | ||||||
|                 "code" : "0x600035560f6009590060203560003557", |                 "code" : "0x600035560f600a59005d60203560003557", | ||||||
|                 "nonce" : "0", |                 "nonce" : "0", | ||||||
|                 "storage" : { |                 "storage" : { | ||||||
|                 } |                 } | ||||||
| @ -455,7 +491,7 @@ | |||||||
|             }, |             }, | ||||||
|             "945304eb96065b2a98b57a48a06ae28d285a71b5" : { |             "945304eb96065b2a98b57a48a06ae28d285a71b5" : { | ||||||
|                 "balance" : "23", |                 "balance" : "23", | ||||||
|                 "code" : "0x600035560f6009590060203560003557", |                 "code" : "0x600035560f600a59005d60203560003557", | ||||||
|                 "nonce" : "0", |                 "nonce" : "0", | ||||||
|                 "storage" : { |                 "storage" : { | ||||||
|                 } |                 } | ||||||
| @ -525,7 +561,7 @@ | |||||||
|             }, |             }, | ||||||
|             "cd1722f3947def4cf144679da39c4c32bdc35681" : { |             "cd1722f3947def4cf144679da39c4c32bdc35681" : { | ||||||
|                 "balance" : "23", |                 "balance" : "23", | ||||||
|                 "code" : "0x600035560f6009590060203560003557", |                 "code" : "0x600035560f600a59005d60203560003557", | ||||||
|                 "nonce" : "0", |                 "nonce" : "0", | ||||||
|                 "storage" : { |                 "storage" : { | ||||||
|                 } |                 } | ||||||
| @ -561,7 +597,7 @@ | |||||||
|             }, |             }, | ||||||
|             "cd1722f3947def4cf144679da39c4c32bdc35681" : { |             "cd1722f3947def4cf144679da39c4c32bdc35681" : { | ||||||
|                 "balance" : "23", |                 "balance" : "23", | ||||||
|                 "code" : "0x600035560f6009590060203560003557", |                 "code" : "0x600035560f600a59005d60203560003557", | ||||||
|                 "nonce" : "0", |                 "nonce" : "0", | ||||||
|                 "storage" : { |                 "storage" : { | ||||||
|                 } |                 } | ||||||
| @ -597,7 +633,7 @@ | |||||||
|             }, |             }, | ||||||
|             "cd1722f3947def4cf144679da39c4c32bdc35681" : { |             "cd1722f3947def4cf144679da39c4c32bdc35681" : { | ||||||
|                 "balance" : "23", |                 "balance" : "23", | ||||||
|                 "code" : "0x600035560f6009590060203560003557", |                 "code" : "0x600035560f600a59005d60203560003557", | ||||||
|                 "nonce" : "0", |                 "nonce" : "0", | ||||||
|                 "storage" : { |                 "storage" : { | ||||||
|                 } |                 } | ||||||
| @ -723,7 +759,7 @@ | |||||||
|             }, |             }, | ||||||
|             "945304eb96065b2a98b57a48a06ae28d285a71b5" : { |             "945304eb96065b2a98b57a48a06ae28d285a71b5" : { | ||||||
|                 "balance" : "23", |                 "balance" : "23", | ||||||
|                 "code" : "0x600035560f6009590060203560003557", |                 "code" : "0x600035560f600a59005d60203560003557", | ||||||
|                 "nonce" : "0", |                 "nonce" : "0", | ||||||
|                 "storage" : { |                 "storage" : { | ||||||
|                 } |                 } | ||||||
| @ -759,7 +795,43 @@ | |||||||
|             }, |             }, | ||||||
|             "945304eb96065b2a98b57a48a06ae28d285a71b5" : { |             "945304eb96065b2a98b57a48a06ae28d285a71b5" : { | ||||||
|                 "balance" : "23", |                 "balance" : "23", | ||||||
|                 "code" : "0x600035560f6009590060203560003557", |                 "code" : "0x600035560f600a59005d60203560003557", | ||||||
|  |                 "nonce" : "0", | ||||||
|  |                 "storage" : { | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |         }, | ||||||
|  |         "exec" : { | ||||||
|  |             "address" : "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", | ||||||
|  |             "origin" : "cd1722f3947def4cf144679da39c4c32bdc35681", | ||||||
|  |             "caller" : "cd1722f3947def4cf144679da39c4c32bdc35681", | ||||||
|  |             "value" : "100000", | ||||||
|  |             "data" : "", | ||||||
|  |             "gasPrice" : "100000000000000", | ||||||
|  |             "gas" : "10000000000000" | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  | 
 | ||||||
|  |   "callcodeToNameRegistrator0": { | ||||||
|  |         "env" : { | ||||||
|  |             "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6", | ||||||
|  |             "currentNumber" : "0", | ||||||
|  |             "currentGasLimit" : "10000000", | ||||||
|  |             "currentDifficulty" : "256", | ||||||
|  |             "currentTimestamp" : 1, | ||||||
|  |             "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" | ||||||
|  |         }, | ||||||
|  |         "pre" : { | ||||||
|  |             "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : { | ||||||
|  |                 "balance" : "1000000000000000000", | ||||||
|  |                 "nonce" : 0, | ||||||
|  |                 "code" : "{ (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (MSTORE 32 0xaaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa ) [[ 0 ]] (CALLCODE 1000000 0x945304eb96065b2a98b57a48a06ae28d285a71b5 23 0 64 64 0) }", | ||||||
|  |                 "storage": {} | ||||||
|  |             }, | ||||||
|  |             "945304eb96065b2a98b57a48a06ae28d285a71b5" : { | ||||||
|  |                 "balance" : "23", | ||||||
|  |                 "code" : "0x600035560f600a59005d60203560003557", | ||||||
|                 "nonce" : "0", |                 "nonce" : "0", | ||||||
|                 "storage" : { |                 "storage" : { | ||||||
|                 } |                 } | ||||||
| @ -790,7 +862,7 @@ | |||||||
|             "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : { |             "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : { | ||||||
|                 "balance" : "1000000000000000000", |                 "balance" : "1000000000000000000", | ||||||
|                 "nonce" : 0, |                 "nonce" : 0, | ||||||
|                 "code" : "0x600035560f6009590060203560003557", |                 "code" : "0x600035560f600a59005d60203560003557", | ||||||
|                 "storage": {} |                 "storage": {} | ||||||
|             } |             } | ||||||
|         }, |         }, | ||||||
| @ -841,7 +913,7 @@ | |||||||
|         } |         } | ||||||
|     }, |     }, | ||||||
| 
 | 
 | ||||||
|     "ABAcalls0": { |     "ABAcalls1": { | ||||||
|          "env" : { |          "env" : { | ||||||
|              "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6", |              "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6", | ||||||
|              "currentNumber" : "0", |              "currentNumber" : "0", | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user