Cregis Research:解读BRC-20的
解读比特币Oridinals协议与BRC20标准 原理创新与局限
“The Times 03/Jan/2009 Chancellor on brink of second bailout for banks.”
——比特币创世区块
最近BTC上手续费区块收入占比最高到74%,大约4.85 BTC手续费,而仅仅两个月前才2%左右,源于数个百倍币的诞生以及大众fomo的情绪,让BRC20的市场迎来爆发,5月7日 Bitcoin 网络上有超过 40 万笔交易待确认,虽然他和我们熟知的ERC20虽然都被称为代币标准,但是实现的机制原理差异巨大,本文将从技术视角尝试解读其实现以及价值。
1.Ordinals协议的核心思想
1.1、概述
每一枚比特币都是由一亿个「聪(Satoshis)」构成 (1 btc = 10^8 sat),这些sat每一个都有唯一标识且无法分割。
1、根据比特币里面sat的「序数(ordinal)」。
2、赋予每一个聪特定的含义「Inscriptions(铭刻)」这就是Ordinals协议。
2、聪是如何编号的?
他借由比特币独特的出块流程和UTXO模型,从而让每一个「聪(sat)」具有独特的编号。比特币是在「挖矿」中产生的,挖矿过程是矿工通过解决复杂的数学问题(POW)获得出块权,来验证新交易并添加到区块链中,比特币网络每10分钟左右会生成一个新的区块,每个区块包含一组新的交易和之前区块的哈希值,其中矿工的收益又被称为Coinbase区块在以太坊中采用“账户余额模型”,即每个地址有单独的存储结构和空间余额(balance)便是其中的一个字段。这种模型的优点是:
- 简单,非常容易理解和编码实现。
- 高效,每笔交易只需要验证发送账户是否有足够的余额来支付交易;
缺点:会出现双重支出攻击。可拓展阅读:【前沿解读】斯坦福研究员论文-以太坊可逆交易标准ERC20/721R的机制、创新与局限
但是比特币网络不同,他账户的余额并不是由一个数字表明,而是由当前区块链网络中所有跟当前账户有关的UTXO(未花费的交易输出)组成。
2.1、比特币的 UTXO 模型
UTXO(Unspent Transaction Output)是一种账本模型,在比特币系统中,每一笔交易都会产生一些输出,比如转账交易的输出就是接收方的比特币地址和转账金额。这些输出被存储在 UTXO 集合中,用于记录未花费的交易输出。每一笔交易都由若干个输入(Input) 和若干个 输出(Output) 构成。每一笔交易都要花费一笔输入,产生一笔输出,而其所产生的输出,就是“未花费过的交易输出”;一个Input指向的是前面区块的某个Output,只有Coinbase交易没有输入,只有凭空输出。UTXO 模型的优点是更加安全和隐私保护,因为它没有中心化的账户记录和传统账户模型可能泄露的账户余额信息。UTXO 模型的缺点是增加了交易的验证成本和存储成本。每次交易时都需要验证交易的支付和接收是否合法,同时也需要存储大量的 UTXO 信息。所以任何交易,总是可以由Input溯源到Coinbase交易 继而追溯每一个聪被挖矿挖出时的序号。
所以我们说自己有多少比特币(bitcoin)实际上是指的我们拥有所有权的那些UTXO中所指明的比特币(bitcoin)的数量,因此如果我们想要统计一个地址的BTC数量:
- 从创始块开始扫描;
- 遇到某笔交易的某个output是指定的地址,余额增加;
- 遇到某笔交易的某个input是指定的地址,余额减少;
2.2、sat和UTXO的关系
注意是每一个sat不是UTXO! 由于UTXO是不可再分的最小交易单元,因此sat只能存在于UTXO中,且UTXO包含了一定范围的sats,且只能在花费某一UTXO后产生新的输出中对sats编号进行拆分
比如我在创世块或者CoinBase区块获得了50个BTC的奖励,对应的Input和Output则是
如果我进行一笔20BTC的转账给B地址,则UTXO集中会呈现,这里的input是上一笔的output
这里的sats消耗顺序,是基于FIFO"先进先出"(First-In-First-Out )原则,在交易费用相同的情况下,较早的UTXO将比较晚的UTXO更优先被用于交易。这些就是Ordinal NFT的核心技术支撑,非常的简洁但是却能衍生出很多好玩的东西! 这个Ordinal Number甚至可以用来表示域名等。
2.3、Ordinal number的表示方法
Ordinal Number则有很多种表示方式,比如度数表示法(Degree Notation)