Compare commits

...

5 Commits

Author SHA1 Message Date
fiatjaf_
9fcff79cfd change kind of community post from 1 to 72 2023-10-28 06:46:33 -03:00
Mike O'Bank
ca73c5dd5e Clarify Unsigned Event Object type 2023-10-21 16:05:32 -03:00
Egge
4216f0bf2f added nodestr 2023-10-19 14:32:41 -03:00
fiatjaf
cf672b764b remove useless "block" tag on OTS. 2023-10-17 07:38:53 -03:00
Mike O'Bank
202e18f2b2 Nip 06 test vectors (#819) 2023-10-12 10:31:58 -03:00
4 changed files with 19 additions and 4 deletions

2
03.md
View File

@@ -13,7 +13,6 @@ This NIP defines an event with `kind:1040` that can contain an [OpenTimestamps](
"kind": 1040 "kind": 1040
"tags": [ "tags": [
["e", <event-id>, <relay-url>], ["e", <event-id>, <relay-url>],
["block", <block-height-as-string>, <block-hash>],
["alt", "opentimestamps attestation"] ["alt", "opentimestamps attestation"]
], ],
"content": <base64-encoded OTS file data> "content": <base64-encoded OTS file data>
@@ -21,7 +20,6 @@ This NIP defines an event with `kind:1040` that can contain an [OpenTimestamps](
``` ```
- The OpenTimestamps proof MUST prove the referenced `e` event id as its digest. - The OpenTimestamps proof MUST prove the referenced `e` event id as its digest.
- The `block` tag is optional, it exists to establish a minimum date since which the given event has existed.
- The `content` MUST be the full content of an `.ots` file containing at least one Bitcoin attestation. This file SHOULD contain a **single** Bitcoin attestation and no reference to "pending" attestations since they are useless in this context. - The `content` MUST be the full content of an `.ots` file containing at least one Bitcoin attestation. This file SHOULD contain a **single** Bitcoin attestation and no reference to "pending" attestations since they are useless in this context.
### Example OpenTimestamps proof verification flow ### Example OpenTimestamps proof verification flow

16
06.md
View File

@@ -13,3 +13,19 @@ Basic key derivation from mnemonic seed phrase
A basic client can simply use an `account` of `0` to derive a single key. For more advanced use-cases you can increment `account`, allowing generation of practically infinite keys from the 5-level path with hardened derivation. A basic client can simply use an `account` of `0` to derive a single key. For more advanced use-cases you can increment `account`, allowing generation of practically infinite keys from the 5-level path with hardened derivation.
Other types of clients can still get fancy and use other derivation paths for their own other purposes. Other types of clients can still get fancy and use other derivation paths for their own other purposes.
### Test vectors
mnemonic: leader monkey parrot ring guide accident before fence cannon height naive bean\
private key (hex): 7f7ff03d123792d6ac594bfa67bf6d0c0ab55b6b1fdb6249303fe861f1ccba9a\
nsec: nsec10allq0gjx7fddtzef0ax00mdps9t2kmtrldkyjfs8l5xruwvh2dq0lhhkp\
public key (hex): 17162c921dc4d2518f9a101db33695df1afb56ab82f5ff3e5da6eec3ca5cd917\
npub: npub1zutzeysacnf9rru6zqwmxd54mud0k44tst6l70ja5mhv8jjumytsd2x7nu
---
mnemonic: what bleak badge arrange retreat wolf trade produce cricket blur garlic valid proud rude strong choose busy staff weather area salt hollow arm fade\
private key (hex): c15d739894c81a2fcfd3a2df85a0d2c0dbc47a280d092799f144d73d7ae78add\
nsec: nsec1c9wh8xy5eqdzln7n5t0ctgxjcrdug73gp5yj0x03gntn67h83twssdfhel\
public key (hex): d41b22899549e1f3d335a31002cfd382174006e166d3e658e3a5eecdb6463573\
npub: npub16sdj9zv4f8sl85e45vgq9n7nsgt5qphpvmf7vk8r5hhvmdjxx4es8rq74h

3
07.md
View File

@@ -12,7 +12,7 @@ That object must define the following methods:
``` ```
async window.nostr.getPublicKey(): string // returns a public key as hex async window.nostr.getPublicKey(): string // returns a public key as hex
async window.nostr.signEvent(event: Event): Event // takes an event object, adds `id`, `pubkey` and `sig` and returns it async window.nostr.signEvent(event: { created_at: number, kind: number, tags: string[][], content: string }): Event // takes an event object, adds `id`, `pubkey` and `sig` and returns it
``` ```
Aside from these two basic above, the following functions can also be implemented optionally: Aside from these two basic above, the following functions can also be implemented optionally:
@@ -34,3 +34,4 @@ async window.nostr.nip04.decrypt(pubkey, ciphertext): string // takes ciphertext
- [TokenPocket](https://www.tokenpocket.pro/) (Android, IOS, Chrome and derivatives) - [TokenPocket](https://www.tokenpocket.pro/) (Android, IOS, Chrome and derivatives)
- [Nostrmo](https://github.com/haorendashu/nostrmo_faq#download) (Android, IOS) - [Nostrmo](https://github.com/haorendashu/nostrmo_faq#download) (Android, IOS)
- [Spring Browser](https://spring.site) (Android) - [Spring Browser](https://spring.site) (Android)
- [nodestr](https://github.com/lightning-digital-entertainment/nodestr) (NodeJS polyfill)

2
72.md
View File

@@ -48,7 +48,7 @@ Any Nostr event can be a post request. Clients MUST add the community's `a` tag
"id": "<32-bytes lowercase hex-encoded SHA-256 of the the serialized event data>", "id": "<32-bytes lowercase hex-encoded SHA-256 of the the serialized event data>",
"pubkey": "<32-bytes lowercase hex-encoded public key of the event creator>", "pubkey": "<32-bytes lowercase hex-encoded public key of the event creator>",
"created_at": <Unix timestamp in seconds>, "created_at": <Unix timestamp in seconds>,
"kind": 1, "kind": 72,
"tags": [ "tags": [
["a", "34550:<Community event author pubkey>:<d-identifier of the community>", "<Optional relay url>"], ["a", "34550:<Community event author pubkey>:<d-identifier of the community>", "<Optional relay url>"],
], ],