Ordinals NFT 톺아보기
Disclaimer: 서울대학교 블록체인 학회 디사이퍼(Decipher)에서 Ordinals NFT 톺아보기라는 주제로 Weekly Session에서 발표한 내용을 바탕으로 합니다. 본 아티클은 Ordinals NFT의 등장과 그로 인한 영향, 주로 프로젝트 소개와 Ordianls NFT 생태계에 대한 소개로 이루어져있습니다. 본 아티클은 3월 30일 기준으로 작성되었으며, 모든 수치적, 통계적 내용은 이 일자에 기반하여 작성되었습니다. 이 보고서에 포함된 어떠한 내용도 투자 조언이 아니며, 투자 조언으로 해석되어서도 안 됩니다.
Author
Mason Jeon(@buidlermason), 조용찬(@yougchan515) of Decipher
Seoul Nat’l Univ. Blockchain Academy Decipher(@decipher-media)
Reviewed By 디사이퍼 미디어팀
목차
- Intro
- Ordinals 개요
- Ordinals NFT 프로젝트 소개
- Ordinals NFT 생태계
- 마치며
- Reference
1. Intro
1.1 NFT 시장 현황
2024년 3월 현재, NFT 시장은 지난 2021~2022년의 불장만큼 회복되지는 못했지만, 지난 11월을 기점으로 Ordinals NFT 생태계가 주목받으며 거래량이 빠르게 상승하고 있다. 지난 한 달간 거래량 기준 체인별 순위는 이더리움, 비트코인, 솔라나 순이며 이더리움과 비트코인은 매우 근소한 차이를 두고 경쟁하고 있다.
(Source: cryptoslam.io)
다만, 이더리움과 솔라나의 경우에는 밝혀진 워시트레이딩 비율만 30%가 넘어가는 것을 감안하였을 때, 실질 거래량은 비트코인이 가장 높을 것으로 추정된다.
1.2 Ordinals의 영향력
2023년 1월 Ordinals Protocol은 공개된 이후 비트코인 전체에 굉장한 파급력을 끼쳤다. 비트코인의 활성도가 크게 증가했으며, 반감기를 앞두고 비트코인의 영속성을 위해서는 트랜잭션 수수료의 중요성이 더욱 중요해졌는데, Ordinals의 등장이 이를 해결할 수 있는 가능성 중 하나로 평가되고 있다.
비트코인의 트랜잭션 수는 Ordinals의 등장 이후 큰 폭으로 증가하였다. BRC-20이 주목받은 2023년 5월부터 기존 대비 평균 1.5배~2배의 트랜잭션이 만들어졌으며 11월부터 다시 Ordinals NFT가 주목받기 시작하면서 트랜잭션 수가 증가하였다.
지난 5월부터 Ordinals 관련 트랜잭션(Inscription, 2차 거래)은 전체 블록체인 트랜잭션의 30~50%를 차지하고 있다.
SegWit 업데이트로 인해 최대 블록 사이즈가 4MB까지 확대된 이후에도 트랜잭션 수의 제한으로 평균 1.1MB에 머물러 있던 비트코인의 블록 사이즈는 Ordinals 출시 이후 평균 1.7MB로 증가하였다.
Ordinals로 인해 Inscription 및 2차 거래가 활발해지면서 트랜잭션 수수료가 평균 2~3배로 증가하였으며, BRC-20 인스크립션이 활발했던 5월과 NFT 인스크립션이 활발했던 11월~1월에는 20~30배의 트랜잭션 수수료가 발생하기도 하였다. 현재도 2차 거래로 인해 기존 대비 2배 이상의 수수료가 꾸준히 발생하고 있으며, 이는 비트코인의 지속가능성에 도움을 줄 것으로 기대된다.
2. Ordinals 개요
Ordinals Protocol은 SegWit 업데이트와 Taproot 업그레이드를 기반으로 만들어졌다. 따라서 Ordinals에 대하여 설명하기 이전에 간단하게 SegWit 업데이트와 Taproot 업그레이드가 비트코인 체인에 어떤 변화를 만들어냈는지 짚고 넘어가겠다.
2.1 SegWit 업데이트
2017년 정식으로 소프트 포크로 채택된 SegWit(Segregated Witness)는 말 그대로 분리된 서명을 뜻하며, 기존의 블록 내의 트랜잭션 데이터와 서명 데이터가 합쳐진 방식에서 분리하여 저장하는 방식으로 전환하고자 제안되었다. SegWit 업데이트는 크게 두 가지 변경점을 만들어 냈는데, 1) 트랜잭션 가변성 문제를 해결한 것이고 2) 블록 사이즈를 크게 증가시켰다는 점이다. 이 중 Ordinals에 특히 영향을 끼친 변화는 2)이다.
- 트랜잭션 가변성 문제 해결
기존에는 제 3자가 트랜잭션의 서명을 조작하여 서명을 변경할 수 있었고 이 경우에는 트랜잭션이 여러 개의 유효한 txid를 가질 수 있었다. 이 경우에 기존 트랜잭션은 무효화될 수 있으며 거래는 정상적으로 이루어지지만 txid를 바탕으로 거래를 했던 거래 참여자들에게는 혼동이 발생할 수 있었다. SegWit 업데이트는 서명 데이터를 분리함으로써, 해당 데이터를 변경할 수 없도록 하였다.
2. 블록 사이즈 증가
SegWit 업데이트 이전 비트코인 블록에서 서명 데이터가 차지하는 용량은 평균 75%에 육박했다. SegWit에서는 vbyte(가상바이트) 개념을 도입하여 기존의 1,000,000 byte (1MB)에 제한되어있던 블록 사이즈를 4,000,000 vbyte (4MB)로 늘리고 가중치라는 개념을 도입해 트랜잭션 데이터에는 4, 서명 데이터에는 가중치를 1로 부여하여 실질 블록 트랜잭션 데이터 크기의 제한인 1MB을 늘리지 않고(하드 포크가 필요함) 블록사이즈를 늘렸다. 또한 서명 데이터는 가중치 1의 vbyte를 사용하기 때문에 75% 할인된 수수료로 서명 데이터를 처리할 수 있도록 하였다.
2.2 Taproot 업그레이드
2021년 진행된 소프트 포크인 Taproot 업그레이드는 BIP-340, BIP-341, BIP-342 제안들을 포함하여 채택되었으며 Tapscript의 채택으로 기존 스크립트의 활용 범위를 확장하고 스크립트 크기 제한을 10,000 byte에서 1vMB로 확장하여 사실상 제거하였다. 또한 스크립트를 vbyte로 저장할 수 있게 하여 할인을 받을 수 있게 되었다. 따라서 현재 Ordinals는 P2TR(Pay-to-Taproot) ScriptPubKey를 활용하도록 되어있다.
2.3 Ordinals Protocol
Ordinals는 2023년 1월 Casey Rodarmor가 공개한 프로토콜로써, 개별 사토시에 번호를 매기는 체계이다. 사토시 번호는 채굴된 순서대로 매겨지며, 트랜잭션 시 선입선출 방식으로 전송된다. 예를들어 Genesis Block에서 채굴된 50 BTC는 [0–4,999,999,999]의 사토시의 집합이다.
사토시 번호는 여러 방식으로 표현이 가능한데, Integer notation이 주로 활용된다.
몇 가지 예시를 통해 사토시 번호가 정해지는 규칙을 설명하겠다.
- 사토시 번호는 너무 길기에 숫자가 낮은 순서대로 a~h로 표현하였다.
- 숫자는 UTXO에 담긴 사토시의 갯수를 나타낸다.
- UTXO를 분리 시 먼저 채굴된 (더 낮은 숫자) 사토시부터 분리된다.
2. UTXO를 합칠 시 합쳐진 후 사토시들은 넘버링 순으로 재정렬 된다.
3. 수수료는 INPUT의 가장 마지막 UTXO에서 빠져나간다.
2.4 Inscriptions
Ordinals NFT를 만들기 위해서는 넘버링 된 사토시 위에 이미지/동영상/html파일 등을 Inscribing하는 과정을 거쳐야 한다. Ordinals Inscriptions는 Commit 트랜잭션과 Reveal 트랜잭션 두 가지 과정을 거쳐서 진행된다.
- Commit 트랜잭션Inscribed data가 포함된 탭루트 스크립트의 해시값을 포함한 UTXO를 미리 생성하여 Reveal 트랜잭션에서 활용할 수 있도록 한다.
- Reveal 트랜잭션Commit 트랜잭션에서 생성된 출력을 사용하여 Inscribed data가 온체인에 공개될 수 있도록 한다.
위의 그림과 같이 decipher.webp 로고 이미지 파일을 Inscribe한다고 하였을 때는 다음과 같은 스크립트가 사용된다.
OP_FALSE
OP_IF
OP_PUSH "ord"
OP_PUSH 1
OP_PUSH "image/webp"
OP_PUSH 0
OP_PUSH decipher.webp ## 바이트코드로 변환하여 넣어야 함
OP_ENDIF
이 스크립트는 Witness Data에 기록되어 가상 사이즈를 가지기 때문에 약 75% 디스카운트를 받은 수수료를 지불한다. 포인터를 따로 지정하지 않는 경우 Input의 첫번째 sat에 작성되며 Inscriptions이 완료된다. Inscribed된 sat은 Dust limit에 맞추어 546 sats의 UTXO로 분리하여 보관하게 된다.
이미지 뿐만 아니라 동영상, 벡터파일, html 등 모든 형태의 파일을 Inscriptions으로 만들 수 있기 때문에, 게임 등을 비트코인 체인에 직접 올리는 등 재밌는 실험들이 많이 진행되고 있다.
2.5 Rare Sats
사토시에 번호가 붙여짐에 따라 사토시가 역사적인 가치를 갖고 있거나, 숫자적으로 특이한 번호를 부여받았거나, 혹은 블록체인 사이클의 중요한 순간을 담은 사토시들은 Ordinals 커뮤니티 내에서 희귀하다고 합의가 되어 Rare Sats로 분류가 된다. Rare Sats의 종류는 계속해서 생기고 있으며, 그 중 주요한 Rare Sats들은 다음과 같다.
- Uncommon: The first sat of each block
- Rare: The first sat of each difficulty adjustment period
- Epic: The first sat of each halving epoch
- Legendary: The first sat of each cycle
- Mythic: The first sat of the genesis block
- Palindrome: Sats whose number reads the same backward or forward
- Vintage: Sat mined in the first 1,000 blocks
- Nakamoto: Sat mined by Satoshi Nakamoto
- Block 9: Sats mined in block 9 which are the lowest sats in circulation
- Block 78: Sats mined by Satoshi from the second ever Bitcoin transaction
- First Transaction: Sats from the 10 Bitcoins sent from Satoshi Nakamoto to Hal Finney
- Pizza: Sats from the 10,000 Bitcoins used to purchase two Papa John’s pizzas
- Alpha: The first sat in each bitcoin
- Omega: The last sat of each bitcoin
이 외에도 다양한 Rare Sats들이 있으며 계속해서 등장하고 있다. 이 중 PFP 프로젝트에 가장 많이 활용되고 있는 것은 ‘Block 9’으로 1,000개 이상 구할 수 있는 Rare Sats 중에 가장 비싼 가격(약 3,000 sats / unit)을 갖고 있기 때문에 이 사토시들에 Inscribe 된 NFT들은 프리미엄 가치를 갖는다.
Rare Sats들 또한 다양한 거래소에서 거래가 이루어지고 있으며, 이는 아래에서 다시 소개하겠다.
2.6 Recursive Inscriptions
Ordinals는 기존에 ipfs 등을 사용하여 이미지를 표시하였던 이더리움, 솔라나 NFT들에 비하여 On-chain에 이미지를 올리므로 훨씬 더 탈중앙적이며 영속적이지만 그에 따른 문제점들이 존재한다.
첫번째는 용량 문제로 SegWit 업데이트로 인해 4MB로 블록 사이즈가 늘어나긴 했지만 한계가 여전히 존재한다. 두번째는 수수료 문제로 특히나 PFP 프로젝트는 일반적으로 1K~10K의 Supply를 가지기 때문에 개당 평균 350kb의 이미지를 가진 10K의 PFP 프로젝트를 Inscribe 한다면 약 $5.5M의 수수료가 필요하다.
이를 해결하기 위하여 2023년 6월 Recursive Inscriptions이라는 개념이 탄생하였다. Recursive Inscription은 이미 Inscribe 된 데이터를 참조할 수 있는 개념으로 아래의 엔드포인트를 사용하여 다른 Inscriptions에 액세스한다.
/content/<INSCRIPTION_ID>
예를 들어 Inscription #63,633,712 (Apostles of Greed)를 보자. 이 이미지는 svg파일로 만들어졌으며, 7개의 다른 Inscriptions들(#63428533, #63428380, #63089900, #63428527, #63013130, #63423455)을 참조하고 있다. 이 인스크립션의 파일 형식은 svg/xml이며 아래와 같은 코드로 이루어져있다.
<svg
xmlns="http://www.w3.org/2000/svg"
width="1024"
height="1024"
style="width: 100%; height: 100%"
onclick="p()"
>
<image
href="/content/ce656d9762062782d405e8fd583b881156f9315217d75aad95decc7b9fd028a5i0"
...
/>
<image
href="/content/b431b71b55412d622d864e3c432572f0f4ac574ece057e8ca6be5731edcc5c7ci0"
...
/>
<image
href="/content/7d09b1d8d955c1862c1b737adc97eb623e12dee0b7ae2974b2840844e8b0b8bei0"
...
/>
<image
href="/content/ebabadc0c094b4ec6bf6e1d754e22dbcb5ceda47e519460581dc4bc99867fa9ci0"
...
/>
<audio id="x" xmlns="http://www.w3.org/1999/xhtml">
<source
src="/content/06c57cd07f1b528b1460252f8c67d56c3ff68201ab9cc7e5e273f4965ee130e0i0"
/>
</audio>
<script>
const
a=['/content/06c57cd07f1b528b1460252f8c67d56c3ff68201ab9cc7e5e273f4965ee130e0i0','/content/93c3ac5cf1baf1c1715c638d7d4c826c61bb4ff66df211ba05e8a17b3e2180c4i0','/content/6ae0698dc2696595b741a0e4dd29885ad1c191618243a3b434136a0024c42b80i0'];const
e=document.getElementById('x');const
p=function(){e.src=a[Date.now()%3];e.currentTime=0;e.play();};
</script>
</svg>
Inscription #63,633,712은 1.16kb의 용량을 가지고 있으며, 만약 Recursive Inscription을 사용하지 않고 모든 Attribute 에셋들을 하나의 사토시에 Inscribe 했다면 약 300kb에 가까운 용량이 되었을 것이다. 즉, Attribute의 갯수가 300개 정도라고 가정했을 때 10,000개의 NFT를 인스크립션 하는 데 드는 비용이 약 $4.6M에서 $35K 정도 99%가까이 줄어드는 효과가 있는 것이다.
3. Ordinals NFT 프로젝트 소개
지금까지 Ordinals Protocol이 무엇이고 어떤 배경 속에서 탄생했는지, 어떻게 작동하는지에 대해 알아보았다. 근데 왜 Ordinals NFT 가 이렇게 주목을 받으며 이더리움 NFT 생태계를 위협하는 수준까지 올 수 있었던 것일까? 이 챕터에서는 현재 Ordinals에서 가장 주목받고 있는 프로젝트들 몇 가지에 대해 분석하며 그 이유를 찾고자 한다.
분석 대상 프로젝트들로는 30일 기준 거래량 Top 10에 있는 프로젝트들 중 Natcats를 제외한 9개를 선정하였다. 이 중 5개는 PFP 프로젝트이며, 1개는 Metaverse 프로젝트, 3개는 Pre-Runes 프로젝트이다.3.1 PFP 프로젝트
3.1.1 Quantum Cats (Taproot Wizards)
기본 프로젝트 정보
- Total Supply: 3.3K
- Floor Price: 0.305 BTC ($19.5K)
- 30d Volume: 364.2 BTC ($23.3M) — Top 7
- Fund raising: $7.5M
- Founder: Taproot Wizards (@udiWertheimer, @ercwl)
Quantum Cats는 2108개로 이루어진 OG 콜렉션 Taproot Wizards의 하위 콜렉션으로 3.3K가 발행되었다. 이 프로젝트가 hype을 만들 수 있었던 이유는 크게 세 가지가 있다.
- Taproot Wizards에 대한 기대감
Wizards라고 불리는 Udi와 Eric은 Ordinals 이전부터 비트코인 위에서 다양한 생태계를 조성해야 한다고 주장했던 사람들로 비트코인은 오직 화폐로만 바라봐야 하고, 그 외의 것들은 비트코인의 본질을 흐리고 수수료만 높인다고 주장하는 Bit Maxi들과 가장 열정적으로 싸워왔다. 이들은 당연히 Ordinals의 등장에 환호하였고 채굴업체 Luxor와 함께 비트코인 블록 위에 최초로 4MB의 이미지 파일을 Taproot Wizards의 첫 번째 NFT로 Inscribe 하였다.
또한 Taproot Wizards는 Standard Crypto의 리드로 Ordinals 프로젝트 중 최초로 $7.5M 규모의 VC 투자를 유치하기도 하였다.
Taproot Wizards의 2108개 콜렉션은 아직 배포되지 않았으며, 몇 번의 비정기적 이벤트를 통해서 화이트리스트를 뿌린 적이 있고, 대부분은 팀이 물량을 보유하고 있는 상태이다. 따라서 Quantum Cats를 갖고 있으면 Taproot Wizards의 화이트리스트를 얻을 수 있다는 기대심리가 작동하고 있다.
2. 기술적 진보를 추구하는 프로젝트
Quantum Cats의 프로젝트 목표는 사토시 나카모토가 비트코인 첫 버전에서 도입했다가 뺐던 OP_CAT 스크립트의 부활이다. 나카모토는 OP_DUP (복제), OP_CAT(연결)을 반복하면 스택의 용량이 기하급수적으로 커지는 것을 막기 위하여 몇가지 스크립트를 첫 버전에서 제외하였다. 하지만 현재 탭스크립트는 최대 520바이트의 스택 크기를 지정해 놓았기에 더 이상 문제가 되지 않는다고 판단한 Taproot Wizards 팀은 OP_CAT 스크립트를 포함하는 BIP를 제안하려고 한다.
3. 재밌는 기믹 요소 (무한 리빌)
Quantum Cats는 처음 민팅 이후에도 계속해서 고양이의 색깔, 모양 등이 바뀐다. 바뀌는 주기는 비정기적이며 결정론적인 방법을 채택하여 그 누구도 개입할 수 없고, 변경 매커니즘에 대해선 밝혀져 있지 않다. 즉, NFT가 무한 리빌이 되는 기믹을 가지고 있으며 이는 사람들에게 흥미를 끄는 요소가 되었다. 특히, 고양이가 황금색으로 변하면 Taproot Wizards의 화이트리스트를 부여하는데, 이를 노리고 리스팅 된 NFT들 중 황금색으로 변하는 것을 전문적으로 스나이핑하는 사람 또한 존재한다.
3.1.2 Nodemonkes
기본 프로젝트 정보
- Total Supply: 10K
- Floor Price: 0.655 BTC ($42K)
- 30d Volume: 1.7K BTC ($112M) — Top 1
- Founder: Unknown (@monke)
Nodemonkes는 현재 기준 30일 거래량 1위인 프로젝트로, Ordinals 생태계 내에서 가장 OG의 자리를 차지하고 있는 프로젝트이다. 쉽게 말해 Ordinals의 Cryptopunks이다. Nodemonkes가 hype을 만들 수 있었던 세 가지 이유는 다음과 같다.
- Lowest Inscriptions
Nodemonkes는 10K PFP 프로젝트들 중 카피캣 프로젝트들(Bitcoin Punks 등)을 제외하고 가장 낮은 Inscriptions number를 가진 프로젝트이다. 이는 Ordinals의 가능성을 누구보다 빠르게 발견하고 프로젝트를 준비했다는 뜻이며, 이에 대한 가치를 인정받아 OG 프로젝트로서의 위상을 얻고 있다. Bitcoin Frogs도 hype이 많이 붙은 프로젝트인데, 마찬가지의 이유를 가지고 있다.
2. Ordinals 감성을 잘 살린 웹사이트
Nodemonkes의 판매는 매직에덴 런치패드를 통해 진행되었지만, 판매 현황을 볼 수 있는 웹사이트를 별도로 만들어서 런칭하였었고, 옛날 PC통신 시절의 디자인은 Ordinals 커뮤니티의 감성을 제대로 자극하였다.
3. 가장 좋은 타이밍에 세일 진행
1번의 그래프에서 MegaPunks라는 프로젝트도 굉장히 낮은 Inscriptions number를 갖고 있다는 것을 알 수 있다. 하지만 이 프로젝트는 hype을 거의 얻어내지 못했는데 그 이유는 무엇일까?
MegaPunks는 3월경부터 Inscriptions을 진행하였고, 4월에 세일을 진행하여 완판에 성공했다. 하지만 4월은 Ordinals가 아직 주목받지 못하던 시기였고, 5월부터 Ordinals에 대한 관심도가 높아졌을 때에도 대상은 NFT가 아닌 BRC-20이었다.
반면에, Nodemonkes는 더 빠르게 Inscriptions을 진행하였음에도 불구하고, 마케팅도 하지 않고 조용히 있다가 11월부터 Ordinals NFT에 대한 관심도가 높아지고 많은 자본이 유입되자 12월에 매직에덴을 통해 세일을 진행하였다. 이는 프로젝트를 런칭하는 타이밍도 NFT 프로젝트의 성공에 큰 영향을 줌을 보여준다.
3.1.3 Ordinal Maxi Biz (OMB)
기본 프로젝트 정보
- Total Supply: 5.2K
- Floor Price: 0.37 BTC ($23.8K) — Orange Eyes
- 30d Volume: 576.1 BTC ($37M) — Top 4
- 1/1 Projects
- Founder: @ZK_shark, @ohareyoufat
Ordinal Maxi Biz는 Ordinals NFT 생태계에서 가장 강한 Cult를 기반으로 한 커뮤니티를 가지고 있는 프로젝트로, 초기 BAYC 커뮤니티를 연상케 한다. OMB가 hype을 얻을 수 있었던 이유는 아래 세 가지이다.
1. Founder의 강력한 리드로 만들어진 Cult
OMB의 파운더인 ZK_Shark는 인사이트가 좋은 리서치를 공유하는 인플루언서로 원래 유명하였었다. 그는 Ordinals Protocol의 공개 이후 그가 수집하던 ZeroMonkeBiz의 아티스트인 Tony와 함께 OMB를 런칭하였고, Ordinals에 대한 자신의 생각과 주관을 담은 쓰레드를 작성하였다. ZK_Shark의 쓰레드는 평균 400개 이상의 북마크 리액션이 나오는 등 큰 호응을 얻었다.
ZK_Shark는 비범하고, 천재적이며, 반항적인 이미지를 쌓았고, 이는 OMB 만의 분위기를 만드는 데 크게 기여했다.
OMB는 특유의 Maxi적인 분위기, 반항적인 분위기 이외에도 Exclusive한 커뮤니티를 가지고 있다는 특징이 있는데, 한 예로 현재 OMB의 디스코드에 들어가기 위해서는 OMB 홀더들이 ZK_Shark와 1:1로 인터뷰를 진행하고 통과하여야 한다.
이러한 요소들로 만들어진 Cult, 그리고 커뮤니티가 OMB를 Ordinals의 Bluchip 프로젝트가 될 수 있도록 만들었다.
2. 단계별 인플레이션
Ordinal Maxi Biz는 처음에 Red Eyes 콜렉션을 100개 발행하였고, 그다음 200개의 Blue Eyes, 1900개의 Green Eyes, 3000개의 Orange Eyes를 순차적으로 발행하였다. 새로운 콜렉션에 대한 계획은 미리 공개되지 않았으며, 갑작스럽게 발표되는 방식을 사용하였다.
새로운 콜렉션이 나올때마다 기존 홀더들에게 에어드랍 혹은 WL를 부여하였는데, 예를 들어 위의 이미지는 Orange Eyes의 콜렉션 발표 전 공식 트위터에서 포스팅한 이미지이다. 이 이미지의 내용을 분석해 보면 1개의 Green Eyes를 갖고 있으면 1개의 Orange Eyes를 주고, 3개를 갖고 있으면 4개를 주고, Red-Blue-Green 세트를 갖고 있으면 9개를 주는 등 기존 홀더들에게 꾸준한 수익화 기회를 주었다(참고로 Orange Eyes의 퍼블릭 세일 가격은 0.99 BTC였다). 이러한 단계별 인플레이션은 기존 홀더들에 대한 보상을 기대하게 만들었고, 다음 콜렉션에 대한 기대감으로 NFT를 구매하는 사람도 많아졌다. 다만, 이러한 인플레이션은 결국 한계가 있음이 많은 폰지노믹스 구조의 프로젝트들로부터 증명되었으므로, 비판 또한 많이 받고 있기도 하다.
3. Rare Sats Inscription
Red Eyes는 Low inscriptions number를 갖고 있으며, Blue Eyes는 ‘Block 78’에, 그리고 Green Eyes와 Orange Eyes는 ‘Block 9 450x’ Rare Sats에 인스크라이빙 되었다. Rare Sats에 새겨진 NFT들은 그만큼 프리미엄 가치를 인정받기 때문에 이 또한 hype을 만드는데 도움이 되는 요소였다.
3.1.4 Bitcoin Puppets
기본 프로젝트 정보
- Total Supply: 10K
- Floor Price: 0.27 BTC ($18K)
- 30d Volume: 730.4 BTC ($48.6M) — Top 3
- Free mint (inscribe.now)
- Founder: @lepuppeteerfou
Bitcoin Puppets는 inscribe.now에서 Free Mint로 공개된 프로젝트로, Ordinals NFT 생태계에서 가장 큰 Meme 프로젝트이다. Ordinals의 Milady의 역할을 맡고 있다고 볼 수 있다. Bitcoin Puppets가 hype을 만들 수 있었던 세 가지 이유는 다음과 같다.
- Founder의 리드로 만들어진 Meme Cult
Ordinal Maxi Biz의 Zk_Shark처럼 lepuppeteerfou가 Bitcoin Puppets의 끼치는 영향은 매우 크다. 다만 다른 점은, 파운더가 프로젝트를 소유하고 있지 않으며, 단순히 취미 및 재미로 프로젝트에 대한 밈을 퍼트리고 있다는 점이다. 그래서 Bitcoin Puppets의 커뮤니티는 매우 가볍고, 밈을 즐기는 분위기로 이루어져있다. lepuppeteerfou는 끊임없이 ‘Going to 0’, ‘Send it to 0’를 외치며 이 프로젝트가 어떠한 유틸리티적 가치도 가지고 있지 않음을 얘기하고, 이는 프로젝트가 Meme화되는 방향성을 제시했다.
2. Free mint 콜렉션
Bitcoin Puppets는 위에서 소개한 다른 프로젝트들과 달리 Free mint로 진행된 프로젝트이다. Bitcoin Puppets의 전신인 O.P.I.U.M 홀더들에게 먼저 mint할 수 있는 기회를 준 것 외에는 모든 것이 선착순으로 무료로 진행되었고, 팀 물량 또한 따로 배분되어 있지 않다.
Meme 프로젝트가 성공하기 위해서는 ‘소유 주체’가 존재하지 않다는 것, ‘초기 진입가’를 갖고있는 사람이 없다는 것 등이 중요한데 이에 대한 기틀을 갖춘 프로젝트라고 할 수 있다.
3. 첫번째 밈 OG 프로젝트
Bitcoin Puppets의 전신이자 lepuppeteerfou의 이전 작품인 O.P.I.U.M은 비록 777개 컬렉션이지만 Low inscriptions 프로젝트로 OG 자격을 갖춘 프로젝트였다. 이를 바탕으로 첫번째 Meme 프로젝트로서 OG 프로젝트로서 위상을 얻으면서 그 뒤에 나온 수많은 프로젝트들의 에어드랍을 받으며 홀딩에 대한 기대감이 커지고 가치가 부양되었다.
3.1.5 Pizza ninjas
기본 프로젝트 정보
- Total Supply: 1.5K
- Floor Price: 0.05 BTC ($3.3K)
- 30d Volume: 23.11 BTC ($1.5M)
- Founder: @TO
Pizza ninjas는 The Ordinal Show의 호스트인 Trevor가 만든 프로젝트로, Recursive inscription을 사용하여 다양한 기믹이 들어간 NFT로 주목을 받았다. Pizza ninjas가 hype을 이끌어낸 두가지 이유는 다음과 같다.
1. Reculsive Inscription을 활용한 다양한 기믹
Pizza ninjas의 NFT는 JPEG, PNG, WEBP 등의 이미지 형식이 아닌 html 파일로서, Recursive inscription을 사용하여 발행 비용을 절약했을 뿐만 아니라 html이라는 장점을 살려 다양한 기믹을 첨가하였다.
예를 들어 Pizza ninjas NFT의 메뉴 버튼을 누르면 Resize, Stickers, Animate 등의 기능을 사용할 수 있고 심지어 간단한 게임까지 NFT에 포함되어 있다. NFT에 이러한 다양한 활용성을 첫 사례로 제시한 프로젝트로서 높은 평가를 받았다.
2. ‘Pizza’ Rare Sats에 Inscribe
Pizza ninjas는 모든 NFT가 ‘Pizza’ Rare Sats (파파존스 피자 사먹을 때 들어간 10,000 BTC에 포함된 사토시)에 Inscribe되었다. ‘Pizza’ Rare Sats은 상대적으로 가치가 높은 사토시는 아니지만 프로젝트 전체 컨셉을 거기에 맞춰 제작함으로써 Rare Sats의 활용에 좋은 사례가 되었다.
3.2 Metaverse 프로젝트
3.2.1 Bitmap
기본 프로젝트 정보
- Total Supply: 현재 블록의 갯수 (약 840K)
- Floor Price: 0.0025 BTC ($175.46)
- 30d Volume: 71.19 BTC ($5M)
- Founder: @blockamoto
- Infinite free mint
bitmap은 비트코인의 블록 넘버를 사용하여 비트코인 위의 메타버스를 만드는 프로젝트이다. 새로운 블록이 채굴될 때 마다 그에 맞는 번호를 가진 NFT가 채굴될 수 있으며, 이는 선착순으로 이루어진다.
아직은 bitmap 생태계가 초기 단계이긴 하지만, bitmap을 활용하여 메타버스, 게임 등을 만드는 파생 프로젝트들이 계속해서 나오고 있다.
3.3 Pre-Runes 프로젝트
Ordinals NFT 생태계에서 최근 가장 많은 hype이 몰리는 곳은 Runes protocol이 나오기 전에 Runes 토큰을 약속하는 Pre-Runes 프로젝트들이다. 이 프로젝트들을 소개하기 위해선 BRC-20과 Runes Protocol에 대한 이해가 필요하기 때문에 간단하게 설명하겠다.
3.3.1 BRC-20
BRC-20(Bitcoin Request for Comment)은 Ordinals protocol을 사용하여 만들어진 FT 표준으로 2023년 3월에 domo에 의하여 제시되었다. BRC-20의 활용은 Deploy, Mint, Transfer 세 가지의 함수를 특정 사토시에 Inscribe하는 것으로 이루어진다.
3.3.1.1 BRC-20 함수
- Deploy 함수
위 코드는 ‘ordi’라는 토큰을 21,000,000개의 Max Supply로 Deploy하는 기능이다. ‘lim’은 한번에 Mint 가능한 최대 토큰의 갯수를 뜻한다. 이 텍스트를 사토시에 Inscribe하게 되면 Deploy가 완료된다.
2) Mint 함수
3) Transfer 함수
현재 내가 갖고 있는 BRC-20을 다른 주소로 보낼 수 있다. 위 코드는 100개의 ordi를 전송하기 위한 함수이다. 위 텍스트를 Inscribe한 뒤 수신자의 주소로 Inscribed sat을 보내면 BRC-20이 전송된다.
3.3.1.2 BRC-20 작동 예시
조금 더 구체적인 사례를 통해 BRC-20의 작동 방식을 이해해보자.
Example)
- A 어카운트에서 $DEC에 대한 Deploy 함수를 Inscribe한다.
- B 어카운트에서 $DEC 10,000개에 대한 Mint 함수를 Inscribe한다.
- B 어카운트에서 $DEC 1,000개에 대한 Tranfer 함수를 Inscribe한다.
- B 어카운트의 Tranfer 함수가 Inscribe된 사토시를 C 어카운트에 전송한다.
이 경우 총 Balance는 다음과 같다.
- A 어카운트: 0 $DEC
- B 어카운트: 9,000 $DEC
- C 어카운트: 1,000 $DEC
3.3.1.3 BRC-20의 한계
BRC-20은 Ordinals protocol을 이용하여 비트코인 위의 Alt FT를 만들 수 있는 실험적인 규격을 제시한 것으로 가치가 있지만, Ordinals protocol은 애초에 FT가 아닌 NFT를 위하여 만들어진 표준이기 때문에 여러가지 한계를 갖고 있다.
- 너무 많은 트랜잭션 필요Inscription의 과정을 항상 거쳐야 하기 때문에 Deploy와 Mint를 할 때에는 2개의 트랜잭션이 발생하고 Transfer를 할때마다 3개의 트랜잭션이 발생한다.
- 개발자들에게 불편한 복잡성, 낮은 확장성Ordinals protocol에 기초한 표준이기 때문에 BRC-20 관련 생태계 빌더는 Ordinals와 BRC-20 규격 모두를 파악하고 있어야 한다. 예를 들어 BRC-20을 지원하는 월렛은 두 가지 모두에 대한 인덱서를 개발 및 유지보수해야한다.
- 4자리로 한정된 이름(티커)BRC-20은 ERC-20과 다르게 컨트랙트를 통해 만들어진 FT가 아니기 때문에 Token Name이 토큰의 유니크함을 증명한다. 근데 BRC-20은 Token Name을 4자리까지만 정할 수 있게 했기 때문에 발행할 수 있는 토큰 종류의 갯수에 제한이 있다.
- UTXO-based가 아님UTXO가 아닌 Inscription에 기반하였기 때문에 영속적이지 않으며, 쪼개거나 합쳐서 거래할 수도 없고, 다중 전송 등도 불가하다.
- 공격에 취약함 만약 누군가 Transfer inscription을 만들어 A에게 전송하면 A는 그 Tranfer inscription을 누구에게 보내기 전까지는 Balance가 잠기게 된다.
3.3.2 Runes protocol
Casey rodarmor는 Alt token에 대하여 부정적인 입장이었지만, 자신의 Ordinals protocol이 결국은 BRC-20 등으로 활용되는 것을 보며 차라리 효율적인 FT 규격을 만들어야겠다고 판단했고 23년 6월 Runes라는 새로운 FT 표준에 대한 Abstract를 발표했다.
Runes protocol은 아직 출시되지 않았으며, 다음 반감기가 오는 840,000번째 Block이 채굴되는 순간에 공개될 예정이다(약 4월 20일 경으로 예상). 따라서 아직 Runes protocol에 대한 구체적인 사례가 존재하지 않으며 개발 문서 또한 모두 공개되지 않았기 때문에 본 레포트에서는 간단히 Runes protocol의 개념에 대해서만 소개하도록 하겠다.
3.3.2.1 Runestone
Runes protocol은 Runestone이라는 함수를 OP_RETURN 스크립트로 기록하여 작동된다. 간단한 스크립트 구조는 다음과 같다.
OP_RETURN
OP_PUSHNUM_13 ##Runes protocol임을 알리는 역할
OP_PUSH [Runestone function]
현재 공개된 Runestone의 종류는 다음과 같다.
1) Etching (Deploy)
2) Terms (Mint)
3) Edict (Transfer)
3.3.2.2 Example (Etching)
위 트랜잭션 (a7c8a4b…78a9a9)은 Signet에서 이루어진 ‘GREG’이라는 Runes 토큰이 Etching된 내용이다. 그림에서 보다시피 OP_RETURN 스크립트를 이용하여 토큰을 Deploy한 것을 볼 수 있고, BRC-20과는 다르게 Inscribed sat가 이동하지 않음을 볼 수 있다.
3.3.2.3 Runes protocol의 장점
Runes protocol은 처음부터 FT를 상정하고 만들어진 표준이기 때문에 BRC-20에 대비하여 많은 장점을 가지고 있다.
- 심플하고 가벼운 코드Runes protocol의 Core protocol 코드는 500줄에 불과하며, OP_RETURN 스크립트는 80바이트밖에 되지 않아 Inscription에 비하여 수수료를 상당히 많이 절감할 수 있다.
- 하나의 트랜잭션OP_RETURN 스크립트를 통해 모든 Operation을 해결하므로 항상 하나의 트랜잭션만 발생한다.
- 호환성라이트닝 네트워크와 호환이 가능하며 간편 결제 시스템을 지원할 수 있다.
- UTXO-basedUTXO에 기반한 규격이기 때문에 영속적이며, 다중 전송 등의 기능 구현이 가능하고 좀 더 자유롭게 수량을 정해서 거래가 가능하다.
- 28자리까지 이름 설정 가능BRC-20과 마찬가지로 토큰의 유니크함을 증명하는 Name은 28자리 까지 설정이 가능하다. 다만, 짧은 Name의 선점을 막기 위해 처음에는 13자리 이상의 Name만 설정 가능하며 840,000 블록 이후 17,500 블록마다 한자리씩 짧은 Name에 대한 제한이 풀린다.
3.3.3 Pre-runes 프로젝트
3.3.3.1 Runestone
기본 프로젝트 정보
- Total Supply: 112.4K
- Floor Price: 0.041 BTC ($2.8K)
- 30d Volume: 1K BTC ($68M) — Top 2
- Founder: @LeonidasNFT
Runestone은 Ordinals 생태계에서 가장 영향력 있는 인플루언서인 Leonidas가 만든 프로젝트이며, 특정 시간 이전에 Ordinals NFT을 3개 이상 들고 있는 모든 월렛(약 11만개)에 Runestone을 발행하여 에어드랍하였다. 파운더의 영향력이 매우 강하기 때문에 현재 가장 많은 hype을 가지고 있는 프로젝트로 볼 수 있다.
3.3.3.2 RSIC
기본 프로젝트 정보
- Total Supply: 21K
- Floor Price: 0.061 BTC ($4.1K)
- 30d Volume: 414.6 BTC ($27.9M)
- Founder: Unknown
처음으로 hype을 얻은 Pre-Runes 프로젝트인 RSIC Metaprotocol은 Ordinals 생태계에서 오랫동안 활동하였던 지갑 9천개에 에어드랍되면서 세상에 알려졌다. 오른쪽 아래의 룬 문자가 상징하는 기호와 갯수가 최근 블록 해시값과 동일하면 주황색으로 바뀌며 추후 에어드랍량이 늘어나는 기믹을 보유하고 있다.
3.3.3.3 Rune Pups
기본 프로젝트 정보
- Total Supply: 10.8K
- Floor Price: 0.0094 BTC
- 30d Volume: 56.88 BTC ($3.8M)
- Founder: Unknown
Rune Pups는 Bitcoin puppets의 파생 프로젝트로 기존에 BRC-20으로 $PUP을 만들었던 팀에서 만든 프로젝트이다. $PUP은 O.P.I.U.M과 Bitcoin Puppets에 에어드랍 되었었다. Runes protocol이 출시되면 기존 BRC-20 토큰은 burn하고 Runes 토큰으로 새로 발행하여 Rune Pups 홀더들에게도 에어드랍을 할 예정이다. Runes 생태계의 밈토큰으로 활용될 것으로 기대감을 만들어내고 있다.
4. Ordinals NFT 생태계
4.1 Bitcoin Ordinals Ecosystem
오디널스 생태계는 크게 “WALLETS, INSCRIPTION TOOL, LAUNCHPAD, MARKETPLACES, BRC-20, ORDINALS, DEFI, DATA&ANALYSIS”로 구성되어 있다.
첫 번째로 WALLETS이다. ORDINALS WALLETS들은 비트코인 기반으로 만들어지며, Ordinals와 BRC를 지원한다는 특징이 있다.
Wallets
- Xverse @xverseApp
- Leather (formerly Hiro) @LeatherBTC
- UniSat @unisat_wallet
- OKX @okxweb3
- Ordinals Wallet @ordinalswallet
다음으로 오디널스 및 BRC-TOKEN을 구매할 수 있는 마켓플레이스이다. 마켓플레이스는 BRC-20, ORDINALS 중 어느 것에 중점을 두었는지에 따라 구분되며, 또한 특별한 Number를 가진 Sat들을 거래할 수 있는 RARE SATS 마켓플레이스가 존재한다.
Marketplaces(BRC-20 Heavy)
- OKX @okxweb3
- UniSat @unisat_wallet
Marketplaces(Ordinals Heavy)
- MAGIC EDEN @MEonBTC
- ORDINALS WALLET @ordinalswallet
- Ordinals Market @OrdinalsMarket_
- Gamma @trygamma
- OpenOrdex @openordex
- Ordzaar @ordzaar
- Ordswap @ordswap
- OSURA @osura_com
- ordinex @ordinexio
- Deezy @deezy_inc
- iDclub @idclub_ord
- Scarce City @scarcedotcity
Marketplaces(Rare Sats)
- Magic Eden @MEonBTC
- Magisat @Magisat_io
다음으로 DeFi 플랫폼들이 있다. 기존의 오디널스는 스마트 컨트랙이 없다는 한계점을 극복하고 SWAP, LIMIT, LENDING 등의 다양한 시도들이 이루어지고 있다.
DeFi
- Liquidium @LiquidiumFi
- TAP @tap_protocol
- UniSat @unisat_wallet
다음으로 INSCRIPTION TOOL이다. 오디널스와 BRC는 Sat에 4MB 이하의 텍스트, 이미지, 영상 등의 임의의 파일을 Inscription하게 함으로써 각종 파일을 온체인 상에서 저장할 수 있다. 따라서 이를 위한 TOOL이 필요한데, INSCRIPTION TOOL의 종류는 다음과 같다.
Inscription Tool
- OrdinalsBot @ordinalsbot
- OrdinalHub @ordinalhub
- Magic Eden @MEonBTC
- Gamma @trygamma
- UniSat @unisat_wallet
- OKX @okxweb3
- Ordinals Wallet @ordinalswallet
- ordinex @ordinexio
- iDclub @idclub_ord
- Binance Pool @binance
다음으로 LAUNCHPAD이다. 현재 다양한 오디널스 기반 프로젝트들이 출시되었거나, 출시 될 예정이다.
Launchpad
- Luminex @luminexio
- Magic Eden @MEonBTC
- Gamma @trygamma
- Ordinals Wallet @ordinalswallet
- Ordzaar @ordzaar
- Ordmint @OrdmintAPP
- Ordbit @ord_bit
다음으로 BRC-20이다. ORDINALS 외에도 다양한 BRC-20 기반의 토큰들이 INSCRIPTION되어 활용되고 있다.
BRC-20
다음으로 Ordinals이다. 현재 다양한 오디널스 프로젝트들이 주목받고 있으며 많은 프로젝트들이 이더리움, 솔라나에서 오디널스로 옮겨가고 있는 중이다.
Ordinals
- Bitcoin Frogs @BitcoinFrogs
- Bitcoin Rocks @ordrocks
- Ordinal Maxi Biz (OMB) @OrdinalMaxiBiz
- Bitcoin Punks @Bitcoin_Punks_
- Twelvefold @yugalabs
- BTC DeGods @BTC_DeGods
- Bitcoin Apes @BitcoinApes_
- Pixel Pepes @PepesPixel
- BitcoinWhales @Bitcoin_Whales_
마지막으로 오디널스의 데이터를 확인하거나 분석할 수 있는 다양한 툴이 존재한다.
Data & Analysis
- Ord .io @ord_io
- Ordinals.com
- Ordiscan
- GeniiData @GeniiData
- OrdSpace @ordinalsda
- OrdinalHub @ordinalhub
4.2 Ordinals Wallet
이제 오디널스 지갑부터 살펴보도록 하자. 오디널스 지갑들은 비트코인 기반으로 만들어졌으며 Ordinals와 BRC를 지원한다는 특징을 가지고 있다.
4.2.1 Xverse
Xverse는 비트코인 기반으로 제작된 지갑으로 오디널스와 BRC20을 모두 지원한다는 특징을 가지고 있다. 또한 Sats Connect이라는 기능을 지원하는데 Sats Connect은 라이트웨이 자바스크립트 라이브러리이며 비트코인에서 web3의 기능들을 사용할 수 있도록 해준다. 이를 활용하여 Xverse 지갑과 유저의 web app을 연결할 수 있고 이때 사용되는 원리는 PSBT이다. (PSBT에 대해서는 이 글의 후반 부에 다시 다룬다.)
4.2.2 Unisat
Unisat 또한 비트코인 기반으로 제작된 지갑으로 오디널스와 BRC20을 모두 지원한다는 특징을 가지고 있다. 이 외에 Unisat은 unconfirmed NFTS라는 기능을 지원한다. 이는 멤풀에 가장 최근에 새겨진 NFT를 표시하여 미확인된 NFT를 확인할 수 있도록 하는 기능인데, 비트코인의 경우 블록이 10분마다 만들어지기 때문에 트랜잭션 등록 후 블록이 채굴되기 까지 상당한 시간이 소요된다. 이때 블록으로 채굴되기 전 NFT의 세부 정보를 미리 확인하고, 필요한 경우 이전 NFT를 재정의하여 오류를 수정할 수 있다.
4.2.3 Sparrow
Sparrow Wallet은 크롬 익스텐션으로 작동하지 않는다는 점에서 기존 지갑들과 차별화되어 있다. 브라우저 지갑의 경우 공격 가능 범위가 넓기 때문에 이를 보완하고자 별도의 어플리케이션을 다운받아 사용하는 형태이다. Sparrow Wallet은 4가지의 연결 방식이 존재한다.
- Offline
- Public Electrum Server
- Bitcoin Core Node
- Private Electrum Server
위 4가지 중 가장 안전한 방식은 Private Electrum Server로, 자신의 Electrum Server를 통해 비트코인 코어 노드에 연결하는 방식이다. 이때 Electrum이란 블록체인 전체는 용량이 너무 크기 때문에 모두 다운받지 않고, 회사의 서버에 저장된 블록체인을 참고하는 방식의 비트코인 지갑 소프트웨어를 의미한다. Private Electrum Server 방식의 경우 모든 비트코인 거래를 동일하게 인덱싱하여 지갑 거래가 식별 가능한 방식으로 서버에 저장되지 않기 때문에 안전성을 보장할 수 있다고 한다.
4.2.4 MagicEden
MagicEden은 Bitcoin, Solana, Ethereum, Polygon 이렇게 4가지 체인을 지원하는 멀티체인 지갑이다. 또한 SOL-BTC, SOL-ETH, BTC-ETH와 같이 멀티 체인 간의 토큰 스왑을 지원한다는 특징을 가지고 있다. 또한 멀티 체인을 지원하기 때문에 Bitcoin, Solana 그리고 어느 EVM chain이든 dapps을 연결할 수 있다.
4.3 Ordinals NFT Marketplace
오디널스 NFT Marketplace에서는 다양한 오디널스들과 BRC-20 토큰들을 구매할 수 있다. 지난 3달간 오디널스 마켓플레이스의 점유율을 살펴보면 Magic Eden이 앞도적으로 높은 점유율을 기록하고 있고 그 다음으로 OKX, Unisat이 뒤따르고 있음을 알 수 있다.
4.3.1 MagicEden
먼저 점유율 1위를 기록하고 있는 MagicEden을 살펴보자.
MagicEden은 기본적으로 Bitcoin, Solana, Ethereum, Polygon 이렇게 4가지 체인을 지원한다. 따라서 마켓플레이스에 들어가면 4가지 체인의 NFT Collection을 확인할 수 있다.
마켓플레이스의 좌측 상단 Discover을 클릭하면 비트코인 오디널스들을 확인할 수 있다.
또한 특별한 Number를 가진 Sat들을 구매할 수 있는 Rare Sats 구매 페이지가 존재하며, Ordinals Inscription을 진행해볼 수 있는 Inscribe Ordinals 페이지 또한 존재한다.
4.3.2 OKX
OKX는 거의 모든 체인의 NFT를 지원하고 있으며 그 리스트는 아래와 같다.
Bitcoin, Ethereum, Solana, BNB Chain, Polygon, Immutable X, Aptos, Arbitrum One, Optimism, Zksync Era, BASE, LINEA, opBNB
Top collections를 봐도 2024.03.24 기준으로 오디널스 기반 프로젝트들이 상위권을 차지하고 있음을 확인할 수 있다. 또한 BRC-20 토큰들 역시 OKX에서 구매가 가능하다.
4.3.3 Unisat
Unisat 또한 오디널스와 BRC-20 토큰들을 구매할 수 있는 마켓플레이스이다.
Unisat에는 또한 특정 Inscription Data를 검색할 수 있는 Search 창이 존재하는데 위와 같이 “text, .uniworlds, .bitmap, .sats, .unisat, brc-20, number, news” 중 내가 원하는 형식을 지정한 뒤 특정 키워드는 입력하면 그와 관련된 것들을 찾아 볼 수 있는 형식이다.
4.4 PSBT
비트코인 같은 경우에는 스마트 컨트랙트가 존재하지 않는다. 하지만 오디널스 마켓 플레이스에 들어가 보면 각종 토큰들이 리스팅되어 있고 구매자들은 비트코인 지갑을 연결해 이를 구매할 수 있다. 이때 사용되는 것이 바로 PSBT(Paritally Signed Bitcoin Transaction)이다. PSBT는 BIP-174로부터 나온 기능으로 inputs 중 일부는 서명하고 일부는 서명하지 않는 상태로 남길 수 있다는 특징이 있다. 또한 여러 명의 사용자들이 함께 서명하여 트랜잭션을 발생시키는 멀티 시그 트랜잭션이 가능하다. 즉 일부 input은 서명되고 일부는 서명되지 않은 상태를 유지하며 여러 명이 서명을 순서에 상관없이 병렬적으로 처리할 수 있고, 이를 활용하여 사용자 간의 토큰 전송이 가능한 것이다.
4.4.1 BIP-174
먼저 BIP-174에 대해 살펴보자. BIP-174는 부분적으로 서명된 트랜잭션의 직렬화 및 역직렬화를 위한 표준이다. 이 중 PSBT를 활용하여 여러 입력과 출력을 단일 트랜잭션으로 결합하는 트랜잭션 유형인 Coinjoin Treansaction에 대해 먼저 살펴보자.
Manual CoinJoin Workflow
Alice가 자신의 UTXO 자산을 바탕으로 PSBT를 생성하고 Bob에게 전송한다. 이후 Bob이 자신의 UTXO 자산을 바탕으로 input을 입력한다. 또 Carol이 자신의 UTXO를 바탕으로 input을 입력하고 자신의 서명을 더한 뒤 자신의 input을 확정짓는다. 이후 밥이 트랜잭션에 서명을 하고 자신의 서명을 더한 뒤 자신의 input을 확정짓는다. 마지막으로 엘리스가 이를 종합하여 직렬화된 트랜잭션을 브로드 캐스트한다. 이러한 트랜잭션의 결합은 관찰자가 어떤 입력 및 출력이 어떤 참가자와 연관되어 있는지 알 수 없기 때문에 개인정보 보호 및 익명성을 높일 수 있다.
또한 다음과 같은 예시에서 CoinJoin을 활용할 수 있다. 예를 들어 3명이 각각 다른 사람들에 코인을 전송한다고 하자. (3개의 UTXO를 3개의 수신 주소로 전송) 트랜잭션 Input과 Output을 각각 나열하고 3명의 서명을 받은 뒤 마지막의 한 사람이 이를 모두 모아 Send하는 방식으로 여러 개의 트랜잭션을 하나로 모아 처리할 수 있다.
$ bitcoin-cli -named createpsbt inputs='''[ { "txid": "'$utxo_txid_1'", "vout": '$utxo_vout_1' }, { "txid": "'$utxo_txid_2'", "vout": '$utxo_vout_2' }, { "txid": "'$utxo_txid_3'", "vout": '$utxo_vout_3' } ]''' outputs='''{ "'$split1'": 1,"'$split2'": 2,"'$split3'": 3 }'''
(출처: http://cryptostudy.xyz/crypto/article/272-부분서명-PSBT)
2-of-3 Multisig Workflow
다음은 PSBT의 한 가지 예시인 2-of-3 다중서명이다. Alice와 Bob 그리고 Carol이 서로에게 자산을 전송하고 싶은 상황이다. 이때 Alice가 full node를 사용하여 PSBT를 만든다. 그리고 이 PSBT가 Alice, Bob, Carol에게 각각 전송된다. 이때 이 과정은 병렬적으로 처리되며 순서에 관계없이 이루어진다. 각자 서명을 완료하면 PSBT가 Alice에게 리턴되고 Alice가 이 3개의 서명을 결합하여 PSBT를 finalize한 후 네트워크에 브로드캐스트한다.
아래는 위와 같은 Multisig 트랜잭션 과정을 보여주는 코드이다.
// P2SH: 2N7AiQQ4fKD7DvnRNTd13aT7ybFvgjtqCLF
$ txid="e286d399151be8a2faa7c136acfff418fba3c2512518a09db39d085ff3415aa7"
$ vout=0
$ recipient=$(bitcoin-cli -rpcwallet="" getnewaddress)
// createpsbt 명령: PSBT 트랜잭션 생성
$ psbt=$(bitcoin-cli -named createpsbt inputs='''[{"txid":"'$txid'", "vout":'$vout'}]''' outputs='''{"'$recipient'": 0.0019}''')
// [월렛1]에서 PSBT 트랜잭션 서명 (서명 순서 무관하고 동시 병렬 처리 가능)
$ psbt1=$(bitcoin-cli -rpcwallet="" walletprocesspsbt $psbt | jq -r '.psbt')
//{
// "psbt": "cHNidP8BAFICAAAAAadaQfNfCJ2znaAYJVHCo/sY9P+sNsGn+qLoGxWZ04biAAAAAAD/////ATDmAgAAAAAAFgAU3c5jKFLZix5fkfYbSfjxnebiBvgAAAAAAAEAcgIAAAABqanm/G18G7hm/W0CFddW+XF+vAagTDnpyMof9j24L+IBAAAAAP7///8CQA0DAAAAAAAXqRSYt2bFjhDSNeyNsprBT9fj8lSpKIdZmBUAAAAAABYAFHzidnhplic9pJQ9IcYETLpeLxhoEV8hACICAx6RZM4mq5ThPnowTBdvXaBGxXL3827fNuWJA1XWaaDhRzBEAiAhm0nDLQ5hB5gOv4niLeIZR2ggC4+A2M57vwkd/x+CAgIgYPAOzRA0V+dA+fcXeZDxEFxpBfD8ZVlr3/Bp9JWK0wIBAQRHUiEDHpFkziarlOE+ejBMF29doEbFcvfzbt825YkDVdZpoOEhArrIrXqdys9KzK3krcEAVjpWp2rluW7e9VTkh3jZNyxJUq4iBgK6yK16ncrPSsyt5K3BAFY6Vqdq5blu3vVU5Id42TcsSQSt7TAcIgYDHpFkziarlOE+ejBMF29doEbFcvfzbt825YkDVdZpoOEQnRRW7wAAAIAAAACAKwAAgAAiAgKXtxhAHtScAoJTmUPEF0BGiZR/KcunJbzkUbzcaJRpyhCdFFbvAAAAgAAAAIAsAACAAA==",
// "complete": false
//}
// 서명이 수행되면, partial_signatures 안에 public key와 signature가 표시됨
$ bitcoin-cli decodepsbt $psbt1
... 일부 ...
"partial_signatures": {
"031e9164ce26ab94e13e7a304c176f5da046c572f7f36edf36e5890355d669a0e1": "30440220219b49c32d0e6107980ebf89e22de2194768200b8f80d8ce7bbf091dff1f8202022060f00ecd103457e740f9f7177990f1105c6905f0fc65596bdff069f4958ad30201"
},// [월렛2]에서 PSBT 트랜잭션 서명 (병렬 처리 가능)
// 주의: walletpassphrase로 먼저 월렛을 Open 해야한다.
// Open 되지 않은 경우, 에러 없이 서명만 되지 않는다.
$ psbt2=$(bitcoin-cli -rpcwallet="test2" walletprocesspsbt $psbt | jq -r '.psbt')
//{
// "psbt": "cHNidP8BAFICAAAAAadaQfNfCJ2znaAYJVHCo/sY9P+sNsGn+qLoGxWZ04biAAAAAAD/////ATDmAgAAAAAAFgAU3c5jKFLZix5fkfYbSfjxnebiBvgAAAAAAAEAcgIAAAABqanm/G18G7hm/W0CFddW+XF+vAagTDnpyMof9j24L+IBAAAAAP7///8CQA0DAAAAAAAXqRSYt2bFjhDSNeyNsprBT9fj8lSpKIdZmBUAAAAAABYAFHzidnhplic9pJQ9IcYETLpeLxhoEV8hAAEER1IhAx6RZM4mq5ThPnowTBdvXaBGxXL3827fNuWJA1XWaaDhIQK6yK16ncrPSsyt5K3BAFY6Vqdq5blu3vVU5Id42TcsSVKuIgYCusitep3Kz0rMreStwQBWOlanauW5bt71VOSHeNk3LEkQ3gk7LQAAAIAAAACABQAAgCIGAx6RZM4mq5ThPnowTBdvXaBGxXL3827fNuWJA1XWaaDhBHw4MXIAAA==",
// "complete": false
//}
// 서명이 수행되면, partial_signatures 안에 2번째 서명 표시된다.
$ bitcoin-cli decodepsbt $psbt2
... 일부 ...
"partial_signatures": {
"02bac8ad7a9dcacf4accade4adc100563a56a76ae5b96edef554e48778d9372c49": "304402205851976f710595904423057757a6f742cd84dd4df6c5903cb8c7c1a96d2f0ce2022041afa4fe06942dd61c9452e239d51f2639d82c0b67cbbdf2428a352ae92bbd9701"
},// combinepsbt 명령을 복수 개의 서명들을 하나로 합친다.
$ psbtall=$(bitcoin-cli combinepsbt '''["'${psbt1}'","'${psbt2}'"]''')// analyzepsbt 명령으로 finalizer 가능한 지 체크한다.
$ bitcoin-cli analyzepsbt $psbtall
{
"inputs": [
{
"has_utxo": true,
"is_final": false,
"next": "finalizer"
}
],
"estimated_vsize": 299,
"estimated_feerate": 0.00033444,
"fee": 0.00010000,
"next": "finalizer"
}// finalizepsbt 명령으로 finalize 수행
$ finaltx=$(bitcoin-cli finalizepsbt $psbtall | jq -r '.hex')// Send Transaction
$ bitcoin-cli sendrawtransaction $finaltx
- createpsbt를 통해 PSBT 트랜잭션을 생성한다.
- wallet1과 wallet2에서 해당 트랜잭션에 대해 각각 서명이 이루어진다.
- combinepsbt를 활용해 여러 개의 서명을 하나로 합친다.
- analyzepsbt를 통해 finlizer가 가능한지 확인한다.
- finlize가 가능한 상태라면 finalizepsbt 명령을 통해 finalize를 수행한다.
- 트랜잭션을 브로드캐스트한다.
4.4.2 오디널스 마켓플레이스 작동방식
2-Dummy UTXO Algorithm
Ordinals는 사토시에 특정 데이터를 Inscribe하고 이 사토시를 바탕으로 거래가 이루어진다. 이때 토큰이나 Ordinals가 실제로 발행되는 것이 아니기 때문에 Inscribe가 된 사토시가 실수로 거래 수수료로 사용되는 경우가 발생한다. 따라서 이러한 일을 방지하기 위해 Ordinals 마켓플레이스들을 2-Dummy UTXO Algorithm이라는 것을 사용한다. 이는 NFT의 offset을 특정 위치로 설정하는데 관례적으로 offset(NFT 또는 다른 암호화폐 자산이 블록체인 내 특정 위치에 저장되어 있는 지점)을 0으로, postage(NFT 또는 다른 자산을 전송할 때 필요한 네트워크 수수료)를 10k sats으로 설정하여 이루어진다.
마켓플레이스 작동 과정
1.판매자
SIGHASH_SINGLE | ANYONECANPAY
를 활용하여 단일 PSBT에 서명한다.
2.구매자
SIGHASH_DEFAULT
를 사용하여 전체 PSBT를 서명한다. 이때 판매자의 서명을 제외한 모든 정보에 접근이 가능하다.
3.플랫폼
- 판매자의 서명을 검증한다.
- 구매자의 서명을 검증한다.
- 판매자와 구매자의 서명을 결합한다.
- 해당 PSBT를 Finalize하고 멤풀 승인 테스트를 실행한다.
- 트랜잭션을 브로드캐스트한다.
4.5 Rare Sats Exchange
오디널스 중 특별한 Number를 가진 Sats들을 Rate Sat라 하고 이를 따로 구매할 수 있는 마켓플레이스가 존재한다.
4.5.1 MagicEden
Satributes에서 Rare Sats의 종류들을 확인할 수 있다. 또한 관심 있는 Rare Sat들을 클릭해서 중복 필터를 적용 시킬 수 있다. Rare Sat 아이콘을 클릭 시 상세한 설명을 확인할 수 있는데, 현재 위의 Rare Sat 같은 경우에는 Palindrome으로 Sat Number가 좌우 대칭임을 확인할 수 있다.
Sat Number = 1462860990682641 (14628609 | 90682641)
4.5.2 Magisat
Magisat 역시 다양한 Rare sat을 구매할 수 있는 마켓플레이스 중 하나이며, Palindrome, Alpha, Sequence Pali, Omega, Black Uncommon 등 다양한 Rare sat들이 거래되고 있음을 확인할 수 있다.
4.5.3 Saturn
Saturn은 Rare Sat간의 스왑이 가능한 De-Fi 플랫폼이다. Saturn은 Rare Sat 간의 스왑을 오더북 방식으로 지원하며, Saturn에 접속한 후 내가 소유한 Rare Sat과 원하는 Rare Sat을 설정한 후 스왑이 가능하다.
또한 Saturn은 Rare Sats의 지정가 주문이 가능한데, Limit 창에 접속해서 매수/매도하려는 Rare Sat을 클릭하고 원하는 지정가를 입력한 뒤 Swap을 클릭한다. 이후 네트워크 수수료율은 선택하면 호가창에 내가 설정한 Rare Sat이 등록되게 된다.
4.6 De-Fi
비트코인에는 스마트 컨트랙트가 없다는 단점이 있지만, 이를 극복하기 위한 방안으로 다양한 De-Fi 플랫폼들이 등장하고 있다. Liquidium은 P2P 비트코인 대출이 가능한 De-Fi 플랫폼이다.
4.6.1 Liquidium 소개
Liquidium의 일일 거래량은 2024.03.24 기준 147.92 BTC이다. Ordinals 생태계의 디파이 중에서는 매우 활발하게 작동하고 있음을 확인할 수 있다. 또한 nodemonkeys, bitcoin puppets, quantum_cats, omb가 플랫폼 내에서 큰 비중을 차지하고 있음을 확인할 수 있다.
사용자는 Ordinal Inscriptions(Ordinals)라는 고유한 비트코인 기반 자산을 담보로 사용하여 비트코인을 빌리거나 빌려줄 수 있다. 이는 모두 레이어 1 비트코인에서 **Partially Signed Bitcoin Transactions (PSBT) 및 Discreet Log Contracts (DLCs)**을 통해 가능하다.
4.6.2 Liquidium Lending 방식
Deep Lake에서 개발한 Ordinals Lending V1을 먼저 살펴보자. 먼저 차용인이 자신의 오디널스 자산을 바탕으로 대출을 요청한다. 이후 대출 기관이 요청을 수락한다. 이후 스크립트가 생성되고 이곳에 마켓플레이스 수수료가 추가된다. 위의 모든 과정은 PSBT를 기반으로 이루어지고 이후 차용인과 대출기관이 요청에 서명을 하면 해당 트랜잭션이 비트코인 네트워크에 브로드캐스트된다.
두번째 Ordinals Lending V2 방식이다. 대출 기관이 체인에 BTC를 락하여 대출을 승인한다. 이후 이 PSBT는 BTC vault 1에 브로드캐스트된다. 대출자는 이전에 승인된 BTC vault를 사용하여 대출을 요청한다. 첫 번째 BTC Vault 1과 두 번째 대출자의 Ordinal Asset이 PSBT를 통해 비트코인 네트워크에 브로드캐스트된다.
위의 PSBT에서는 3가지 엔드포인트가 사용된다. 오디널스 같은 경우에는 스마트 컨트랙이 존재하지 않기 때문에 에스크로를 활용하여 한계점을 보완하고 있다.
Escrow endpoints
- Create Escrow
Asset endpoints
- Create Asset
Outcome endpoints:
- Create Outcome
먼저 Create the Escrow를 활용하여 에스크로 거래를 생성한다.
const headers = { Authorization: MY_COMPANY_API_KEY };
const data = {
collateral: {
assets: [],
},
};
const { data: escrow } = await axios.post(
`${DEEP_LAKE_REST_API_URL}/escrows`,
data,
{ headers}
);
다음으로 오디널스 자산을 담보물로 에스크로에 락한다.
const headers = { Authorization: MY_COMPANY_API_KEY };
const data = {
collateral: { id: escrow.collateral.id },
type: "btc.utxo", // 오디널스를 담보물로 사용
content: {
meta: {
amount: "1000"
},
node: {
id: "ecb714f01e247a46cd39e92d2b349c940c7f68bd275d9bc8b196c77159aa2f85",
value: "tb1puk67w7gd389mwm0tn97dg3jrdalts8fdc368akq2vqvwsp2m3d7qahuwk6",
sequence: 0,
publicKey:
"36260aee1a40d5148860e63aa659f4d7c157b62b0b597b0392394d5aca5a7e12",
},
},
action: {
configuration: {
paths: [
{
fn: "identity",
tag: "repay", // 상환
args: [
"03559ad6902ae6f93103038078c0c01934fe1a551273d433c303e03658b117daa6",
],
addresses: [
{
type: "receive",
value:
"tb1puk67w7gd389mwm0tn97dg3jrdalts8fdc368akq2vqvwsp2m3d7qahuwk6",
},
],
},
{
fn: "time",
tag: "liquidate", // 청산
args: [
"2023-09-13T22:34:12Z", // 날짜
"032d5beef9cc3bda7c083e6fb5a19d020f3c7e8a07155755ef0a9ec4f62efc63ea",
],
addresses: [
{
type: "receive",
value:
"tb1p2kap5msfakxsnfacywnp6qwppza0cpk2423krtekhdek88sfdqtse2fkf0",
},
],
},
],
},
type: "lock", // 자산의 현재 처리 상태 식별
},
addresses: [
{
type: "change",
value: "tb1puk67w7gd389mwm0tn97dg3jrdalts8fdc368akq2vqvwsp2m3d7qahuwk6",
},
],
};
const { data: asset } = await axios.post(
`${DEEP_LAKE_REST_API_URL}/assets`,
data,
{
headers,
}
);
위의 에스크로 코드에서 type: “btc.utxo”는 오디널스를 담보물로 사용한다는 의미이고 아래 amount는 그 개수를 의미한다. “repay”는 상환, “liquidate”는 청산을 의미하며 type: “lock”은 자산의 현재 식별 상태로, 현재 자산이 lock되어 있음을 확인할 수 있다.
DLC(Discreet Log Contracts)는 스마트 컨트랙이 가지고 있는 확장성 및 프라이버시 문제를 해결하고 외부 데이터를 제공하는 오라클에 대한 신뢰를 최소화하는 시스템이다. 자세한 내용은 해당 논문을 참조하자.
4.7 다양한 한계 극복 시도
비트코인에는 스마트 컨트랙트가 존재하지 않아 스테이킹이 현재 불가능하지만, 이를 극복하기 위해 다양한 방안이 제시되고 있다. 이는 사전에 미리 이자율과 기간을 설정한 후, 일정시간 동안 에스크로를 활용하여 오디널스 자산을 락해놓고 해당 기간이 모두 지나면 락을 해제하는 식으로 이루어진다.
Create the staking escrow:
const headers = { Authorization: MY_COMPANY_API_KEY };
const data = {
fee: 200,
staker: {
utxo: {
id: "dfca815a2f9b25df446e851d4a6ac98ed0ecf8cd871e12998052bc2a66de859e",
sequence: 0,
},
ordinal: {
value: "tb1p2kap5nsfakxsnfacywnp6qwppza0cqk2423krtekhdek88sfdqtse2fkf1",
publicKey:
"03d0bc04edde7d0e515bd69e01b01275b760a49f7b2bb5e8baad3d6820ea632bbd",
},
cardinal: {
value: "2N1mLRYwgHDPFUvUYaAbBh1FDjqY9cVraDN",
publicKey:
"1527224d68008a5b8f8cq4ffc10cb7f347d0374cb2fd4357e30c4b27afe89bca",
},
},
expiry: "2023-09-21 18:25:29.812238",
product: {
id: 11,
},
};
const { data: escrow } = await axios.post(
`${DEEP_LAKE_REST_API_URL}/flows/execute`,
{ data },
{ headers }
);
먼저 Create the staking escrow를 활용하여 에스크로를 생성하고 오디널스 자산을 스테이킹 한 후 만료 기간을 설정한다.
Sign and broadcast the staking escrow:
const qs = require("qs");
const headers = { Authorization: MY_COMPANY_API_KEY };
const data = {
state: "broadcast-stake",
transactions,
product: {
id: 11,
},
};
const where = qs.stringify({ where: { id: flow.id } });
const { data: escrow } = await axios.post(
`${DEEP_LAKE_REST_API_URL}/flows/execute?${where}`,
{ data },
{ headers }
);
이후 해당 에스크로에 서명을 진행하여 트랜잭션을 브로드캐스트한다.
Unlock the staking escrow:
const headers = { Authorization: MY_COMPANY_API_KEY };
const data = {
state: "unstake",
fee: 200,
index: 0,
product: {
id: 11,
},
};
const where = qs.stringify({ where: { id: flow.id } });
const { data: escrow } = await axios.post(
`${DEEP_LAKE_REST_API_URL}/flows/execute?${where}`,
{ data },
{ headers }
);
Unlock the staking escrow를 활용하여 스테이킹된 자산의 락을 해제할 수 있다.
Sign and broadcast the unlock:
const headers = { Authorization: MY_COMPANY_API_KEY };
const data = {
state: "broadcast-unstake",
transactions,
product: {
id: 11,
},
};
const where = qs.stringify({ where: { id: flow.id } });
const { data: escrow } = await axios.post(
`${DEEP_LAKE_REST_API_URL}/flows/execute?${where}`,
{ data },
{ headers }
);
스테이킹된 자산의 락을 해제한 후 해당 트랜잭션을 서명하여 다시 브로드캐스트하는 식으로 이루어진다.
5. 마치며
비트코인은 명실상부하게 가장 시가총액이 크고, 탈중앙적이며, 보안이 강력한 체인이며 그것을 넘어 블록체인 업계를 상징하는 하나의 아이콘이자 지표이기도 하다. 다만, 스마트 컨트랙트가 지원되지 않는 특성상 단순히 ‘디지털 금’으로만 취급되어 왔었는데, Casey rodarmor가 제시한 Ordinals protocol(및 Runes protocol)은 이러한 비트코인 L1 체인 위에서 다양한 시도를 할 수 있는 기회를 열어주었다는 점에서 큰 의의가 있다. 또한 불과 다음 반감기를 2주 앞두고 있는 상황에서 채굴자들에게 지속적인 수익을 어떻게 만들어 낼 것인가에 대한 해결책이 될 수도 있을 것이다.
Ordinals NFT의 등장으로 인해 생기고 있는 PFP 생태계도 유심히 쳐다볼 가치가 있다. 이미 이더리움 NFT 프로젝트들은 Ordinals 등장으로 기존 내러티브를 잃고 가치를 빼앗기고 있다. Ordinals가 NFT 시장의 파이를 얼마나 빼앗아 갈 수 있을지, 기존 이더리움과 솔라나 NFT 생태계들은 그것을 지킬 수 있을지, 어떤 결론이 나오든 NFT 시장엔 큰 지각 변동이 일어날 것임이 분명하다.
하지만 스마트 컨트랙트가 지원되지 않는 비트코인 체인 특성상 한계점 또한 명확하다. NFT를 다양한 유틸리티에 사용하는 것 이전에 단순한 NFT 스테이킹 조차 되지 않는 현 상황이 해결되지 않으면 Ordinals NFT들은 단순 디지털 럭셔리 아티팩트로서의 가치를 가지는 데에서 그칠 것이다. BitVM 등 이 문제를 해결 할 수 있는 솔루션이 나온다면 한단계 더 진보된 생태계를 만들어 낼 수 있을 것이라 기대한다.
6. Reference
- https://www.theblock.co/data/nft-non-fungible-tokens/nft-overview/nft-trade-volume-by-chain
- https://www.cryptoslam.io/blockchains
- https://www.blockchain.com
- https://geniidata.com/user/orddata/ordinals-transaction-share
- https://river.com/learn/what-is-segwit/
- https://river.com/learn/terms/p/pay-to-taproot-p2tr/
- https://docs.ordinals.com/overview.html
- https://www.galaxy.com/insights/research/bitcoin-ordinals-inscriptions-5-billion-nft-market/
- https://domo-2.gitbook.io/brc-20-experiment
- https://www.youtube.com/watch?v=IS406ToIRo4&t=336s
- https://docs.ordinals.com/runes
- (19) Ordinals Global on X: “Bitcoin Ordinals Ecosystem Map 🟧 It’s crazy that all this has been achieved in just 10 months! Respect the buildooors 🫡 Let us know if we missed anything or what you want to see more of! https://t.co/jdNua4Srax" / X (twitter.com)
- https://www.xverse.app/
- https://unisat.io/
- https://sparrowwallet.com/features/
- https://wallet.magiceden.io/
- https://www.theblock.co/data/nft-non-fungible-tokens/marketplaces/ordinals-marketplace-volumes
- https://www.okx.com/web3/marketplace/nft
- https://medium.com/fourpillars/brc-20-비트코인-네트워크에-활력을-불어넣다-c2a774e91cb7
- https://gamma.io/learn/blockchain/bitcoin/what-is-a-psbt
- https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki
- http://cryptostudy.xyz/crypto/article/272-부분서명-PSBT
- https://github.com/magicoss/msigner
- https://magiceden.io/ordinals/marketplace/rare-sats
- https://magisat.io/
- https://www.saturnbtc.io/app/swap/piz-sat
- https://saturn-1.gitbook.io/saturn-overview
- https://liquidium.gitbook.io/liquidium-v0.3-1/more/misc
- https://app.liquidium.fi/ordinals
- https://lookerstudio.google.com/embed/u/0/reporting/9f3de8d7-02b3-4725-a6fa-33d9cbf3dc1c/page/p_m15fnqtofd
- https://developers.deeplake.fi/deep-lake-btc-defi/guides/ordinals-lending
- https://adiabat.github.io/dlc.pdf
- https://developers.deeplake.fi/deep-lake-btc-defi/flows-api/digital-assets