mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Check State: Block Test + Transaction
This commit is contained in:
parent
e54952c8cf
commit
47849db473
@ -53,6 +53,7 @@ void doBlockchainTests(json_spirit::mValue& _v, bool _fillin)
|
||||
BOOST_REQUIRE(o.count("pre"));
|
||||
ImportTest importer(o["pre"].get_obj());
|
||||
State state(OverlayDB(), BaseState::Empty, biGenesisBlock.coinbaseAddress);
|
||||
State stateTemp(OverlayDB(), BaseState::Empty, biGenesisBlock.coinbaseAddress);
|
||||
importer.importState(o["pre"].get_obj(), state);
|
||||
o["pre"] = fillJsonWithState(state);
|
||||
state.commit();
|
||||
@ -89,7 +90,7 @@ void doBlockchainTests(json_spirit::mValue& _v, bool _fillin)
|
||||
for (auto const& bl: o["blocks"].get_array())
|
||||
{
|
||||
mObject blObj = bl.get_obj();
|
||||
|
||||
stateTemp = state;
|
||||
// get txs
|
||||
TransactionQueue txs;
|
||||
ZeroGasPricer gp;
|
||||
@ -180,7 +181,7 @@ void doBlockchainTests(json_spirit::mValue& _v, bool _fillin)
|
||||
}
|
||||
|
||||
uncleHeaderObj_pre = uncleHeaderObj;
|
||||
}
|
||||
} //for blObj["uncleHeaders"].get_array()
|
||||
|
||||
blObj["uncleHeaders"] = aUncleList;
|
||||
bc.sync(uncleBlockQueue, state.db(), 4);
|
||||
@ -288,11 +289,10 @@ void doBlockchainTests(json_spirit::mValue& _v, bool _fillin)
|
||||
blObj.erase(blObj.find("blockHeader"));
|
||||
blObj.erase(blObj.find("uncleHeaders"));
|
||||
blObj.erase(blObj.find("transactions"));
|
||||
state = State(OverlayDB(), BaseState::Empty, biGenesisBlock.coinbaseAddress);
|
||||
importer.importState(o["pre"].get_obj(), state);
|
||||
state = stateTemp; //revert state as if it was before executing this block
|
||||
}
|
||||
blArray.push_back(blObj);
|
||||
}
|
||||
} //for blocks
|
||||
|
||||
if (o.count("expect") > 0)
|
||||
{
|
||||
|
@ -36,8 +36,54 @@ void doTransactionTests(json_spirit::mValue& _v, bool _fillin)
|
||||
cerr << i.first << endl;
|
||||
mObject& o = i.second.get_obj();
|
||||
|
||||
if (_fillin == false)
|
||||
if (_fillin)
|
||||
{
|
||||
BOOST_REQUIRE(o.count("transaction") > 0);
|
||||
mObject tObj = o["transaction"].get_obj();
|
||||
|
||||
//Construct Rlp of the given transaction
|
||||
RLPStream rlpStream = createRLPStreamFromTransactionFields(tObj);
|
||||
o["rlp"] = "0x" + toHex(rlpStream.out());
|
||||
|
||||
try
|
||||
{
|
||||
Transaction txFromFields(rlpStream.out(), CheckTransaction::Everything);
|
||||
if (!txFromFields.signature().isValid())
|
||||
BOOST_THROW_EXCEPTION(Exception() << errinfo_comment("transaction from RLP signature is invalid") );
|
||||
|
||||
o["sender"] = toString(txFromFields.sender());
|
||||
}
|
||||
catch(Exception const& _e)
|
||||
{
|
||||
//Transaction is InValid
|
||||
cnote << "Transaction Exception: " << diagnostic_information(_e);
|
||||
o.erase(o.find("transaction"));
|
||||
if (o.count("expect") > 0)
|
||||
{
|
||||
bool expectInValid = (o["expect"].get_str() == "invalid");
|
||||
if (Options::get().checkState)
|
||||
BOOST_CHECK_MESSAGE(expectInValid, "Check state: Transaction " << i.first << " is not expected to be invalid!");
|
||||
else
|
||||
BOOST_WARN_MESSAGE(expectInValid, "Check state: Transaction " << i.first << " is not expected to be invalid!");
|
||||
|
||||
o.erase(o.find("expect"));
|
||||
}
|
||||
}
|
||||
|
||||
//Transaction is Valid
|
||||
if (o.count("expect") > 0)
|
||||
{
|
||||
bool expectValid = (o["expect"].get_str() == "valid");
|
||||
if (Options::get().checkState)
|
||||
BOOST_CHECK_MESSAGE(expectValid, "Check state: Transaction " << i.first << " is not expected to be valid!");
|
||||
else
|
||||
BOOST_WARN_MESSAGE(expectValid, "Check state: Transaction " << i.first << " is not expected to be valid!");
|
||||
|
||||
o.erase(o.find("expect"));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
BOOST_REQUIRE(o.count("rlp") > 0);
|
||||
Transaction txFromRlp;
|
||||
try
|
||||
@ -80,29 +126,6 @@ void doTransactionTests(json_spirit::mValue& _v, bool _fillin)
|
||||
Address addressReaded = Address(o["sender"].get_str());
|
||||
BOOST_CHECK_MESSAGE(txFromFields.sender() == addressReaded || txFromRlp.sender() == addressReaded, "Signature address of sender does not match given sender address!");
|
||||
}
|
||||
else
|
||||
{
|
||||
BOOST_REQUIRE(o.count("transaction") > 0);
|
||||
mObject tObj = o["transaction"].get_obj();
|
||||
|
||||
//Construct Rlp of the given transaction
|
||||
RLPStream rlpStream = createRLPStreamFromTransactionFields(tObj);
|
||||
o["rlp"] = "0x" + toHex(rlpStream.out());
|
||||
|
||||
try
|
||||
{
|
||||
Transaction txFromFields(rlpStream.out(), CheckTransaction::Everything);
|
||||
if (!txFromFields.signature().isValid())
|
||||
BOOST_THROW_EXCEPTION(Exception() << errinfo_comment("transaction from RLP signature is invalid") );
|
||||
|
||||
o["sender"] = toString(txFromFields.sender());
|
||||
}
|
||||
catch(Exception const& _e)
|
||||
{
|
||||
cnote << "Transaction Exception: " << diagnostic_information(_e);
|
||||
o.erase(o.find("transaction"));
|
||||
}
|
||||
}
|
||||
}//for
|
||||
}//doTransactionTests
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
{
|
||||
"RightVRSTest" : {
|
||||
"expect" : "valid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "0x5544",
|
||||
@ -15,6 +16,7 @@
|
||||
},
|
||||
|
||||
"V_overflow32bit" : {
|
||||
"expect" : "invalid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "0x5544",
|
||||
@ -30,6 +32,7 @@
|
||||
},
|
||||
|
||||
"V_overflow32bitSigned" : {
|
||||
"expect" : "invalid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "0x5544",
|
||||
@ -45,6 +48,7 @@
|
||||
},
|
||||
|
||||
"V_overflow64bit" : {
|
||||
"expect" : "invalid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "0x5544",
|
||||
@ -60,6 +64,7 @@
|
||||
},
|
||||
|
||||
"V_overflow64bitSigned" : {
|
||||
"expect" : "invalid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "0x5544",
|
||||
@ -75,6 +80,7 @@
|
||||
},
|
||||
|
||||
"WrongVRSTestVEqual26" : {
|
||||
"expect" : "invalid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
@ -90,6 +96,7 @@
|
||||
},
|
||||
|
||||
"WrongVRSTestVEqual29" : {
|
||||
"expect" : "invalid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
@ -105,6 +112,7 @@
|
||||
},
|
||||
|
||||
"WrongVRSTestVEqual31" : {
|
||||
"expect" : "invalid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
@ -120,6 +128,7 @@
|
||||
},
|
||||
|
||||
"WrongVRSTestVOverflow" : {
|
||||
"expect" : "invalid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
@ -135,6 +144,7 @@
|
||||
},
|
||||
|
||||
"WrongVRSTestIncorrectSize" : {
|
||||
"expect" : "invalid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
@ -151,6 +161,7 @@
|
||||
|
||||
"SenderTest" : {
|
||||
"//" : "sender a94f5374fce5edbc8e2a8697c15331677e6ebf0b",
|
||||
"expect" : "valid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
@ -167,6 +178,7 @@
|
||||
},
|
||||
|
||||
"DataTest" : {
|
||||
"expect" : "valid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "0x0358ac39584bc98a7c979f984b03",
|
||||
@ -183,6 +195,7 @@
|
||||
},
|
||||
|
||||
"TransactionWithTooManyRLPElements" : {
|
||||
"expect" : "invalid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
@ -199,6 +212,7 @@
|
||||
},
|
||||
|
||||
"TransactionWithTooFewRLPElements" : {
|
||||
"expect" : "invalid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
@ -212,6 +226,7 @@
|
||||
},
|
||||
|
||||
"TransactionWithHihghValue" : {
|
||||
"expect" : "valid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
@ -228,6 +243,7 @@
|
||||
|
||||
|
||||
"TransactionWithHihghValueOverflow" : {
|
||||
"expect" : "invalid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
@ -243,6 +259,7 @@
|
||||
},
|
||||
|
||||
"TransactionWithSvalueHigh" : {
|
||||
"expect" : "valid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
@ -258,6 +275,7 @@
|
||||
},
|
||||
|
||||
"TransactionWithSvalueTooHigh" : {
|
||||
"expect" : "invalid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
@ -273,6 +291,7 @@
|
||||
},
|
||||
|
||||
"TransactionWithSvalueOverflow" : {
|
||||
"expect" : "invalid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
@ -288,6 +307,7 @@
|
||||
},
|
||||
|
||||
"TransactionWithRvalueOverflow" : {
|
||||
"expect" : "invalid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
@ -303,6 +323,7 @@
|
||||
},
|
||||
|
||||
"TransactionWithRvalueHigh" : {
|
||||
"expect" : "valid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
@ -318,6 +339,7 @@
|
||||
},
|
||||
|
||||
"TransactionWithRvalueTooHigh" : {
|
||||
"expect" : "invalid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
@ -333,6 +355,7 @@
|
||||
},
|
||||
|
||||
"TransactionWithRvalueWrongSize" : {
|
||||
"expect" : "invalid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
@ -348,6 +371,7 @@
|
||||
},
|
||||
|
||||
"TransactionWithSvalueWrongSize" : {
|
||||
"expect" : "invalid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
@ -363,6 +387,7 @@
|
||||
},
|
||||
|
||||
"TransactionWithHihghNonce" : {
|
||||
"expect" : "valid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
@ -378,6 +403,7 @@
|
||||
},
|
||||
|
||||
"TransactionWithNonceOverflow" : {
|
||||
"expect" : "invalid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
@ -393,6 +419,7 @@
|
||||
},
|
||||
|
||||
"TransactionWithHihghGas" : {
|
||||
"expect" : "valid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
@ -408,6 +435,7 @@
|
||||
},
|
||||
|
||||
"TransactionWithHihghGasPrice" : {
|
||||
"expect" : "valid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
@ -423,6 +451,7 @@
|
||||
},
|
||||
|
||||
"TransactionWithGasLimitxPriceOverflow" : {
|
||||
"expect" : "invalid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
@ -438,6 +467,7 @@
|
||||
},
|
||||
|
||||
"TransactionWithGasPriceOverflow" : {
|
||||
"expect" : "invalid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
@ -453,6 +483,7 @@
|
||||
},
|
||||
|
||||
"TransactionWithGasLimitOverflow" : {
|
||||
"expect" : "invalid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
@ -468,6 +499,7 @@
|
||||
},
|
||||
|
||||
"AddressMoreThan20PrefixedBy0" : {
|
||||
"expect" : "invalid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "0x12",
|
||||
@ -483,14 +515,15 @@
|
||||
},
|
||||
|
||||
"EmptyTransaction" : {
|
||||
"expect" : "valid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
"gasLimit" : "",
|
||||
"gasPrice" : "",
|
||||
"nonce" : "",
|
||||
"gasLimit" : "0",
|
||||
"gasPrice" : "0",
|
||||
"nonce" : "0",
|
||||
"to" : "095e7baea6a6c7c4c2dfeb977efac326af552d87",
|
||||
"value" : "",
|
||||
"value" : "0",
|
||||
"v" : "27",
|
||||
"r" : "0x48b55bfa915ac795c431978d8a6a992b628d557da5ff759b307d495a36649353",
|
||||
"s" : "0xefffd310ac743f371de3b9f7f9cb56c0b28ad43601b4ab949f53faa07bd2c804"
|
||||
@ -498,6 +531,7 @@
|
||||
},
|
||||
|
||||
"AddressMoreThan20" : {
|
||||
"expect" : "invalid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
@ -513,6 +547,7 @@
|
||||
},
|
||||
|
||||
"AddressLessThan20" : {
|
||||
"expect" : "invalid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
@ -528,6 +563,7 @@
|
||||
},
|
||||
|
||||
"AddressLessThan20Prefixed0" : {
|
||||
"expect" : "invalid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
@ -542,37 +578,8 @@
|
||||
}
|
||||
},
|
||||
|
||||
"ValuesAsHex" : {
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
"gasLimit" : "0xadc053",
|
||||
"gasPrice" : "1",
|
||||
"nonce" : "0xffdc5",
|
||||
"to" : "b94f5374fce5edbc8e2a8697c15331677e6ebf0b",
|
||||
"value" : "4294820140",
|
||||
"v" : "28",
|
||||
"r" : "0x98ff921201554726367d2be8c804a7ff89ccf285ebc57dff8ae4c44b9c19ac4a",
|
||||
"s" : "0x8887321be575c8095f789dd4c743dfe42c1820f9231f98a962b210e3ac2452a3"
|
||||
}
|
||||
},
|
||||
|
||||
"ValuesAsDec" : {
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "",
|
||||
"gasLimit" : "11386963",
|
||||
"gasPrice" : "1",
|
||||
"nonce" : "1048005",
|
||||
"to" : "b94f5374fce5edbc8e2a8697c15331677e6ebf0b",
|
||||
"value" : "4501151495864620",
|
||||
"v" : "28",
|
||||
"r" : "0x98ff921201554726367d2be8c804a7ff89ccf285ebc57dff8ae4c44b9c19ac4a",
|
||||
"s" : "0x8887321be575c8095f789dd4c743dfe42c1820f9231f98a962b210e3ac2452a3"
|
||||
}
|
||||
},
|
||||
|
||||
"unpadedRValue": {
|
||||
"expect" : "valid",
|
||||
"transaction": {
|
||||
"nonce": "13",
|
||||
"gasPrice": "0x09184e72a000",
|
||||
@ -587,6 +594,7 @@
|
||||
},
|
||||
|
||||
"libsecp256k1test": {
|
||||
"expect" : "valid",
|
||||
"transaction": {
|
||||
"nonce": "",
|
||||
"gasPrice": "0x09184e72a000",
|
||||
@ -601,6 +609,7 @@
|
||||
},
|
||||
|
||||
"dataTx_bcValidBlockTest": {
|
||||
"expect" : "valid",
|
||||
"transaction": {
|
||||
"nonce": "0",
|
||||
"gasPrice": "50",
|
||||
@ -615,6 +624,7 @@
|
||||
},
|
||||
|
||||
"RSsecp256k1" : {
|
||||
"expect" : "valid",
|
||||
"transaction" :
|
||||
{
|
||||
"data" : "0x5544",
|
||||
|
Loading…
Reference in New Issue
Block a user