Architecture
wstGBP is a single deployment of a modular tokenization framework. The token contract holds six immutable references to the modules that govern pricing, market state, issuance, ban-list screening, and settlement. Most modules sit behind upgradeable proxies; the token itself is not a proxy.
The token contract
The ERC-20 users hold. It exposes mint, redeem, and exit, standard ERC-20 +
EIP-2612 permit, and a set of view functions for integrators (see
Contract Reference). It is 18-decimal and named
Wren Staked tGBP / wstGBP.
The six module references
| Ref | Module | Role |
|---|---|---|
gem | tGBP | The underlying asset. Pulled in on mint, paid out on redeem. Backs supply 1:1. |
pip | Price oracle | Returns the current NAV price. Poked off-chain on a regular cadence (currently weekly); the rising price is the accrual mechanic. |
act | Market gate | Open/halt windows for mint and burn, the fee bps (bpsin / bpsout), cooldown, and capacity. |
adm | Treasury | Issuer registry: which addresses may issue / smelt (privileged supply ops). |
cop | Ban-list screen | The pass(address) check applied to every user-facing call. For wstGBP it inherits the ban list from the underlying gem (tGBP) via tGBP’s isBanned; there is no separate wstGBP list and no allowlist. |
flo | Output conduit | Where redemption settlement flows. For wstGBP this is the token itself (no separate conduit). |
Proxy modules (pip, act, adm, cop) are bound at their proxy address while
their event ABIs come from the implementation. Addresses for both are listed in the
Contract Reference.
The NAV mechanic
The price oracle (pip) is updated off-chain on a regular cadence (currently weekly).
Because mint and redeem both quote against the live price:
navprice()is the raw oracle price (WAD, 18-decimal).mintcost()isnavpriceadjusted up by the mint fee (bpsin). For wstGBPbpsin = 0, somintcost == navprice.burncost()isnavpriceadjusted down by the burn fee (bpsout = 25), a 0.25% haircut on redemption.
As the poked price rises, each wstGBP redeems for more tGBP. Balances never change; the price does. There is no rebasing and no in-contract yield distribution: accrual is entirely a function of the oracle price curve. The oracle surface itself, including a Chainlink-compatible feed for lending markets, is documented in Oracles.
Mint & redeem at a glance
Mint pulls tGBP and mints amt / mintcost wstGBP. Redeem burns wstGBP and pays out
amt * burncost tGBP, atomically under the current cooldown of 0. Call-level detail,
revert conditions, and the WAD math are in Mint & Redeem.
Privileged surface (not user-facing)
User-facing operations are permissionless. As an RWA token, wstGBP also carries a privileged surface, present to satisfy regulatory obligations: supply operations restricted to the treasury issuer registry, and the ban-list screen inherited from tGBP.
issue(uint256) and smelt(...) adjust supply through the treasury issuer registry and
are restricted to issuer addresses; the admin/owner key governs proxy upgrades and oracle
updates. These functions are visible on-chain. Their signatures and access control are in
the Contract Reference.