Ord Schema Type

The "ord" schema type

The base schema type for ordinals metadata is ord. This base type can be extended with the subType property so that wallets and markets will understand how to interpret and display metadata.

While subtypes can be created at will, a list of common subTypes is maintained at https://bitcoinschema.org.

Required Fields:

app - The name of the app that originally produced the ordinal

type - This should always be "ord". This helps indexers find the metadata based on type.

name - Name description of the ordinal.

1Sat Ordinals - Metadata Proposal

The following outlines a standard set of metadata properties that should be utilized by creators and implemented by developers when adding metadata to 1Sat Ordinals. Adhering to these specifications when creating and displaying content across applications will make for a better and more cohesive cross-platform user experience.

Top-Level Metadata

Added to the inscription output using MAP protocol in OP_RETURN.

Please note that the MAP protocol expects all data types for the value in the key value pair to be of type string.

Description
Required
Type
Example

app The name of the app that originally produced the ordinal

Y

string

handcash

type The type of MAP data. For this spec we use ord

Y

string

ord

name Name of the ordinal

Y

string

Joe Racoon

subType The subType

N

string

collectionItem, collection, website

subTypeData A stringified version of the data required by the specific subType specified. See subType documentation.

N SubType: Y

stringified JSON

{ file: ..., fileType: ... }

royalties Where creator royalties should be sent

N

stringified JSON array of royalty

see definition below

previewUrl

N

string URL

http://so.me/prev.png b://<txid><idx> c://<contentHash>

... You can add additional fields with MAP as needed.

N

any

Royalties

Royalties should be applied when a sale of an item occurs. The definition of royalty within the royalties array:

Name
Description
Required
Type

type

Currently supports paymail and any valid script/address/paymail

Y

PaymentType

destination

The destination of the payment (the receivers address/paymail)

Y

string

percentage

The royalty percentage (3% would be 0.03)

Y

string

Payment Type

The type definition for PaymentType:

type PaymentType = 'paymail' | 'address' | 'script';

Transaction Structure

This pseudo-script creates an ordinal with metadata called "The Awesome Ordinal" with only the minimum required fields, and adds a signature via AIP so the issuer can be verified.

Output 1:

1SAT_P2PKH <INSCRIPTION> OP_RETURN MAP SET app <mint_platform> type ord name "The Awesome Ordinal" | AIP <address> "BITCOIN_ECDSA" <signature> [-1]

Example ordtype

{
    "app": "take_it",
    "type": "ord",
    "name": "Awesome ordinal",
    "royalties": [
        {"type": "paymail", "destination": "[email protected]", "percentage": "0.03"}, 
        {"type": "address", "destination": "1MvYhFajARJ82sbgxuAXziq1FmgSY1XQwD", "percentage": "0.025"}
    ]
}

Last updated