Treasury Contract
Manages asset custody, pricing, and minting authorization.
Storage
approvedAssets: AddressMemoryMap // Asset whitelist
poolAddresses: Map<Address, Address> // Asset → price pool
attestedBtcBalance: StoredU256 // BTC in multisig
slohmAddress: StoredAddress
authorizedMinters: AddressMemoryMap
multisigAddress: StoredAddress
Key Methods
deposit(asset, amount)
Called by Bonder. Pulls tokens via transferFrom.
withdraw(asset, amount, to)
Multisig only. Emergency withdrawal.
redeem(slohmAmount)
Burns SLOHM, returns proportional treasury assets.
function redeem(amount): void {
const share = amount / slohm.totalSupply();
slohm.burnFrom(sender, amount);
for each approvedAsset:
const payout = asset.balanceOf(this) × share;
asset.transfer(sender, payout);
}
mintRewards(rate)
Staking only. Mints SLOHM for rebase rewards.
mintForBond(to, amount)
Bonder only. Mints SLOHM for bond payouts.
setAttestedBtcBalance(amount)
Multisig only. Updates BTC balance from off-chain multisig.
Access Control
| Function | Caller |
|---|---|
| deposit | Bonder |
| withdraw | Multisig |
| mintRewards | Staking |
| mintForBond | Bonder |
| setAttestedBtcBalance | Multisig |
| addApprovedAsset | Multisig |
View Functions
totalValue()- Total treasury value in BTCbackingPerSlohm()- Treasury value per tokenisApproved(asset)- Check if asset is whitelisted