激活 protocol features 性質 activating desired protocol features prior to deploying a system contract
* eossys.boot is a extremely minimalistic system contract that only supports the native actions and an* activate action that allows activating desired protocol features prior to deploying a system contract* with more features such as eossys.bios or eossys.system.structpermission_level_weight{permission_level permission;uint16_t weight;// explicit serialization macro is not necessary, used here only to improve compilation timeeosLIB_SERIALIZE( permission_level_weight,(permission)(weight))};/*** Weighted key.** @details A weighted key is defined by a public key and an associated weight.*/structkey_weight{eossys::public_key key;uint16_t weight;// explicit serialization macro is not necessary, used here only to improve compilation timeeosLIB_SERIALIZE( key_weight,(key)(weight))};/*** Wait weight.** @details A wait weight is defined by a number of seconds to wait for and a weight.*/structwait_weight{uint32_t wait_sec;uint16_t weight;// explicit serialization macro is not necessary, used here only to improve compilation timeeosLIB_SERIALIZE( wait_weight,(wait_sec)(weight))};/*** Blockchain authority.** @details An authority is defined by:* - a vector of key_weights (a key_weight is a public key plus a weight),* - a vector of permission_level_weights, (a permission_level is an account name plus a permission name)* - a vector of wait_weights (a wait_weight is defined by a number of seconds to wait and a weight)* - a threshold value*/structauthority{uint32_t threshold =0;std::vector<key_weight> keys;std::vector<permission_level_weight> accounts;std::vector<wait_weight> waits;// explicit serialization macro is not necessary, used here only to improve compilation timeeosLIB_SERIALIZE( authority,(threshold)(keys)(accounts)(waits))};/*** @defgroup eossysboot eossys.boot* @ingroup eossyscontracts** eossys.boot is a extremely minimalistic system contract that only supports the native actions and an* activate action that allows activating desired protocol features prior to deploying a system contract* with more features such as eossys.bios or eossys.system.** @{*/class[[eossys::contract("eossys.boot")]] boot :public eossys::contract {public:using contract::contract;/*** On error action.** @details Notification of this action is delivered to the sender of a deferred transaction* when an objective error occurs while executing the deferred transaction.* This action is not meant to be called directly.** @param sender_id - the id for the deferred transaction chosen by the sender,* @param sent_trx - the deferred transaction that failed.*/[[eossys::action]]voidonerror( ignore<uint128_t> sender_id, ignore<std::vector<char>> sent_trx );/*** Activates a protocol feature.** @details Activates a protocol feature** @param feature_digest - hash of the protocol feature to activate.*/[[eossys::action]]voidactivate(const eossys::checksum256& feature_digest );/*** Asserts that a protocol feature has been activated.** @details Asserts that a protocol feature has been activated** @param feature_digest - hash of the protocol feature to check for activation.*/[[eossys::action]]voidreqactivated(const eossys::checksum256& feature_digest );}