Skip to content

Open source Bitcoin-powered non-fungible token standard and marketplace | By THE BITCOIN CORPORATION LTD

License

Notifications You must be signed in to change notification settings

bitcoin-corp/nft

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

NFT Container File Standard (.nft)

Overview

The .nft file type is a fundamental container format in the Bitcoin OS ecosystem. It represents non-fungible containers that wrap unique digital content (music, documents, videos, data) and enable them to be monetized through share issuance and revenue generation.

Core Concept

In Bitcoin OS, there are two primary container types:

  • .nft files - Non-fungible containers for unique content
  • .ft files - Fungible token containers for value distribution

The .nft specification defines how content becomes a monetizable asset that can generate revenue streams distributed to .ft token holders.

Key Features

1. Universal Content Wrapper

  • Wraps ANY digital content (music, video, text, data, images, etc.)
  • Maintains original file integrity while adding monetization layer
  • Supports single files or bundled collections

2. Revenue Generation

  • Issue shares against the .nft asset
  • Generate revenue through:
    • Direct sales
    • Rental/licensing fees
    • Streaming royalties
    • Access subscriptions
    • Usage fees

3. Revenue Distribution

  • Automatically routes revenue to associated .ft token holders
  • Supports multiple revenue streams per .nft
  • Transparent, on-chain revenue tracking

4. Ownership & Trading

  • Clear on-chain ownership record
  • Transferable via BSV transactions
  • Fractional ownership through share issuance
  • Marketplace compatibility

Technical Specification

File Structure

.nft Container
├── Header (256 bytes)
│   ├── Magic Number: "NFT0" (4 bytes)
│   ├── Version: uint32 (4 bytes)
│   ├── Content Hash: SHA256 (32 bytes)
│   ├── Content Size: uint64 (8 bytes)
│   ├── Content Type: MIME (32 bytes)
│   ├── Encryption Method: uint16 (2 bytes)
│   ├── Metadata Size: uint32 (4 bytes)
│   └── Reserved (170 bytes)
├── Metadata (Variable)
│   ├── Title: string
│   ├── Description: string
│   ├── Creator: BSV Address
│   ├── Creation Date: timestamp
│   ├── Share Structure: JSON
│   ├── Revenue Routes: Array<.ft addresses>
│   ├── Rights: JSON
│   └── Custom Fields: JSON
├── Content (Variable)
│   └── Encrypted original file(s)
└── Signature (64 bytes)
    └── Creator's BSV signature

Metadata Schema

{
  "version": "1.0.0",
  "title": "string",
  "description": "string",
  "creator": "BSV address",
  "createdAt": "ISO 8601 timestamp",
  "shares": {
    "total": 1000000,
    "issued": 100000,
    "price": "satoshis per share"
  },
  "revenue": {
    "routes": [
      {
        "ftFile": "token.ft",
        "percentage": 80,
        "address": "BSV address"
      }
    ],
    "minimumPayout": 1000
  },
  "rights": {
    "license": "string",
    "restrictions": [],
    "royaltyPercentage": 10
  },
  "content": {
    "type": "MIME type",
    "size": "bytes",
    "hash": "SHA256",
    "encrypted": true
  }
}

Implementation

Creating an .nft File

import { NFTContainer } from '@bitcoin-os/nft';

// Wrap content in .nft container
const nft = new NFTContainer({
  content: fileBuffer,
  metadata: {
    title: "My Digital Asset",
    description: "A valuable piece of content",
    creator: "1BitcoinAddress..."
  }
});

// Issue shares
await nft.issueShares({
  total: 1000000,
  price: 100 // satoshis per share
});

// Set revenue distribution
await nft.setRevenueRoutes([
  {
    ftFile: "creator-token.ft",
    percentage: 70
  },
  {
    ftFile: "investor-token.ft",
    percentage: 30
  }
]);

// Save to file
await nft.save("my-asset.nft");

Reading an .nft File

import { NFTContainer } from '@bitcoin-os/nft';

// Load .nft file
const nft = await NFTContainer.load("my-asset.nft");

// Access metadata
console.log(nft.metadata.title);
console.log(nft.metadata.shares);

// Decrypt content (requires ownership)
const content = await nft.decrypt(privateKey);

Use Cases

Bitcoin Music

  • Songs wrapped as .nft files
  • Streaming royalties distributed to .ft holders
  • Album bundles as multi-file .nft containers

Bitcoin Writer

  • Documents as .nft assets
  • Subscription revenue to author .ft tokens
  • Collaborative works with multiple revenue recipients

Bitcoin Drive

  • Any stored file becomes an .nft
  • Storage fees generate revenue for .ft holders
  • Marketplace for buying/selling file access

Bitcoin Email

  • Important messages archived as .nft
  • Newsletters monetized through .nft wrapper
  • Verified communications with signature proof

Integration with .ft Files

The .nft standard is designed to work seamlessly with .ft (fungible token) files:

  1. Revenue Flow: .nft → generates revenue → distributed to .ft holders
  2. Token Agnostic: .ft files can contain any token standard (BSV20, BSV21, STAS, etc.)
  3. Automatic Distribution: Smart contracts handle revenue routing
  4. Multiple Recipients: One .nft can distribute to multiple .ft files

Benefits

  1. Future-Proof: Token standard agnostic design
  2. Composable: Works with any Bitcoin OS application
  3. Transparent: On-chain revenue tracking
  4. Flexible: Supports any content type
  5. Secure: Encrypted content with blockchain verification

Development Status

  • Core specification (In Progress)
  • Reference implementation
  • Parser library
  • Smart contracts
  • SDK development
  • Application integration
  • Documentation
  • Security audit

Contributing

This is an open-source specification. We welcome contributions from the community. See CONTRIBUTING.md for guidelines.

Resources

License

Open BSV License - See LICENSE for details

This software is licensed exclusively for use on the Bitcoin SV (BSV) blockchain.

Contact

About

Open source Bitcoin-powered non-fungible token standard and marketplace | By THE BITCOIN CORPORATION LTD

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published