You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

511 lines
27 KiB

{
"SolidityTest" : {
"env" : {
"currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
"currentDifficulty" : "45678256",
"currentGasLimit" : "1000000000000000000000",
"currentNumber" : "120",
"currentTimestamp" : 1,
"previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6"
},
"pre" :
{
"a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : {
"balance" : "10000000000000000",
"code" : "",
"nonce" : "0",
"storage" : {
}
},
"d94f5374fce5edbc8e2a8697c15331677e6ebf0b" : {
"balance" : "100000",
"//" : " ",
"//" : "contract TestContract ",
"//" : "{ ",
"//" : " function testMethod() returns (int res) ",
"//" : " { ",
"//" : " return 225; ",
"//" : " } ",
"//" : " ",
"//" : " function destroy(address sendFoundsTo) ",
"//" : " { ",
"//" : " suicide(sendFoundsTo); ",
"//" : " } ",
"//" : "} ",
"//" : " ",
"//" : "contract TestSolidityContracts ",
"//" : "{ ",
"//" : "struct StructTest ",
"//" : " { ",
"//" : " address addr; ",
"//" : " int amount; ",
"//" : " string32 str; ",
"//" : " mapping (uint => address) funders; ",
"//" : " } ",
"//" : " ",
"//" : " int globalValue; ",
"//" : " StructTest globalData; ",
"//" : " function runSolidityTests() returns (hash res) ",
"//" : " { ",
"//" : " //res is a mask of failing tests given the first byte is first test ",
"//" : " res = 0x0000000000000000000000000000000000000000000000000000000000000000; ",
"//" : " ",
"//" : " createContractFromMethod(); ",
"//" : " ",
"//" : " if (!testKeywords()) ",
"//" : " res = hash(int(res) + int(0xf000000000000000000000000000000000000000000000000000000000000000)); ",
"//" : " ",
"//" : " if (!testContractInteraction()) ",
"//" : " res = hash(int(res) + int(0x0f00000000000000000000000000000000000000000000000000000000000000)); ",
"//" : " ",
"//" : " if (!testContractSuicide()) ",
"//" : " res = hash(int(res) + int(0x00f0000000000000000000000000000000000000000000000000000000000000)); ",
"//" : " ",
"//" : " if (!testBlockAndTransactionProperties()) ",
"//" : " res = hash(int(res) + int(0x000f000000000000000000000000000000000000000000000000000000000000)); ",
"//" : " ",
"//" : " globalValue = 255; ",
"//" : " globalData.addr = 0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b; ",
"//" : " globalData.amount = 255; ",
"//" : " globalData.str = 'global data 32 length string'; ",
"//" : " globalData.funders[0] = 0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b; ",
"//" : " if (!testStructuresAndVariabless()) ",
"//" : " res = hash(int(res) + int(0x0000f00000000000000000000000000000000000000000000000000000000000)); ",
"//" : " ",
"//" : " if (!testCryptographicFunctions()) ",
"//" : " res = hash(int(res) + int(0x00000f0000000000000000000000000000000000000000000000000000000000)); ",
"//" : " ",
"//" : " //Tested 27.01.2015 ",
"//" : " //should run out of gas ",
"//" : " //if (!testInfiniteLoop()) ",
"//" : " // res = hash(int(res) + int(0x000f000000000000000000000000000000000000000000000000000000000000)); ",
"//" : " // ",
"//" : " //should run out of gas ",
"//" : " //if (!testRecursiveMethods()) ",
"//" : " // res = hash(int(res) + int(0x0000000000000000000000000000000000000000000000000000000000000000)); ",
"//" : " } ",
"//" : " ",
"//" : " function testCryptographicFunctions() returns (bool res) ",
"//" : " { ",
"//" : " res = true; ",
"//" : " if (sha3('teststring') != 0x43c4b4524adb81e4e9a5c4648a98e9d320e3908ac5b6c889144b642cd08ae16d) ",
"//" : " return false; ",
"//" : " ",
"//" : " if (sha256('teststring') != 0x3c8727e019a42b444667a587b6001251becadabbb36bfed8087a92c18882d111) ",
"//" : " return false; ",
"//" : " ",
"//" : " if (ripemd160('teststring') != 0xcd566972b5e50104011a92b59fa8e0b1234851ae) ",
"//" : " return false; ",
"//" : " ",
"//" : " //ecrecover ",
"//" : " } ",
"//" : " ",
"//" : " function testStructuresAndVariabless() returns (bool res) ",
"//" : " { ",
"//" : " res = true; ",
"//" : " if (globalValue != 255) ",
"//" : " return false; ",
"//" : " ",
"//" : " if (globalValue != globalData.amount) ",
"//" : " return false; ",
"//" : " ",
"//" : " if (globalData.addr != 0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b) ",
"//" : " return false; ",
"//" : " ",
"//" : " if (globalData.str != 'global data 32 length string') ",
"//" : " return false; ",
"//" : " ",
"//" : " if (globalData.funders[0] != 0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b) ",
"//" : " return false; ",
"//" : " } ",
"//" : " ",
"//" : " function testBlockAndTransactionProperties() returns (bool res) ",
"//" : " { ",
"//" : " res = true; ",
"//" : " if (block.coinbase != 0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba) ",
"//" : " return false; ",
"//" : " ",
"//" : " if (block.difficulty != 45678256) ",
"//" : " return false; ",
"//" : " ",
"//" : " //for some reason does not work 27.01.2015 ",
"//" : " if (block.gaslimit != 1000000000000000000000) ",
"//" : " return false; ",
"//" : " ",
"//" : " if (block.number != 120) ",
"//" : " return false; ",
"//" : " ",
"//" : " //try to call this ",
"//" : " block.blockhash(120); ",
"//" : " block.timestamp; ",
"//" : " msg.gas; ",
"//" : " ",
"//" : " if (msg.sender != 0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b) ",
"//" : " return false; ",
"//" : " ",
"//" : " if (msg.value != 100) ",
"//" : " return false; ",
"//" : " ",
"//" : " if (tx.gasprice != 1) ",
"//" : " return false; ",
"//" : " ",
"//" : " if (tx.origin != 0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b) ",
"//" : " return false; ",
"//" : " ",
"//" : " } ",
"//" : " ",
"//" : " function testInfiniteLoop() returns (bool res) ",
"//" : " { ",
"//" : " res = false; ",
"//" : " while(true){} ",
"//" : " return true; ",
"//" : " } ",
"//" : " ",
"//" : " function testRecursiveMethods() returns (bool res) ",
"//" : " { ",
"//" : " res = false; ",
"//" : " testRecursiveMethods2(); ",
"//" : " return true; ",
"//" : " } ",
"//" : " function testRecursiveMethods2() ",
"//" : " { ",
"//" : " testRecursiveMethods(); ",
"//" : "} ",
"//" : " ",
"//" : " ",
"//" : " function testContractSuicide() returns (bool res) ",
"//" : " { ",
"//" : " TestContract a = new TestContract(); ",
"//" : " a.destroy(block.coinbase); ",
"//" : " if (a.testMethod() == 225) //we should be able to call a contract ",
"//" : " return true; ",
"//" : " return false; ",
"//" : " } ",
"//" : " ",
"//" : " function testContractInteraction() returns (bool res) ",
"//" : " { ",
"//" : " TestContract a = new TestContract(); ",
"//" : " if (a.testMethod() == 225) ",
"//" : " return true; ",
"//" : " return false; ",
"//" : " } ",
"//" : " ",
"//" : " function testKeywords() returns (bool res) ",
"//" : " { ",
"//" : " //some simple checks for the if statemnt ",
"//" : " //if, else, while, for, break, continue, return ",
"//" : " int i = 0; ",
"//" : " res = false; ",
"//" : " ",
"//" : " if (i == 0) ",
"//" : " { ",
"//" : " if( i <= -25) ",
"//" : " { ",
"//" : " return false; ",
"//" : " } ",
"//" : " else ",
"//" : " { ",
"//" : " while(i < 10) ",
"//" : " i++; ",
"//" : " ",
"//" : " if (i == 10) ",
"//" : " { ",
"//" : " for(var j=10; j>0; j--) ",
"//" : " { ",
"//" : " i--; ",
"//" : " } ",
"//" : " } ",
"//" : " } ",
"//" : " } ",
"//" : " ",
"//" : " ",
"//" : " if (i == 0) ",
"//" : " return true; ",
"//" : " ",
"//" : " return false; ",
"//" : " } ",
"//" : " ",
"//" : " function createContractFromMethod() returns (TestContract a) ",
"//" : " { ",
"//" : " a = new TestContract(); ",
"//" : " } ",
"//" : "} ",
"code" : "0x60003560e060020a900480630c4c9a8014610084578063296df0df146100965780632a9afb83146100a8578063380e4396146100ba5780634893d88a146100cc5780637ee17e12146100da578063981a3165146100e8578063a60eedda146100fa578063e0a9fd281461010c578063e97384dc1461011e578063ed973fe91461013057005b61008c6102c0565b8060005260206000f35b61009e61067b565b8060005260206000f35b6100b06101ba565b8060005260206000f35b6100c261049b565b8060005260206000f35b6100d461087d565b60006000f35b6100e26101a4565b60006000f35b6100f06102ab565b8060005260206000f35b610102610695565b8060005260206000f35b610114610732565b8060005260206000f35b61012661055a565b8060005260206000f35b610138610142565b8060005260206000f35b600060006060610889600039606060006000f0905080600160a060020a031663b9c3d0a5602060008260e060020a026000526004600060008660155a03f150505060005160e1146101925761019b565b600191506101a0565b600091505b5090565b60006060610889600039606060006000f0905090565b60006001905060005460ff14156101d0576101d9565b600090506102a8565b60025460005414156101ea576101f3565b600090506102a8565b600154600160a060020a031673a94f5374fce5edbc8e2a8697c15331677e6ebf0b141561021f57610228565b600090506102a8565b6003547f676c6f62616c2064617461203332206c656e67746820737472696e6700000000141561025757610260565b600090506102a8565b600460006000815260200190815260200160002054600160a060020a031673a94f5374fce5edbc8e2a8697c15331677e6ebf0b141561029e576102a7565b600090506102a8565b5b90565b6000600090506102b961087d565b6001905090565b6000600090506102ce6101a4565b506102d761049b565b156102e157610307565b7ff000000000000000000000000000000000000000000000000000000000000000810190505b61030f610142565b156103195761033f565b7f0f00000000000000000000000000000000000000000000000000000000000000810190505b610347610695565b1561035157610376565b7ef0000000000000000000000000000000000000000000000000000000000000810190505b61037e61055a565b15610388576103ad565b7e0f000000000000000000000000000000000000000000000000000000000000810190505b60ff60008190555073a94f5374fce5edbc8e2a8697c15331677e6ebf0b60018190555060ff6002819055507f676c6f62616c2064617461203332206c656e67746820737472696e670000000060038190555073a94f5374fce5edbc8e2a8697c15331677e6ebf0b6004600060008152602001908152602001600020819055506104346101ba565b1561043e57610462565b7df00000000000000000000000000000000000000000000000000000000000810190505b61046a610732565b1561047457610498565b7d0f0000000000000000000000000000000000000000000000000000000000810190505b90565b6000600060006000915060009250816000146104b65761053a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7821315610530575b600a8212156104f55781806001019250506104df565b81600a146105025761052b565b600a90505b60008160ff16111561052a57818060019003925050808060019003915050610507565b5b610539565b60009250610555565b5b8160001461054757610550565b60019250610555565b600092505b505090565b60006001905041600160a060020a0316732adc25665018aa1fe0e6bc666dac8fc2697ff9ba141561058a57610593565b60009050610678565b446302b8feb014156105a4576105ad565b60009050610678565b45683635c9adc5dea0000014156105c3576105cc565b60009050610678565b43607814156105da576105e3565b60009050610678565b33600160a060020a031673a94f5374fce5edbc8e2a8697c15331677e6ebf0b141561060d57610616565b60009050610678565b34606414156106245761062d565b60009050610678565b3a6001141561063b57610644565b60009050610678565b32600160a060020a031673a94f5374fce5edbc8e2a8697c15331677e6ebf0b141561066e57610677565b60009050610678565b5b90565b6000600090505b60011561068e57610682565b6001905090565b60006000600191506060610889600039606060006000f0905080600160a060020a031662f55d9d600060008260e060020a02600052600441600160a060020a03168152602001600060008660155a03f150505080600160a060020a031663b9c3d0a5602060008260e060020a026000526004600060008660155a03f150505060005160e114156107245761072d565b6000915061072e565b5b5090565b60006001905060007f74657374737472696e67000000000000000000000000000000000000000000008152600a016000207f43c4b4524adb81e4e9a5c4648a98e9d320e3908ac5b6c889144b642cd08ae16d141561078f57610798565b6000905061087a565b60026020600060007f74657374737472696e67000000000000000000000000000000000000000000008152600a01600060008560155a03f150506000517f3c8727e019a42b444667a587b6001251becadabbb36bfed8087a9
"nonce" : "0",
"storage" : {
}
}
},
"transaction" :
{
"//" : "createContractFromMethod()",
"data" : "0x7ee17e12",
"//" : "runSolidityTests()",
"data" : "0x0c4c9a80",
"gasLimit" : "465224",
"gasPrice" : "1",
"nonce" : "0",
"secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8",
"to" : "d94f5374fce5edbc8e2a8697c15331677e6ebf0b",
"value" : "100"
}
},
"CallLowLevelCreatesSolidity" : {
"env" : {
"currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
"currentDifficulty" : "45678256",
"currentGasLimit" : "100000000",
"currentNumber" : "0",
"currentTimestamp" : 1,
"previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6"
},
"pre" :
{
"a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : {
"balance" : "100000",
"//": "contract subcaller ",
"//": "{ ",
"//": " function init(address a) ",
"//": " { ",
"//": " main(a).setdata(225); ",
"//": " } ",
"//": "} ",
"//": " ",
"//": "contract main ",
"//": "{ ",
"//": " uint data; ",
"//": " function run() returns (uint) ",
"//": " { ",
"//": " data = 1; ",
"//": " subcaller a = new subcaller(); ",
"//": " a.init(msg.sender); ",
"//": " return data; ",
"//": " } ",
"//": " ",
"//": " function setdata(uint _data) ",
"//": " { ",
"//": " data = _data; ",
"//": " } ",
"//": "}",
"code" : "0x60e060020a60003504806330debb4214610020578063c04062261461003157005b61002b6004356100a4565b60006000f35b610039610043565b8060005260206000f35b60006000600160008190555060656100af600039606560006000f0905080600160a060020a03166319ab453c600060008260e060020a02600052600433600160a060020a03168152602001600060008660155a03f150505060005491505090565b80600081905550505600605980600c6000396000f30060e060020a60003504806319ab453c14601457005b601d6004356023565b60006000f35b80600160a060020a03166330debb42600060008260e060020a02600052600460e18152602001600060008660155a03f15050505056",
"nonce" : "0",
"storage" : {
}
}
},
"transaction" :
{
"//" : "run()",
"data" : "0xc0406226",
"gasLimit" : "15000",
"gasPrice" : "1",
"nonce" : "0",
"secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8",
"to" : "a94f5374fce5edbc8e2a8697c15331677e6ebf0b",
"value" : "1"
}
},
"CallRecursiveMethods" : {
"env" : {
"currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
"currentDifficulty" : "45678256",
"currentGasLimit" : "100000000",
"currentNumber" : "0",
"currentTimestamp" : 1,
"previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6"
},
"pre" :
{
"a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : {
"balance" : "100000",
"//" : "contract recursiveMethods ",
"//" : "{ ",
"//" : " function testInfiniteLoop() ",
"//" : " { ",
"//" : " while(true){} ",
"//" : " } ",
"//" : " ",
"//" : " function testRecursiveMethods() ",
"//" : " { ",
"//" : " testRecursiveMethods2(); ",
"//" : " } ",
"//" : " ",
"//" : " function testRecursiveMethods2() ",
"//" : " { ",
"//" : " testRecursiveMethods(); ",
"//" : " } ",
"//" : "}",
"code" : "0x60e060020a600035048063296df0df1460285780634893d88a146034578063981a316514604057005b602e604c565b60006000f35b603a6061565b60006000f35b60466059565b60006000f35b5b600115605757604d565b565b605f6061565b565b60676059565b56",
"nonce" : "0",
"storage" : {
}
}
},
"transaction" :
{
"//" : "testRecursiveMethods()",
"data" : "0x981a3165",
"gasLimit" : "7000",
"gasPrice" : "1",
"nonce" : "0",
"secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8",
"to" : "a94f5374fce5edbc8e2a8697c15331677e6ebf0b",
"value" : "1"
}
},
"CallInfiniteLoop" : {
"env" : {
"currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
"currentDifficulty" : "45678256",
"currentGasLimit" : "100000000",
"currentNumber" : "0",
"currentTimestamp" : 1,
"previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6"
},
"pre" :
{
"a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : {
"balance" : "100000",
"//" : "contract recursiveMethods ",
"//" : "{ ",
"//" : " function testInfiniteLoop() ",
"//" : " { ",
"//" : " while(true){} ",
"//" : " } ",
"//" : " ",
"//" : " function testRecursiveMethods() ",
"//" : " { ",
"//" : " testRecursiveMethods2(); ",
"//" : " } ",
"//" : " ",
"//" : " function testRecursiveMethods2() ",
"//" : " { ",
"//" : " testRecursiveMethods(); ",
"//" : " } ",
"//" : "}",
"code" : "0x60e060020a600035048063296df0df1460285780634893d88a146034578063981a316514604057005b602e604c565b60006000f35b603a6061565b60006000f35b60466059565b60006000f35b5b600115605757604d565b565b605f6061565b565b60676059565b56",
"nonce" : "0",
"storage" : {
}
}
},
"transaction" :
{
"//" : "testInfiniteLoop()",
"data" : "0x296df0df",
"gasLimit" : "10000",
"gasPrice" : "1",
"nonce" : "0",
"secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8",
"to" : "a94f5374fce5edbc8e2a8697c15331677e6ebf0b",
"value" : "1"
}
},
"RecursiveCreateContracts" : {
"env" : {
"currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
"currentDifficulty" : "45678256",
"currentGasLimit" : "100000000",
"currentNumber" : "0",
"currentTimestamp" : 1,
"previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6"
},
"pre" :
{
"a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : {
"balance" : "1000000",
"//" : "contract recursiveCreate1 ",
"//" : "{ ",
"//" : " function recursiveCreate1(address a, uint depth) ",
"//" : " { ",
"//" : " depth = depth - 1; ",
"//" : " if(depth > 0) ",
"//" : " main(a).create2(depth); ",
"//" : " } ",
"//" : "} ",
"//" : " ",
"//" : "contract recursiveCreate2 ",
"//" : "{ ",
"//" : " function recursiveCreate2(address a, uint depth) ",
"//" : " { ",
"//" : " depth = depth - 1; ",
"//" : " if(depth > 0) ",
"//" : " recursiveCreate1 rec1 = new recursiveCreate1(a, depth); ",
"//" : " } ",
"//" : "} ",
"//" : " ",
"//" : "contract main ",
"//" : "{ ",
"//" : " address maincontract; ",
"//" : " uint depp; ",
"//" : " function run(uint depth) ",
"//" : " { ",
"//" : " maincontract = msg.sender; ",
"//" : " depp = depth; ",
"//" : " recursiveCreate1 rec1 = new recursiveCreate1(maincontract, depth); ",
"//" : " } ",
"//" : " ",
"//" : " function create2(uint depth) ",
"//" : " { ",
"//" : " recursiveCreate2 rec2 = new recursiveCreate2(maincontract, depth); ",
"//" : " address(rec2).send(2); ",
"//" : " } ",
"//" : "}",
"code" : "0x60003560e060020a90048063820b13f614610021578063a444f5e91461003257005b61002c600435610043565b60006000f35b61003d60043561008f565b60006000f35b600060c66100cc60003960c6600054600160a060020a0316815260200182815260200160006000f0905080600160a060020a0316600060026000600060006000848787f1505050505050565b6000336000819055508160018190555060686101926000396068600054600160a060020a0316815260200182815260200160006000f09050505056006012604060c6600439600451602451601e565b60018060c56000396000f35b6000600182039150600082116031576057565b6068605d600039606883600160a060020a0316815260200182815260200160006000f090505b5050505600601260406068600439600451602451601e565b60018060676000396000f35b60018103905060008111602f576062565b81600160a060020a031663820b13f6600060008260e060020a026000526004858152602001600060008660155a03f15050505b505056000000601260406068600439600451602451601e565b60018060676000396000f35b60018103905060008111602f576062565b81600160a060020a031663820b13f6600060008260e060020a026000526004858152602001600060008660155a03f15050505b5050560000",
"nonce" : "0",
"storage" : {
}
}
},
"transaction" :
{
"//" : "run(uint256)",
"data" : "0xa444f5e900000000000000000000000000000000000000000000000000000000000204",
"gasLimit" : "10000",
"gasPrice" : "1",
"nonce" : "0",
"secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8",
"to" : "a94f5374fce5edbc8e2a8697c15331677e6ebf0b",
"value" : "1"
}
},
"AmbigiousMethod" : {
"env" : {
"currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
"currentDifficulty" : "45678256",
"currentGasLimit" : "100000000",
"currentNumber" : "0",
"currentTimestamp" : 1,
"previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6"
},
"pre" :
{
"a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : {
"balance" : "100000",
"code" : "0x60003560e060020a90048063c040622614601557005b601b6021565b60006000f35b61014f60008190555056",
"nonce" : "0",
"storage" : {
}
}
},
"transaction" :
{
"//" : "run()",
"data" : "0xc0406226",
"gasLimit" : "10000",
"gasPrice" : "1",
"nonce" : "0",
"secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8",
"to" : "a94f5374fce5edbc8e2a8697c15331677e6ebf0b",
"value" : "1"
}
}
}