Beginner's Guide to Inscription (EVM)

Recently, BRC-20 is gaining insane traction and there is an Inscription exploding on various chains.

Inscription refers to the process of embedding information, often cryptographic signatures, within transactions or smart contracts.

Unlike ERC-20, where tokens are issued and distributed based on existing smart contracts, Inscription tokens are deployed, minted, and transferred by storing data values in transaction messages (input data) through self-transactions.

However, the concept of Inscription is very unfamiliar, and indeed confusing, and some may argue why we should choose this over ERC-20.

But personally, I think the beauty of Inscription is that it's fair to everyone, and this point is maximized when comes to meme coins.

The biggest risk of trading meme coins was the risk of teams manipulating liquidity, or dumping tokens by teams and third parties that were sold or distributed without your knowledge.

The irony is that on a decentralized blockchain, you're relying on trust in the team and the KOLs who recommended it, whereas with Inscription, anyone can participate in the minting, as long as they pay for gas, and anyone can sell at the same time.

Each chain has a different way of doing Inscription. EVM uses a UI similar to NFTs (actual transactions are based on input data), Solana uses NFTs to transact with minting, and Near wrap Inscriptions to fungible tokens to support AMM transactions.

As informations is fragmented, technical and unknown, today I’ll walk you through the A-Z of how inscription works on EVM.

Inscription starts with Deploy

Inscription is minted by deploying a JSON String into a transaction that specifies the following.

  1. "p" : Protocol name (ex. BRC-20, ARC-20, etc.). Inscription on EVM usually follows the protocol name named by the first inscription token issued.

  2. "op" : Event type (deploy, mint, transfer). In case of deployment, set to deploy

  3. "tick": Token name. BRC-20 has a maximum of 4 characters, but for EVM there is no limit.

  4. "max" : Maximum issuance. The maximum issuance is usually set to 21,000,000. This number can be flexibly changed depending on the maximum minting quantity.

  5. "lim" : Minting limit. This can be used in a variety of ways, but setting a low number will increase the number of transactions required to reach 100% minting. However, if you set it too low, only a few people will be able to mint, making it difficult to create a community. Usually set it to 1000.

I'm going to deploy a token called $astr on the Astar EVM network, which no one seems to have inscribed to yet.

I wanted to mint 21 million in batches of 1000, so I deployed the following JSON string using the Inscription tool unieths.

{"p":"ast-20","op":"deploy","tick":"astr","max":"21000000000","lim":"1000"}

When the transaction is created, it is stored in the block as a hex value as shown below, but when you convert it to UTF-8, you can see the Deploy data that I inserted as shown in the second photo.

Tx hash : https://blockscout.com/astar/tx/0x10b58e5219c9c1e64bb2e159da847fe61260a41191020fe23706fe36733a2149

Deploy HEX
Deploy HEX
Deploy UTF-8
Deploy UTF-8

Inscription Mint

Now $astr is deployed, let's mint $astr. Mint requires a following JSON String.

  1. "p" : same as the protocol name you used to deploy

  2. "op" : mint

  3. "tick" : astr

  4. "amt" : 1000

The key thing to note here is that you're using “amt”, not “lim”, to specify the quantity to mint, and the quantity must be the same as the “lim“ value. If you enter a different number, the hex value will be changed and will not be recognized by Indexer, as most indexers indexing the hex value.

In the same tool, I created a transaction with the following input data.

{"p":"ast-20","op":"mint","tick":"astr","amt":"1000"}

Tx hash : https://blockscout.com/astar/tx/0x10b58e5219c9c1e64bb2e159da847fe61260a41191020fe23706fe36733a2149

Mint Hex
Mint Hex
Mint UTF-8
Mint UTF-8

There are now 20,999,999,000 $astr left.

Inscription is all about starting point and social consensus

There is one caveat here. Anyone can transact with the above deploy and mint data strings, and mint can be left in an infinite number of transactions.

This means that you can do the same $astr deployment and mint multiple times over max supply and lim. Which is why which deploy transaction was the fastest is so so important... Legitimacy matters lol

In Web3, there’s first mover adventage, so this is taken more seriously than you might think. There have been cases where we've been minting with gusto, only to have a huge mess when an older transaction is found.

In the case of $AVAL minted on Avalanche, there were multiple deploy transactions found, and the starting point transaction had the wrong JSON string, so the number of $AVALs minted was counted differently. But social concensus was built among people who minted.

Mint has fewer problems than deploy. This is because if we have a clear starting point, we can count max/lim mint transactions on FCFS and get a clear picture of where the valid inscription starts and ends.

For the $AVAL attached below, I counted 21 million from block_number 37942008.

Transfer & Trading

Now, in order to trade the minted $astr, we need an event to move these data values.

To move them, we use the transfer event.

  1. "p" : Same as mint

  2. "op" : same as mint

  3. "tick" : Same as mint

  4. "amt" : enter the quantity you want to transfer (for brc-20, it should be less than the lim in deploy)

{"p":"asc-20","op":"transfer","tick":"aval","amt":"600000000”}

Replaced to $AVAL transfer

But there's one thing missing, right? The recipient's address. How do we know who we're sending to and how does it get processed?

This is where Indexer comes in. The indexer acts as a ledger that keeps track of who has how many tokens and how they are moving around. There are many ways to do indexing, but for brc-20 we use libbrc20-indexer created by unisat, for EVM we use deploy, which creates a self-transaction, and unlike mint, we handle transfers and transactions by creating a transaction with the to value set to the recipient's address in the transaction. This allows the balance in the indexer to fluctuate while the total amount remains constant.

This is how Inscription OTC works as well.

That's it for how Inscription works.

Inscription trivia

I'd like to end this post by sharing my experiences and tips on Inscription so far.

  • When Inscirption is deployed on new chain, there’s no indexer or marketplace, so trading is mainly held on OTC, and if no one is makes indexer or marketplace, it's a waste of gas. Check if there’s any project building it

  • EVM Inscription price is formed similar to NFT FP

  • There is a lot of noise around Deploy and Mint data, so it's important to learn quickly and make your own judgments.

  • The Mint JSON String format does not change from the form below, so it is good to memorize it.
    {"p":"ast-20","op":"mint","tick":"astr","amt":"1000"}

  • Each chain has its own inscription narrative, with most of the market capitalization coming from the first to third inscriptions. Especially you need to catch the first one very fast.

  • Chinese friends are serious about Inscription and driving the narrative.

  • If you want to know which chains generating Inscription txs, check out Hashed ansubin.eth dashboard

  • If you want to quickly pull minting data on inscription, fork my $AVAL dashboard
Subscribe to wisekim.eth
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.