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.