aboutsummaryrefslogtreecommitdiffstats
path: root/blockchain.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'blockchain.cpp')
-rw-r--r--blockchain.cpp57
1 files changed, 29 insertions, 28 deletions
diff --git a/blockchain.cpp b/blockchain.cpp
index 50ca22c5..17e6c358 100644
--- a/blockchain.cpp
+++ b/blockchain.cpp
@@ -20,7 +20,9 @@
* block test functions.
*/
+#include <boost/filesystem.hpp>
#include <libdevcrypto/FileSystem.h>
+#include <libtestutils/TransientDirectory.h>
#include <libethereum/CanonBlockChain.h>
#include "TestHelper.h"
@@ -35,8 +37,8 @@ bytes createBlockRLPFromFields(mObject& _tObj);
void overwriteBlockHeader(BlockInfo& _current_BlockHeader, mObject& _blObj);
BlockInfo constructBlock(mObject& _o);
void updatePoW(BlockInfo& _bi);
-void writeBlockHeaderToJson(mObject& _o, const BlockInfo& _bi);
-RLPStream createFullBlockFromHeader(const BlockInfo& _bi, const bytes& _txs = RLPEmptyList, const bytes& _uncles = RLPEmptyList);
+void writeBlockHeaderToJson(mObject& _o, BlockInfo const& _bi);
+RLPStream createFullBlockFromHeader(BlockInfo const& _bi, bytes const& _txs = RLPEmptyList, bytes const& _uncles = RLPEmptyList);
void doBlockchainTests(json_spirit::mValue& _v, bool _fillin)
{
@@ -75,7 +77,8 @@ void doBlockchainTests(json_spirit::mValue& _v, bool _fillin)
o["genesisRLP"] = "0x" + toHex(rlpGenesisBlock.out());
// construct blockchain
- BlockChain bc(rlpGenesisBlock.out(), string(), true);
+ TransientDirectory td;
+ BlockChain bc(rlpGenesisBlock.out(), td.path(), true);
if (_fillin)
{
@@ -182,18 +185,17 @@ void doBlockchainTests(json_spirit::mValue& _v, bool _fillin)
Transactions txList;
for (auto const& txi: txs.transactions())
{
- Transaction tx(txi.second, CheckSignature::Sender);
- txList.push_back(tx);
+ txList.push_back(txi.second);
mObject txObject;
- txObject["nonce"] = toString(tx.nonce());
- txObject["data"] = "0x" + toHex(tx.data());
- txObject["gasLimit"] = toString(tx.gas());
- txObject["gasPrice"] = toString(tx.gasPrice());
- txObject["r"] = "0x" + toString(tx.signature().r);
- txObject["s"] = "0x" + toString(tx.signature().s);
- txObject["v"] = to_string(tx.signature().v + 27);
- txObject["to"] = tx.isCreation() ? "" : toString(tx.receiveAddress());
- txObject["value"] = toString(tx.value());
+ txObject["nonce"] = toString(txi.second.nonce());
+ txObject["data"] = "0x" + toHex(txi.second.data());
+ txObject["gasLimit"] = toString(txi.second.gas());
+ txObject["gasPrice"] = toString(txi.second.gasPrice());
+ txObject["r"] = "0x" + toString(txi.second.signature().r);
+ txObject["s"] = "0x" + toString(txi.second.signature().s);
+ txObject["v"] = to_string(txi.second.signature().v + 27);
+ txObject["to"] = txi.second.isCreation() ? "" : toString(txi.second.receiveAddress());
+ txObject["value"] = toString(txi.second.value());
txArray.push_back(txObject);
}
@@ -242,6 +244,7 @@ void doBlockchainTests(json_spirit::mValue& _v, bool _fillin)
if (sha3(RLP(state.blockData())[2].data()) != sha3(RLP(block2.out())[2].data()))
cnote << "uncle list mismatch\n" << RLP(state.blockData())[2].data() << "\n" << RLP(block2.out())[2].data();
+
try
{
state.sync(bc);
@@ -293,7 +296,7 @@ void doBlockchainTests(json_spirit::mValue& _v, bool _fillin)
BOOST_CHECK(blObj.count("uncleHeaders") == 0);
continue;
}
- catch(...)
+ catch (...)
{
cnote << "state sync or block import did throw an exception\n";
BOOST_CHECK(blObj.count("blockHeader") == 0);
@@ -389,7 +392,6 @@ void doBlockchainTests(json_spirit::mValue& _v, bool _fillin)
BOOST_CHECK_MESSAGE(txsFromField[i] == txsFromRlp[i], "transactions from rlp and transaction from field do not match");
BOOST_CHECK_MESSAGE(txsFromField[i].rlp() == txsFromRlp[i].rlp(), "transactions rlp do not match");
-
}
// check uncle list
@@ -489,12 +491,12 @@ bytes createBlockRLPFromFields(mObject& _tObj)
return rlpStream.out();
}
-void overwriteBlockHeader(BlockInfo& _current_BlockHeader, mObject& _blObj)
+void overwriteBlockHeader(BlockInfo& _currentBlockHeader, mObject& _blObj)
{
if (_blObj["blockHeader"].get_obj().size() != 14)
{
- BlockInfo tmp = _current_BlockHeader;
+ BlockInfo tmp = _currentBlockHeader;
if (_blObj["blockHeader"].get_obj().count("parentHash"))
tmp.parentHash = h256(_blObj["blockHeader"].get_obj()["parentHash"].get_str());
@@ -540,16 +542,16 @@ void overwriteBlockHeader(BlockInfo& _current_BlockHeader, mObject& _blObj)
// find new valid nonce
- if (tmp != _current_BlockHeader)
+ if (tmp != _currentBlockHeader)
{
- _current_BlockHeader = tmp;
+ _currentBlockHeader = tmp;
ProofOfWork pow;
std::pair<MineInfo, Ethash::Proof> ret;
- while (!ProofOfWork::verify(_current_BlockHeader))
+ while (!ProofOfWork::verify(_currentBlockHeader))
{
- ret = pow.mine(_current_BlockHeader, 1000, true, true);
- Ethash::assignResult(ret.second, _current_BlockHeader);
+ ret = pow.mine(_currentBlockHeader, 1000, true, true);
+ Ethash::assignResult(ret.second, _currentBlockHeader);
}
}
}
@@ -558,13 +560,12 @@ void overwriteBlockHeader(BlockInfo& _current_BlockHeader, mObject& _blObj)
// take the blockheader as is
const bytes c_blockRLP = createBlockRLPFromFields(_blObj["blockHeader"].get_obj());
const RLP c_bRLP(c_blockRLP);
- _current_BlockHeader.populateFromHeader(c_bRLP, IgnoreNonce);
+ _currentBlockHeader.populateFromHeader(c_bRLP, IgnoreNonce);
}
}
BlockInfo constructBlock(mObject& _o)
{
-
BlockInfo ret;
try
{
@@ -601,7 +602,7 @@ void updatePoW(BlockInfo& _bi)
_bi.hash = _bi.headerHash(WithNonce);
}
-void writeBlockHeaderToJson(mObject& _o, const BlockInfo& _bi)
+void writeBlockHeaderToJson(mObject& _o, BlockInfo const& _bi)
{
_o["parentHash"] = toString(_bi.parentHash);
_o["uncleHash"] = toString(_bi.sha3Uncles);
@@ -621,7 +622,7 @@ void writeBlockHeaderToJson(mObject& _o, const BlockInfo& _bi)
_o["hash"] = toString(_bi.hash);
}
-RLPStream createFullBlockFromHeader(const BlockInfo& _bi,const bytes& _txs, const bytes& _uncles )
+RLPStream createFullBlockFromHeader(BlockInfo const& _bi, bytes const& _txs, bytes const& _uncles)
{
RLPStream rlpStream;
_bi.streamRLP(rlpStream, WithNonce);
@@ -633,8 +634,8 @@ RLPStream createFullBlockFromHeader(const BlockInfo& _bi,const bytes& _txs, cons
return ret;
}
-} }// Namespace Close
+} }// Namespace Close
BOOST_AUTO_TEST_SUITE(BlockChainTests)