1. 作用
激活 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.
struct permission_level_weight {
permission_level permission;
uint16_t weight;
// explicit serialization macro is not necessary, used here only to improve compilation time
eosLIB_SERIALIZE( permission_level_weight, (permission)(weight) )
};
/**
* Weighted key.
*
* @details A weighted key is defined by a public key and an associated weight.
*/
struct key_weight {
eossys::public_key key;
uint16_t weight;
// explicit serialization macro is not necessary, used here only to improve compilation time
eosLIB_SERIALIZE( key_weight, (key)(weight) )
};
/**
* Wait weight.
*
* @details A wait weight is defined by a number of seconds to wait for and a weight.
*/
struct wait_weight {
uint32_t wait_sec;
uint16_t weight;
// explicit serialization macro is not necessary, used here only to improve compilation time
eosLIB_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
*/
struct authority {
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 time
eosLIB_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]]
void onerror( 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]]
void activate( 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]]
void reqactivated( const eossys::checksum256& feature_digest );
}