On-Chain Zaps for Closed-Order Ceremonial Recordkeeping

NIP-XXX: On-Chain Zaps for Closed-Order Ceremonial Recordkeeping

draft optional


Abstract

This has been vibed into existence and should be considered a joke until you realize it’s not. I did not read this before publishing.

Defines a convention for using Bitcoin transactions to permanently record ceremonial actions within a private Nostr-keyed order. Member Nostr keypairs serve as persistent identities whose derived Bitcoin addresses receive structured OP_RETURN transactions from an order treasury multisig. Member responses to those transactions constitute on-chain oaths. The complete transaction history of a member’s order key constitutes their immutable standing within the order.


Motivation

Private orders — fraternal, professional, dynastic, civic — need records of membership events that are permanent, tamper-evident, and independent of any archivist’s goodwill. Paper archives burn. Databases are edited. Notarized documents depend on institutions that outlive their integrity.

Bitcoin’s ledger provides a record no party, including order leadership, can revise after the fact. The Nostr keypair serves as the stable identity anchor: one order-specific key per member, whose full on-chain history constitutes membership standing. The treasury multisig provides unforgeable weight: every recognition is traceable to the founding treasury through an unbroken UTXO lineage. A recognition that cannot be traced to that lineage is not a valid order action regardless of its content.


Definitions

Order: The private group operating under this protocol.

Member key: An order-assigned Nostr keypair. The npub is the member’s persistent identifier within the order. The derived P2TR address receives all order transactions directed at that member.

Treasury: The order’s Bitcoin multisig wallet, controlled by the leadership quorum. Its UTXO lineage, traceable to the founding transaction, is the source of a recognition’s legitimacy.

Chair key: An order-assigned Nostr keypair representing a leadership seat, not the current holder of that seat. Chair keys are long-lived; holders rotate, keys change only on formal succession.

Quorum: The M-of-N set of chair keys whose co-signatures authorize treasury movements.

Recognition: A treasury-originating transaction to a member’s P2TR address carrying an OP_RETURN action record.

Acceptance: A spend from the member’s P2TR address back to the treasury’s current receiving address, within the defined response window.

Active refusal: A spend from the member’s P2TR address to any address other than the treasury.

Non-response: The recognition UTXO remaining unspent after the response window closes.


Address Derivation

A member’s order Bitcoin address is the P2TR address derived from their order npub as the internal key, with no script path:

address = P2TR(npub, no_script_path)

The member spends using a single Schnorr signature with their order nsec. No additional derivation or tweaking is applied. The address is fully determined by the npub alone.


OP_RETURN Encoding

Each recognition transaction includes one OP_RETURN output with the following layout (80 bytes maximum):

[4 bytes]      magic:   0x4F524452  ("ORDR")
[1 byte]       version: 0x01
[1 byte]       action:  see Action Codes below
[32 bytes]     target:  member npub (x-only pubkey)
[0–42 bytes]   payload: action-specific data (optional)

Action Codes

Code Name Meaning Expected Response
0x01 INDUCT Initial membership grant Accept = membership begins
0x02 PROMOTE Rank or degree advancement Accept = oath of new rank taken
0x03 AWARD Named honor Accept = honor received
0x04 CENSURE Formal reprimand Accept = reprimand acknowledged
0x05 SUSPEND Temporary suspension from participation Accept = suspension acknowledged
0x06 EXPEL Permanent expulsion Accept = graceful departure; hold or active refusal = disgrace
0x07 REINSTATE Restoration following expulsion or suspension Accept = reinstatement complete
0x08 ROTATE_MEMBER_KEY Replace member’s key; payload = new npub No member response required
0x09 ROTATE_CHAIR_KEY Leadership seat succession; payload = new chair npub No member response required

Payload Encoding

For actions carrying substantive content — award name, censure grounds, key rotation target — the payload holds either a 32-byte SHA-256 hash of an off-chain document, or a 32-byte npub for key rotation actions. The hash anchors content to the block height without publishing it. The order is responsible for off-chain document preservation and controlled disclosure.


Response Semantics

The order defines a response window in blocks at founding. The recommended default is 1008 blocks (approximately one week).

Within the window, the member either spends the UTXO back to the treasury address (acceptance), spends it to any other address (active refusal), or allows the window to expire without spending (non-response).

Recommended defaults for non-response interpretation: INDUCT and PROMOTE treat non-response as refusal. EXPEL treats non-response as disgrace. CENSURE and SUSPEND treat non-response as acknowledged by default, since the member’s silence does not undo the action. The order may override any of these defaults in its bylaws, provided the policy is established before the action is issued.

ROTATE_MEMBER_KEY and ROTATE_CHAIR_KEY require no member response and carry no response semantics.


Key Issuance

The order generates all member keypairs. Three custody policies apply:

Policy A — Order Custody: The order generates the keypair and retains the nsec, operating the member’s key on their behalf. The member has no independent spend authority. Suitable for members who cannot manage key material or for probationary members.

Policy B — Member Custody: The order generates the keypair, delivers the nsec to the member through a secure out-of-band channel, and destroys its copy. The member has full independent spend authority. Suitable for members trusted to manage key material.

Policy C — Member-Generated: The member generates their own keypair and submits the npub to the order for registration via a ROTATE_MEMBER_KEY event linking it to a provisionally assigned key. The order never holds the nsec.

Policy is a per-member determination and may change during a member’s tenure. A policy change that transfers spend authority to the member is effected through a ROTATE_MEMBER_KEY transaction establishing the new key on-chain.


Key Recovery

If a member key is lost or compromised, the leadership quorum issues a ROTATE_MEMBER_KEY transaction:

The source is the treasury multisig. The OP_RETURN payload contains the new member npub (32 bytes). The old key’s full history is preserved on-chain and remains the member’s permanent record. All future recognitions are directed to the new key’s P2TR address. The ROTATE_MEMBER_KEY transaction is the permanent on-chain link between the old and new key, allowing any observer to reconstruct the full key lineage.

If the compromise is suspected rather than confirmed, the order may issue the rotation proactively. The old key’s history up to the rotation event remains valid; any transaction from the old key after the rotation block is treated as unauthorized.


Leadership Quorum

The order establishes N chair keys at founding, requiring M-of-N to authorize any treasury movement. The recommended configuration is 4-of-7.

Each chair key is an order-held Nostr keypair representing a seat as an office, not its current holder. The holder of a chair uses that chair’s nsec to co-sign treasury transactions during their tenure. A chair holder also maintains a separate personal member key for their own membership record. These are always distinct keypairs.

The quorum’s multisig wallet is constructed from the current set of chair npubs. The chair composition at any point in time is readable from the on-chain succession history of ROTATE_CHAIR_KEY transactions from the founding treasury.

Chair Succession

When a chair changes hands, the quorum issues a ROTATE_CHAIR_KEY transaction from the treasury with the incoming chair npub as payload. The multisig wallet is then updated to reflect the new chair key in place of the old one. Whether the incoming holder receives a freshly generated chair keypair or takes custody of the existing chair nsec is an order policy decision.

If the outgoing chair holder is unavailable or uncooperative, the remaining quorum members may authorize the rotation unilaterally provided the M-of-N threshold is met without the outgoing chair’s participation. This is the mechanism by which the quorum defends against a single compromised or hostile chair.

Founding Treasury

The founding treasury transaction is the root of the entire UTXO lineage. Every recognition’s legitimacy is established by tracing its source back to this root through an unbroken chain of treasury movements. This chain is publicly auditable by any observer who knows the founding transaction ID.


Member Record Interpretation

A complete member record is the ordered set of all transactions involving their current and all former P2TR addresses, linked through ROTATE_MEMBER_KEY events, where each recognition traces to the founding treasury.

To read a member’s record: collect all transactions in the key lineage, verify treasury provenance for each recognition, pair each recognition with its response transaction if one exists within the response window, and sort by block height. The result is a chronological, tamper-evident history of every action the order took toward the member and every response the member made.


Out of Scope

This NIP specifies on-chain transaction structure and interpretation only. Off-chain document storage and distribution, physical-world identity binding, specific bylaw definitions for action code meanings beyond the stated defaults, and the founding treasury establishment ceremony are order-policy decisions outside the protocol layer.


Looking for comments…

Searching Nostr relays. This may take a moment the first time this article is opened.