Conceptually, the treasury serves as both the central storage for all interBTC and the interface though which to manage interBTC amount. It is implemented through the Currency pallet.

There are three main operations on interBTC to interact with the user or the Issue and Redeem components.


  • Transfer: A user sends an amount of interBTC to another user by calling the transfer function.

  • Issue: The issue module calls into the treasury when an issue request is completed (via executeIssue) and the user has provided a valid proof that the required amount of BTC was sent to the correct vault. The issue module calls the mint_to function to create interBTC.

  • Redeem: The redeem protocol requires two calls to the treasury module. First, a user requests a redeem via the requestRedeem function. This invokes a call to the lock_on function that locks the requested amount of tokens for this user. Second, when a redeem request is completed (via executeRedeem) and the vault has provided a valid proof that it transferred the required amount of BTC to the correct user, the redeem module calls the burn_from function to destroy the previously locked interBTC.