NIP-XX: Event Timestamp Attestations#2359
Open
cyril wants to merge 1 commit into
Open
Conversation
Defines kind 1041 for signed third-party receipt attestations referencing other events. Complementary to NIP-03 (OpenTimestamps), trading trustlessness for low latency. Targets real-time turn-based games, auctions, and audit logs.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
NIP-XX — Event Timestamp Attestations (
kind: 1041)Summary
An event kind for trusted-third-party event timestamping. Any party signs an event of
kind: 1041referencing another event via anetag with markerattests; the attestation'screated_atis the signer's claimed receipt timestamp for that event. The trust model is application-defined: applications layering on this primitive specify whose attestations are authoritative for their purposes.Motivation
NIP-03 (OpenTimestamps Attestations for Events) provides event timestamping via Bitcoin anchoring. Its trustless model comes at the cost of confirmation latency — averaging around 10 minutes per Bitcoin block with significant variance — plus typical operational delays from OTS calendar batching, and infrastructure overhead (OTS calendars, Bitcoin nodes).
This trade-off is appropriate for long-term proof-of-existence, but less practical for use cases where second-level receipt timing matters more than trustlessness:
This NIP proposes a complementary approach for these cases: a small event kind based on third-party trust rather than blockchain anchoring, allowing receipt timestamps at second-level resolution.
Design choices
The proposal is small in scope. Rationales for each choice are in the NIP itself:
1041events without fetching the referenced event. Cross-event sanity checks are explicitly consumer-side.kind: 1041(tentative): adjacent to NIP-03's1040, signaling a related concern (event-level timestamping) under a different trust model.attestsfollowing the NIP-10 convention.chess:root) to prevent future collisions with general-purpose markers that may be standardized later.contentfield empty: an attestation carries no subjective payload; all semantics live in the signature,created_at, and theattests-markedetag.Relationship to NIP-03
The two NIPs are complementary, not competing. An event MAY have both an OpenTimestamps Attestation and one or more Event Timestamp Attestations.
created_at(1 second)Implementation
Sashité is integrating this NIP into a decentralized protocol suite for chess-family games (chess, shogi, xiangqi). In that suite, a match designates a
timestamperrole; Event Timestamp Attestations from that signer, referencing the match's move events, provide receipt timing for time-control accounting.Looking for additional implementers from the Nostr community, particularly anyone working on applications (games, auctions, live contests) that would benefit from this primitive. Happy to coordinate.
Open questions for review
1041is tentative. If it's already claimed by another draft, please point me to it and I'll adjust.chess:root) is intended to be forward-compatible with any future standardized markers. Feedback on the convention is welcome.