최근 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의 시작은 다음과 같은 사항들을 명시한 JSON String을 트랜잭션에 집어넣어 deploy함으로써 토큰이 발행됩니다.
“p” : 프로토콜 (ex. brc-20, arc-20 등). EVM상의 Inscription은 일반적으로 첫번째 발행된 inscription 토큰이 명명한 프로토콜 이름을 따릅니다.
“op” : 이벤트 타입 (deploy, mint, transfer). Deploy하는 경우는 deploy로 설정
“tick” : 토큰 이름. BRC-20은 4자가 최대이나, EVM의 경우 제약이 없습니다.
“max” : 최대 발행량. 최대 발행랑은 일반적으로 21,000,000으로 세팅합니다. 최대 민팅수량에 따라 이 숫자는 유연하게 바꿀 수 있습니다.
“lim” : 민팅 가능 수량. 다양하게 사용하나 숫자를 적게 잡으면 100% 민팅 완료되기까지 필요한 트랜잭션의 수가 많아집니다. 다만 너무 적게 잡으면 소수의 사람들만 민팅할 수 있게되어 커뮤니티가 생성되기 어렵습니다. 일반적으로 1000으로 세팅합니다.
저는 1000개씩 묶음으로 총 2100만개를 민팅하게 만들고 싶어서 아래와 같은 JSON String을 unieths 라는 Inscription툴을 활용해 배포했습니다.
{"p":"ast-20","op":"deploy","tick":"astr","max":"21000000000","lim":"1000"}
트랜잭션을 발생시키면 아래와 같이 Hex값으로 블록에 저장이 되는데, 이를 UTF-8으로 변환시키면 두번째 사진과 같이 제가 삽입한 Deploy 데이터가 올라가 있는 것을 볼 수 있습니다.
Tx hash : https://blockscout.com/astar/tx/0x10b58e5219c9c1e64bb2e159da847fe61260a41191020fe23706fe36733a2149
이제 디플로이를 했으니 $astr를 민팅해보겠습니다.
Mint는 다음과 같은 JSON String을 사용합니다.
“p” : deploy에 사용한 프로토콜 명과 동일
“op” : mint
“tick” : astr
“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
이제 $astr는 20999999000개가 남았습니다.
여기서 한가지 주의해야할 사항이 있습니다. 누구나 위의 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만개를 카운트 해 집계를 했습니다.
이제 민트된 $astr를 거래하기 위해서는 이 데이터값들을 이동하는 이벤트가 필요합니다.
이동하기 위해서는 transfer 이벤트를 통해 이동을 시킵니다.
“p” : mint와 동일
“op” : mint와 동일
“tick” : mint와 동일
“amt” : 전송하고 싶은 수량 입력 (brc-20의 경우 deploy의 lim보다 적어야함)
{"p":"asc-20","op":"transfer","tick":"aval","amt":"600000000”}
아발란체로 Transfer 트랜잭션을 대체합니다.
그런데 여기서 한가지 빠진게 있죠? 바로 받는 사람의 주소입니다. 누구에게 보내는지 어떻게 알 수 있고 처리되는 걸까요?
여기서 Indexer가 필요해집니다. Indexer는 누구에게 토큰 얼마가 있고, 이 토큰들이 어떻게 이동하고 있는지를 관리하는 장부 역할을 합니다. 인덱싱을 하는 방법은 여러가지가 있지만 brc-20의 경우 unisat에서 만든 libbrc20-indexer를 사용하며, EVM의 경우 self transaction을 발생시키는 deploy, mint와 다르게 transaction에서 to 값을 받는 사람의 주소로 설정한 트랜잭션을 발생시켜 전송과 거래를 처리합니다. 이를 통해 인덱서에 잔고가 변동하고 총액은 일정하게 유지됩니다.
Inscription OTC도 이러한 원리로 작동하죠.
이상으로 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://dune.com/hashed_official/inscriptions
Inscription관련해서 민팅 데이터를 빠르게 뽑아보고 싶다면 제가 만든 $AVAL 대시보드 포크떠서 사용 https://dune.com/wisekim_eth/dollaraval-inscription
Inscription 할때 어디서 해야할지는 중요하지 않으나 https://unieths.io/ 추천
NFA DYOR