# Beginner's Guide to Inscription (EVM) - KR

By [wise](https://paragraph.com/@wise) · 2023-12-16

---

최근 BRC-20이 핫한데, 이에 맞춰 다양한 체인들에서 Inscription 붐이 일어나고 있습니다.

Inscription은 트랜잭션 또는 스마트 컨트랙트 내에 정보를 삽입하는 프로세스를 의미합니다.

기존 스마트 컨트랙 기반으로 토큰의 발행과 유통이 되었던 ERC-20과 다르게 Inscription 토큰들은 트랜잭션 메시지(imput data)에 데이터 값을 self transaction을 통해 저장하는 형태로 토큰의 deploy, mint, transfer가 이루어집니다.

그러나 Inscription이라는 개념은 매우 생소하고, 실제로 혼란스럽습니다. 혹자는 ERC-20을 두고 왜 이런 방식을 선택하는지 이야기하기도 하죠.

다만 개인적으로 Inscription의 매력은 **누구에게나 공평하다는 점**이라고 생각합니다. 이런 특징은 밈코인에서 장점이 도드라집니다.

밈 코인의 가장 큰 리스크는 팀이 유동성을 마음대로 조작하거나, 나도 모르는 사이에 판매되었거나 분배되었던 팀과 제 3자들의 토큰 덤핑이라는 리스크를 안고 트레이딩에 참여해야했습니다.

탈중앙화된 블록체인 상에서 팀과 이걸 추천한 KOL들에 대한 신뢰에 의존하게 되는 아이러니한 현상이 발생하는거죠. 반면 Inscription은 누구나 가스비만 내면 민팅에 참여할 수 있으며, 누구나 똑같은 시점에 판매할 수 있습니다.

각 체인마다 Inscription을 하는 방법은 다 다릅니다. EVM은 NFT와 비슷한 UI로 (실제 트랜잭션은 input data 기준으로 함) 거래를하며, 솔라나의 경우는 NFT로 민팅과 거래를 하고, 니어의 경우는 토큰으로 랩핑을 해 AMM 방식으로 거래를 지원합니다.

많은 정보들이 파편화 되어있고, 기술적이며, 잘 알려져있지 않기 때문에, 오늘은 EVM 상에서 Inscription이 어떻게 이루어지는지 A-Z를 알아보도록 하겠습니다.

그리고 이왕 하는거 저는 아직 아무도 Inscription을 하지 않은 것 같은 Astar EVM 네트워크에 $astr라는 Inscription 토큰을 배포해보도록 하겠습니다.

### Inscription의 시작 Deploy

Inscription의 시작은 다음과 같은 사항들을 명시한 JSON String을 트랜잭션에 집어넣어 deploy함으로써 토큰이 발행됩니다.

1.  **“p”** : 프로토콜 (ex. brc-20, arc-20 등). EVM상의 Inscription은 일반적으로 첫번째 발행된 inscription 토큰이 명명한 프로토콜 이름을 따릅니다.
    
2.  **“op”** : 이벤트 타입 (deploy, mint, transfer). Deploy하는 경우는 deploy로 설정
    
3.  **“tick”** : 토큰 이름. BRC-20은 4자가 최대이나, EVM의 경우 제약이 없습니다.
    
4.  **“max”** : 최대 발행량. 최대 발행랑은 일반적으로 21,000,000으로 세팅합니다. 최대 민팅수량에 따라 이 숫자는 유연하게 바꿀 수 있습니다.
    
5.  **“lim”** : 민팅 가능 수량. 다양하게 사용하나 숫자를 적게 잡으면 100% 민팅 완료되기까지 필요한 트랜잭션의 수가 많아집니다. 다만 너무 적게 잡으면 소수의 사람들만 민팅할 수 있게되어 커뮤니티가 생성되기 어렵습니다. 일반적으로 1000으로 세팅합니다.
    

저는 1000개씩 묶음으로 총 2100만개를 민팅하게 만들고 싶어서 아래와 같은 JSON String을 [unieths](https://unieths.io/) 라는 Inscription툴을 활용해 배포했습니다.

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

트랜잭션을 발생시키면 아래와 같이 Hex값으로 블록에 저장이 되는데, 이를 UTF-8으로 변환시키면 두번째 사진과 같이 제가 삽입한 Deploy 데이터가 올라가 있는 것을 볼 수 있습니다.

![Deploy HEX](https://storage.googleapis.com/papyrus_images/d601222236c664862925cf0387463fa4e98fcc2988a83feffa690c2fc0519626.png)

Deploy HEX

![Deploy UTF-8](https://storage.googleapis.com/papyrus_images/e89f1d62108a5be208afd8a255d11dd104070aa8f5156993bbef184422552589.png)

Deploy UTF-8

Tx hash : [https://blockscout.com/astar/tx/0x10b58e5219c9c1e64bb2e159da847fe61260a41191020fe23706fe36733a2149](https://blockscout.com/astar/tx/0x10b58e5219c9c1e64bb2e159da847fe61260a41191020fe23706fe36733a2149)

### Inscription Mint

이제 디플로이를 했으니 $astr를 민팅해보겠습니다.

Mint는 다음과 같은 JSON String을 사용합니다.

1.  **“p”** : deploy에 사용한 프로토콜 명과 동일
    
2.  **“op”** : mint
    
3.  **“tick”** : astr
    
4.  **“amt”** : 1000
    
    이때 주의해야할 점은 lim이 아닌 amt를 사용해 민팅할 수량을 지정한다는 것 그리고 수량은 lim값과 동일하게 지정해야한다는 것 입니다. 대부분 mint에 대한 인덱싱을 hex값으로 하기 때문에 다른 숫자를 입력하는 경우 Hex값이 달라져 EVM상에서는 인식하지 못합니다.
    

똑같은 툴에서 아래와 같은 input 데이터를 집어넣어 트랜잭션을 발생시켰습니다.

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

Tx hash : [https://blockscout.com/astar/tx/0x10b58e5219c9c1e64bb2e159da847fe61260a41191020fe23706fe36733a2149](https://blockscout.com/astar/tx/0x10b58e5219c9c1e64bb2e159da847fe61260a41191020fe23706fe36733a2149)

![Mint Hex](https://storage.googleapis.com/papyrus_images/d601222236c664862925cf0387463fa4e98fcc2988a83feffa690c2fc0519626.png)

Mint Hex

![Mint UTF-8](https://storage.googleapis.com/papyrus_images/e89f1d62108a5be208afd8a255d11dd104070aa8f5156993bbef184422552589.png)

Mint UTF-8

이제 $astr는 20999999000개가 남았습니다.

### Inscription에서 가장 중요한건 시작점과 사회적 합의

여기서 한가지 주의해야할 사항이 있습니다. 누구나 위의 deploy, mint 데이터 스트링을 가지고 트랜잭션을 발생시킬 수 있습니다. mint도 무한히 트랜잭션에 남길 수 있죠.

즉 똑같은 astr deploy와 mint를 여러번 할 수 있다는 점 이죠. 그렇기 때문에 보통 **deploy는 어떤 deploy 트랜잭션이 제일 빨랐냐가 매우 중요합니다.** 정통성을 따지는거라고 할까요 ㅎㅎ

Web3에서는 제일 첫번째에 대한 프리미엄이 있는 만큼 이건 생각보다 중요하게 받아들여집니다. 신나게 민팅을 하고 있었는데, 더 오래된 트랜잭션이 발견된 경우에 엄청난 혼란이 생기는 케이스도 있었습니다.

아발란체에서 민팅한 $AVAL의 경우 deploy 트랜잭션이 여러개 발견되었고, 시작점으로 삼았던 트랜잭션이 잘못된 JSON String을 가지고 있어서 민팅한 $AVAL의 개수가 다르게 집계되었던 해프닝도 있었습니다. 그러나 민팅한 사람들 사이에서 사회적 합의가 일어나면서 집계 포인트가 잡혔었죠.

Mint의 경우는 deploy에 비하면 문제가 적습니다. 시작점이 확실하면 FCFS로 max/lim 만큼의 mint 트랜잭션을 카운트하면 어디부터 어디까지가 유효한 Inscription인지가 확실하게 나오기 때문입니다.

아래 첨부한 $AVAL의 경우 block number 37942008 이후부터 2100만개를 카운트 해 집계를 했습니다.

[https://dune.com/wisekim\_eth/dollaraval-inscription](https://dune.com/wisekim_eth/dollaraval-inscription)

### Transfer & Trading

이제 민트된 $astr를 거래하기 위해서는 이 데이터값들을 이동하는 이벤트가 필요합니다.

이동하기 위해서는 transfer 이벤트를 통해 이동을 시킵니다.

1.  **“p”** : mint와 동일
    
2.  **“op”** : mint와 동일
    
3.  **“tick”** : mint와 동일
    
4.  **“amt”** : 전송하고 싶은 수량 입력 (brc-20의 경우 deploy의 lim보다 적어야함)
    

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

![](https://storage.googleapis.com/papyrus_images/38ac3957458a3db45a6dff4a02bec0112d27ce1fc2deb3a00d1623a4666539f6.png)

> **아발란체로 Transfer 트랜잭션을 대체합니다.**

그런데 여기서 한가지 빠진게 있죠? 바로 받는 사람의 주소입니다. 누구에게 보내는지 어떻게 알 수 있고 처리되는 걸까요?

여기서 Indexer가 필요해집니다. Indexer는 누구에게 토큰 얼마가 있고, 이 토큰들이 어떻게 이동하고 있는지를 관리하는 장부 역할을 합니다. 인덱싱을 하는 방법은 여러가지가 있지만 brc-20의 경우 unisat에서 만든 [**libbrc20-indexer**](https://github.com/unisat-wallet/libbrc20-indexer)**를 사용하며**, **EVM의 경우 self transaction을 발생시키는 deploy, mint와 다르게 transaction에서 to 값을 받는 사람의 주소로 설정한 트랜잭션을 발생시켜 전송과 거래를 처리합니다. 이를 통해 인덱서에 잔고가 변동하고 총액은 일정하게 유지됩니다.**

Inscription OTC도 이러한 원리로 작동하죠.

이상으로 Inscription의 작동 원리를 알아보았습니다.

### Inscription 관련 잡설

지금까지 Inscription을 하면서 느낀점과 팁들을 공유하며 글을 마무리 하겠습니다.

*   Inscription이 처음 이루어지는 체인 상에서는 Indexer, Marketplace가 없어 OTC위주로 거래가 일어나며, 만드는 사람이 없으면 가스비 날리는 꼴이 됨. 만드는 프로젝트가 있는지 필수적으로 확인
    
*   EVM Inscription들은 가격의 형성이 NFT FP와 비슷한 형태로 이루어짐
    
*   Deploy, Mint 데이터 관련해서 잡음이 매우 많이 발생해 빠른 정보 습득 그리고 판단이 중요함
    
*   Mint JSON String 포맷은 아래 형태에서 바뀌지 않으니 외워두면 좋음
    
    {"p":"ast-20","op":"mint","tick":"astr","amt":"1000"}
    
*   각 체인별로 돌아가며 Inscription 붐이 일어나고 있으며, 대부분 1~3 번째 인스크립션까지가 시총 형성이 잘됨. 특히 첫번째로 deploy되는건 빠르게 캐치해봐야함
    
*   중국 친구들이 Inscription에 진심이며, 네러티브를 주도함
    
*   어떤 체인에 Inscription이 많이 이루어지는지를 알고 싶다면 Hashed [**ansubin.eth**](https://twitter.com/subinium) 대시보드 참고 [https://dune.com/hashed\_official/inscriptions](https://dune.com/hashed_official/inscriptions)
    
*   Inscription관련해서 민팅 데이터를 빠르게 뽑아보고 싶다면 제가 만든 $AVAL 대시보드 포크떠서 사용 [https://dune.com/wisekim\_eth/dollaraval-inscription](https://dune.com/wisekim_eth/dollaraval-inscription)
    
*   Inscription 할때 어디서 해야할지는 중요하지 않으나 [https://unieths.io/](https://unieths.io/) 추천
    
*   **NFA DYOR**

---

*Originally published on [wise](https://paragraph.com/@wise/beginner-s-guide-to-inscription-evm-kr)*
