EOS 智能合约源代码解读 (9)boot合约

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 one rror( 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 );
}



上一篇:非额度合同和额度合同


下一篇:TRON波场DAPP对接(tronWeb+vue)