Staking Pool management
Details about the administrative functions of the Staking Pool contract
The Staking Pool smart contract is managed by an Algorand multisig account with six signers and a signing threshold of four. Only one member of the Hone team is on the multisig; of the other signers, one is from the Algorand Foundation, one is from Algorand Inc, and the other three are core contributors of Algorand projects.
There are four ongoing administrative methods that require the multisig approval:
  1. 1.
    Setting the governance dates for the upcoming Algorand Governance period
  2. 2.
    Algorand Governance registration
  3. 3.
    Algorand Governance voting
  4. 4.
    Protocol fee redemption
There are three additional methods that require multisig sign-off:
  1. 1.
    Setting the staking/unstake window open indefinitely
  2. 2.
    Opting-in the contract to the dALGO asset (this is only done once)
  3. 3.
    Updating the protocol fee*
  4. 4.
    Updating the Staking Pool smart contract*
  • these functions are time-protected and require a request transaction, which signals a request and stores in global state the requested updates, followed by an execution transaction after the time period has elapsed.


Setting the governance dates for the upcoming period

Once announced, the multisig must update the Staking Pool smart contract with the governance start, registration end, and governance end dates. These dates are stored in the contract’s global state and guide when staking and unstaking can occur (between the governance start and registration end dates) and when fees can be redeemed (after the governance end date).

Algorand governance registration

The multisig must call the register method and pass in the registration deatils to register the Staking Pool contract account for Algorand Governance. This is done once per governance period.

Algorand governance voting

Similarly to registration, the multisig must call the vote method can pass in the vote details for the Staking Pool contract account for any votes that arise during a governance period.
💡 The Staking Pool smart contract will initially vote with the lead of the Algorand Foundation. Once the HONE token has launched, HONE token holders will be able to stake their HONE tokens and vote on behalf of the Staking Pool.

Protocol fee redemption

After the governance period completes and rewards are deposited from the Algorand Foundation’s Reward Pool into the Staking Pool contract, fees must be redeemed on the rewards before staking and unstaking can recommence. The multisig must call the redeem_fees method, which takes a fee of the rewards and then reopens staking and unstaking.

Setting the staking/unstaking window open indefinitely

In the event of governance changing significantly or some other event, the multisig can permanently open the staking/unstaking window so that it is not dictated by the latest governance dates stored in the contract’s global state.

Opting-in the contract to the dALGO asset

This is done once at the creation of the Staking Pool smart contract. The Staking Pool contract account must opt-in to the dALGO asset before the multisig can transfer the total supply of dALGO to it.
⚠️ The following methods are time-protected and must be initially requested, which marks the request timestamp along with the requested update parameters, then executed with parameters that match the requested parameters, so long as the execution transaction occurs after the time-window has passed.

Updating the protocol fee (7-day time protection window)

The protocol fee can be updated by the multisig but must make a request and wait seven days for it to be able to be executed. A fee update request must happen in-between governance periods.

Updating the Staking Pool smart contract (14-day time protection window)

Algorand Governance is still evolving and may change in the future. As the Staking Pool smart contract holds the entire dALGO supply, it was important that we could update the contract to accomodate future Algorand Governance changes.
To do this in a way that is safe and secure, updating the smart contract requires a few steps, namely a request and an execution transaction:
  1. 1.
    A request must be made to update the smart contract. This request cannot occur during a governance period. The updated smart contract Approval Program and Clear State Program are hashed using SHA256 and passed in as arguments and stored in global state when the update is requested. The timestamp of the request is also stored in global state.
  2. 2.
    If an execution update transaction either:
    1. 1.
      Is called before the current timestamp is greater than the request timestamp plus the 14-day protection window (stored in global state in seconds), or
    2. 2.
      Its Approval Program or Clear State Program, when hashed by the smart contract, does not match those that are stored in global state
    The transaction fails. This ensures that the community has sufficient time to review the update code and/or withdraw their funds prior to the contract update.
Copy link
On this page