The above will build off the most recent commit to the master branch by default. If you would like to target a specific branch/tag, you may use a build argument. For example, if you wished to generate a docker image based off of the v1.5.0 tag, you could do the following:
The above will build off the most recent commit to the master branch by default. If you would like to target a specific branch/tag, you may use a build argument. For example, if you wished to generate a docker image based off of the v1.5.1 tag, you could do the following:
// if a contract is deferring only actions to itself then there is no need
// to check permissions, it could have done everything anyway.
boolcheck_auth=false;
for(constauto&act:trx.actions){
if(act.account!=receiver){
check_auth=true;
break;
// Originally this code bypassed authorization checks if a contract was deferring only actions to itself.
// The idea was that the code could already do whatever the deferred transaction could do, so there was no point in checking authorizations.
// But this is not true. The original implementation didn't validate the authorizations on the actions which allowed for privilege escalation.
// It would make it possible to bill RAM to some unrelated account.
// Furthermore, even if the authorizations were forced to be a subset of the current action's authorizations, it would still violate the expectations
// of the signers of the original transaction, because the deferred transaction would allow billing more CPU and network bandwidth than the maximum limit
// specified on the original transaction.
// So, the deferred transaction must always go through the authorization checking if it is not sent by a privileged contract.
// However, the old logic must still be considered because it cannot objectively change until a consensus protocol upgrade.
booldisallow_send_to_self_bypass=false;// eventually set to whether the appropriate protocol feature has been activated
subjective_block_production_exceptionnew_exception(FC_LOG_MESSAGE(error,"Authorization failure with sent deferred transaction consisting only of actions to self"));
EOS_THROW(subjective_block_production_exception,"Unexpected exception occurred validating sent deferred transaction consisting only of actions to self");