跳到主要内容

Signer Groups and Contracts

This page is the registry. It lists every signer group SUBFROST runs, what each one may sign, and its public address. It also lists every contract and alkane id the pegs depend on. Every entry was read back from its chain before it was published; the method for each is noted next to it, so you can check it yourself.

Two kinds of group​

SUBFROST runs two kinds of threshold group. Both have the same property: the full key never exists in one place, and a quorum has to cooperate to sign (see Signing and Keys).

  • FROST groups hold value. They produce one BIP-340 Schnorr signature, which is a native Bitcoin signature and is also what the frUSD vault on Ethereum verifies. A FROST group's key is the custody: on Bitcoin it is a taproot address, and on Ethereum it is the vault's defaultPublicKey.
  • cggmp21 groups pay gas. cggmp21 is threshold ECDSA, which produces the ordinary signature an EVM transaction needs. Each of these groups controls one Ethereum-style address (an EOA) that broadcasts transactions and pays their gas. None of them can move user funds. What a transaction does is already fixed by a user's signed intent, by a FROST signature, or by a contract that only ever pays one fixed recipient. A stolen cggmp21 key can waste its own gas and nothing else.

FROST groups (Bitcoin and Fractal)​

GroupThresholdSignsPublic address
frBTCnine signers (see frBTC Peg & Custody)BTC payouts from custody when frBTC is unwrappedbc1p5lushqjk7kxpqa87ppwn0dealucyqa6t40ppdkhpqm3grcpqvw9s3wdsx7
frUSD2-of-3 launch group, being widened to 6-of-9frUSD mints on Bitcoin, and every privileged call on the frUSD vault on Ethereum (releases, strategy changes)bc1pk6nv75fp4cav5zq3vrl98rwynq0e9lazqcygvqa2fqd6agnd95cskcz0kw
frFB6-of-9frFB mints on Bitcoin, and FB redemptions out of the fb-vault on Fractalbc1pt93aunap64ys8zlpmzc20z65a2vnmn0phrpc37kknve5835xsc9s6332rc (the same string on Fractal)

How to check each one.

  • frBTC. Call opcode 103 on 32:0. It returns the group's untweaked x-only key, 7940ef3b659179a1371dec05793cb027cde47806fb66ce1e3d1b69d56de629dc. Apply the BIP-341 taproot tweak (key path only, no script tree) to get output key a7f90b8256f58c1074fe085d37b73dff3040774babc216dae106e281e020638b, which is the address above. Encoding the opcode-103 key directly, without the tweak, gives a different address that is not custody.
  • frUSD. The address holds frUSD's mint authority, frUSD-MINT (2:92949). Its 32-byte output key, b6a6cf5121ae3aca081160fe538dc4981f92ffa206088603aa481baea26d2d31, is byte for byte what defaultPublicKey() returns on the frUSD vault 0x95779E7E1C943042255B8a78273fe6DE4823CF06. One key, two chains. Widening the group is a key rotation, itself signed by the group; nothing is redeployed. The threshold has no effect on gas: the vault always verifies a single 64-byte signature.
  • frFB. On Bitcoin the address holds frFB-AUTH (2:102485). On Fractal, fb-vault (44:44) opcode 104 returns 5120 5963de4fa1d549038be1d8b0a78b54ea993dcde1b8c388fad69b3343c686860b: exactly this address's script. Opcode 103 returns its untweaked key, ca1240110a6354160fbb8e726340352e38478af4f2a34c9b04893741c5d49203. See Fractal.

cggmp21 groups (EVM)​

GroupThresholdBroadcastsEOAStatus
pegin-relay2-of-3The source-chain leg of a peg-in on Base, BNB Chain and Polygon: the forwarders' sweepAndBridge, sweepWithPermit and escrow sweeps0x7F6f63dEE1EC0096EE81ba7d02E6de72a76b3001Live. First sweep: Base, sweepWithPermit over CCTP, 0x49321b74…94d1, 7 October 2026, the first end-to-end peg-in
frusd-sweep2-of-3The Ethereum leg: register and settleMany on the GatewayFactory, and CCTP receiveMessage for Base deposits0x7518fAA18f20096Eb005cef6571962777D88B3fDLive. Example settleMany: 0x7aaee3bf…4de4
claim2-of-3claim on the peg-out EscrowFactory: delivers a peg-out that landed at a recipient's delivery escrow0xCE4d3f82ad29a0AE8d99781D81284677d95c38c9Funded on Ethereum, Base, BNB Chain and Polygon; has not sent a transaction yet
gasdrop-claim2-of-3Deploys and pokes gas-drop handlers registered with pegd. Until it runs, anyone can deploy a handler with deployOnlynot created yetComing (the registry it reads is live)

Each of these calls is also open to anyone: register, settle, reclaim, claim and the forwarders' entry points are all permissionless. The groups are there so that you don't have to send them yourself, not because nobody else can.

Contracts​

The same hex address can be a different contract on a different chain, so always name a contract with its chain. Every address below was checked for code on its chain, plus a read that ties it to its role.

Ethereum​

ContractAddressRole
GatewayFactory0xaF4C39A0Da304eF39D56783d785ea52bb8431362Derives peg-in deposit addresses; register, settle, settleMany, reclaim; relays into the frUSD vault
GatewayProxy implementation0xdbA4c9fe841A7cf0b37B041126bA4d4640B4F296The code every deposit address clones (IMPLEMENTATION() on the factory)
frUSD vault (proxy)0x95779E7E1C943042255B8a78273fe6DE4823CF06Holds the reserve; queues mints; pays redemptions on a FROST signature
frUSD vault implementation0x5376beedba9ba7f5b0396d28bd75473027b8bd55The code behind the vault proxy (EIP-1967 slot)
PegOutRouter0xE8ecC225C946a3A963CEfceEbB7d75a0f8c70e85Bridges a redemption to Base, Polygon or BNB Chain. VAULT() = the frUSD vault; 7 routes
EscrowFactory (peg-out delivery escrows)0x9D00ea542a8dd0DACD092ea135208bc0BB038E33Same address and code on Ethereum, Base, BNB Chain and Polygon; claim(recipient, tokens)
Permit20x000000000022D473030F116dDEE9F6B43aC78BA3The canonical Permit2, at this address on every chain here

Permit2Gateway, the gasless path for USDC or USDT already on Ethereum, is still not deployed.

Base​

ContractAddressRole
Permit2CctpForwarder (USDC)0x5e656a3e5680046e1E71361d59fdfbe058546518Base USDC peg-in, bridged by Circle CCTP v2
SourceEscrowFactory0x03aEBD3ACE98Ce26081fBF51E3970ab33cA70E60Per-intent deposit addresses for the Base forwarders
GasDropFactory (USDC)0x8F44B466F79d66A272172c3b8565b246aBcbE91FGas-drop handlers for USDC peg-outs to Base (swaps on Aerodrome)

A Stargate forwarder for Base USDC is also deployed (0x9b728A1366EFD0D892eb50e3E75DFFF5eD666EC7 on Base), but Base deposits are routed over CCTP.

BNB Chain​

ContractAddressRole
Permit2SweepForwarder (USDT)0xC1d512684B80D6A179F468595074AcdDFAAe3c1DBNB Chain USDT peg-in, bridged by Stargate
Permit2SweepForwarder (USDC)0x8BFB31f205Ff5a51779b5B25B9BeD4F608d4C722BNB Chain USDC peg-in, bridged by Stargate
SourceEscrowFactory0xdebE84e9FB41232CfAC5A1BFba50b15C36EBb0c5Per-intent deposit addresses for the BNB Chain forwarders
GasDropFactory (USDT)0x8F44B466F79d66A272172c3b8565b246aBcbE91FGas-drop handlers for USDT peg-outs to BNB Chain (PancakeSwap)
GasDropFactory (USDC)0xdD57604b628A0b8bc9d26aA4F22EB62c5C25d183Gas-drop handlers for USDC peg-outs to BNB Chain

Polygon​

ContractAddressRole
Permit2SweepForwarder (USDC)0x91F3b7Fc7585421EAEF404eb69F90A52C83BE353Polygon native USDC peg-in, bridged by Stargate
Permit2SweepForwarder (USDT0)0x9b728A1366EFD0D892eb50e3E75DFFF5eD666EC7Polygon USDT0 peg-in, bridged by Stargate
SourceEscrowFactory0x76af40680f85f6A6c36CcF43eD2e0B8B78B241F3Per-intent deposit addresses for the Polygon forwarders
GasDropFactory (USDC)0x8F44B466F79d66A272172c3b8565b246aBcbE91FGas-drop handlers for USDC peg-outs to Polygon (QuickSwap)
GasDropFactory (USDT0)0xdD57604b628A0b8bc9d26aA4F22EB62c5C25d183Gas-drop handlers for USDT0 peg-outs to Polygon

There is no gas-drop factory for USDT on Base yet: its handler needs a two-hop swap, which has not been audited. Peg-outs on that route (route 4) are paid in USDT only.

Retired​

These are still on chain, but nothing routes through them any more. Don't send to them: they support only the original sweepAndBridge entry point and no deposit addresses.

ContractChainAddress
Permit2SweepForwarder (USDT)BNB Chain0xb24bccc6256309d0dff6883ab874e84179d53da9
Permit2SweepForwarder (USDC)BNB Chain0x9A2Bd5Ab5A9fB426d7F754eae14B54b3C3F93F19
Permit2SweepForwarder (USDC)Polygon0xb24bccc6256309d0dff6883ab874e84179d53da9
Permit2SweepForwarder (USDT0)Polygon0x24167a1b385145057bdc93aabf5dbe2047e5c7c6
Permit2SweepForwarder (USDC)Base0x24167a1b385145057bdc93aabf5dbe2047e5c7c6
PegOutRouter (4 routes)Ethereum0xd036eF46955E0D90b0435b0428Ef7CFd7781B377

Alkanes and protofractal ids​

IdChainWhat it is
32:0BitcoinfrBTC
4:1776BitcoinfrUSD (8 decimals)
2:92949BitcoinfrUSD-MINT, frUSD's mint authority, held by the frUSD group
4:1778Bitcointhe frUSD/frBTC CryptoSwap pool, and its LP token (implementation 4:1786)
4:4444BitcoinfrFB
2:102485BitcoinfrFB-AUTH, frFB's mint authority, held by the frFB group
2:102486BitcoinfrFB-SIGIL, frFB's upgrade authority
2:0BitcoinDIESEL
2:77087Bitcointhe DIESEL/frBTC pool
4:65522Bitcointhe AMM factory that routes swaps across pools
4:1001BitcoinSUBMINER-GATE, DIESEL's v3 mint gate (deployed; not active yet)
2:96782Bitcointhe SUBMINER treasury, which the gate pays and DIESEL fees repay
4:866BitcoincFIRE-SIGIL, the authority that can change the gate or its split
44:44Fractalfb-vault, FB custody
44:4442FractalFB-SIGIL, the bearer token that rotates fb-vault's signer

Where to go next​