DevelopersSeptember 14, 2026by
EmpoorioChain Core
EmpoorioChain Core

Minting at Scale: Batch and Lazy Minting with pallet-music-nft

A creator releasing a 100-track catalogue or a game issuing 10,000 items runs into the same wall on most chains: one transaction per token, one fee per transaction, and a state footprint that the chain charges for forever. EmpoorioChain's NFT pallets attack the cost from two directions — fewer transactions, and later ones — and the fees are measured rather than promised.

The pallets

NFTs on EmpoorioChain are native: pallet-uniques provides collections, pallet-emp-nft the general NFT model, and product pallets — pallet-music-nft, pallet-video-nft, pallet-dynamic-nft, pallet-sbt — add domain behaviour. Royalties are enforced by pallet-nft-royalties on transfer, not suggested as metadata. EidoOS and the Creator Studio build on these directly.

Batch minting

musicNft.mint_track_batch mints many tokens in a single extrinsic. The signature, the inclusion overhead and the per-transaction base fee are paid once. Measured on the testnet:

OperationExtrinsicFee (DMS)Per token
One trackmint_track0.0000750.000075
Batch of 10mint_track_batch0.0002800.000028
Batch of 100mint_track_batch0.0022000.000022

A hundred tokens cost about 29 individual mints. At the public-sale price of $0.65 per DMS, that is roughly a seventh of a cent for the whole batch.

const tracks = catalogue.map(t => ({ metadataCid: t.cid, price: t.priceInPlanck, royaltyBps: 500 }));
await api.tx.musicNft.mintTrackBatch(collectionId, tracks).signAndSend(artist);

The batch is bounded — the runtime's bounded-state rule caps how many items one call can carry — so very large catalogues are chunked by the client.

Lazy minting

musicNft.claim_lazy_track inverts who pays. The creator signs a commitment to the token's metadata off chain — no transaction, no fee. The token exists on chain only when a buyer claims it; the claim transaction mints it, charges the storage deposit, and transfers it in one step. The creator's cost to list a thousand tracks is zero; the buyer of each pays 0.000110 DMS at claim time.

This is the right shape for marketplaces where most listed items never sell: the chain's state holds only what someone actually wanted.

Where the bytes live

Neither pattern puts media on chain. Metadata and content are referenced by CID and stored through the storage market — pallet-blob-storage commits large payloads (1 MB for 0.000095 DMS) and pallet-storage-oracle verifies availability. The NFT is the ownership record and the royalty rule; the file is elsewhere and provably available. That separation is what keeps minting cheap without a compression scheme layered on top.

Royalties that hold

When a batch- or lazy-minted track is resold, pallet-nft-royalties enforces the collection's rule at the protocol level. A marketplace built on EmpoorioChain cannot skip the creator's cut, because the transfer itself applies it. This is the mechanism behind EidoOS's 70 % creator share and the Creator Studio's payout flows.

Caveats

Fees are a testnet snapshot under light load with two validators; they show the model's shape and will be re-measured under the mixed-load benchmark. Weight has not yet been benchmarked on the signed reference machine. And creators with a verified-humanity credential through KryptoOS can receive up to 50 % off these fees through pallet-creator-studio-fees — which is the ecosystem's answer to bot spam, not a promotion.

Fees from FEE_MODEL_AND_LOW_COST_STRATEGY.md (artifacts/fees/testnet/fee_snapshot.json); pallet mapping from EIP_COVERAGE.md.

Share this article