rsk.zone An independent Rootstock reference

The PowPeg

Rootstock's two-way peg with Bitcoin, and the hardware that signs it. This page reconstructs the complete history of the peg's signing federations from the Bridge contract's own events — 17 federations across 16 handovers — and sets it beside what Rootstock publishes about the devices and their firmware.

What the PowPeg is

The PowPeg is the mechanism that moves bitcoin into Rootstock and back out again. It is a hybrid: peg-ins are verified by the network, and peg-outs are signed by hardware.

A peg-in sends BTC to the PowPeg's Bitcoin address. The Bridge — a native contract at 0x0000000000000000000000000000000001000006 — verifies the Bitcoin transaction by SPV proof and credits the equivalent RBTC on Rootstock. Peg-in requires 100 Bitcoin confirmations (roughly 2,000 Rootstock blocks). Federation members act as watchtowers and usually inform the Bridge on the user's behalf, but a user who is missed can register the peg-in themselves.

A peg-out sends RBTC to the Bridge. After 4,000 Rootstock blocks the Bridge builds the Bitcoin transaction itself and selects the UTXOs, then asks the signing devices to sign it. The people who operate those devices — the pegnatories — do not hold the Bitcoin keys in any form they can extract or use at will. The keys live inside a PowHSM, a purpose-built firmware that will only sign what the Rootstock chain, proved to it by cumulative proof of work, says it should sign. That is where the "Pow" comes from.

dev.rootstock.io — PowPeg

Defense in depth

The PowPeg is not built on one clever mechanism. That is a deliberate choice, and Rootstock's chief scientist has written up the reasoning more than once. The argument against the single-mechanism approach is that it concentrates the risk in something almost nobody can check:

Other pegs rely on a single all-encompassing cryptographic protocol that solves a multi-party custody problem in an intricate way — which very few entities can audit… thoroughly. Rootstock instead relies on multiple defenses, or layers, with each layer relatively simple to understand and test.

Sergio Demian Lerner and Sebastian Lindner, "Building the Most Secure, Permissionless and Uncensorable Bitcoin Peg", 2 December 2020

Three strategies are named as running concurrently: defense in depth, coordination transparency and public attestation. The first is defined more narrowly than the phrase usually implies — it is about separating responsibilities, not stacking redundant copies of the same control:

Defense-in-depth is realized by a careful separation of responsibilities so that compromising the system requires more than just compromising one element or one actor. The miners alone cannot steal the funds of the peg, neither can the pegnatories, nor the PowHSM manufacturer, nor the developers.

The goal state has a name — vetocracy: a system of governance whereby no single entity can acquire enough power to make decisions and take effective charge. And the rule for maintaining it is that layers accrete rather than get swapped: well-functioning security components should not be replaced, so that if one layer fails, it can be removed while having a safety net of the remaining layers working.

The layers, and what each is for

A layer is only meaningful against a specific attack, so they are listed here with the one they exist to stop.

12 layers, each drawn from a cited source
LayerDefends againstHowSrc
Merged-mining hash powerA dishonest majority of Rootstock block producersCalled "the largest and most crucial layer" of the approach. Peg-outs are only signed for a chain backed by real cumulative work.ref
PowHSM key custodyA compromised pegnatory machineThe Bitcoin key is generated inside a tamper-proof device and never leaves it, so "even if the pegnatory is hacked the key in the PowHSM will be secured".ref
Cumulative-PoW gate inside the deviceOperators colluding to sign a forged chainEach PowHSM runs a Rootstock node in SPV mode and will only sign what cumulative proof of work commands — checking block linkage, difficulty adjustments and best-chain selection itself.ref
The Bridge builds the transactionSigners choosing what to signThe peg-out transaction is constructed by consensus. The devices are not offered a choice of contents, so "pegnatories cannot sign arbitrary transactions to falsify peg-outs".ref
Coordination over the chain onlyHidden collusion, and reconnaissanceAll messages between pegnatories go through the Rootstock blockchain and are public. A private channel would also leak their addresses for targeted attack.ref
Firmware attestationA device running something other than the audited firmwareDeterministic builds plus a device-signed attestation chaining to a manufacturer root key.ref
Proof of work as a forced delayA fast, quiet attackThe work a PowHSM demands is a rate limiter: an attack needs major pools colluding for days, visibly. "As in banking vault opening procedures, the PowHSM is actually enforcing a time-delay that lets humans enter the loop."ref
Deep confirmation thresholdsReorgs, and invalid-but-heaviest Bitcoin forks100 Bitcoin blocks in, 4,000 Rootstock blocks out. Deliberately slow; Flyover exists as the fast path precisely because the peg is not.ref
Armadillo fork monitoringA hidden or parallel Rootstock branchMonitors reconstruct the branch graph from Bitcoin blocks and broadcast a proof-of-work-backed fork proof. PowPeg nodes listen, so signing can be halted "with objective evidence of an ongoing attack, and not by rumors".ref
Consensus-enforced UTXO chainingSelective censorship of a peg-outThe Bridge picks the UTXOs, including change, forming a chain. Refusing one transaction eventually halts the peg entirely — so censorship cannot be quiet or partial.ref
Jurisdictional spreadSeizure by one governmentPegnatories sit in different jurisdictions, explicitly contrasted with custodial wrappers held under one.ref
Time-locked emergency multisigEvery device failing at onceA separate script branch behind OP_CSV, usable only long after the PowPeg is demonstrably dead. The delay is itself the defence — it removes both extortion by signers and denial of service against them.ref

The doctrine, stated as doctrine

The clearest statement is not in an article but in a proposal — RSKIP198, which writes the peg's security assumption as a formula in order to attack its weakest term:

The current security of the Powpeg against invalid peg-outs relies on the assumption that: (the majority of the RSK hashrate is honest OR the majority of the Powpeg functionaries are honest) AND the PowHSM manufacturer is honest AND the PowHSM is tamper-proof. Assuming of the honesty of the HSM manufacturer and lack of vulnerabilities in the device is Powpeg's strongest assumption.

The defense-in-depth strategy adopted by the RSK community states that there should be no single point of failure. While the probability of the described attacks is very low, the defense-in-depth strategy demands that an additional protection layer exists. This new layer should keep the system secure even in case the HSM manufacturer is compromised.

That proposal — Minpeg, a second multisig weighted by mining power and ANDed into the peg script — is the answer it offers to its own question. It names four ways a manufacturer could fail: a key leaked through a covert channel in ECDSA signatures, a backdoor colluding with functionaries, code that quietly skips the proof-of-work check, and a power-glitch side channel. Enumerating those is the point: they are precisely what the hardware layer cannot defend against, which is why another layer is argued for.

Designed, not deployed

Minpeg has not shipped. RSKIP198 is Deferred. So is RSKIP207, the emergency time-lock refresh. The layers in the table above are the ones in force; this one is a design that answers a known gap and has not been deployed. The distinction matters — a deferred proposal is not a defence.

Two things that are not layers

Worth stating, because both get cited as security properties and neither is:

Where the idea came from

The instinct predates the PowPeg by four years. Arguing in 2016 that merge-mined sidechains and drivechains have near-identical security — a mining majority can defraud either — the conclusion drawn was to stop relying on one: what RSK did to improve drivechains to have the 'pure' sidechain-like security is to add a second layer of security: the requirement that cross-chain transactions are also signed by a set of notaries. Everything above is that move, repeated.

Sergio Demian Lerner, "Drivechains vs Sidechains", bitslog, 7 October 2016

Sergio Demian Lerner, "Armadillo: More Consensus Security for RSK", bitslog, 1 August 2019

Sergio Demian Lerner, "Measuring RSK Security", 6 April 2022

The next bridge changes the assumption

Everything above defends an honest-majority assumption as thoroughly as it can be defended. The Union bridge takes the other route: built on BitVMX, it aims to need only one honest participant, because a single honest party can challenge a false withdrawal and win. It is not a replacement yet — what runs on testnet today does not have the fraud proofs that would make that true — but it is where the peg is heading.

Checking it against outside opinion

Everything above is the design as its authors describe it, which is a necessary source and an interested one. Three independent readings are worth setting beside it:

More in the reading list, including the 2017 Trail of Bits review of rskj and both peg-out incident post-mortems. Note what is not there: no public audit of the Bridge contract itself appears to exist.

The federation right now

Signatures required
5 of 9
read from the Bridge
Bitcoin address
3GX89qzyQVaJqUJjq5noZbLJEHuYDvVrHq
getFederationAddress()
Active since
8,558,281
block · 23 Feb 2026
Federations to date
17
16 handovers
Read this before sending any bitcoin

Do not send bitcoin to this address from your own wallet. A peg-in is not an ordinary payment, and this address does not stay the same. Either mistake loses the funds permanently.

The transaction has to have the right shape. Only two kinds of sending address can pay the federation directly: legacy P2PKH (starting 1) and SegWit-compatible P2SH-P2WPKH (starting 3). A native SegWit bc1… wallet cannot — the peg-in needs an OP_RETURN output identifying the destination, and an ordinary wallet will not add one. There is also a minimum of 0.005 BTC on mainnet, and the Bridge waits 100 Bitcoin confirmations before crediting anything.

The address changes, and this page is a snapshot. It has already changed 16 times — that is what the table below is a record of. A handover has a grace period, and after it Rootstock's documentation is blunt about what happens to bitcoin sent to the previous address: it will be lost. A retired federation address is watched by nobody. The only key material that can ever move such funds is the time-locked emergency multisig, which by RSKIP201 does not become spendable until the outputs have sat untouched for a year — and even then nothing in the protocol credits the sender with rBTC. See the emergency multisig below.

Instead: peg in with the PowPeg App, which builds the transaction correctly and supports address types a direct send cannot — or, if you are doing it by hand, read getFederationAddress() off the Bridge yourself at the moment you send, and never from a page like this one.

Rootstock developer docs — rBTC conversion: address compatibility, and what happens to bitcoin sent to a previous federation address

Rootstock developer docs — mainnet conversion guide: minimum amount and confirmation counts

Source of both pages, in the rsksmart/devportal repository

These four figures are read live from the Bridge on a Rootstock mainnet node (getFederationSize, getFederationThreshold, getFederationAddress) and cross-checked against the reconstruction below. If they ever disagreed, the collector would fail rather than publish either.

There is no retiring federation at the moment: getRetiringFederationSize() answers −1, so no migration of funds is in flight.

Checked against the chain

Rootstock's documentation says the PowPeg is expanding to 20 members after the Reed upgrade, with plans for up to 60 total. Reed activated on mainnet on 30 September 2025. As of 8 Nov 2026 the Bridge still reports 9 members, so that expansion has not happened yet — the consensus rules allow it, the membership has not changed.

rootstock.io — PowPeg

Every federation, from genesis

This table is not transcribed from anywhere. It is rebuilt from the Bridge's commit_federation event, which fires on every handover and carries the outgoing key set, the incoming key set and the height the new federation activates at. Because each event names the set it replaces, the whole chain of handovers can be checked rather than trusted: every outgoing set must equal the previous incoming set. All 16 of them do.

Every address in the table below but the last is retired. They are published here as a record of what the peg has been, not as somewhere to send money. Bitcoin paid to a retired federation address is lost for the reasons set out above.

17 federations reconstructed from Bridge commit_federation events, all 16 handovers verified to chain together
#Active fromtoMembersSignaturesDate activeDurationBitcoin addressCommitted at
00667,425158genesis—not in event—
1667,426833,73615816 Aug 201862 dnot in event648,926
2833,7372,151,54515817 Oct 2018499 dnot in event815,237
32,151,5462,444,9779528 Feb 2020108 dnot in event2,133,046
42,444,9782,474,37915815 Jun 202011 d3JYaMbjuKXkURNpLpDDDWMzUcNMt2GreNc2,426,478
52,474,3802,840,8059526 Jun 2020133 d35JUi1FxabGdhygLhnNUEFG4AgvpNMgxK12,455,880
62,840,8063,155,666856 Nov 2020118 d36FMFLxnv3JaykDNcqikpX9Pe1XVZW8gEZ2,822,306
73,155,6674,671,2801374 Mar 2021572 d39qrdxFmkP3bC7Qe74wE4VXemQzXzNHr1h3,137,167
84,671,2814,998,7989527 Sep 2022120 d3DsneJha6CY6X9gU2M9uEc4nSdbYECB4Gh4,652,781
94,998,7995,568,0019525 Jan 2023206 d35iEoWHfDfEXRQ5ZWM5F6eMsY2Uxrc64YK4,980,299
105,568,0026,065,8009519 Aug 2023173 d32Bhwee9FzQbuaG29RcXpdrvYnvZeMk11M5,527,682
116,065,8017,069,805958 Feb 2024324 d3LxPz39femVBL278mTiBvgzBNMVFqXssoH6,025,481
127,069,8067,226,5939528 Dec 202443 d3JENeNaLcG5MsHp3SzGsmJdTr3DSu8A2kA7,029,486
137,226,5947,781,1979510 Feb 2025156 d32gaHzxWgf4kXUt21TgeUzfkL9u3jQLXc67,186,274
147,781,1988,147,3219515 Jul 2025105 d3GQ87zLKyTygsRMZ1hfCHZSdBxujzKoCCU7,740,878
158,147,3228,558,2809528 Oct 2025118 d3LD8dqqRaF9cM72fsGj4QpPqsJp2mXNsMy8,107,002
168,558,281current9523 Feb 2026258 d3GX89qzyQVaJqUJjq5noZbLJEHuYDvVrHq8,517,961

Reading the table:

Two things stand out. The federation ran at 15 members from genesis until 28 Feb 2020, when it dropped to 9 — then briefly returned to 15 for 29,402 blocks (about 11 days) on 15 Jun 2020 before settling back. And it has held steady at 9 since 27 Sep 2022: 11 of the 17 federations have had that size, and the handovers since have rotated keys rather than changed the count.

How the threshold is set

The number of signatures a peg-out needs is not chosen per federation. It follows from the size by consensus rule:

M = floor(N / 2) + 1

So the observed sizes map to: 8→5, 9→5, 13→7, 15→8. The live Bridge reports 5 of 9, which is what the rule gives, and the collector re-checks that every run.

How to read the threshold column

The Signatures column above is derived from this rule, not read from the chain per federation. The Bridge only exposes getFederationThreshold() for the current federation, and the historical state a direct query would need has been pruned. The rule is verified against the live federation on every collection run, so if it ever stopped holding the run would fail — but for historical rows this is a rule applied, not a value observed.

dev.rootstock.io — PowPeg FAQ, "M = N / 2 + 1"

Functionary keys over time

45 distinct public keys have been part of a Rootstock federation. 39 of them appear in more than one federation; the rest appear exactly once. The keys below are the ones that persisted longest.

The 12 longest-serving functionary keys of 45
Public key (compressed)FederationsFirstLast
03250c11be0561b1d7ae168b1f59e39cbc1fd1ba3cf4d2140c1a365b2723a2bf9316667,426current
03ae72827d25030818c4947a800187b1fbcc33ae751e248ae60094cc989fb880f69667,4265,568,001
027319afb15481dbeb3c426bcc37f9a30e7f51ceff586936d85548d9395bcc2344804,671,280
0372cd46831f3b6afd4c044d160b7667e8ebf659d6cb51a825a3104df6ee0638c6804,671,280
03b53899c390573471ba30e5054f78376c5f797fda26dde7a760789f02908cbad2804,671,280
03ecd8af1e93c57a1b8c7f917bd9980af798adeb0205e9687865673353eb041e8d8667,4264,998,798
0294c817150f78607566e961b3c71df53a22022a80acbb982f83c0c8baac040adc704,671,280
020ace50bab1230f8002a0bfe619482af74b338cc9e4c956add228df47e6adae1c74,671,2818,147,321
03b65cd7c22e70c0823882c6e71ac2c279ed31cbe29cb4a1c00572ce539c0c45736667,4263,155,666
025093f439fb8006fd29ab56605ffec9cdc840d16d2361004e1337a2f86d8bd2db54,671,2817,226,593
0275d473555de2733c47125f9702b0f870df1d817379f5587f09b6c40ed2c6c94954,998,7997,781,197
0328f0386fe2b2840a424d3a5073be89a4cb643c434752b8c865e867611d00418357,069,806current
Keys are not identities

A public key is not a person. The chain records keys; it does not record who holds them, and Rootstock does not publish a key-to-member mapping. Nothing on this page claims to connect the two.

PowHSM firmware versions

The PowHSM firmware is developed in the open at rsksmart/rsk-powhsm. (rsksmart/powhsm, the name most people guess, does not exist.) It runs on two very different platforms, and a single PowPeg may mix them: Ledger Nano S devices, and Intel SGX enclaves on servers. SGX support arrives in 5.4.0; everything before that is Ledger only.

The latest release is 5.6.2 (22 Jul 2026), out of 26 versions on record.

PowHSM firmware versions from the GitHub releases API and CHANGELOG.md
VersionRelease tagChangelogPlatformWhat changed
5.6.22026-07-22—Ledger Nano S, Intel SGXno changelog entry
5.6.12026-02-132025-11-10 differsLedger Nano S, Intel SGXUnit tested powHSM main APDU processor
5.6.0—2025-10-09Ledger Nano S, Intel SGXImproved performance on SGX powHSM's advance blockchain and update ancestor operations
5.5.1—2025-06-02Ledger Nano S, Intel SGXFixed middleware docker image build
5.5.0—2025-05-27Ledger Nano S, Intel SGXIntroduced SGX firmware upgrades
5.4.1—2025-02-07Ledger Nano S, Intel SGXUnified pin/password policy across platforms
5.4.0—2025-01-27Ledger Nano S, Intel SGXEnhanced Ledger attestation scheme with additional information
5.2.62026-07-22—Ledger Nano Sno changelog entry
5.2.52026-07-22—Ledger Nano Sno changelog entry
5.2.42025-06-12—Ledger Nano Sno changelog entry
5.2.2—2025-01-20Ledger Nano SImplemented OSSF scorecard on CI
5.2.12024-11-192024-11-14 differsLedger Nano SRemoved compilation products from repository
5.2.02024-10-282024-09-09 differsLedger Nano SAdded "screen saver" mode to signer app to extend display lifetime
5.1.02024-09-112024-07-01 differsLedger Nano SDecoupled business and hardware layers in preparation for multiple platforms
5.0.0—2024-04-09Ledger Nano SImplemented authorised segwit transaction signing
4.0.22023-12-012023-12-01Ledger Nano SNew signer upgrades wallet (Alpha)
4.0.1—2023-06-14Ledger Nano SUsing Nanos SDK fork version 2
4.0.02023-02-082023-05-30 differsLedger Nano SNew Signer and UI heartbeat operations
3.0.32023-01-09—Ledger Nano Sno changelog entry
3.0.22022-09-30—Ledger Nano Sno changelog entry
3.0.12022-09-282022-08-11 differsLedger Nano SStandard ledger Ethereum app support in signer authorization generator
3.0.0—2022-06-04Ledger Nano SConsidering uncles difficulty in "advanceBlockchain" operation
2.3.82023-11-02—Ledger Nano Sno changelog entry
2.3.72023-08-04—Ledger Nano Sno changelog entry
2.3.62023-08-01—Ledger Nano Sno changelog entry
2.3.52022-09-28—Ledger Nano Sno changelog entry
The dates conflict

The two sources disagree about the date of 6 versions. The GitHub release tag and the project's own CHANGELOG give different days — sometimes months apart, as with 5.6.1 (tagged 13 Feb 2026, changelog says 10 Nov 2025). Both columns are shown rather than one being quietly chosen. The release tag is the git fact; the changelog is what the authors recorded.

rsksmart/rsk-powhsm — releases

Attestation

Attestation is how a PowHSM proves what it is and what it is running, to someone who does not have to trust its operator. It answers two questions, depending on platform:

Either way the signed message includes the hash of the authorised public keys, the Rootstock best block hash the device has advanced to, and the last BTC transaction hash it was authorised to sign. So an attestation is not just "this firmware is genuine" — it is "this firmware is genuine and here is the chain state it believes in".

The attestation file is JSON. Version 1 is the Ledger shape, with targets: ["ui","signer"]; version 2 is the SGX shape, with targets: ["quote"]. Verification is a command in the repository:

# Ledger
python adm_ledger.py verify_attestation -t attestation.json \
    -r <Ledger issuer public key> -b public-keys.json

# SGX
python adm_sgx.py verify_attestation -t attestation.json \
    -r https://certificates.trustedservices.intel.com/Intel_SGX_Provisioning_Certification_RootCA.pem \
    -b public-keys.json

It prints the installed UI hash and Signer version, or for SGX the installed MRENCLAVE and MRSIGNER.

rsk-powhsm — docs/attestation.md

rootstock.io — PowPeg, section 08 "Public proofs"

What each pegnatory actually publishes

These are not descriptions of attestations. Each row below is read from the signed attestation file that pegnatory publishes, together with the build parameters naming the firmware its device is running. 8 of the 9 federation members publish one.

8 published attestations, read from the files each pegnatory's page loads
MemberBridge indexDeviceFirmwareAttestationKey matches BridgePage
Earn0Ledgersigner 5.2.6 · ui 5.2.44 signed elements · 281 B of signaturesverifiedattestation
pNetwork1Ledgersigner 5.2.6 · ui 5.2.54 signed elements · 282 B of signaturesverifiedattestation
Luxor2Ledgersigner 5.2.6 · ui 5.2.14 signed elements · 281 B of signaturesverifiedattestation
Constata4Ledgersigner 5.2.6 · ui 5.2.14 signed elements · 282 B of signaturesverifiedattestation
RootstockLabs5Intel SGXenclave 5.6.24 signed elements · 143 B of signaturesverifiedattestation
RootstockCollective6Ledgersigner 5.2.6 · ui 5.2.14 signed elements · 282 B of signaturesverifiedattestation
BlockVenture7Ledgersigner 5.2.6 · ui 5.2.44 signed elements · 283 B of signaturesverifiedattestation
Sovryn8Ledgersigner 5.2.6 · ui 5.2.14 signed elements · 282 B of signaturesverifiedattestation
What the set shows

Two things are worth drawing out of that table.

The devices are not all the same. 7 pegnatories run a Ledger PowHSM; RootstockLabs runs an Intel SGX enclave instead, which is a different platform with a different root of trust — Intel's DCAP chain rather than Ledger's issuer key — and a different attestation format (version 2, a quote, against version 1's ui and signer). The Ledger devices agree on the Signer build and differ only in UI version.

Bridge index 3 publishes nothing. The published attestations cover indexes 0, 1, 2, 4, 5, 6, 7, 8 of a federation of 9. The only member Rootstock names without an attestation page is Xapo Bank, which makes it the likely occupant of that slot — though nothing published says so outright, and that last step is inference rather than fact.

Checked against the chain

The Bitcoin public key in each attestation was checked against the Bridge at the index that member claims: 8 matched, 0 did not. This is the step that turns a list of names into something the chain backs — the Bridge holds keys and no names, so a member asserting "I am index 0" is only worth something once the key it attests to is the key sitting at that index.

Every file behind the table is linked from each member's page, and the attestations can be verified independently with the command above. What is not published is any history: each page shows the device's current state, with no record of previous firmware or when it changed. Rootstock's page says future versions will include periodic on-chain proofs; today the proof is a file on a web server, and this site re-reads it rather than quoting it.

rootstock.io — PowPeg, section 08 "Public proofs"

Who holds devices

The chain knows 9 public keys. It does not know any names. The list below is what Rootstock publishes, and it is the only published list — the developer documentation declines to name anyone, saying only that public operators include independent entities across mining, custody, DeFi, and infrastructure.

The 9 members named on rootstock.io — matching the 9 keys the Bridge reports. The index column is each member's own claim, from its attestation
MemberDomainSectorBridge index
Luxorluxor.techMining2
Earnearn.networkInfrastructure0
Constataconstata.euInfrastructure4
pNetworkp.networkInfrastructure1
Sovrynsovryn.appDeFi8
Xapo Bankxapo.comCustody—
BlockVentureblockventure.comInfrastructure7
RootstockLabsrootstocklabs.comCore5
RootstockCollectiverootstockcollective.xyzCommunity6
What the list does and does not tell you

The count matches — Rootstock names 9 members and the Bridge reports 9 keys — and 8 of the 9 do say which key is theirs: each attestation names a bridge index, and the device's Bitcoin public key can be compared against the Bridge at that index. So the name-to-key mapping that the chain cannot provide on its own does exist, for all but one member, and it is checkable rather than merely asserted. The attestation table has it.

What is still missing is time. The list is undated — there is no "as of" on it, no record of when any member joined or left, and the federation has changed hands 16 times without a published announcement naming who went in or out. The attestations describe the set as it is now, not how it got here.

rootstock.io — PowPeg

dev.rootstock.io — PowPeg member updates

How a member actually changes

Composition changes run in three phases, per the developer documentation:

  1. Voting. Each existing pegnatory can accept or reject the change.
  2. Delay. A consensus-enforced wait — RSKIP383 sets it at 40,320 blocks, about two weeks.
  3. Migration. Funds move from the old multisig to the new one.

Both the vote and the activation are visible in the table above: committed at is the vote landing, active from is the delay expiring.

dev.rootstock.io — PowPeg member updates

The emergency multisig

RSKIP201 adds a time-locked escape hatch, in case the majority of PowHSMs fail simultaneously. It is a second branch in the peg's Bitcoin script, spendable only after an OP_CSV timelock expires — so it cannot race the normal path, only outlive its failure.

It was activated as part of the Iris upgrade. RSKIP225 requires each signatory to publish an emergency xpub and to prove possession of it, not more often than once a year.

Unresolved in the specification

Two details in RSKIP201 do not agree with each other, and one does not agree with rootstock.io:

  • The threshold. The prose says a 3-out-of-4 multisig; the script listing immediately below shows OP_2, three public keys and OP_3 — 2-of-3. The RSKIP does not reconcile them.
  • The timelock. The text says the value is TBD, but it should correspond to one year. The actual deployed value is not stated in the RSKIP.
  • The signatories. RSKIP201 lists IOVlabs, MoneyOnChain, Jameson Lopp and Adrian Eidelman. rootstock.io lists RootstockLabs, MoneyOnChain, Jameson Lopp and Adrian Eidelman — the same four, with IOV Labs under its later name.

RSKIP201 — Time-locked emergency multisig