This NIP proposes a new event type, `kind:900`, to represent digital contracts, covenants, and agreements within the Nostr protocol. These classifications are conceptual and aim to categorize the content of the contract. These can be signed, verified, and referenced by other events in the protocol.
### Motivation
As digital transactions, promises, and agreements become more prevalent, it's essential to have a standardized representation of contracts, covenants, and agreements in Nostr. This NIP aims to provide a structure and guidelines for creating, signing, and managing these within Nostr.
- **Contract**: A legally binding agreement between two or more parties.
- **Covenant**: A written promise or restriction within a contract or agreement.
- **Agreement**: A mutual understanding between parties regarding their relative rights and responsibilities.
2.**Format**: Following NIP-23 (Long-form Content), the content should be in Markdown format to structure and present the content in a human-readable manner.
-`title`: Title of the contract, covenant, or agreement.
-`parties`: Parties involved.
-`signed_date`: Date it was signed.
-`expiry_date`: Expiration date, if applicable.
-`type`: Whether it's a Contract, Covenant, or Agreement.
4.**Timestamping with OpenTimestamps**: Following NIP-03 (OpenTimestamps Attestations for Events), once signed, OpenTimestamps can be used to create a cryptographic proof of existence at a specific moment. This proof is stored on the Bitcoin blockchain, providing immutable evidence of the date and time of signing. For those unfamiliar with OpenTimestamps, it's a system for creating provable timestamps recorded on the Bitcoin blockchain.
5.**References and Linking**: Can reference other events in Nostr, such as annexes, terms and conditions, or any other relevant document.
6.**New `kind` Definitions**:
-`kind:900` for Contract Invitation
-`kind:901` for Signature
-`kind:902` for Signing Witness
-`kind:903` for Contract Execution
### Contract Signing Invitation
```json
{
"kind": 900,
"created_at": [Creation Timestamp],
"content": "[Content in Markdown]",
"tags": [
["title", "<ContractTitle>"],
["summary", "<ShortDescription>"], // Optional: Short Description for preview
["valid_from", "Timestamp"], // Optional: Start date of the contract
["valid_to", "Timestamp"], // Optional: End date of the contract
The role of witnesses is to provide an additional layer of verification for the contract signing process. They attest to the authenticity of the signatures involved.
```json
{
"kind": 902,
"tags": [
[ "e", "<Contract's(kind:900)EventID>" ],
[ "e", "<Signature(kind:901)EventID>" ]
],
"pubkey": "[Party's Public Key]",
"created_at": [Creation Timestamp],
"content": "",
"id": "[Event ID]",
"ots": "<base64-encodedOTSfiledata>"
}
```
### Contract Execution
The contract execution represents the finalization and activation of the contract after all parties have signed.