Dot Ordinals is a Dapp designed to create inscriptions tokens DRC-20 or NFTs on polkadot based blockchains.

This is just a fun experimental standard demonstrating that you can create off-chain balance states with inscriptions. It by no means should be considered THE standard for fungibility on polkadot with ordinals, as I believe there are almost certainly better design choices and optimization improvements to be made. Consequently, this is an extremely dynamic experiment, and I strongly discourage any financial decisions to be made on the basis of it's design. I do, however, encourage the polkadot community to tinker with standard designs and optimizations until a general consensus on best practices is met (or to decide that this is a bad idea altogether!).


Experiment to see if ordinal theory can facilitate fungibility on polkadot.

  • Create a drc-20 with the deploy function

  • Mint an amount of drc-20's with the mint function

  • Transfer an amount of drc-20's with the transfer function.

drc-20 balance state can be found by aggregating all of these function's activity together.

  • Deployments initialize the brc-20. Do not affect state

  • Mints provide a balance to only the first owner of the mint function inscription

  • Transfers deduct from the senders balance and add to the receivers balance, only upon the first transfer of the transfer function.

    • Inscribe transfer function to senders address

    • Sender transfer's transfer function

How to

Getting a balance

You can either deploy your own or mint from existing deployments

  1. (Optional: Only do if you want to create your own drc-20. If not go to step 2) Inscribe the deploy function to you ordinal compatible wallet with the desired drc-20 parameters set.

  2. Inscribe the mint function to your ordinal compatible wallet. Make sure the ticker matches either a) the drc-20 you deployed in step 1, or b) any brc-20 that has yet to reach its fully diluted supply. Also if the drc-20 has a mint limit, make sure not to surpass this.

Transferring a balance

  1. Inscribe the transfer function to your ordinal compatible wallet. Make sure the transfer function inscription information is valid before inscribing .

  2. Once received, (and if valid) send the inscription to the desired destination to transfer the balance.

What is valid?

A valid transfer function is required to transfer a balance. Validity can be determined by the following:

  • Valid transfer functions are ones where the amount stated in the inscription does not exceed Available balance when inscribed.

  • Available balance defined as: [Overall balance] - [valid/active transfer function inscriptions in wallet (Transferable balance)]. If there are no valid/active transfer functions held by an address Available balance and Overall balance are equivalent.

  • Example: A wallet holds an Overall balance of 1000 "drc", and . The holder then inscribes a transfer function of 700 "drc". Once the inscription is confirmed, the following is true: Overall balance = 1000, Available balance = 300, Transferable balance = 700. If in the next block, the user tried to inscribe a transfer function of 500 "drc", this would not be valid as the maximum amount that can be inscribed is 300 (Available balance).

  • If multiple transfer functions are inscribed in the same block, validity is determined by the order the were confirmed in the block.


  • If a user changes their mind and no longer wishes to transfer their transfer function, and wants to restore their Available balance to the Overall balance (invalidate Transferable balance), the user must simply transfer the transfer function inscription to themselves.

Last updated