Bridges & Portals
wstGBP bridges to L2s and sidechains using each chain’s own canonical bridge — there is no OFT / xERC20 / omnichain token today. That means five different architectures: OP Stack Standard Bridge, Arbitrum Nitro gateway, the Polygon PoS bridge, and the Gnosis OmniBridge. The L1 token is always the source of truth.
Every address below is verifiable on‑chain — confirm on a block explorer before bridging. For Arbitrum, Polygon exit, and Gnosis exit, the official bridge UI is strongly preferred over hand‑rolled calls (gas params and withdrawal proofs are error‑prone).
L1 token — Ethereum mainnet (chainId 1)
| Name | Symbol | Decimals | Address |
|---|---|---|---|
| Wren Staked tGBP | wstGBP | 18 | 0x57C3571f10767E49C9d7b60feb6c67804783B7aE |
Live deployments
| Chain | Chain ID | wstGBP (L2) | Bridge UI | Status |
|---|---|---|---|---|
| Base | 8453 | 0xEa4Fcd4dE37eC038947a6834751E71Bb8FE68fff | bridge.base.org · Superbridge | ✅ |
| MegaETH (Frontier) | 4326 | 0x543b44aCf892e190b574780ea5f228f59d26B23c | rabbithole.megaeth.com/bridge | ✅ |
| Arbitrum One | 42161 | 0x2c8CBe32da6feAECcF99eCeE2900556a17a529ED | bridge.arbitrum.io | ✅ |
| Polygon PoS | 137 | 0x3319d8A0A7f742AAC63D586E7bb846a9ee8218Ab | Polygon Portal | ✅ |
| Gnosis Chain | 100 | 0x68115fFA8bF088289B80B1e17cD486B5752492aA | bridge.gnosischain.com | ✅ |
“Portals” — disambiguation
The word portal appears in three unrelated senses across the bridge ecosystem:
- OptimismPortal — the OP Stack L1 contract beneath the Standard Bridge that
handles deposits and finalized withdrawals. End users normally interact with the
L1StandardBridge, not the Portal directly. - Polygon Portal — the Polygon bridge UI at portal.polygon.technology . Not a contract.
- FxPortal — Polygon’s permissionless mapping. Not used here; wstGBP uses Polygon’s native PoS mapping instead.
Base (OP Stack · chainId 8453)
RPC https://mainnet.base.org · Explorer https://basescan.org
| Layer | Contract | Address |
|---|---|---|
| L1 | OptimismPortal | 0x49048044D57e1C92A77f79988d21Fa8fAF74E97e |
| L1 | L1StandardBridge | 0x3154Cf16ccdb4C6d922629664174b904d80F2C35 |
| L1 | L1CrossDomainMessenger | 0x866E82a600A1414e583f7F13623F1aC5d58b0Afa |
| L1 | OptimismMintableERC20Factory | 0x05cc379EBD9B30BbA19C6fA282AB29218EC61D84 |
| L2 | OptimismMintableERC20Factory (use this) | 0xF10122D428B4bc8A9d050D06a2037259b4c4B83B |
| L2 | OptimismMintableERC20Factory predeploy (not used by Base) | 0x4200000000000000000000000000000000000012 |
Base runs its own factory 0xF10122… (v1.9.0), not the predeploy — its tooling and
bridge UI expect tokens from that factory.
MegaETH “Frontier” (OP Stack · chainId 4326)
RPC https://mainnet.megaeth.com/rpc · Explorer https://megaeth.blockscout.com
| Layer | Contract | Address |
|---|---|---|
| L1 | OptimismPortal | 0x7f82f57F0Dd546519324392e408b01fcC7D709e8 |
| L1 | L1StandardBridge | 0x0CA3A2FBC3D770b578223FBB6b062fa875a2eE75 |
| L1 | L1CrossDomainMessenger | 0x6C7198250087B29A8040eC63903Bc130f4831Cc9 |
| L1 | OptimismMintableERC20Factory | 0xF875030B9464001fC0f964E47546b0AFEEbD7C61 |
| L2 | OptimismMintableERC20Factory (predeploy) | 0x4200000000000000000000000000000000000012 |
Shared OP Stack L2 predeploys
Identical on every OP Stack L2 (Base, MegaETH, and future OP chains):
| Contract | Address |
|---|---|
| L2StandardBridge | 0x4200000000000000000000000000000000000010 |
| L2CrossDomainMessenger | 0x4200000000000000000000000000000000000007 |
| L2ToL1MessagePasser | 0x4200000000000000000000000000000000000016 |
OP Stack flow
- Deposit (L1 → L2):
approvetheL1StandardBridgefor wstGBP, thendepositERC20(l1Token, l2Token, amount, minGasLimit = 200000, extraData = 0x). UsedepositERC20To(..., to, ...)from a contract/Safe or to a different recipient (depositERC20has anonlyEOAguard). Not payable — pay L1 gas only. Arrives in minutes. - Withdraw (L2 → L1):
bridgeERC20Toon the L2 bridge0x4200…0010, then finalize on L1 after the challenge period.
Arbitrum One — Nitro gateway (chainId 42161)
RPC https://arb1.arbitrum.io/rpc · Explorer https://arbiscan.io
L2 wstGBP 0x2c8CBe32da6feAECcF99eCeE2900556a17a529ED is a StandardArbERC20, auto‑deployed
by the gateway on first deposit (no factory call, no predeploy).
| Contract (Ethereum L1) | Address |
|---|---|
| L1GatewayRouter | 0x72Ce9c846789fdB6fC1f34aC4AD25Dd9ef7031ef |
L1ERC20Gateway (router’s defaultGateway) | 0xa3A7B6F88361F48403514059F1F16C8E78d60EeC |
Deposit: approve the L1ERC20Gateway (not the router) for wstGBP, then
L1GatewayRouter.outboundTransferCustomRefund(...) — a payable call needing L2 gas
params (maxGas, gasPriceBid, maxSubmissionCost). Prefer the bridge UI or Arbitrum SDK.
Polygon PoS — PoS bridge (chainId 137)
RPC https://polygon-rpc.com · Explorer https://polygonscan.com · UI
portal.polygon.technology
L2 wstGBP 0x3319d8A0A7f742AAC63D586E7bb846a9ee8218Ab is a native PoS‑bridge child ERC‑20
(the L1 ERC20Predicate locks, the L2 ChildChainManager mints/burns; backed 1:1).
| Contract (Ethereum L1) | Address |
|---|---|
| RootChainManager (proxy) | 0xA0c68C638235ee32657e8f720a23ceC1bFc77C77 |
| ERC20Predicate (locks wstGBP) | 0x40ec5B33f54e0E8A33A975908C5BA1c14e5BbbDf |
| Contract (Polygon · 137) | Address |
|---|---|
| wstGBP child token | 0x3319d8A0A7f742AAC63D586E7bb846a9ee8218Ab |
ChildChainManager (proxy; holds DEPOSITOR_ROLE) | 0xA6FA4fB5f76172d178d61B04b0ecd319C5d1C0aa |
Deposit (L1 → L2): approve the ERC20Predicate, then
RootChainManager.depositFor(user, wstGBP, abi.encode(amount)). Arrives in ~20–30 min via
state sync. Withdraw (L2 → L1): withdraw(amount) on the child token to burn, wait for
the next Heimdall checkpoint, then RootChainManager.exit(burnProof) on L1 — the Portal UI
assembles the proof.
Gnosis Chain — OmniBridge / AMB (chainId 100)
RPC https://rpc.gnosischain.com · Explorer https://gnosisscan.io · UI
bridge.gnosischain.com
L2 wstGBP 0x68115fFA8bF088289B80B1e17cD486B5752492aA is an ERC677 PermittableToken,
auto‑deployed by the Home mediator on first deposit (backed 1:1 by tokens locked on L1).
| Contract (Ethereum L1) | Address |
|---|---|
| OmniBridge Foreign mediator (locks wstGBP) | 0x88ad09518695c6c3712AC10a214bE5109a655671 |
| Contract (Gnosis · 100) | Address |
|---|---|
| wstGBP bridged token (ERC677) | 0x68115fFA8bF088289B80B1e17cD486B5752492aA |
| OmniBridge Home mediator (mints/burns) | 0xf6A78083ca3e2a662D6dd1703c939c8aCE2e268d |
Deposit (L1 → Gnosis): approve the Foreign mediator, then
relayTokens(wstGBP, receiver, amount). Arrives in ~5–15 min. Withdraw (Gnosis → L1):
relayTokens(...) on the Home mediator (or ERC677 transferAndCall(homeMediator, amount, "")) to burn, wait for validator signatures, then submit the signed claim on L1 — Gnosis→
Ethereum messages are not auto‑relayed, so the bridge UI (or you) must pay the L1 claim.
Roadmap — not yet live
| Chain | Chain ID | Architecture | Status |
|---|---|---|---|
| OP Mainnet | 10 | OP Stack | ⬜ planned |
| Unichain | 130 | OP Stack | ⬜ planned |
| BNB Smart Chain | 56 | Independent L1 — needs LayerZero OFT / Wormhole NTT (decision pending) | ⬜ |
| Plasma (XPL) | 9745 | Independent L1 — canonical interop is LayerZero (OFT) | ⬜ |
OP Mainnet and Unichain reuse the same OP Stack flow as Base/MegaETH. BNB and Plasma have no Ethereum‑rollup canonical bridge, so they require an issuer‑deployed messaging‑layer token; that standard has not been chosen yet and nothing is deployed.