위 내용은 너무나도 잘못된 내용이 많아서.. 점점 더 정리하고 공부하면서 내용을 채워놓을 계획입니다. 참고만 해주세요.
Ordinals
Oridianls는 "집합에서 항목의 위치를 나타내기 위해 수학에서 사용되는 서수"라는 단어에서 유래했습니다.
비트코인은 흔히 아는 BTC 말고도 여러 단위(uBTC)가 존재하는데요.
제일 작은 단위인 사토시(satoshi)는 0.00000001 BTC 입니다. 즉, 1개의 BTC는 총 1억개의 사토시로 구성되어 있다고 볼 수 있습니다.
그리고 이러한 사토시는 채굴 및 전송 순서에 따라 번호가 매겨집니다.
이때 사토시에 텍스트나 이미지 등을 같이 사용하여 NFT로 만듦으로써 기존 NFT와 차별점을 두려는 움직임이 있었습니다.
텍스트와 이미지 등을 작성하여 Tx에 담는 행위를 인스크립션(Inscription)이라고 부르고, 사토시에 인스크립션 하는 일련의 과정을 Ordinals Protocol이라고 부릅니다.
BRC-20
초기의 비트코인은 Block 내에 1MB의 데이터만을 저장할 수 있었습니다. 그러나 2017년 SegWit 업데이트가 되면서, 4MB까지의 데이터를 저장할 수 있게 변했습니다.
이를 통하여 더 많은 양의 데이터를 담을 수 있게 되어, 더 많은 일을 수행할 수 있게 된 것 입니다.
그리고 21년 말 탭루트(Taproot) 업그레이드가 되면서, 인스크립션을 더욱 더 쉽게 할 수 있게 되었습니다.
탭루트의 주요 변경점으로 슈노르(Schnorr) 서명의 도입, 탭스크립트 도입 등이 있었는데요.
기존의 비트코인은 ECDSA를 사용하여 서명을 검증하였습니다. 하지만 이러한 방식은 다중 서명이 필요하다는 단점이 있었습니다.
이 단점을 보완하기 위해 슈노르 서명을 통해 하나의 서명으로 여러 개의 공개키를 검증할 수 있도록 했습니다.
새로운 슈노르 서명이 도입된 만큼 새로운 스크립트가 필요해졌는데요. 이때 사용된 것이 바로 탭스크립트 입니다.
탭스크립트는 기존 비트코인 스크립트에는 없었던 슈노르 서명에 대응되는 명령어를 포함하고 있는데요.
이때 P2TR(Pay-to-Taproot)라는 새로운 표준 스크립트가 사용되고 있습니다.
그리고 이번 주제인 BRC-20는 탭스크립트를 통한 인스크립션으로 ERC-20와 같이 토큰을 구성했다고 볼 수 있습니다.
그렇다면, ERC-20을 쓰면 되는데, 왜 BRC-20을 쓸까요?
사유는 여러 개가 있을 수 있지만, BTC의 사용처를 찾는 과정이라고 저는 생각하고 있습니다.
BRC-20 배포
- max : 최대 발행량
- limit : 한 번에 발행할 수 있는 토큰량
{
"p": "brc-20",
"op": "deploy",
"tick": "ordi",
"max": "21000000",
"lim": "1000"
}
즉, 위의 코드를 아래와 같이 해석할 수 있습니다.
- ordi 토큰은 2천 1백만개를 발행할 수 있으며, 한 번에 1,000개의 토큰을 발행할 수 있음
BRC-20 채굴
- amt : 채굴하는 토큰 량
※ amt는 lim을 넘을 수 없음
※ 발행량 토큰이 Max를 넘은 경우, Max 이전까지의 인스크립션만 유효하다고 판단함
※ 동일한 Block 내 다수의 인스크립션이 있을 경우, 순서가 빠른 Tx를 유효하다고 판단함
{
"p": "brc-20",
"op": "mint",
"tick": "ordi",
"amt": "1000"
}
BRC-20은 다른 토큰과는 달리 mint Transaciton을 먼저 찍는 사람이 그만큼의 토큰을 가져갑니다.
최근 BTC를 포함한 대다수 메인넷의 Tx와 Fee가 급증하는 이유가 바로 이것입니다.
BRC-20 전송
{
"p": "brc-20",
"op": "transfer",
"tick": "ordi",
"amt": "100"
}
BRC-20은 특이하게 탭스크랩 내에 From과 To가 명시되지 않습니다.
Tx의 INPUT, OUPUT를 통해 From과 To를 확인해야 합니다.
P2TR 탭 스크랩트 내 BRC-20의 데이터 형식은 아래와 같습니다. (연구 중)
OP_IF (0x63)
OP_BYPE (0x1)
OP_VALUE (Lenght, ex : 0x18)
OP_VALUE (Data Type , ex: text/plain;charset=utf-8)
OP_BYPE (0x0)
OP_VALUE (Lenght, ex : 0x48)
OP_VALUE (Datae , ex: {"p":"brc-20","op":"deploy","tick":"BTCs","max":"21000000","lim":"1000"})
OP_ENDIF (0x68)
Reference
'Hack > Cryptocurrency' 카테고리의 다른 글
Solana SPL Token CLI 설치 방법 (0) | 2024.02.02 |
---|---|
AA(Account Abstraction)란? (0) | 2023.10.22 |
23년 10월 7일, Stars Arena Drained of $3M (0) | 2023.10.09 |
23년 9월 12일, CoinEX Hacking 사고 분석 (0) | 2023.09.30 |
BGP Hijacking을 통한 Balancer Web Site 이용자들의 자산 탈취 (0) | 2023.09.30 |
댓글