This is the Orescriptions specification, a repository that contains core orescriptions protocol.
Orescriptions has been deployed on IronFish mainnet and IronFish testnet.
Introduction
Orescriptions, inspired by Bitcoin Inscriptions, is a way creating and sharing NFTs on Iron Fish blockchain. Orescriptions protocol uses Iron Fish native multi-assets mint transaction to mint NFT, then this NFT can be transfered privately. Orescriptions protocol declares some constraints as follows, only mint transaction meets the protocol will be tracked on the dashboard, and sendable/tradable in the future.
Native Multi-Asset Mint
Iron Fish native mint request contains name, value, metadata of the asset to be minted as follows.
interface MintAssetRequest {
account?: string
fee?: string
value: string
assetId?: string
expiration?: number
expirationDelta?: number
confirmations?: number
metadata?: string
name?: string
transferOwnershipTo?: string
}
Orescriptions NFT Mint
Orescriptions protocol declares constraints as follows to distinguish NFT with native multi-assets.
value = 1
to confirm this NFT is uniquename = orescriptions
to be tracked as orescriptionsmetadata
is string form ofOrescriptionsDeploy | OrescriptionsMint
objectassetId
is empty to confirm this NFT is new minted instead of inflation
type OrescriptionsDeploy = {
tick?: string; // collection name used to classify to its collection, 4 characters only
op: 'deploy';
max: number; // the total mintable amount for this collection
};
type OrescriptionsMint = {
tick?: string; // collection name used to classify to its collection
op: 'mint';
data: string; // data cid on ipfs
};
Orescriptions NFT Transfer
Same as Iron Fish native multi-assets, orescriptions NFT can be sent to others privately via native transaction. To transfer the NFT,
transaction assetId = NFT assetId
transaction amount = 1
Orescriptions NFT Burn
Same as Iron Fish native multi-assets, orescriptions NFT can be burned via native transaction. To burn the NFT,
transaction assetId = NFT assetId
transaction amount = 1
Example
- deploy
const oregenesis: OrescriptionsDeploy = {
tick: 'Ores',
op: 'deploy',
max: 1000,
};
const nativeRequest: MintAssetRequest = {
account: 'default',
fee: '1',
value: '1',
metadata: JSON.stringify(oregenesis),
name: 'orescriptions',
};
- mint
const oregenesis: OrescriptionsMint = {
tick: 'Ores',
op: 'mint',
data: '', // not real
};
const nativeRequest: MintAssetRequest = {
account: 'default',
fee: '1',
value: '1',
metadata: JSON.stringify(oregenesis),
name: 'orescriptions',
};