이전 글에서 Brc-20을 알기 위해 Ordinals 를 알아보기로 했다.
공식 Doc
https://docs.ordinals.com/introduction.html
Github
봐도 잘 이해가 안간다..
영어 단어가 어렵다. 번역을 하자니 어색한 느낌이 든다.
블록체인 지식이 뛰어난 것은 아니기에.. 지금부터 적는 내용은.. 틀릴 수 있다.
공식 Doc 읽기
처음부터 순서대로 읽기보다는 faq를 보면 더 이해가 쉬운 것 같다.
https://docs.ordinals.com/faq.html
Ordinal theory가 뭐야?
사토시에 시리얼넘버를 할당해주고, 추적하는 프로토콜.
사토시는 1개의 비트코인을 1억으로 쪼갠 것
즉 0.00000001 BTC == 1 Satoshi
비트코인의 총 발행량은 21,000,000개 (2100만개)
그럼 총 사토시는 2,100,000,000,000,000 개 (2100조)
그니까 2100조 까지의 숫자로 비트코인 네트워크의 모든 사토시의 시리얼 넘버를 정할 수 있다.
간단한 원리이다.
사이트 체인, 토큰, 비트코인 변경이 필요없다.
사토시에 번호만 매기는 건데 딱히...
Ordinal theory가 뭐에 좋아?
모으고, 거래하고, 계략 짜기 (scheming) 에 좋다.
각각의 사토시에 아이덴티티를 주니 추적과 거래가 가능해진다.
또 낙서(inscripiton)를 가능하게 한다.
각각 사토시에 콘텐츠를 붙여서 'bitcoin-native digital artifacts'로 만들어준다.
말이 어렵지만, 500원짜리 동전을 떠올리면 될 것 같다.
1998년 500원 동전이 비싼 걸 생각해보자..
97년 500원이나 98년 500원이나 같은 500원 => 1satoshi == 1satoshi
98년 500원의 가치가 더 높다 => 발행 년도라는 아이덴티티를 주어 98년 500원의 가치를 높게 만든다.
또 예를 들어 기안84가 500원에 낙서하는 것을 생각해보자.
'기안 84의 작품이 담긴 500원 동전' 이 되어 버린다.
ordinal theory는 어떻게 작동하나?
채굴된 순서로 붙여진다.
첫 번째 블록의 첫 번째 사토시 == 0번
첫 번째 블록의 마지막 사토시 == 4,999,999,999번 (첫 번째의 블록은 50 비트코인 이었으므로 50 * 100,000,000 - 1)
근데 트랜잭션은 출력을 없애면서 입력을 만들어준다.
이 때 서수 이론 알고리즘을 사용한다.
알고리즘은 매우 간단한데 FIFO(선입선출) 순이다.
# 왼쪽이 세 개의 입력, 오른쪽이 두 개의 출력, 각각의 알파벳은 하나의 사토시, 물음표는?
[a b] [c] [d e f] -> [? ? ? ?] [? ?]
# 입력 사토시를 순서대로 보고 그 순서대로 넣어주면 된다
정답 : [a b c d] [e f]
# 근데 2사토시를 수수료로 쓴다면?
[a b] [c] [d e f] -> [a b c d]
e랑 f는 수수료로 간다. 수수료는 블록 채굴자에게 간다.
그건 코인베이스 트랜잭션에 대한 추가 입력으로 처리 된다.
자세한 건 아래 계속..
후에 다시 말하겠지만 788,695 블록은 수수료가 블록 생성 보상을 뛰어넘은 몇 안되는 블록이다.
이 블록의 코인베이스 트랜잭션의 입력값을 보자
https://ordinals.com/tx/8174154423ceb97ead7356b8fd2109795edda6444a0e76f13526d2ad9f895e37
참고로 00000~0000:4294967295 는 코인베이스 트랜잭션임을 나타낸다.
4294967295 = 2^32 - 1 이고 코인베이스 트랜잭션의 출력 인덱스로 사용한다.
그럼 채굴자가 얻은 12.95...BTC의 사토시에는 어떠한 번호가 써 있을까?
출력값을 보면 된다.
근데 이상하게 788,695 블록의 코인베이스 트랜잭션의 출력값에는 사토시 레인지가 안보인다.
(https://ordinals.com/output/8174154423ceb97ead7356b8fd2109795edda6444a0e76f13526d2ad9f895e37:0)
내 생각에 일정 시간이 지난 블록은 안보이는 듯 하다.
라고 3시간 전까지 생각했지만, 다시 생각해보니 출력값에 안보이는 이유는 그 출력이 사용되었기 때문인 것 같다.
그러니까 UTXO가 아니기 때문 아닐까?
예로 3번째 블록을 보면
한참 지났으나, Range 가 표시된다.
그리고 채굴자가 Binance Pool 인 699998 블록도
레인지가 남아있다.
어쨌든 그냥 다른 트랜잭션을 예로 들겠다.
아래는 789,369 블록의 코베 트랜잭션의 0번째 출력이다.
(https://ordinals.com/output/9b1b62e9e8a8bd73beb6ee0007849400742a555994eaec2e6ec211f10decb2d6:0)
채굴 보상은 7.12~~~ BTC
그리고 새롭게 생긴 사토시들의 번호는 초록색의 번호로 1937105625000000–1937106250000000
다음 블록은 1937106250000000 부터 1937106875000000 까지 일 것이다.
레인지기 때문에 끝에서 1 빼주면 된다.
그 뒤에는 위에서 말한 것 처럼 수수료로 나온 사토시들이 FIFO로 붙게 된다.
정리 및 요약
내가 썼지만 뭐 이런 글을 썼나 싶다.
글 보다는 노트다...
그래서 간단하게 정리하자면
- Ordinals 프로토콜은 모든 사토시에 번호를 붙여주는 프로토콜이다~
- 번호를 붙여주므로 낙서 (inscription) 이 가능해진다
- 번호는 블록 발행 순으로 붙여지고 전송시에는 FIFO 방식으로 전송된다.
- 수수료 사토시는 발행 블록 뒤에 붙는다.
쉽게 생각하면, 1년에 한 개밖에 발행을 못하는 100원짜리 동전이 있다고 하자.
발행년도는 동전에 기록되어 있다.
그럼 모든 동전을 구별할 수 있게 된다.
거기서 피카소가 낙서를 한다.
예술품이 된다.
이것이 비트코인 NFT이다.
하지만 이건 NFT가 아니다.
이건 비트코인 'Digital Artifacts'이다.
다음 글은 Digital Artifacts와 NFT의 차이에 대해 보는 편이 좋겠다.
혹시 이 글을 보시는 분 중 틀린 개념을 보신다면 말씀 부탁드립니다.
'blockchain' 카테고리의 다른 글
비트코인 역사에 기록될 순간 Brc-20 1 - 개요 (0) | 2023.05.09 |
---|