Use builder in CLI debug commands (#1553)

* Use builder in CLI debug commands

* Fix sign call
This commit is contained in:
cryptocode 2019-01-09 23:24:01 +01:00 committed by Zach Hyatt
commit 72d376b595

View file

@ -380,6 +380,7 @@ int main (int argc, char * const * argv)
{
if (nano::nano_network == nano::nano_networks::nano_test_network)
{
nano::block_builder builder;
size_t num_accounts (100000);
size_t num_interations (5); // 100,000 * 5 * 2 = 1,000,000 blocks
size_t max_blocks (2 * num_accounts * num_interations + num_accounts * 2); // 1,000,000 + 2* 100,000 = 1,200,000 blocks
@ -402,10 +403,30 @@ int main (int argc, char * const * argv)
for (auto i (0); i != num_accounts; ++i)
{
genesis_balance = genesis_balance - 1000000000;
auto send (std::make_shared<nano::state_block> (nano::test_genesis_key.pub, genesis_latest, nano::test_genesis_key.pub, genesis_balance, keys[i].pub, nano::test_genesis_key.prv, nano::test_genesis_key.pub, work.generate (genesis_latest)));
auto send = builder.state ()
.account (nano::test_genesis_key.pub)
.previous (genesis_latest)
.representative (nano::test_genesis_key.pub)
.balance (genesis_balance)
.link (keys[i].pub)
.sign (keys[i].prv, keys[i].pub)
.work (work.generate (genesis_latest))
.build ();
genesis_latest = send->hash ();
blocks.push_back (std::move (send));
auto open (std::make_shared<nano::state_block> (keys[i].pub, 0, keys[i].pub, balances[i], genesis_latest, keys[i].prv, keys[i].pub, work.generate (keys[i].pub)));
auto open = builder.state ()
.account (keys[i].pub)
.previous (0)
.representative (keys[i].pub)
.balance (balances[i])
.link (genesis_latest)
.sign (nano::test_genesis_key.prv, nano::test_genesis_key.pub)
.work (work.generate (keys[i].pub))
.build ();
frontiers[i] = open->hash ();
blocks.push_back (std::move (open));
}
@ -416,12 +437,32 @@ int main (int argc, char * const * argv)
size_t other (num_accounts - j - 1);
// Sending to other account
--balances[j];
auto send (std::make_shared<nano::state_block> (keys[j].pub, frontiers[j], keys[j].pub, balances[j], keys[other].pub, keys[j].prv, keys[j].pub, work.generate (frontiers[j])));
auto send = builder.state ()
.account (keys[j].pub)
.previous (frontiers[j])
.representative (keys[j].pub)
.balance (balances[j])
.link (keys[other].pub)
.sign (keys[j].prv, keys[j].pub)
.work (work.generate (frontiers[j]))
.build ();
frontiers[j] = send->hash ();
blocks.push_back (std::move (send));
// Receiving
++balances[other];
auto receive (std::make_shared<nano::state_block> (keys[other].pub, frontiers[other], keys[other].pub, balances[other], frontiers[j], keys[other].prv, keys[other].pub, work.generate (frontiers[other])));
auto receive = builder.state ()
.account (keys[other].pub)
.previous (frontiers[other])
.representative (keys[other].pub)
.balance (balances[other])
.link (frontiers[j])
.sign (keys[other].prv, keys[other].pub)
.work (work.generate (frontiers[other]))
.build ();
frontiers[other] = receive->hash ();
blocks.push_back (std::move (receive));
}
@ -456,6 +497,7 @@ int main (int argc, char * const * argv)
{
if (nano::nano_network == nano::nano_networks::nano_test_network)
{
nano::block_builder builder;
size_t num_elections (40000);
size_t num_representatives (25);
size_t max_votes (num_elections * num_representatives); // 40,000 * 25 = 1,000,000 votes
@ -476,11 +518,31 @@ int main (int argc, char * const * argv)
{
auto transaction (node->store.tx_begin_write ());
genesis_balance = genesis_balance - balance;
nano::state_block send (nano::test_genesis_key.pub, genesis_latest, nano::test_genesis_key.pub, genesis_balance, keys[i].pub, nano::test_genesis_key.prv, nano::test_genesis_key.pub, work.generate (genesis_latest));
genesis_latest = send.hash ();
node->ledger.process (transaction, send);
nano::state_block open (keys[i].pub, 0, keys[i].pub, balance, genesis_latest, keys[i].prv, keys[i].pub, work.generate (keys[i].pub));
node->ledger.process (transaction, open);
auto send = builder.state ()
.account (nano::test_genesis_key.pub)
.previous (genesis_latest)
.representative (nano::test_genesis_key.pub)
.balance (genesis_balance)
.link (keys[i].pub)
.sign (nano::test_genesis_key.prv, nano::test_genesis_key.pub)
.work (work.generate (genesis_latest))
.build ();
genesis_latest = send->hash ();
node->ledger.process (transaction, *send);
auto open = builder.state ()
.account (keys[i].pub)
.previous (0)
.representative (keys[i].pub)
.balance (balance)
.link (genesis_latest)
.sign (keys[i].prv, keys[i].pub)
.work (work.generate (keys[i].pub))
.build ();
node->ledger.process (transaction, *open);
}
// Generating blocks
std::deque<std::shared_ptr<nano::block>> blocks;
@ -488,9 +550,19 @@ int main (int argc, char * const * argv)
{
genesis_balance = genesis_balance - 1;
nano::keypair destination;
auto send (std::make_shared<nano::state_block> (nano::test_genesis_key.pub, genesis_latest, nano::test_genesis_key.pub, genesis_balance, destination.pub, nano::test_genesis_key.prv, nano::test_genesis_key.pub, work.generate (genesis_latest)));
auto send = builder.state ()
.account (nano::test_genesis_key.pub)
.previous (genesis_latest)
.representative (nano::test_genesis_key.pub)
.balance (genesis_balance)
.link (destination.pub)
.sign (nano::test_genesis_key.prv, nano::test_genesis_key.pub)
.work (work.generate (genesis_latest))
.build ();
genesis_latest = send->hash ();
blocks.push_back (send);
blocks.push_back (std::move (send));
}
// Generating votes
std::deque<std::shared_ptr<nano::vote>> votes;