hashtree-resolver
Root resolver for hashtree - maps human-readable keys to merkle root hashes.
Resolves npub/path style addresses to merkle root hashes by querying Nostr relays.
Usage
use ;
let config = NostrResolverConfig ;
let resolver = new.await?;
// Resolve npub/treename to hash
let entry = resolver.resolve.await?;
println!;
Event Format
Trees are published as kind 30078 (parameterized replaceable with label):
npub1abc.../treename/path/to/file.ext
│ │ │
│ │ └── Path within merkle tree (client-side traversal)
│ └── d-tag value (tree identifier)
└── Author pubkey (bech32 → hex for event)
Tags:
| Tag | Purpose |
|---|---|
d |
Tree name (replaceable event key) |
l |
"hashtree" label for discovery |
hash |
Merkle root SHA256 (64 hex chars) |
key |
Decryption key (public trees) |
encryptedKey |
XOR'd key (link-visible trees) |
selfEncryptedKey |
NIP-44 encrypted (private/link-visible) |
Visibility:
- Public: plaintext
keytag - Link-visible:
encryptedKey+ link key in share URL - Private: only
selfEncryptedKey(owner access)
Part of hashtree-rs.