Skip to content

Contract Reference

The creator’s intent — what the release is, who owns it, what it contains.

FieldTypeDescription
schemaVersion"1.0.0"Schema version
titlestringRelease title
artiststringCreator name
formatstringRelease format (single, album, etc.)
issuerAddressstringXRPL issuer address
operatorAddressstringAuthorized minter address
editionsnumberNumber of NFT editions to mint
transferFeenumberRoyalty fee (0–50000, basis points)
benefitobjectCollector benefit (kind + contentPointer)
pointersobjectContent pointers (metadataUri, licenseUri, coverCid, mediaCid)

Identity: manifestId = SHA-256 of {title, artist, format, issuerAddress, operatorAddress} sorted. Revision: revisionHash = SHA-256 of full manifest (sortKeysDeep).

Execution truth — what was actually minted on the ledger.

FieldTypeDescription
manifestIdstringLinks to manifest
manifestRevisionHashstringSpecific revision minted
xrpl.nftTokenIdsstring[]Token IDs on ledger
xrpl.txHashesstring[]Transaction hashes
xrpl.networkstringNetwork used
receiptHashstringTamper-evident stamp

Who can approve payouts and under what rules.

FieldTypeDescription
manifestIdstringRelease this policy governs
networkstringNetwork the treasury lives on
treasuryAddressstringTreasury XRPL account
signerPolicy.signersGovernanceSigner[]Authorized signers
signerPolicy.thresholdnumberApprovals needed
payoutPolicy.allowedAssetsstring[]Permitted payout assets
payoutPolicy.allowPartialPayoutsbooleanPartial execution (default: false)
policyHashstringTamper-evident stamp

Validation rules:

  • Threshold must not exceed signer count
  • Signer addresses must be unique
  • At least one signer required

A proposed revenue distribution.

FieldTypeDescription
manifestIdstringRelease identity
policyHashstringLinks to governance policy
proposalIdstringUnique proposal identifier
outputsPayoutOutput[]Recipient addresses, amounts, roles
proposalHashstringTamper-evident stamp

Cross-contract checks (vs policy):

  • manifestId, network, treasury must match
  • policyHash must match current policy
  • All output assets must be in allowedAssets
  • Output count must not exceed maxOutputsPerProposal

Signer approvals and the resulting decision.

FieldTypeDescription
proposalHashstringLinks to proposal
policyHashstringLinks to policy
approvalsGovernanceApproval[]Per-signer votes
decision.outcome"approved" | "rejected"Result
decision.thresholdMetbooleanWhether threshold was reached
decisionHashstringTamper-evident stamp

Cross-contract checks (vs proposal + policy):

  • proposalHash must match
  • All signers must be in policy signer list
  • approvedCount must match actual approval count
  • thresholdMet must accurately reflect threshold vs approvals

Ledger-backed proof of payout execution.

FieldTypeDescription
decisionHashstringLinks to decision
proposalHashstringLinks to proposal
policyHashstringLinks to policy
xrpl.txHashesstring[]Payment transaction hashes
executedOutputsExecutedPayoutOutput[]What was actually paid
executionHashstringTamper-evident stamp

Cross-contract checks (vs decision + proposal + policy):

  • Decision must be “approved”
  • Hash chain: decisionHash, proposalHash, policyHash all match
  • Identity chain: manifestId, network, treasuryAddress all match
  • Output reconciliation: address, amount, asset must match proposal