Skip to Content
wstGBP is live on Ethereum mainnet. All addresses in these docs are verifiable on-chain.
Architecture

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.

wstGBP contract architecture: the wstGBP token wired to gem, pip, act, adm, cop and flo modules, with mint and redeem flows against the underlying tGBP and a weekly oracle poke into the price module.

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

RefModuleRole
gemtGBPThe underlying asset. Pulled in on mint, paid out on redeem. Backs supply 1:1.
pipPrice oracleReturns the current NAV price. Poked off-chain on a regular cadence (currently weekly); the rising price is the accrual mechanic.
actMarket gateOpen/halt windows for mint and burn, the fee bps (bpsin / bpsout), cooldown, and capacity.
admTreasuryIssuer registry: which addresses may issue / smelt (privileged supply ops).
copBan-list screenThe 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.
floOutput conduitWhere 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() is navprice adjusted up by the mint fee (bpsin). For wstGBP bpsin = 0, so mintcost == navprice.
  • burncost() is navprice adjusted 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.

Last updated on