Artifacts: Metadata with Torrent Distribution and Integrity Verification
This NIP defines kind 30025 for parameterized replaceable events that store metadata for artifacts such as books, academic papers, datasets, and multimedia educational content.
Events include primary torrent magnet URIs for decentralized content distribution, optional chapter-level magnets for progressive downloads, and cryptographic integrity hashes (BLAKE3 or SHA256) for verification.
Nostr excels at federated metadata distribution but struggles with large payloads (books, research papers, datasets) due to relay storage limits and censorship risks.
Torrents survive relay takedowns via DHT peer discovery
Relays store ~1-2KB events; torrents handle gigabyte payloads
Cryptographic hashes prevent tampering and verify authenticity
Rich metadata enables faceted search across subjects, authors, languages
Achieve >10 seeds/artifact for 99.99% availability
Complements NIP-23 for long-form articles with downloadable content
Events of kind 30025 MUST be parameterized replaceable per NIP-01, identified by a ["d", "<unique_identifier>"] tag.
"isbn-978-1-59327-828-1""doi-10-1000-xyz123""moby-dick-gutenberg-2701"| Tag | Description | Example |
|---|---|---|
d |
Unique artifact identifier | ["d", "rust-book-2018"] |
| Tag | Description | Example |
|---|---|---|
t |
Fixed type marker for filtering | ["t", "artifact"] |
title |
Primary title (max 500 chars) | ["title", "The Rust Book"] |
author |
Repeatable (max 20 entries) | ["author", "Steve Klabnik"] |
published |
Publication year (4-digit) | ["published", "2018"] |
subject |
Repeatable topic tags | ["subject", "programming"] |
{
"version": "1.0",
"title": "string (required, non-empty, max 500 chars)",
"magnet": "string (optional if chapters array present)",
"hash": "string (required if magnet present; 64-char hex)",
"hash_algo": "string (required if hash present; 'blake3' or 'sha256')",
"file_size": "integer (required if magnet present; bytes)"
}
magnet OR a chapters array with at least one entry. Both can coexist for maximum flexibility.
"1.0""magnet:" if present"blake3" or "sha256"{
"kind": 30025,
"tags": [
["d", "rust-book-2018"],
["t", "artifact"],
["title", "The Rust Programming Language"],
["author", "Steve Klabnik"],
["author", "Carol Nichols"],
["published", "2018"],
["subject", "programming"],
["format", "application/pdf"],
["license", "MIT"]
],
"content": "{\"version\":\"1.0\",\"title\":\"The Rust Programming Language\",\"magnet\":\"magnet:?xt=urn:btih:...\",\"hash\":\"a1b2c3...\",\"hash_algo\":\"blake3\",\"file_size\":5242880}"
}
{
"kind": 30025,
"tags": [
["d", "doi-10-48550-arxiv-1706-03762"],
["t", "artifact"],
["title", "Attention Is All You Need"],
["author", "Ashish Vaswani"],
["published", "2017"],
["subject", "machine-learning"],
["doi", "10.48550/arXiv.1706.03762"],
["license", "CC-BY-4.0"]
],
"content": "{\"version\":\"1.0\",\"title\":\"Attention Is All You Need\",\"magnet\":\"magnet:?xt=urn:btih:...\",\"hash\":\"d4e5f6...\",\"hash_algo\":\"blake3\",\"file_size\":2097152}"
}
{
"content": {
"version": "1.0",
"title": "Complete Programming Guide",
"magnet": "magnet:?xt=urn:btih:FULL_BOOK...",
"hash": "abc123...",
"hash_algo": "blake3",
"file_size": 10485760,
"chapters": [
{
"title": "Chapter 1: Introduction",
"number": 1,
"magnet": "magnet:?xt=urn:btih:CHAPTER1...",
"hash": "def456...",
"hash_algo": "blake3",
"file_size": 524288
}
]
}
}
d tagCryptographic hashes (BLAKE3/SHA256) prevent payload tampering. Clients MUST verify hashes post-download.
Pubkeys pseudonymize publishers. Torrent DHT participation exposes IP addressesβrecommend VPN/Tor for anonymity.
Publishers responsible for ensuring legal distribution rights. Use license field for transparency.
Rate limiting prevents spam. Enforce array size limits (100 chapters, 20 authors) and JSON size caps (10KB).
Use content_warning tag for sensitive material. Helps users make informed decisions.
Always display verification status in UI. Log failures for analysis. Consider multi-source verification.
| Use Case | NIP-94 | NIP-AA |
|---|---|---|
| Sharing a photo album | β Perfect | β Overkill |
| Publishing academic paper | β οΈ Works but limited | β Ideal |
| Distributing software updates | β Good fit | β Either works |
| Archiving book collection | β Possible | β Built for this |
| Sharing meme/screenshot | β Perfect | β Wrong tool |
BitTorrent has a more mature ecosystem with a proven 20+ year track record, wider client support, and better performance for large files. IPFS can be added via the mirrors field.
Simply publish a new event with the same pubkey and d tag but higher created_at timestamp. The new event replaces the old one per NIP-33.
Only if you have legal rights to distribute them. Specify licensing via the license field. Publishers are responsible for ensuring legal compliance.
10+ seeds across diverse locations provides 99.99% availability. Monitor via DHT queries and re-seed if counts drop below 5.
Run your own relay to bypass rate limits, or coordinate with relay operators for temporary increases. Reputation-based limits may be implemented in the future.
Yes, via future kind 30030 for zap-based seeding incentives. Specify payment details in owner tag or future funding_address field.
User reviews and ratings
Annotations and highlights
Curated collections
Seeding incentives
Thematic adjacency to NIP-23:
Natural progression from readable text to downloadable knowledge.
mirrors field.
This specification is inspired by the pioneering work of digital preservation projects that have fought to keep knowledge accessible:
50,000+ free ebooks since 1971
Digital library of humanity's knowledge
Scientific and educational materials
Open access to research papers
Special recognition to: