// Now with four block producers active and two identical chains (for now),
// we can test out the case that would trigger the bug in the old fork db code:
fork_block_num=c.control->head_block_num();
wlog("cam and dan go off on their own fork on c1 while sam and pam go off on their own fork on c2");
wlog("c1 blocks:");
c.produce_blocks(12);// dan produces 12 blocks
c.produce_block(fc::milliseconds(config::block_interval_ms*25));// cam skips over sam and pam's blocks
c.produce_blocks(23);// cam finishes the remaining 11 blocks then dan produces his 12 blocks
wlog("c2 blocks:");
c2.produce_block(fc::milliseconds(config::block_interval_ms*25));// pam skips over dan and sam's blocks
c2.produce_blocks(11);// pam finishes the remaining 11 blocks
c2.produce_block(fc::milliseconds(config::block_interval_ms*25));// sam skips over cam and dan's blocks
c2.produce_blocks(11);// sam finishes the remaining 11 blocks
wlog("now cam and dan rejoin sam and pam on c2");
c2.produce_block(fc::milliseconds(config::block_interval_ms*13));// cam skips over pam's blocks (this block triggers a block on this branch to become irreversible)
c2.produce_blocks(11);// cam produces the remaining 11 blocks
b=c2.produce_block();// dan produces a block
// a node on chain 1 now gets all but the last block from chain 2 which should cause a fork switch
wlog("push c2 blocks (except for the last block by dan) to c1");
@@ -97,78 +97,15 @@ auto smatch_to_variant(const std::smatch& smatch) {
returnresult;
};
constchar*error_advice_3010001="Most likely, the given account/ permission doesn't exist in the blockchain.";
constchar*error_advice_3010002="Most likely, the given account doesn't exist in the blockchain.";
constchar*error_advice_3010003="Most likely, the given table doesnt' exist in the blockchain.";
constchar*error_advice_3010004="Most likely, the given contract doesnt' exist in the blockchain.";
constchar*error_advice_3030000="Ensure that your transaction satisfy the contract's constraint!";
constchar*error_advice_3030001=R"=====(Ensure that you have the related authority inside your transaction!;
If you are currently using 'cleos push action' command, try to add the relevant authority using -p option.)=====";
constchar*error_advice_3030002="Ensure that you have the related private keys inside your wallet and your wallet is unlocked.";
constchar*error_advice_3030003="Please remove the unnecessary authority from your action!";
constchar*error_advice_3030004="Please remove the unnecessary signature from your transaction!";
constchar*error_advice_3030011="You can try embedding eosio nonce action inside your transaction to ensure uniqueness.";
constchar*error_advice_3030022="Please increase the expiration time of your transaction!";
constchar*error_advice_3030023="Please decrease the expiration time of your transaction!";
constchar*error_advice_3030024="Ensure that the reference block exist in the blockchain!";
constchar*error_advice_3040002=R"=====(Ensure that your arguments follow the contract abi!
You can check the contract's abi by using 'cleos get code' command.)=====";
constchar*error_advice_3120001=R"=====(Name should be less than 13 characters and only contains the following symbol .12345abcdefghijklmnopqrstuvwxyz)=====";
constchar*error_advice_3120002=R"=====(Public key should be encoded in base58 and starts with EOS prefix)=====";
constchar*error_advice_3120003=R"=====(Private key should be encoded in base58 WIF)=====";
constchar*error_advice_3120004=R"=====(Ensure that your authority JSON follows the following format!
constchar*error_advice_3120007=R"=====(Ensure that your abi JSON follows the following format!
constchar*error_advice_3010001=R"=====(Name should be less than 13 characters and only contains the following symbol .12345abcdefghijklmnopqrstuvwxyz)=====";
constchar*error_advice_3010002=R"=====(Public key should be encoded in base58 and starts with EOS prefix)=====";
constchar*error_advice_3010003=R"=====(Private key should be encoded in base58 WIF)=====";
constchar*error_advice_3010004=R"=====(Ensure that your authority JSON follows the right authority structure!
You can refer to contracts/eosiolib/native.hpp for reference)=====";
constchar*error_advice_3010005=R"=====(Ensure that your action JSON follows the contract's abi!)=====";
constchar*error_advice_3010006=R"=====(Ensure that your transaction JSON follows the right transaction format!
You can refer to contracts/eosiolib/transaction.hpp for reference)=====";
constchar*error_advice_3010007=R"=====(Ensure that your abi JSON follows the following format!