Interactive
Circle state simulator
Add members, remove them, withhold a signature, break a rule, and watch the derived state change. Everything runs in this tab. Nothing you type is sent anywhere, stored, or logged.
- Specification 1.0.0
- Network: Signet and regtest
- Structural rules and state only
What this tool does not do. Browsers expose no Schnorr primitive, so signatures are checked for shape, not verified. That is the shape validation mode of the reference implementation and it is explicitly not sufficient for authoritative indexing. Everything else, including transaction decoding, txid and wtxid, fee allocation, lineage derivation, the state snapshot and the state hash, is computed here exactly as src/ computes it, and the vector replay below proves it against the published fixtures.
Build a circle
The builder starts loaded with the published golden Signet vector: three members, 30,000, 40,000 and 50,000 sats, at 10 sat/vB. Change anything and the verdict updates immediately.
Members
Try a failure
Fee allocation
Marker script
Fee shares follow section 7 exactly: q = floor(F / N), and the first F mod N slots each pay one extra satoshi. Slots come from sorting inputs by display txid then vout, which is why editing an outpoint can move a member to a different slot and change who pays the remainder.
Decode a marker
Paste a 42 byte marker scriptPubKey as hex. Invalid encodings are reported with the same error code the reference decoder raises.
Replay the published vectors
This reads test-vectors/v1/ from this site, decodes the real signed transactions, and reproduces every committed value: txids, wtxids, fee, virtual size, lineage identifiers, all three state hashes and all three rollback roots. If any line below is marked as disagreeing, this page and the repository have drifted apart.
The state panel shows the snapshot after each applied transition, ending with the empty index after the third rollback.