Docs · Stake TRN

Stake TRN. Earn protocol rewards.

Two surfaces, one purpose. GovStakingV2 on Arbitrum is the native staking contract: deposit TRN, receive non-transferable govTRN, earn rewards. Symbiotic on Ethereum is restaking: deposit TRN into the vault, get shares, the vault is bonded as additional security on the t3rn solver network.

1 · GovStakingV2 on Arbitrum

  • Proxy: 0xf119115c4a22d6e881b6c67aaa3a44d59368fc2a
  • Chain: Arbitrum One (42161)
  • Receipt token: govTRN (non-transferable)
  • UI: /stake

Stake mints govTRN 1:1. Unstake burns govTRN and returns TRN. govTRN cannot be transferred — it's strictly a stake receipt — so you can't accidentally lose your position by signing a bad transfer.

2 · Migration from the legacy GovAdapter

The legacy GovAdapter at 0x536e9D…F2Cd had two bugs that triggered the redeploy: a double-mint on the t3rn-chain native path and a non-event-emitting mint on the Arbitrum proxy. The new contract is a clean rewrite.

263 holders we enumerated from on-chain snapshots are already migrated. If you held govTRN before 2026-05-17, connect your wallet at /stake — your balance should appear.

If your balance is missing, three paths exist:

  1. claimUntracked(amount, proof) — Merkle proof claim for the ~175k govTRN of pre-existing balance that wasn't reachable via event scanning. The Merkle root was already published; ping support to get your proof.
  2. dropTo(addr, amount) — owner-only catch-all. Works even after migration sealing.
  3. BatchDropCaller — the gap-closure that brought in the original Arbiscan-canonical 207 holders ran on 2026-05-17 and burned the helper contract afterward.

3 · Unstake — when and how

Fresh stakes: can unstake immediately. Your own TRN backs your own position; there's no global liquidity dependency.

Migrated balances: unstake activates once the treasury seeds backing TRN (target: 305k+ TRN). Today the proxy holds zero backing TRN. The contract halt gate prevents stake() while seeding is in progress, but unstake() is always open — by design, stakers can always exit even if the protocol is paused.

4 · Rewards

Reward rate is owner-set per block. Today it's 0. When treasury funds the reward pool, the rate will be set to target ~100k TRN/year across all stakers.

Claim pending rewards from the same UI — the panel surfaces a Claim N TRN button when any are pending.

5 · Symbiotic restaking on Ethereum

The Symbiotic vault on Ethereum mainnet is deposit-only today. Withdrawals are async, epoch-based, with a 7-day cycle. To exit a position before a self-serve withdrawal UI ships, reach out to the t3rn team with your address.

Why Symbiotic exists separately from GovStakingV2: Symbiotic is restaking — the staked TRN is bonded as additional security on the broader t3rn solver network and earns from that role, not just from native t3rn protocol fees. It's the right surface if you hold TRN on Ethereum mainnet and don't want to bridge to Arbitrum just to stake.

6 · What's pending

  • Treasury seeding the backing TRN (305k+).
  • Rewards emission turn-on at the target rate.
  • Ownership transfer from the sealed enclave key to a Safe.
  • Migration sealing — the migration interface stays open while we close gap-holder claims.

7 · Source + audits

  • Contract source: portal-2026/contracts/src/GovStakingV2.sol
  • Tests: 67 deterministic forge tests, 44 live-devnet E2E steps, mainnet smoke verified.
  • Formal audit: pending. The source is ~440 lines, OZ 4.9 + one Merkle helper.