Skip to Content
wstGBP is live on Ethereum mainnet · all addresses in these docs are verifiable on-chain
ReferenceContract Reference

Contract Reference

All addresses are Ethereum mainnet (chainId 1) and verifiable on a block explorer.

Token

FieldValue
NameWren Staked tGBP
SymbolwstGBP
Decimals18
ContractMaseerOne
Address0x57C3571f10767E49C9d7b60feb6c67804783B7aE
Underlying (gem)tGBP — 0x27f6c8289550fCE67f6B50BeD1F519966aFE5287

Module addresses

The token holds six module references. Proxy modules are bound at their proxy address; the implementation is where the logic (and event ABI) lives.

RefRoleProxyImplementation
gemUnderlying (tGBP)0x27f6c8289550fCE67f6B50BeD1F519966aFE5287
pipPrice oracle0x6A79dCe61A12aa4b75449e0B03746260765D07dF0x44BFEB1110bA6091034DBaAb450eF1e7469fF072
actMarket gate0xB59cB4d3075a8ce5013C78e8Bd7aDA3Fd1300f7f0x635dbb7841c27c74b6bDbf1BEd548aAe2C6C9D77
admTreasury0xa8F5bE8457D6ed5c659647fa8d107C3F2086626A0x192575eeb42644a8014eB545c69f5125e2437A56
copCompliance guard — inherits tGBP’s ban list0x794cF5948444b14105587455EbE96Caace036d520x3bb8eBb11816e1C20c3Db57e2E7e5b421b159255
floOutput conduit0x57C3571f10767E49C9d7b60feb6c67804783B7aE (= token)
Multicall30xcA11bde05977b3631167028862bE2a173976CA11

Compiled with Solidity 0.8.34 (pragma floor ^0.8.28). Source and audit reports are maintained in the protocol’s canonical source repository.

View functions for integrators

FunctionReturnsNotes
navprice()uint256Raw oracle NAV price (WAD).
mintcost()uint256NAV adjusted up by bpsin (0 for wstGBP). Use directly to quote mints.
burncost()uint256NAV adjusted down by bpsout (25 = 0.25%). Use directly to quote redeems.
mintable()boolWhether minting is currently open.
burnable()boolWhether redeeming is currently open.
capacity()uint256Max total supply (≈ unbounded for wstGBP).
cooldown()uint256Redemption delay in seconds (currently 0 ⇒ atomic redeem).
totalSupply()uint256wstGBP in circulation.
balanceOf(address)uint256wstGBP balance.
gem()addressThe underlying token (tGBP).
redemptionCount()uint256Number of redemptions ever opened.
redemptions(uint256)(uint256 amount, address redeemer, uint96 date)A queued redemption by id.

Write functions

FunctionSignatureNotes
mintmint(uint256 amt) → uint256 _outPull amt tGBP, mint wstGBP. Requires prior tGBP approve.
redeemredeem(uint256 amt) → uint256 _idBurn amt wstGBP; settles tGBP atomically when cooldown 0.
exitexit(uint256 id) → uint256 _outSettle a queued redemption once claimable (cooldown > 0 only).

Standard ERC‑20 (transfer, approve, transferFrom, allowance) and EIP‑2612 permit are also available; all user‑facing calls are compliance‑gated.

The cop guard inherits its ban list from the underlying gem — for wstGBP that is tGBP (via tGBP’s isBanned), so an address banned on tGBP cannot mint, redeem, or receive wstGBP.

issue(uint256) and smelt(...) are issuer‑only supply operations governed by the treasury registry, and proxy/oracle administration is owner‑gated. These are on‑chain governance functions, not part of normal integration. wstGBP is a compliance‑gated real‑world asset (RWA) token: this privileged surface exists to meet compliance requirements, not for discretionary control over user balances.

Events

event ContractCreated(address indexed creator, uint256 indexed price, uint256 indexed amount); event ContractRedemption(uint256 indexed id, uint256 indexed date, address indexed redeemer, uint256 amount); event ClaimProcessed(uint256 indexed id, address indexed claimer, uint256 indexed amount); // plus standard ERC-20 Transfer / Approval

ABI

A curated ABI covering mint/redeem/exit, the integrator views, and the three lifecycle events. Sufficient for viem/wagmi integration.

wstgbpAbi.ts
export const wstgbpAbi = [ { type: 'function', name: 'mint', stateMutability: 'nonpayable', inputs: [{ name: 'amt', type: 'uint256' }], outputs: [{ name: '_out', type: 'uint256' }] }, { type: 'function', name: 'redeem', stateMutability: 'nonpayable', inputs: [{ name: 'amt', type: 'uint256' }], outputs: [{ name: '_id', type: 'uint256' }] }, { type: 'function', name: 'exit', stateMutability: 'nonpayable', inputs: [{ name: 'id', type: 'uint256' }], outputs: [{ name: '_out', type: 'uint256' }] }, { type: 'function', name: 'navprice', stateMutability: 'view', inputs: [], outputs: [{ type: 'uint256' }] }, { type: 'function', name: 'mintcost', stateMutability: 'view', inputs: [], outputs: [{ type: 'uint256' }] }, { type: 'function', name: 'burncost', stateMutability: 'view', inputs: [], outputs: [{ type: 'uint256' }] }, { type: 'function', name: 'mintable', stateMutability: 'view', inputs: [], outputs: [{ type: 'bool' }] }, { type: 'function', name: 'burnable', stateMutability: 'view', inputs: [], outputs: [{ type: 'bool' }] }, { type: 'function', name: 'capacity', stateMutability: 'view', inputs: [], outputs: [{ type: 'uint256' }] }, { type: 'function', name: 'cooldown', stateMutability: 'view', inputs: [], outputs: [{ type: 'uint256' }] }, { type: 'function', name: 'totalSupply', stateMutability: 'view', inputs: [], outputs: [{ type: 'uint256' }] }, { type: 'function', name: 'balanceOf', stateMutability: 'view', inputs: [{ name: 'account', type: 'address' }], outputs: [{ type: 'uint256' }] }, { type: 'function', name: 'gem', stateMutability: 'view', inputs: [], outputs: [{ type: 'address' }] }, { type: 'function', name: 'redemptionCount', stateMutability: 'view', inputs: [], outputs: [{ type: 'uint256' }] }, { type: 'function', name: 'redemptions', stateMutability: 'view', inputs: [{ type: 'uint256' }], outputs: [ { name: 'amount', type: 'uint256' }, { name: 'redeemer', type: 'address' }, { name: 'date', type: 'uint96' }, ] }, { type: 'event', name: 'ContractCreated', anonymous: false, inputs: [ { name: 'creator', type: 'address', indexed: true }, { name: 'price', type: 'uint256', indexed: true }, { name: 'amount', type: 'uint256', indexed: true }, ] }, { type: 'event', name: 'ContractRedemption', anonymous: false, inputs: [ { name: 'id', type: 'uint256', indexed: true }, { name: 'date', type: 'uint256', indexed: true }, { name: 'redeemer', type: 'address', indexed: true }, { name: 'amount', type: 'uint256', indexed: false }, ] }, { type: 'event', name: 'ClaimProcessed', anonymous: false, inputs: [ { name: 'id', type: 'uint256', indexed: true }, { name: 'claimer', type: 'address', indexed: true }, { name: 'amount', type: 'uint256', indexed: true }, ] }, ] as const
Last updated on