
一文系统地理解比特币地址相关的知识体系
作者:付少庆,SatoshiLab,万物岛BTC工作室 1. 准备知识 1.1. 非对称加密知识与公私钥 1.2. 比特币中常用的哈希算法 1.3. 常见编码知识Base64、Base58、Bench32 1.4. 数字货币地址产生的基础原理 2. 比特币地址的相关协议 2.1. 三个核心协议(BIP-32、39、44)与相关协议 2.2. 地址格式协议与演进协议 3. 比特币的地址类型与锁定脚本类型 3.1. 支付到公钥哈希P2PK 3.2. 支付到公钥哈希P2PKH 3.3. 支付到多签P2MS 3.4. 支付到脚本哈希P2SH 3.5. 支付到包裹的见证公钥哈希P2SH-P2WPKH 3.6. 支付到包裹的见证脚本哈希P2SH-P2WSH 3.7. 支付到见证公钥哈希P2WPKH 3.8. 支付到见证脚本哈希P2WSH 3.9. 支付到Taproot地址 P2TR 4. 比特币交易中的派生路径地址与隐私保护 4.1. 比特币的交易变化历史 4.2. 常见的已知派生路径定义 4.3. 隐私保护与多地址使用 参考文献1.准备知识在完全理解各种数字货币钱包地址之前,我们需要一些基...

Summarizes the basic knowledge system of Bitcoin Layer2 construction(V2.0)
Author: Fu Shaoqing, SatoshiLab, ThreeDAO BTC Studio 1. Common missions of Layer 21.1. Basic characteristics and basic requirements of blockchain1.2. The role of layer2 construction1.3. Why do we need layered design?2. Several constructions for Bitcoin Layer22.1. Second-layer construction based on chains2.2. Second-layer construction based on distributed systems2.3. Second-layer construction based on centralized systems2.4. The second layer in a broader sense and the applications on the upper...

第三次隔离见证TAP的发展是否将比特币带入了2.0阶段
MiYou is a next-generation email Ecosystem built on blockchain and AI. The products include four major sectors: blockchain mailbox; marketin

一文系统地理解比特币地址相关的知识体系
作者:付少庆,SatoshiLab,万物岛BTC工作室 1. 准备知识 1.1. 非对称加密知识与公私钥 1.2. 比特币中常用的哈希算法 1.3. 常见编码知识Base64、Base58、Bench32 1.4. 数字货币地址产生的基础原理 2. 比特币地址的相关协议 2.1. 三个核心协议(BIP-32、39、44)与相关协议 2.2. 地址格式协议与演进协议 3. 比特币的地址类型与锁定脚本类型 3.1. 支付到公钥哈希P2PK 3.2. 支付到公钥哈希P2PKH 3.3. 支付到多签P2MS 3.4. 支付到脚本哈希P2SH 3.5. 支付到包裹的见证公钥哈希P2SH-P2WPKH 3.6. 支付到包裹的见证脚本哈希P2SH-P2WSH 3.7. 支付到见证公钥哈希P2WPKH 3.8. 支付到见证脚本哈希P2WSH 3.9. 支付到Taproot地址 P2TR 4. 比特币交易中的派生路径地址与隐私保护 4.1. 比特币的交易变化历史 4.2. 常见的已知派生路径定义 4.3. 隐私保护与多地址使用 参考文献1.准备知识在完全理解各种数字货币钱包地址之前,我们需要一些基...

Summarizes the basic knowledge system of Bitcoin Layer2 construction(V2.0)
Author: Fu Shaoqing, SatoshiLab, ThreeDAO BTC Studio 1. Common missions of Layer 21.1. Basic characteristics and basic requirements of blockchain1.2. The role of layer2 construction1.3. Why do we need layered design?2. Several constructions for Bitcoin Layer22.1. Second-layer construction based on chains2.2. Second-layer construction based on distributed systems2.3. Second-layer construction based on centralized systems2.4. The second layer in a broader sense and the applications on the upper...

第三次隔离见证TAP的发展是否将比特币带入了2.0阶段
MiYou is a next-generation email Ecosystem built on blockchain and AI. The products include four major sectors: blockchain mailbox; marketin

Subscribe to MiYou

Subscribe to MiYou
Share Dialog
Share Dialog
<100 subscribers
<100 subscribers


作者:MiYou,SatoshiLab,万物岛BTC工作室
目录
比特币原有技术的主要探索与冲突
1.1. 比特币的脚本语言与几次删减指令
1.2. 比特币分叉历史、原因与意义
1.3. 比特币发展中的几个典型探索
1.4. 比特币的不完美与分层协议
比特币发展中的重要新技术(区块扩容与能力扩容)
2.1. OP_RETURN、Segwit、Taproot
2.2. Schnorr、MAST、Taproot Scripts
2.3. Ordinals、Inscriptions、BRC20以及其他协议
新技术的使用方法和未来需要的发展
3.1. 新技术的使用方法
3.2. 未来发展的需求 参考文献说明

比特币的原有技术一直存在大规模应用与比特币应该具有的能力的冲突问题。大规模应用和交易规模是否意味着更复杂的交易指令和更大的交易空间?是否意味着一定要在比特币单一系统上实现所有的功能?在早期,比特币生态技术发展不完善的情况下,这些现象似乎都是比特币本身的问题。随着技术的发展,很多问题会得到更清晰的答案。
在本文中列出一些相关问题,以及对这些问题的产生与解决过程。通过这篇文章,可以看到这些问题与技术之间的关联性,以及比特币主链与相关“测试链”的变化过程。比特币的技术一直被不同的项目与团队在探索中(包括以太坊都是对比特币不完善的一种探索),只是在比特币主网上产生的变化一直不够明显,直到Taproot等技术的产生,推动了Ordinals协议等协议产生之后,重新进入了一个新的发展高潮。
从整体看这些发展过程与产生的相关技术,我们能够看到他们之间的联系,可以推测出更多发展方向与整体架构。
比特币的编程语言是一种逆波兰范式的脚本语言,没有循环语句和条件控制语句(稍后看Taproot&Taproot Script扩充了这块能力)。因此,人们常说:比特币脚本语言不是图灵完备的,这导致比特币脚本语言,有一定的局限性。
当然,由于这些局限性,黑客就没办法使用这种脚本语言写一些死循环(会造成网络瘫痪),或者一些能导致DOS攻击的恶意代码,也就避免了比特币网络受到DOS攻击。比特币的开发者,也认为核心区块链,不应该具备图灵完整性,来避免一些攻击和网络堵塞。
但是,也正是由于这些局限性,比特币网络,没有办法运行其他复杂的程序了,没办法完成一些“有用”的功能。而后面发展的一些区块链系统,为了解决具体问题,满足用户的需求,直接改变了这点。如,以太坊使用的语言就具备了图灵完备。
比特币脚本指令常见的类型: 关键字:
常数。如:OP_0,OP_FALSE
流程控制。如:OP_IF,OP_NOTIF,OP_ELSE,……
堆栈。如:OP_TOALTSTACK(把输入压入辅堆栈的项部,从主堆栈删除),……
字符串。如:OP_CAT(连接两个字符串,已禁用),OP_SIZE(把栈顶元素的字符串长度压入堆栈(无需弹出元素))
位逻辑。如:OP_AND,OP_OR,OP_XOR
算术逻辑。如:OP_1ADD(输入值加1),OP_1SUB(输入值减1)
加密。如:OP_SHA1(输入用SHA-1算法HASH.),OP_CHECKSIG()
伪关键字
保留关键字 比特币脚本指令常见的类型:
脚本:
支付到比特币地址的标准交易(pay-to-pubkey-hash)
标准比特币产生交易(pay-to-pubkey)
可证明的无法花掉/可删除的输出
Anyone-Can-Spend输出
猜谜交易 五个标准类型的交易脚本包括:支付到公钥哈希(P2PKH)、支付到公钥、多重签名(限定最多15个密钥)、支付到脚本哈希(P2SH),以及数据输出(OP_RETURN)。
在网页:https://en.bitcoin.it/wiki/Script 中有详细的说明。
删减比特币支持的指令
比特币历史上有多次删减指令的事情发生。下面的图表中,红色部分是已经删减掉的指令。
(1)字符串操作

(2)

(3)算术操作

为什么要删减指令?安全性只是一方面的考虑,如果我们用分层设计的思想看待删减指令会理解其合理性,这样做能让底层协议更基础更稳定。也许中本聪一开始就意识到了这个问题,不然不会主动的删减指令。我们常人的思维是建造一个直接满足用户的需求,具有完善指令和系统功能的小系统,而不是一个需要协作的大型协议。
这样也就造成了一种事实,只有比特币适合作为一层网络。我在《比特币价格过高会促生一个新的替代链产生》文章中分析过这种现象,从经济学视角和技术视角分析,有产生比特币替代链的可能性。但从比特币的基本特点和分层设计的角度,几乎只有比特币能够作为一层网络基础设施,即使有替代链也是一个1.5层的产物。在一层网络这个层面,真品只有比特币,能有一些替代作用的链最多是A货。
在比特币的发展历史,除了删减指令问题,另一方面是区块大小之争,这经常造成比特币的硬分叉。
BTC创立之初并没有限制区块大小,以便能够在相同时间处理的交易笔数。但当早期BTC价格非常低,恶意交易的成本也非常低,为了解决这一问题,中本聪在2010 年9月12 日主持了一次软分叉,添加了区块体积不得超过1MB的限制。中本聪指出但这种限制是临时性的,未来可以以可控和逐步的方式提高区块限制,以便满足扩容的需要。
下图为比特币的分叉历史:

随着比特币的流行,网络交易拥堵和确认时间增长问题愈发严重。2015年Gavin Andresen 和 Mike Hearn宣布将在新版BitcoinXT中实现BIP-101提案,希望将区块上限提高至8MB。而Greg Maxell,Luke Jr,Pieter Wuille等核心开发者则持反对意见,认为这种做法会提高运行全节点的门槛,而且带来不可控的影响。这场争论最终在议题和参与范围均出现了扩大化。
从上面的内容,我们看到中本聪也表达了“区块大小这种限制是临时性的,未来可以以可控和逐步的方式提高区块限制,以便满足扩容的需要。”但什么时候分叉支持更大区块,单独分出一条链支持大区块是否可以解决问题?在不断的争议中,也产生了众多的案例。如,BCH区块大小是8M,后来又增加的32M。BSV区块大小是128M。而除了BCH(和后面的BSV)以外,这一时期还出现了许多其它BTC分叉币,据BitMEXResearch,仅在BCH分叉后的一年内,就出现了至少50种新的分叉币。
稍后的内容我们会看到,在比特币主网上面Segwit和Taproot也在一定程度上将区块的空间从1M提升到了4M。
比特币的分叉是一种发展探索,在尝试通过自身的改变来完成对更多需求的支持。其中有用户需求、矿工需求、投资人需求、开发者需求、……。
中本聪离开后,继承人Gavin Andresen主导建立了Bitcoin Core和Bitcoin基金会。在此期间,针对BTC的可拓展性探索一直存在,尤其是在资产发行领域。
(1)Colored Coins(染色币) eToro首席执行官Yoni Assia在2012年3月27日发表的一篇文章中第一个提出彩色币。这个想法不断发展,在Bitcointalk等论坛上,彩色硬币的概念开始形成并获得关注。最终Meni Rosenfeld于2012年12月4日发布了一份详细介绍彩色货币的白皮书。
染色币的设想是通过给比特币的特定部分添加特殊的标注(即染色),来代表更广泛的资产和价值。染色币在实现上出现了一系列实体,大致分为两类:
1)基于OP_RETURN:如Flavien Charlon在2013年提出的Open Assets,利用OP_RETURN(在Bitcoin v0.9.0中被提出,可以用于在Bitcoin上存放少量的数据,最初的限制为40bytes,后提高至80bytes)。操作码存储到脚本中,并通过外界读取的方式来完成“染色”和交易。(这种模式与Ordinals依靠外部索引确定资产合法性类似)。
2)不基于OP_RETURN:典型代表是ChromaWay在2014年提出的EPOBC Protocol,EPOBC资产的额外信息存储在比特币交易中的nSequence字段,每个EPOBC资产的类别和及合法性需要追溯到genesis交易来确定。
(2)MasterCoin(OMNI) JR Willett 在2012年1月6日发布了MasterCoin的设想,并取名“比特币第二份白皮书”,并在2013年7月通过ICO的方式正式启动项目,最终募集到了5120个BTC(当时价值50万美元)。MasterCoin和Colored Coins区别在于它建立了一个完整的节点层,通过扫描比特币区块来维护状态模型数据库,该数据库驻留在区块链之外的节点中。这种设计可以提供比Colored Coins更复杂的功能,例如创建新的资产、去中心化交易所、自动化价格反馈等。2014年,Tether也通过Mastercoin协议在比特币上推出了稳定币,即我们熟知的Tether USD (OMNI)。
(3)Counterparty Counterparty于2014年正式推出。Counterparty也使用OP_RETURN将数据存储至BTC网络中。但与染色币不同,资产在Counterparty不是以UTXO的形式存在,而是通过OP_RETURN载入信息来表明资产的转移,当一个资产持有者使用持有地址对歹有特殊数据的交易进行签名后,资产便完成了转移。通过这种方式,Counterparty可以实现资产的发行、交易以及兼容以太坊智能合约的平台。
除此以外,也有观点认为Ethereum、Ripple和BitShares也属于更广义的“Bitcoin2.0”。
比特币系统的不完善(或局限性)主要表现在几个方面(本文中的不完善是根据以太坊白皮书中的总结,并非是真正的不完善。):
1.比特币的账户系统UTXO
在当前的区块链项目中,主要有两种记录保存方式,一种是账户/余额模型,一种是UTXO模型。比特币采用就是UTXO模型,以太坊、EOS等则采用的是账户/余额模型。
在比特币钱包当中,我们通常能够看到账户余额,然而在中本聪设计的比特币系统中,并没有余额这个概念。“比特币余额”是由比特币钱包应用派生出来的产物。UTXO(Unspent Transaction Outputs)是未花费的交易输出,它是比特币交易生成及验证的一个核心概念。交易构成了一组链式结构,所有合法的比特币交易都可以追溯到前向一个或多个交易的输出,这些链条的源头都是挖矿奖励,末尾则是当前未花费的交易输出。
所以现实世界中没有比特币,只有UTXO。比特币的交易由交易输入和交易输出组成,每一笔交易都要花费(spend)一笔输入,产生一笔输出(output),而其所产生的输出,就是“未花费过的交易输出”,也就是 UTXO。
如果要实现智能合约,UTXO这种账户模型存在非常大的问题。以太坊黄皮书的设计者Gavin Wood 对UTXO的理解十分深刻。 以太坊的最大新功能点是智能合约,因为智能合约的考虑,Gavin Wood要基于UTXO去实现图灵完备的智能合约是困难的。而账户模型是天然的面向对象的,对每一笔交易,都会在相对应账户上进行记录(nonce++)。为了易于管理账户,而引入了全局状态,每一笔交易都会改变这个全局状态。这和现实世界是相对应的,每一个微小的改变,都会改变这个世界。因此以太坊使用了账户系统,后期的公链基本都是基于各种类型的账户系统实现的。
UTXO的另一个严重缺陷是,不能为账户的取款额度提供精细的的控制。这点在以太坊的白皮书中有相关的说明。
2.比特币的脚本语言,非图灵完备
尽管比特币脚本语言可以支持多种计算,但是它不能支持所有的计算。最主要的缺失是比特币的脚本语言,没有循环语句和条件控制语句。因此,我们说:比特币脚本语言不是图灵完备的。这导致比特币脚本语言,有一定的局限性。当然,由于这些局限性,黑客就没办法使用这种脚本语言,写一些死循环(会造成网络瘫痪),或者一些能导致DOS攻击的恶意代码,也就避免了比特币网络受到DOS攻击。比特币的开发者,也认为核心区块链,不应该具备图灵完整性,来避免一些攻击和网络堵塞。但是,也正是由于这些局限性,比特币网络,没有办法运行它复杂的程序了。不支持循环语句的目的是避免交易确认时出现无限循环。
为了安全性,不支持图灵完备的理由是不充分的。而且非图灵完备的语言所做的事情很有限。
3.比特币的其他不完善,安全性、扩展性
挖矿的中心化问题,比特币挖矿算法基本上是让矿工千万次地轻微改动区块头,直到最终某个节点的改动版本的哈希小于目标值。然而,这种挖矿算法容易被两种形式的中心化攻击。第一种,挖矿生态系统被专门设计的因而在比特币挖矿这一特殊任务上效率提高上千倍的ASICs(专用集成电路)和电脑芯片控制。这意味着比特币挖矿不再是高度去中心化的和追求平等主义的,而是需要巨额资本的有效参与。第二种,大部分比特币矿工事实上不再在本地完成区块验证;而是依赖中心化的矿池提供区块头。这个问题可以说很严重:当前,排名前三的采矿池间接控制着比特币网络中约50%的处理能力。
扩展性问题是比特币的一个重要问题。使用比特币,每小时增长约1 MB。如果比特币网络每秒处理Visa的2000次交易,则每三秒钟将增长1 MB(每小时1 GB,每年8 TB)。较低的交易次数,也引起比特币社区的争议,大区块链虽然可以提高性能,但问题是中心化风险。
从产品生命周期的角度,比特币一些小的不完善,可以在自身系统中得到改善,改善的方法受到当前系统的限制。但如果可以在一个新系统中解决这些问题,就完全可以不考虑老系统的限制问题。既然要打造一个新的区块链系统,那么设计新系统的时候,这些小的功能完善也一并进行设计与升级改造。
分层设计
分层设计是一种人类处理复杂系统的手段和方法论,通过将系统划分为多个层次结构并定义各层之间的关系和功能,以实现系统的模块化、可维护性和可扩展性,从而提高系统的设计效率和可靠性。
对于一项广泛和庞大的协议体系,使用分层会有明显的好处。这样做使人们容易理解,容易分工实现与容易分模块改进等优点。如计算机网络中的ISO/OSI的七层模型设计,但具体的实现中,可以合并一些分层,例如,具体的网络协议TCP/IP是四层协议。具体说协议分层的优点:各层次之间是独立的、灵活性好、结构上可分割开、易于实现和维护、能促进标准化工作。
从分层协议的角度看,比特币因为要处于最基础的底层,那么他的UTXO、非图灵完备、出块时间长、区块容量小、创始人的消失、……,都不是缺点,反而是作为一层网络应该具有的特点。
注释:作者在《一文梳理比特币二层(Layer2)建设的基础知识体系V1.5版》对协议分层有更详细的说明。
在上一节我们探讨了比特币原有技术的主要冲突和一些探索案例,但很多导致了硬分叉或产生了全新的异构链。在比特币本身这条区块链上,这种探索也产生了很多成果,本质上是区块的扩容与能力的扩容。他们主要表现在以下几个方面。
比特币的开发者一直想扩展比特币的能力,表现在几个方面:
(1)OP_RETURN的使用
OP_RETURN是一个脚本操作码,用来终止脚本并返回栈顶的值。这个操作码类似于编程语言中的返回函数。在比特币的历史上,OP_RETURN操作码的功能被多次修改,现在它主要被用作为在账本上存储数据的一种方法。OP_RETURN操作码的功能曾在过去发生过重大变化,现在它是一个重要的机制,使用它我们就能在链上存储任意数据。
OP_RETURN最初是用于提前结束脚本执行的返回操作,执行结果将作为栈顶项目被呈现出来。这个操作码最初有一个容易被利用的漏洞,但中本聪很快修补了该漏洞。
对OP_RETURN功能的进一步更改
在Bitcoin Core的v0.9.0那次升级中,“OP_RETURN 输出”脚本被制作成标准输出类型,允许用户将数据附加到“不可花费的交易输出(unspendable transaction output)”上。这类脚本中可用的数据量的上限最初被限制为40字节,然后提升至80字节。
将数据存储在区块链上
将OP_RETURN改为始终返回false造成了有趣的结果。由于在 OP_RETURN 之后不会评估任何操作码或数据,因此网络用户开始使用此操作码来存储任意格式的数据。
在比特币现金(BCH)的时期,即2017年8月1日-2018年11月15日,能够附加到OP_RETURN输出的数据长度被扩展到220字节,更大的数据能够促进区块链上创新的应用,例如在区块链社交媒体上发布内容等。
在BSV上,220字节的限制依然被保留了一小段时间。随后,在2019年1月,由于OP_RETURN操作码以节点不验证任何后续操作码的方式终止脚本,所以节点也不会检查脚本是否在520字节的最大脚本大小限制内。由此一来,网络上的节点运营商决定将最大交易体积提高到100KB,从而赋予开发者有更多应用创新的自由,让新的应用可以将更大、更复杂的数据放入比特币账本。那时有一个应用例子,有人将将整个网站都放入了BSV帐本中。
OP_RETURN虽然有一定的功能扩展,但总体来说能力还是有限。于是产生了隔离见证的技术。
(2)Segwit隔离见证
隔离见证,即Segregated Witness(简称SegWit),由Pieter wuile(比特币核心开发人员、Blockstream联合创始人)在2015年12月首次提出,后来形成了比特币BIP141。隔离见证将比特币区块中交易的数据结构稍加修改,以解决如下问题:
1)transaction malleability 问题。
2)SPV证明中传输交易的签名成为可选项,能够减少Merkle proof传输的数据量。
3)变相增加区块容量。
前两项主要是增加安全性和性能,其中对新技术影响最多的是第三项,变现增加了区块的容量(见下面的概念Block weight),从而为比特币的能力扩容打下来基础,以至于后面的Taproot(隔离见证的第二个版本)的进一步加强。
虽然变现扩大了区块容量,但隔离见证也受到区块大小限制。比特币的区块大小限制为1M bytes,由于witness数据不包含在这个限制中,为了防止witness数据被滥用,仍然对总的区块大小做了限制。引入了一个新概念叫块重量(Block weight)
Block weight = Base size * 3 + Total size Base size是不包含witness数据的块大小 Total size总大小是按 BIP144 中所述序列化交易的块大小(以字节为单位),包括基础数据和见证数据。 隔离见证限制Block weight <= 4M。 隔离见证还在技术上使得比特币的扩容可以使用闪电网络,这里不详细介绍这部分的内容。
(3)Taproot隔离见证V2版本
如果直接使用Taproot这个单词,很多人以为是一个新概念,但如果告诉你这是隔离见证的第二个版本,大部分人都会明白其中的关联性。与Taproot相关的BIP是340,341,342,他们的名称是:BIP340(Schnorr Signatures for secp256k1),BIP341(Taproot: SegWit version 1 spending rules),BIP342(Validation of Taproot Scripts)。
2021年11月,Taproot以软分叉的形式正式生效。此次升级由BIP340、BIP341和 BIP342 组合。其中BIP340 引入了可以同时验证多个交易的 Schnorr 签名,取代了椭圆曲线数字签名算法(ECDSA),再一次扩大了网络容量并加快了批量交易的处理速度,为部署复杂的智能合约提供了可能性;BIP341实现了默克尔化抽象语法树(MAST)来优化区块链上的交易数据存储;BIP342(Tapscript)采用比特币的脚本编码语言扩充的比特币原生脚步能力的不足。
由隔离见证Segwit与Taproot的空间扩大,导致了Schnorr、MAST树和Taproot Scripts的产生,他们要完成的使命是比特币主网的功能扩大。
通过2.1节,我们看到了比特币在扩容和扩能上面的不断探索,直到产生了Taproot技术,以及相关的几个重要技术Schnorr、MAST、Taproot Scripts,比特币的能力格局才真正被打开。
(1)Schnorr签名
Taproot的发展,在扩充能力的同时,对签名算法有了一定的要求,于是Schnorr签名开始出现,并用来替代椭圆曲线数字签名算法(ECDSA)。Schnorr 签名是一种数字签名方案,可以高效且安全地对交易和消息进行签名。它最早由克劳斯·施诺尔(Claus Schnorr)在 1991 年的一篇论文中描述。Schnorr 因其简单性、可证明的安全性和线性性而受到赞誉。
Schnorr 签名的优势:
1)Schnorr 签名具有多种优势,包括高效性、增强的隐私性,同时保留了 ECDSA 的所有功能和安全假设。Schnorr 签名可以实现较小的签名大小、更快的验证时间,并且对某些类型的攻击具有改进的抵抗能力。
2)Schnorr 签名最显著的优势是密钥聚合(key aggregation),将多个签名聚合为一个签名,该签名对其密钥的总和有效。换句话说,Schnorr 使得多个合作方能够生成一个对他们的公钥总和有效的签名。签名聚合使得多个签名者的签名可以合并为一个单一的签名。
密钥聚合能够降低交易费用并提高底层可扩展性,因为来自多签名设置的电子签名在区块中占用的空间与来自单方交易的签名相同。Schnorr 的这个特性可以用于减小多重签名支付和其他与多重签名相关的交易的大小,例如,闪电网络通道交易。
3)Schnorr 签名的另一个重要特性是不可篡改性。
4)Schnorr 还提供了很多隐私优势。它可以让多重签名方案与传统的单一公钥无法从外部区分,Schnorr 使得观察者在链上活动中更难区分多重签名的支出和单一签名的支出。此外,在 n-of-m 多重签名设置中,Schnorr 使得外部观察者更难通过查看链上信息来确定哪些参与者在交易中签名,哪些没有签名。
Schnorr签名被实现在BIP-340中,作为Taproot软分叉升级的一部分,并于2021年11月14日在区块高度709,632上激活。Schnorr使BTC的数字签名更快、更安全、更易处理。值得注意的是,Schnorr签名与BTC的密码学算法向后兼容,这样就可以通过软分叉升级引入它们。
(2)MAST抽象语法树
MAST在中英文中的缩写说明有一点点歧义。BIP官方(BIP114)和一些文章使用MAST的缩写为:Merklized Abstract Syntax Tree(默克尔抽象语法树)。其它一些资料使用Merklized Alternative Script Trees (MAST)翻译成中文Merklized 替代脚本树 (MAST)。在《Mastering Bitcoin》这本图书中,和一篇文章都是这个缩写说明:https://cointelegraph.com/ learn/a-beginners-guide-to-the-bitcoin-taproot-upgrade。
默克尔抽象语法树和Merklized 替代脚本树 (MAST)从作用上看起来相同。从翻译的角度,我个人感觉保持比特币官方BIP协议中的用法。
MAST 背后的概念来自于两种概念, 抽象语义树和默克尔树。
抽象语义树(AST) 属于计算机科学中的编译原理和形式语言学的知识领域。抽象语义树是编译过程中的一个中间表示形式,用于表示源代码的语义结构。它将源代码转换为一种树形结构,其中每个节点代表一个语义单元,而边表示它们之间的关系。抽象语义树在编译器的词法分析和语法分析阶段起到重要作用,帮助编译器理解源代码的含义并进行后续的优化和生成目标代码的过程。通俗说抽象语义树(AST) 是一种通过将一个程序分割成独立的小块来描述程序的方法,这样会让程序变得更容易分析和优化。为了生成一个 AST,需要把所有的方程与其前提用箭头连接起来,直至所有的前提都被找出。下图即是一段脚本的AST。


另一方面,默克尔树则可用来验证某个元素是否是属于某个集合,且无需知晓整个集合的全貌。举个例子,比特币的简易支付验证钱包(SPV wallet)就使用默克尔树来验证某笔交易是否存在于某个区块中,这样无需下载完整的区块,可以节省带宽。

要生成一棵默克尔树,先要把每个元素都各自哈希一次,生成各自唯一的标识符;然后这些标识符配对之后再次哈希,生成这一对标识符的标识符;如此不断重复,直至只剩下一个标识符,称为 “默克尔根”,它就是一个短小精悍、但是标记了整个集合的标识符了。
在验证某个元素属不属于某个集合时,拥有整个集合的人可以向你提供从那个元素到默克尔根路径上的所有标识符。这样就能证明,这个元素确实在这个集合内。
简而言之,AST 背后的技术让你可以把一个程序分成多个小块,而默克尔树让我们可以验证这些小块确实是一个完整程序的一部分,且不必暴露整个程序。这就是MAST的基本原理,可以让花费者用一个默克尔证明来替换在单次交易中没有用到的条件,优点是:减少交易体积、提高隐私性,并支持更大的合约。
具体的MAST树在网上有很多案例,懂得程序开发的人员,梳理一个MAST的流程就可以清楚相关的逻辑。
既然有了MAST抽象语法树,那么就需要扩展比特币原生语法的能力,于是Taproot Scripts就产生了。
(3)Taproot Scripts
在BIP342协议中入Tapscript脚本,Taprootscript是原始比特币脚本的升级版,也可以被称为一种语言,但它实际上是带有命令的操作码的集合,这些命令为另两个BIP的实施助力。Taprootscript还取消了10000字节的脚本大小上限,为在比特币网络创建智能合约提供了更好的环境。(该升级也为后来Oridnals的诞生埋下基础,因为Ordinals协议就是利用的Taproot的script-path spend scripts脚本来实现的附加数据)。详细资料可以查阅官方网址: https://github.com/bitcoin/bips/blob/master/bip-0342.mediawiki 当前TaprootScript的能力还没有被充分发挥,后期的更多建设会体现出其威力。例如,比特币一层网络与二层网络的连接技术,应该更多的使用Taproot、MAST与TaprootScripits。
在比特币的生态有了Segwit、Taproot、Schnorr、MAST、Taproot Scripts,这些基础的工具,新的应用就开始产生了。开始阶段的应用是那些轻量级,简单的应用。
(1)Ordinals序数协议、铭文、BRC20
Ordinals协议的诞生与sat的概念高度相关,协议提出序数(Ordinals)和铭文(Incriptions)的概念。序数(Ordinals)指为比特币网络上的每个 Satoshi( 聪 )按照开采顺序分配一个数字的编号方案。协议中,无论sat在不同的钱包之间如何转移,其序数标识都保持不变。运行Rodarmor开源软件ORD的比特币全节点可以跟踪这些带编号的聪。这为人们提供了一个精确跟踪每个聪,并进行独立验证的机制。
铭文(Inscriptions)是通过在聪上刻录信息。通过结合SegWit和Taproot,Ordinals协议可以在比特币区块上为每个聪刻录一个小于4MB的文件,也就是铭文。铭文可以包含各种形式的信息,如文字、图片、视频等。下图是样例铭文截图。

简单来说,序数的编号方案为每个聪提供了唯一的可追溯的编号,使聪拥有了非同质化的特点。铭文可以在序数上添加不可分割的数据信息,类似于在一张白纸上进行艺术创作。两者结合,让比特币拥有了新的NFT标准。Ordinals的本质其实很简单,它更像是一个NFT协议,只不过与ETH或是其他公链的NFT元数据(MetaData)大多存储于IPFS或是中心化服务器不同,Ordinals的元数据嵌入到了交易的见证字段(Witness Data),像是被“铭刻”到某个特定的聪上一样这也是铭文这个词的来源。
BRC-20:受Ordinals协议启发,Twitter用户@domodata于2023年3月8日创建比特币实验性的可替代代币标准BRC-20。Ordinals协议通过给每个聪赋予不同的“属性”来创造BTC网络NFT,BRC-20则通过给定一个统一的“格式”以及“属性”来创BTC上的FT,也就是同质化代币。
BRC-20通过Ordinals协议将一段JSON文本写入BTC 铭文来部署代币合约、铸币和转移代币(Depoly、Mint、Transfer),部署的关键在于代币名称、总供应量、单次最大铸造量等。对于转账或买入/卖出的交易,会刻有额外的 NFT来跟踪链下余额。“先到先得”的铸币机制,带来了公平的发行与参与机会;同时由于BTC生态基础设施相对不完善,有一定的学习门槛,低流动性使得BRC-20代币能够轻易被拉升,ordi,sats,rats等BRC20代币开启了一波造富的神话。
(2)其他协议-Atomicals,ARC20
Atomicals协议的诞生颇有戏剧性,创始人Arthur在Ordinals协议刚发布时,想在它之上开发一个DID项目,但在开发过程中,他发现Ordinals协议有很多局限性,不利于支持他想实现的一些特性。于是,2023年5月29日,Arthur在推特上发布了第一条关于Atomicals协议构思的推文,经过几个月的开发后,Atomicals协议于2023年9月17日上线。后来,Atomicals协议衍生出Dmint、Bitwork、ARC-20、RNS等四大概念,未来还将推出AVM和拆分方案。
类似Ordinals与BRC20,在Atomicals上面部署同质化代币就形成了ARC20。对于ARC20感兴趣的读者,可以进一步阅读。 https://docs.atomicals.xyz/arc20-tokens
(3)其他协议-Rune
随着发展,作为Ordinals的创始人Casey Rodarmor发表文章指出:BRC-20代币具有“UTXO扩散的不良后果”,并建议将Runes作为基于UTXO的替代方案。现有的各类协议,普遍存在着协议实施复杂、用户体验差、垃圾未花费交易输出(UTXO)、操作需要原生代币等问题。
Runes的转移使用OP_RETURN,协议消息中的第一个数据输出被解码为一个整数序列,这些整数被解释为(ID,OUTPUT,AMOUNT)元组序列。如果解码后的整数个数不是三的倍数,则该协议消息消息无效。ID是要进行转账的Token ID、OUTPUT是要分配给的输出索引(即分配给第几个输出)、AMOUNT是要分配的运行量。处理完所有元组分配后,任何未分配的Runes Token都将分配给第一个非OP_RETURN输出,其余的可以通过将Runes协议分配给包含协议消息的OP_RETURN输出来刻录Runes Token。
Runes的发行:基于UTXO的同质代币追踪。如果协议消息有第二次数据推送,则为发行交易。第二次数据推送被解码为两个整数,SYMBOL,DECIMALS。如果还有其他剩余整数,则协议消息无效。SYMBOL是一个基本26位可读符号,类似于Ordinals名称中使用的符号,目前唯一有效的字符是A到Z。DECIMALS是显示发行Runes时应使用的小数点后的位数。如果SYMBOL尚未分配,则该Runes Token将被分配一个 ID 值(从 1 开始)。如果SYMBOL已经被分配,或者是BITCOIN、BTC或XBT,则不会创建新的符文。这是Runes协议的特殊之处。它没有将余额记录链接到钱包地址,而是将记录放在UTXO本身中。
新的Runes Token从发行交易开始,指定供应量、符号和小数位数,并将该供应量分配给特定的UTXO。UTXO中可以包含任意数量的符文代币,无论其大小如何。UTXO仅用于跟踪余额。然后,传输函数使用该UTXO,将其分割成多个任意大小的新UTXO,包含不同数量的符文,将记录发送给其他人。相对于BRC-20,Runes减少了一层服务器共识,变得更加简单,同时不依赖链下数据,没有原生代币,非常适合比特币的原生UTXO模型。
(4)其他协议-BTC stamps,SRC20,SRC721
比特币Stamps系统由Mike In Space于2023年3月发布,最初是Counterparty上的一个概念验证项目(一个自2014年以来就存在的比特币L2)。由于其底层协议的更新,Stamps已完全转向比特币,去年夏天,现在被称为SRC-20。创始人Mike最初将Stamps设想为铸造永久性比特币NFT的一种方式。然而,该协议已经扩展到复制BRC-20,这是一种批量可替代代币,自Casey Rodarmor于2023年1月推出Ordinals以来,由于铭文热潮的兴起,这种代币在比特币上蓬勃发展。
Stamps和Ordinals之间的主要区别在于架构。这是因为Stamps将它们的元数据存储在多重签名未花费交易输出(UTXO)中,而Ordinals则将它们的元数据存储在比特币交易的“见证”部分中。这种设计上的区别显现出了开发者的取舍。就是说,Stamps的UTXO方法使它们不可修剪,因此看起来是永久性的,尽管它们的制造成本比Ordinals铸造更昂贵。相反,Ordinals使用见证数据的方式最终使它们可被修剪,它们的制造成本比Stamps更低。
因此,虽然Ordinals可能为当今加密领域的NFT提供最佳的持久性成本比(也可以在以太坊上获得链上NFT,但它们的构建成本相对比Ordinals更高),但Stamps目前似乎提供了最佳的直接永久性保证。
在BTC stamps产生后,开始产生了SRC20与SRC721,原理与BRC20相似。BRC-20 是建立在Ordinals协议上的,而SRC-20是建立在BTC STAMPS上的。感兴趣的读者,可以进一步阅读SRC20与SRC721相关文档。 https://docs.openstamp.io/introduction/src20-protocol https://docs.openstamp.io/introduction/src721-protocol
介绍至此,比特币在一层网络上的重要新技术都已经介绍。在之后的扩容与扩能方面,开始借助比特币的上层设施,如比特币的Layer2或借助闪电网络等实现的更高层,如RGB。这方面的文章建议阅读《一文梳理比特币二层(Layer2)建设的基础知识体系V1.5版》和《从状态机的角度观察比特币二层,可以看到未来Web3.0应用的架构和建设路径》,或者其他关于比特币二层建设或架构设计方面的文章。
通过第二节的内容,我们看到比特币生态的技术发展已经为更大规模的应用打下了基础。但因为发展需要一个过程,和部分相关技术的不成熟,使得当前流行的应用与最终的常见应用还有比较大的区别。
从前面两节我们可以看到,比特币技术的发展本质上是区块的扩容与能力的扩容。
在区块扩容上,隔离见证导致了事实上的区块扩容,虽然有各种提议可以裁剪掉见证部分,但这种事情发生的概率不大,尤其是见证部分被赋予了更多含义之后。
在扩充能力上,Taproot、Schnorr、MAST、Taproot Scripts,等技术赋予了比特币更多的能力。尤其是MAST+Taproot Scripts会扩充比特币原生脚本语言的能力,加上其他几项技术会扩展比特币语言处理复杂场景的能力。但这些能力扩容也会加大比特币开发和理解的难度,毕竟这些Scripts开发不是高级语言。并且这部分的能力扩充,会滞后于用户对于区块容量扩充的理解与学习速度。
因为使用区块扩容简单,使用能力扩容复杂,这就是首先会产生用户将那些小图片NFT写入比特币主网,和产生了BRC20等应用的原因。当前比特币主网上的多种应用几乎都是在探索区块扩容后的应用。一小部分应用开始能力扩容的探索,例如,BEVM的一层和二层连接有一定的代表性,较多的使用了上述基本元素构建的功能。其Shnorr签名 +MAST合约 + 比特币轻节点网络的BTC L2解决方案,是一个很好的学习连接一层与二层的案例。未来会有更丰富的能力扩充的案例产生。
能力扩充的边界应该在哪里?我们可以从分层设计的角度来评判,如果这些能力扩充更多的是作为比特币一层与二层的连接技术,那么就不应该将能力扩充变得过于复杂。但基于我们人类丰富的创造力和资产发行与管理的强大吸引力,一些团队或个人会探索出更多的能力扩充场景的案例。
区块链技术产生的最直接原因是数字货币,所以发行资产、管理资产等应用是比特币或区块链领域的一个最直接需求。不管是从彩色币的探索到BRC20,ARC20等应用,还是以太坊上面的ICO,IDO等应用,都是在探索资产发行。像Uniswap,Lending,AMM,都是资产管理的应用,这部分应用在以太坊等网络上已经得到成熟发展,随着比特币生态技术的发展,这些资产管理应用会转移到比特币生态,更多的应该是在比特币二层上面进行。
在满足了发行资产、管理资产等需求,才会有精力和时间去发展属于Web3.0时代(也可以称为价值时代)的大规模应用。未来Web3.0时代大规模应用的系统架构,我在《从状态机的角度观察比特币二层,可以看到未来Web3.0应用的架构和建设路径》有相关的描述。
建设的路径是不断满足需求的过程,可以分为短期、中期、长期三个阶段。短期是通过比特币主网上面的新技术产生的应用和基于链的二层建设的简单阶段,产生的应用完成主要的能力扩充,满足各种金融应用。中期基于链的二层建设的中后期与基于分布式系统的二层建设,满足各种金融应用与信任应用。长期是基于比特币生态的大规模建设完成真正的Web3.0时代的建设。
参考文献说明
(1)ABCDE研报《[ABCDELabs]:比特币的过去、现在和未来》。
(2)https://en.bitcoin.it/wiki/Script
(3)https://en.bitcoin.it/wiki/Segregated_Witness
(4)https://en.bitcoin.it/wiki/Taproot_activation_proposals
(5)《超级详解隔离见证(segregation witness)》,
(6)《释疑:什么是比特币默克尔化抽象语法树?》,
作者:MiYou,SatoshiLab,万物岛BTC工作室
目录
比特币原有技术的主要探索与冲突
1.1. 比特币的脚本语言与几次删减指令
1.2. 比特币分叉历史、原因与意义
1.3. 比特币发展中的几个典型探索
1.4. 比特币的不完美与分层协议
比特币发展中的重要新技术(区块扩容与能力扩容)
2.1. OP_RETURN、Segwit、Taproot
2.2. Schnorr、MAST、Taproot Scripts
2.3. Ordinals、Inscriptions、BRC20以及其他协议
新技术的使用方法和未来需要的发展
3.1. 新技术的使用方法
3.2. 未来发展的需求 参考文献说明

比特币的原有技术一直存在大规模应用与比特币应该具有的能力的冲突问题。大规模应用和交易规模是否意味着更复杂的交易指令和更大的交易空间?是否意味着一定要在比特币单一系统上实现所有的功能?在早期,比特币生态技术发展不完善的情况下,这些现象似乎都是比特币本身的问题。随着技术的发展,很多问题会得到更清晰的答案。
在本文中列出一些相关问题,以及对这些问题的产生与解决过程。通过这篇文章,可以看到这些问题与技术之间的关联性,以及比特币主链与相关“测试链”的变化过程。比特币的技术一直被不同的项目与团队在探索中(包括以太坊都是对比特币不完善的一种探索),只是在比特币主网上产生的变化一直不够明显,直到Taproot等技术的产生,推动了Ordinals协议等协议产生之后,重新进入了一个新的发展高潮。
从整体看这些发展过程与产生的相关技术,我们能够看到他们之间的联系,可以推测出更多发展方向与整体架构。
比特币的编程语言是一种逆波兰范式的脚本语言,没有循环语句和条件控制语句(稍后看Taproot&Taproot Script扩充了这块能力)。因此,人们常说:比特币脚本语言不是图灵完备的,这导致比特币脚本语言,有一定的局限性。
当然,由于这些局限性,黑客就没办法使用这种脚本语言写一些死循环(会造成网络瘫痪),或者一些能导致DOS攻击的恶意代码,也就避免了比特币网络受到DOS攻击。比特币的开发者,也认为核心区块链,不应该具备图灵完整性,来避免一些攻击和网络堵塞。
但是,也正是由于这些局限性,比特币网络,没有办法运行其他复杂的程序了,没办法完成一些“有用”的功能。而后面发展的一些区块链系统,为了解决具体问题,满足用户的需求,直接改变了这点。如,以太坊使用的语言就具备了图灵完备。
比特币脚本指令常见的类型: 关键字:
常数。如:OP_0,OP_FALSE
流程控制。如:OP_IF,OP_NOTIF,OP_ELSE,……
堆栈。如:OP_TOALTSTACK(把输入压入辅堆栈的项部,从主堆栈删除),……
字符串。如:OP_CAT(连接两个字符串,已禁用),OP_SIZE(把栈顶元素的字符串长度压入堆栈(无需弹出元素))
位逻辑。如:OP_AND,OP_OR,OP_XOR
算术逻辑。如:OP_1ADD(输入值加1),OP_1SUB(输入值减1)
加密。如:OP_SHA1(输入用SHA-1算法HASH.),OP_CHECKSIG()
伪关键字
保留关键字 比特币脚本指令常见的类型:
脚本:
支付到比特币地址的标准交易(pay-to-pubkey-hash)
标准比特币产生交易(pay-to-pubkey)
可证明的无法花掉/可删除的输出
Anyone-Can-Spend输出
猜谜交易 五个标准类型的交易脚本包括:支付到公钥哈希(P2PKH)、支付到公钥、多重签名(限定最多15个密钥)、支付到脚本哈希(P2SH),以及数据输出(OP_RETURN)。
在网页:https://en.bitcoin.it/wiki/Script 中有详细的说明。
删减比特币支持的指令
比特币历史上有多次删减指令的事情发生。下面的图表中,红色部分是已经删减掉的指令。
(1)字符串操作

(2)

(3)算术操作

为什么要删减指令?安全性只是一方面的考虑,如果我们用分层设计的思想看待删减指令会理解其合理性,这样做能让底层协议更基础更稳定。也许中本聪一开始就意识到了这个问题,不然不会主动的删减指令。我们常人的思维是建造一个直接满足用户的需求,具有完善指令和系统功能的小系统,而不是一个需要协作的大型协议。
这样也就造成了一种事实,只有比特币适合作为一层网络。我在《比特币价格过高会促生一个新的替代链产生》文章中分析过这种现象,从经济学视角和技术视角分析,有产生比特币替代链的可能性。但从比特币的基本特点和分层设计的角度,几乎只有比特币能够作为一层网络基础设施,即使有替代链也是一个1.5层的产物。在一层网络这个层面,真品只有比特币,能有一些替代作用的链最多是A货。
在比特币的发展历史,除了删减指令问题,另一方面是区块大小之争,这经常造成比特币的硬分叉。
BTC创立之初并没有限制区块大小,以便能够在相同时间处理的交易笔数。但当早期BTC价格非常低,恶意交易的成本也非常低,为了解决这一问题,中本聪在2010 年9月12 日主持了一次软分叉,添加了区块体积不得超过1MB的限制。中本聪指出但这种限制是临时性的,未来可以以可控和逐步的方式提高区块限制,以便满足扩容的需要。
下图为比特币的分叉历史:

随着比特币的流行,网络交易拥堵和确认时间增长问题愈发严重。2015年Gavin Andresen 和 Mike Hearn宣布将在新版BitcoinXT中实现BIP-101提案,希望将区块上限提高至8MB。而Greg Maxell,Luke Jr,Pieter Wuille等核心开发者则持反对意见,认为这种做法会提高运行全节点的门槛,而且带来不可控的影响。这场争论最终在议题和参与范围均出现了扩大化。
从上面的内容,我们看到中本聪也表达了“区块大小这种限制是临时性的,未来可以以可控和逐步的方式提高区块限制,以便满足扩容的需要。”但什么时候分叉支持更大区块,单独分出一条链支持大区块是否可以解决问题?在不断的争议中,也产生了众多的案例。如,BCH区块大小是8M,后来又增加的32M。BSV区块大小是128M。而除了BCH(和后面的BSV)以外,这一时期还出现了许多其它BTC分叉币,据BitMEXResearch,仅在BCH分叉后的一年内,就出现了至少50种新的分叉币。
稍后的内容我们会看到,在比特币主网上面Segwit和Taproot也在一定程度上将区块的空间从1M提升到了4M。
比特币的分叉是一种发展探索,在尝试通过自身的改变来完成对更多需求的支持。其中有用户需求、矿工需求、投资人需求、开发者需求、……。
中本聪离开后,继承人Gavin Andresen主导建立了Bitcoin Core和Bitcoin基金会。在此期间,针对BTC的可拓展性探索一直存在,尤其是在资产发行领域。
(1)Colored Coins(染色币) eToro首席执行官Yoni Assia在2012年3月27日发表的一篇文章中第一个提出彩色币。这个想法不断发展,在Bitcointalk等论坛上,彩色硬币的概念开始形成并获得关注。最终Meni Rosenfeld于2012年12月4日发布了一份详细介绍彩色货币的白皮书。
染色币的设想是通过给比特币的特定部分添加特殊的标注(即染色),来代表更广泛的资产和价值。染色币在实现上出现了一系列实体,大致分为两类:
1)基于OP_RETURN:如Flavien Charlon在2013年提出的Open Assets,利用OP_RETURN(在Bitcoin v0.9.0中被提出,可以用于在Bitcoin上存放少量的数据,最初的限制为40bytes,后提高至80bytes)。操作码存储到脚本中,并通过外界读取的方式来完成“染色”和交易。(这种模式与Ordinals依靠外部索引确定资产合法性类似)。
2)不基于OP_RETURN:典型代表是ChromaWay在2014年提出的EPOBC Protocol,EPOBC资产的额外信息存储在比特币交易中的nSequence字段,每个EPOBC资产的类别和及合法性需要追溯到genesis交易来确定。
(2)MasterCoin(OMNI) JR Willett 在2012年1月6日发布了MasterCoin的设想,并取名“比特币第二份白皮书”,并在2013年7月通过ICO的方式正式启动项目,最终募集到了5120个BTC(当时价值50万美元)。MasterCoin和Colored Coins区别在于它建立了一个完整的节点层,通过扫描比特币区块来维护状态模型数据库,该数据库驻留在区块链之外的节点中。这种设计可以提供比Colored Coins更复杂的功能,例如创建新的资产、去中心化交易所、自动化价格反馈等。2014年,Tether也通过Mastercoin协议在比特币上推出了稳定币,即我们熟知的Tether USD (OMNI)。
(3)Counterparty Counterparty于2014年正式推出。Counterparty也使用OP_RETURN将数据存储至BTC网络中。但与染色币不同,资产在Counterparty不是以UTXO的形式存在,而是通过OP_RETURN载入信息来表明资产的转移,当一个资产持有者使用持有地址对歹有特殊数据的交易进行签名后,资产便完成了转移。通过这种方式,Counterparty可以实现资产的发行、交易以及兼容以太坊智能合约的平台。
除此以外,也有观点认为Ethereum、Ripple和BitShares也属于更广义的“Bitcoin2.0”。
比特币系统的不完善(或局限性)主要表现在几个方面(本文中的不完善是根据以太坊白皮书中的总结,并非是真正的不完善。):
1.比特币的账户系统UTXO
在当前的区块链项目中,主要有两种记录保存方式,一种是账户/余额模型,一种是UTXO模型。比特币采用就是UTXO模型,以太坊、EOS等则采用的是账户/余额模型。
在比特币钱包当中,我们通常能够看到账户余额,然而在中本聪设计的比特币系统中,并没有余额这个概念。“比特币余额”是由比特币钱包应用派生出来的产物。UTXO(Unspent Transaction Outputs)是未花费的交易输出,它是比特币交易生成及验证的一个核心概念。交易构成了一组链式结构,所有合法的比特币交易都可以追溯到前向一个或多个交易的输出,这些链条的源头都是挖矿奖励,末尾则是当前未花费的交易输出。
所以现实世界中没有比特币,只有UTXO。比特币的交易由交易输入和交易输出组成,每一笔交易都要花费(spend)一笔输入,产生一笔输出(output),而其所产生的输出,就是“未花费过的交易输出”,也就是 UTXO。
如果要实现智能合约,UTXO这种账户模型存在非常大的问题。以太坊黄皮书的设计者Gavin Wood 对UTXO的理解十分深刻。 以太坊的最大新功能点是智能合约,因为智能合约的考虑,Gavin Wood要基于UTXO去实现图灵完备的智能合约是困难的。而账户模型是天然的面向对象的,对每一笔交易,都会在相对应账户上进行记录(nonce++)。为了易于管理账户,而引入了全局状态,每一笔交易都会改变这个全局状态。这和现实世界是相对应的,每一个微小的改变,都会改变这个世界。因此以太坊使用了账户系统,后期的公链基本都是基于各种类型的账户系统实现的。
UTXO的另一个严重缺陷是,不能为账户的取款额度提供精细的的控制。这点在以太坊的白皮书中有相关的说明。
2.比特币的脚本语言,非图灵完备
尽管比特币脚本语言可以支持多种计算,但是它不能支持所有的计算。最主要的缺失是比特币的脚本语言,没有循环语句和条件控制语句。因此,我们说:比特币脚本语言不是图灵完备的。这导致比特币脚本语言,有一定的局限性。当然,由于这些局限性,黑客就没办法使用这种脚本语言,写一些死循环(会造成网络瘫痪),或者一些能导致DOS攻击的恶意代码,也就避免了比特币网络受到DOS攻击。比特币的开发者,也认为核心区块链,不应该具备图灵完整性,来避免一些攻击和网络堵塞。但是,也正是由于这些局限性,比特币网络,没有办法运行它复杂的程序了。不支持循环语句的目的是避免交易确认时出现无限循环。
为了安全性,不支持图灵完备的理由是不充分的。而且非图灵完备的语言所做的事情很有限。
3.比特币的其他不完善,安全性、扩展性
挖矿的中心化问题,比特币挖矿算法基本上是让矿工千万次地轻微改动区块头,直到最终某个节点的改动版本的哈希小于目标值。然而,这种挖矿算法容易被两种形式的中心化攻击。第一种,挖矿生态系统被专门设计的因而在比特币挖矿这一特殊任务上效率提高上千倍的ASICs(专用集成电路)和电脑芯片控制。这意味着比特币挖矿不再是高度去中心化的和追求平等主义的,而是需要巨额资本的有效参与。第二种,大部分比特币矿工事实上不再在本地完成区块验证;而是依赖中心化的矿池提供区块头。这个问题可以说很严重:当前,排名前三的采矿池间接控制着比特币网络中约50%的处理能力。
扩展性问题是比特币的一个重要问题。使用比特币,每小时增长约1 MB。如果比特币网络每秒处理Visa的2000次交易,则每三秒钟将增长1 MB(每小时1 GB,每年8 TB)。较低的交易次数,也引起比特币社区的争议,大区块链虽然可以提高性能,但问题是中心化风险。
从产品生命周期的角度,比特币一些小的不完善,可以在自身系统中得到改善,改善的方法受到当前系统的限制。但如果可以在一个新系统中解决这些问题,就完全可以不考虑老系统的限制问题。既然要打造一个新的区块链系统,那么设计新系统的时候,这些小的功能完善也一并进行设计与升级改造。
分层设计
分层设计是一种人类处理复杂系统的手段和方法论,通过将系统划分为多个层次结构并定义各层之间的关系和功能,以实现系统的模块化、可维护性和可扩展性,从而提高系统的设计效率和可靠性。
对于一项广泛和庞大的协议体系,使用分层会有明显的好处。这样做使人们容易理解,容易分工实现与容易分模块改进等优点。如计算机网络中的ISO/OSI的七层模型设计,但具体的实现中,可以合并一些分层,例如,具体的网络协议TCP/IP是四层协议。具体说协议分层的优点:各层次之间是独立的、灵活性好、结构上可分割开、易于实现和维护、能促进标准化工作。
从分层协议的角度看,比特币因为要处于最基础的底层,那么他的UTXO、非图灵完备、出块时间长、区块容量小、创始人的消失、……,都不是缺点,反而是作为一层网络应该具有的特点。
注释:作者在《一文梳理比特币二层(Layer2)建设的基础知识体系V1.5版》对协议分层有更详细的说明。
在上一节我们探讨了比特币原有技术的主要冲突和一些探索案例,但很多导致了硬分叉或产生了全新的异构链。在比特币本身这条区块链上,这种探索也产生了很多成果,本质上是区块的扩容与能力的扩容。他们主要表现在以下几个方面。
比特币的开发者一直想扩展比特币的能力,表现在几个方面:
(1)OP_RETURN的使用
OP_RETURN是一个脚本操作码,用来终止脚本并返回栈顶的值。这个操作码类似于编程语言中的返回函数。在比特币的历史上,OP_RETURN操作码的功能被多次修改,现在它主要被用作为在账本上存储数据的一种方法。OP_RETURN操作码的功能曾在过去发生过重大变化,现在它是一个重要的机制,使用它我们就能在链上存储任意数据。
OP_RETURN最初是用于提前结束脚本执行的返回操作,执行结果将作为栈顶项目被呈现出来。这个操作码最初有一个容易被利用的漏洞,但中本聪很快修补了该漏洞。
对OP_RETURN功能的进一步更改
在Bitcoin Core的v0.9.0那次升级中,“OP_RETURN 输出”脚本被制作成标准输出类型,允许用户将数据附加到“不可花费的交易输出(unspendable transaction output)”上。这类脚本中可用的数据量的上限最初被限制为40字节,然后提升至80字节。
将数据存储在区块链上
将OP_RETURN改为始终返回false造成了有趣的结果。由于在 OP_RETURN 之后不会评估任何操作码或数据,因此网络用户开始使用此操作码来存储任意格式的数据。
在比特币现金(BCH)的时期,即2017年8月1日-2018年11月15日,能够附加到OP_RETURN输出的数据长度被扩展到220字节,更大的数据能够促进区块链上创新的应用,例如在区块链社交媒体上发布内容等。
在BSV上,220字节的限制依然被保留了一小段时间。随后,在2019年1月,由于OP_RETURN操作码以节点不验证任何后续操作码的方式终止脚本,所以节点也不会检查脚本是否在520字节的最大脚本大小限制内。由此一来,网络上的节点运营商决定将最大交易体积提高到100KB,从而赋予开发者有更多应用创新的自由,让新的应用可以将更大、更复杂的数据放入比特币账本。那时有一个应用例子,有人将将整个网站都放入了BSV帐本中。
OP_RETURN虽然有一定的功能扩展,但总体来说能力还是有限。于是产生了隔离见证的技术。
(2)Segwit隔离见证
隔离见证,即Segregated Witness(简称SegWit),由Pieter wuile(比特币核心开发人员、Blockstream联合创始人)在2015年12月首次提出,后来形成了比特币BIP141。隔离见证将比特币区块中交易的数据结构稍加修改,以解决如下问题:
1)transaction malleability 问题。
2)SPV证明中传输交易的签名成为可选项,能够减少Merkle proof传输的数据量。
3)变相增加区块容量。
前两项主要是增加安全性和性能,其中对新技术影响最多的是第三项,变现增加了区块的容量(见下面的概念Block weight),从而为比特币的能力扩容打下来基础,以至于后面的Taproot(隔离见证的第二个版本)的进一步加强。
虽然变现扩大了区块容量,但隔离见证也受到区块大小限制。比特币的区块大小限制为1M bytes,由于witness数据不包含在这个限制中,为了防止witness数据被滥用,仍然对总的区块大小做了限制。引入了一个新概念叫块重量(Block weight)
Block weight = Base size * 3 + Total size Base size是不包含witness数据的块大小 Total size总大小是按 BIP144 中所述序列化交易的块大小(以字节为单位),包括基础数据和见证数据。 隔离见证限制Block weight <= 4M。 隔离见证还在技术上使得比特币的扩容可以使用闪电网络,这里不详细介绍这部分的内容。
(3)Taproot隔离见证V2版本
如果直接使用Taproot这个单词,很多人以为是一个新概念,但如果告诉你这是隔离见证的第二个版本,大部分人都会明白其中的关联性。与Taproot相关的BIP是340,341,342,他们的名称是:BIP340(Schnorr Signatures for secp256k1),BIP341(Taproot: SegWit version 1 spending rules),BIP342(Validation of Taproot Scripts)。
2021年11月,Taproot以软分叉的形式正式生效。此次升级由BIP340、BIP341和 BIP342 组合。其中BIP340 引入了可以同时验证多个交易的 Schnorr 签名,取代了椭圆曲线数字签名算法(ECDSA),再一次扩大了网络容量并加快了批量交易的处理速度,为部署复杂的智能合约提供了可能性;BIP341实现了默克尔化抽象语法树(MAST)来优化区块链上的交易数据存储;BIP342(Tapscript)采用比特币的脚本编码语言扩充的比特币原生脚步能力的不足。
由隔离见证Segwit与Taproot的空间扩大,导致了Schnorr、MAST树和Taproot Scripts的产生,他们要完成的使命是比特币主网的功能扩大。
通过2.1节,我们看到了比特币在扩容和扩能上面的不断探索,直到产生了Taproot技术,以及相关的几个重要技术Schnorr、MAST、Taproot Scripts,比特币的能力格局才真正被打开。
(1)Schnorr签名
Taproot的发展,在扩充能力的同时,对签名算法有了一定的要求,于是Schnorr签名开始出现,并用来替代椭圆曲线数字签名算法(ECDSA)。Schnorr 签名是一种数字签名方案,可以高效且安全地对交易和消息进行签名。它最早由克劳斯·施诺尔(Claus Schnorr)在 1991 年的一篇论文中描述。Schnorr 因其简单性、可证明的安全性和线性性而受到赞誉。
Schnorr 签名的优势:
1)Schnorr 签名具有多种优势,包括高效性、增强的隐私性,同时保留了 ECDSA 的所有功能和安全假设。Schnorr 签名可以实现较小的签名大小、更快的验证时间,并且对某些类型的攻击具有改进的抵抗能力。
2)Schnorr 签名最显著的优势是密钥聚合(key aggregation),将多个签名聚合为一个签名,该签名对其密钥的总和有效。换句话说,Schnorr 使得多个合作方能够生成一个对他们的公钥总和有效的签名。签名聚合使得多个签名者的签名可以合并为一个单一的签名。
密钥聚合能够降低交易费用并提高底层可扩展性,因为来自多签名设置的电子签名在区块中占用的空间与来自单方交易的签名相同。Schnorr 的这个特性可以用于减小多重签名支付和其他与多重签名相关的交易的大小,例如,闪电网络通道交易。
3)Schnorr 签名的另一个重要特性是不可篡改性。
4)Schnorr 还提供了很多隐私优势。它可以让多重签名方案与传统的单一公钥无法从外部区分,Schnorr 使得观察者在链上活动中更难区分多重签名的支出和单一签名的支出。此外,在 n-of-m 多重签名设置中,Schnorr 使得外部观察者更难通过查看链上信息来确定哪些参与者在交易中签名,哪些没有签名。
Schnorr签名被实现在BIP-340中,作为Taproot软分叉升级的一部分,并于2021年11月14日在区块高度709,632上激活。Schnorr使BTC的数字签名更快、更安全、更易处理。值得注意的是,Schnorr签名与BTC的密码学算法向后兼容,这样就可以通过软分叉升级引入它们。
(2)MAST抽象语法树
MAST在中英文中的缩写说明有一点点歧义。BIP官方(BIP114)和一些文章使用MAST的缩写为:Merklized Abstract Syntax Tree(默克尔抽象语法树)。其它一些资料使用Merklized Alternative Script Trees (MAST)翻译成中文Merklized 替代脚本树 (MAST)。在《Mastering Bitcoin》这本图书中,和一篇文章都是这个缩写说明:https://cointelegraph.com/ learn/a-beginners-guide-to-the-bitcoin-taproot-upgrade。
默克尔抽象语法树和Merklized 替代脚本树 (MAST)从作用上看起来相同。从翻译的角度,我个人感觉保持比特币官方BIP协议中的用法。
MAST 背后的概念来自于两种概念, 抽象语义树和默克尔树。
抽象语义树(AST) 属于计算机科学中的编译原理和形式语言学的知识领域。抽象语义树是编译过程中的一个中间表示形式,用于表示源代码的语义结构。它将源代码转换为一种树形结构,其中每个节点代表一个语义单元,而边表示它们之间的关系。抽象语义树在编译器的词法分析和语法分析阶段起到重要作用,帮助编译器理解源代码的含义并进行后续的优化和生成目标代码的过程。通俗说抽象语义树(AST) 是一种通过将一个程序分割成独立的小块来描述程序的方法,这样会让程序变得更容易分析和优化。为了生成一个 AST,需要把所有的方程与其前提用箭头连接起来,直至所有的前提都被找出。下图即是一段脚本的AST。


另一方面,默克尔树则可用来验证某个元素是否是属于某个集合,且无需知晓整个集合的全貌。举个例子,比特币的简易支付验证钱包(SPV wallet)就使用默克尔树来验证某笔交易是否存在于某个区块中,这样无需下载完整的区块,可以节省带宽。

要生成一棵默克尔树,先要把每个元素都各自哈希一次,生成各自唯一的标识符;然后这些标识符配对之后再次哈希,生成这一对标识符的标识符;如此不断重复,直至只剩下一个标识符,称为 “默克尔根”,它就是一个短小精悍、但是标记了整个集合的标识符了。
在验证某个元素属不属于某个集合时,拥有整个集合的人可以向你提供从那个元素到默克尔根路径上的所有标识符。这样就能证明,这个元素确实在这个集合内。
简而言之,AST 背后的技术让你可以把一个程序分成多个小块,而默克尔树让我们可以验证这些小块确实是一个完整程序的一部分,且不必暴露整个程序。这就是MAST的基本原理,可以让花费者用一个默克尔证明来替换在单次交易中没有用到的条件,优点是:减少交易体积、提高隐私性,并支持更大的合约。
具体的MAST树在网上有很多案例,懂得程序开发的人员,梳理一个MAST的流程就可以清楚相关的逻辑。
既然有了MAST抽象语法树,那么就需要扩展比特币原生语法的能力,于是Taproot Scripts就产生了。
(3)Taproot Scripts
在BIP342协议中入Tapscript脚本,Taprootscript是原始比特币脚本的升级版,也可以被称为一种语言,但它实际上是带有命令的操作码的集合,这些命令为另两个BIP的实施助力。Taprootscript还取消了10000字节的脚本大小上限,为在比特币网络创建智能合约提供了更好的环境。(该升级也为后来Oridnals的诞生埋下基础,因为Ordinals协议就是利用的Taproot的script-path spend scripts脚本来实现的附加数据)。详细资料可以查阅官方网址: https://github.com/bitcoin/bips/blob/master/bip-0342.mediawiki 当前TaprootScript的能力还没有被充分发挥,后期的更多建设会体现出其威力。例如,比特币一层网络与二层网络的连接技术,应该更多的使用Taproot、MAST与TaprootScripits。
在比特币的生态有了Segwit、Taproot、Schnorr、MAST、Taproot Scripts,这些基础的工具,新的应用就开始产生了。开始阶段的应用是那些轻量级,简单的应用。
(1)Ordinals序数协议、铭文、BRC20
Ordinals协议的诞生与sat的概念高度相关,协议提出序数(Ordinals)和铭文(Incriptions)的概念。序数(Ordinals)指为比特币网络上的每个 Satoshi( 聪 )按照开采顺序分配一个数字的编号方案。协议中,无论sat在不同的钱包之间如何转移,其序数标识都保持不变。运行Rodarmor开源软件ORD的比特币全节点可以跟踪这些带编号的聪。这为人们提供了一个精确跟踪每个聪,并进行独立验证的机制。
铭文(Inscriptions)是通过在聪上刻录信息。通过结合SegWit和Taproot,Ordinals协议可以在比特币区块上为每个聪刻录一个小于4MB的文件,也就是铭文。铭文可以包含各种形式的信息,如文字、图片、视频等。下图是样例铭文截图。

简单来说,序数的编号方案为每个聪提供了唯一的可追溯的编号,使聪拥有了非同质化的特点。铭文可以在序数上添加不可分割的数据信息,类似于在一张白纸上进行艺术创作。两者结合,让比特币拥有了新的NFT标准。Ordinals的本质其实很简单,它更像是一个NFT协议,只不过与ETH或是其他公链的NFT元数据(MetaData)大多存储于IPFS或是中心化服务器不同,Ordinals的元数据嵌入到了交易的见证字段(Witness Data),像是被“铭刻”到某个特定的聪上一样这也是铭文这个词的来源。
BRC-20:受Ordinals协议启发,Twitter用户@domodata于2023年3月8日创建比特币实验性的可替代代币标准BRC-20。Ordinals协议通过给每个聪赋予不同的“属性”来创造BTC网络NFT,BRC-20则通过给定一个统一的“格式”以及“属性”来创BTC上的FT,也就是同质化代币。
BRC-20通过Ordinals协议将一段JSON文本写入BTC 铭文来部署代币合约、铸币和转移代币(Depoly、Mint、Transfer),部署的关键在于代币名称、总供应量、单次最大铸造量等。对于转账或买入/卖出的交易,会刻有额外的 NFT来跟踪链下余额。“先到先得”的铸币机制,带来了公平的发行与参与机会;同时由于BTC生态基础设施相对不完善,有一定的学习门槛,低流动性使得BRC-20代币能够轻易被拉升,ordi,sats,rats等BRC20代币开启了一波造富的神话。
(2)其他协议-Atomicals,ARC20
Atomicals协议的诞生颇有戏剧性,创始人Arthur在Ordinals协议刚发布时,想在它之上开发一个DID项目,但在开发过程中,他发现Ordinals协议有很多局限性,不利于支持他想实现的一些特性。于是,2023年5月29日,Arthur在推特上发布了第一条关于Atomicals协议构思的推文,经过几个月的开发后,Atomicals协议于2023年9月17日上线。后来,Atomicals协议衍生出Dmint、Bitwork、ARC-20、RNS等四大概念,未来还将推出AVM和拆分方案。
类似Ordinals与BRC20,在Atomicals上面部署同质化代币就形成了ARC20。对于ARC20感兴趣的读者,可以进一步阅读。 https://docs.atomicals.xyz/arc20-tokens
(3)其他协议-Rune
随着发展,作为Ordinals的创始人Casey Rodarmor发表文章指出:BRC-20代币具有“UTXO扩散的不良后果”,并建议将Runes作为基于UTXO的替代方案。现有的各类协议,普遍存在着协议实施复杂、用户体验差、垃圾未花费交易输出(UTXO)、操作需要原生代币等问题。
Runes的转移使用OP_RETURN,协议消息中的第一个数据输出被解码为一个整数序列,这些整数被解释为(ID,OUTPUT,AMOUNT)元组序列。如果解码后的整数个数不是三的倍数,则该协议消息消息无效。ID是要进行转账的Token ID、OUTPUT是要分配给的输出索引(即分配给第几个输出)、AMOUNT是要分配的运行量。处理完所有元组分配后,任何未分配的Runes Token都将分配给第一个非OP_RETURN输出,其余的可以通过将Runes协议分配给包含协议消息的OP_RETURN输出来刻录Runes Token。
Runes的发行:基于UTXO的同质代币追踪。如果协议消息有第二次数据推送,则为发行交易。第二次数据推送被解码为两个整数,SYMBOL,DECIMALS。如果还有其他剩余整数,则协议消息无效。SYMBOL是一个基本26位可读符号,类似于Ordinals名称中使用的符号,目前唯一有效的字符是A到Z。DECIMALS是显示发行Runes时应使用的小数点后的位数。如果SYMBOL尚未分配,则该Runes Token将被分配一个 ID 值(从 1 开始)。如果SYMBOL已经被分配,或者是BITCOIN、BTC或XBT,则不会创建新的符文。这是Runes协议的特殊之处。它没有将余额记录链接到钱包地址,而是将记录放在UTXO本身中。
新的Runes Token从发行交易开始,指定供应量、符号和小数位数,并将该供应量分配给特定的UTXO。UTXO中可以包含任意数量的符文代币,无论其大小如何。UTXO仅用于跟踪余额。然后,传输函数使用该UTXO,将其分割成多个任意大小的新UTXO,包含不同数量的符文,将记录发送给其他人。相对于BRC-20,Runes减少了一层服务器共识,变得更加简单,同时不依赖链下数据,没有原生代币,非常适合比特币的原生UTXO模型。
(4)其他协议-BTC stamps,SRC20,SRC721
比特币Stamps系统由Mike In Space于2023年3月发布,最初是Counterparty上的一个概念验证项目(一个自2014年以来就存在的比特币L2)。由于其底层协议的更新,Stamps已完全转向比特币,去年夏天,现在被称为SRC-20。创始人Mike最初将Stamps设想为铸造永久性比特币NFT的一种方式。然而,该协议已经扩展到复制BRC-20,这是一种批量可替代代币,自Casey Rodarmor于2023年1月推出Ordinals以来,由于铭文热潮的兴起,这种代币在比特币上蓬勃发展。
Stamps和Ordinals之间的主要区别在于架构。这是因为Stamps将它们的元数据存储在多重签名未花费交易输出(UTXO)中,而Ordinals则将它们的元数据存储在比特币交易的“见证”部分中。这种设计上的区别显现出了开发者的取舍。就是说,Stamps的UTXO方法使它们不可修剪,因此看起来是永久性的,尽管它们的制造成本比Ordinals铸造更昂贵。相反,Ordinals使用见证数据的方式最终使它们可被修剪,它们的制造成本比Stamps更低。
因此,虽然Ordinals可能为当今加密领域的NFT提供最佳的持久性成本比(也可以在以太坊上获得链上NFT,但它们的构建成本相对比Ordinals更高),但Stamps目前似乎提供了最佳的直接永久性保证。
在BTC stamps产生后,开始产生了SRC20与SRC721,原理与BRC20相似。BRC-20 是建立在Ordinals协议上的,而SRC-20是建立在BTC STAMPS上的。感兴趣的读者,可以进一步阅读SRC20与SRC721相关文档。 https://docs.openstamp.io/introduction/src20-protocol https://docs.openstamp.io/introduction/src721-protocol
介绍至此,比特币在一层网络上的重要新技术都已经介绍。在之后的扩容与扩能方面,开始借助比特币的上层设施,如比特币的Layer2或借助闪电网络等实现的更高层,如RGB。这方面的文章建议阅读《一文梳理比特币二层(Layer2)建设的基础知识体系V1.5版》和《从状态机的角度观察比特币二层,可以看到未来Web3.0应用的架构和建设路径》,或者其他关于比特币二层建设或架构设计方面的文章。
通过第二节的内容,我们看到比特币生态的技术发展已经为更大规模的应用打下了基础。但因为发展需要一个过程,和部分相关技术的不成熟,使得当前流行的应用与最终的常见应用还有比较大的区别。
从前面两节我们可以看到,比特币技术的发展本质上是区块的扩容与能力的扩容。
在区块扩容上,隔离见证导致了事实上的区块扩容,虽然有各种提议可以裁剪掉见证部分,但这种事情发生的概率不大,尤其是见证部分被赋予了更多含义之后。
在扩充能力上,Taproot、Schnorr、MAST、Taproot Scripts,等技术赋予了比特币更多的能力。尤其是MAST+Taproot Scripts会扩充比特币原生脚本语言的能力,加上其他几项技术会扩展比特币语言处理复杂场景的能力。但这些能力扩容也会加大比特币开发和理解的难度,毕竟这些Scripts开发不是高级语言。并且这部分的能力扩充,会滞后于用户对于区块容量扩充的理解与学习速度。
因为使用区块扩容简单,使用能力扩容复杂,这就是首先会产生用户将那些小图片NFT写入比特币主网,和产生了BRC20等应用的原因。当前比特币主网上的多种应用几乎都是在探索区块扩容后的应用。一小部分应用开始能力扩容的探索,例如,BEVM的一层和二层连接有一定的代表性,较多的使用了上述基本元素构建的功能。其Shnorr签名 +MAST合约 + 比特币轻节点网络的BTC L2解决方案,是一个很好的学习连接一层与二层的案例。未来会有更丰富的能力扩充的案例产生。
能力扩充的边界应该在哪里?我们可以从分层设计的角度来评判,如果这些能力扩充更多的是作为比特币一层与二层的连接技术,那么就不应该将能力扩充变得过于复杂。但基于我们人类丰富的创造力和资产发行与管理的强大吸引力,一些团队或个人会探索出更多的能力扩充场景的案例。
区块链技术产生的最直接原因是数字货币,所以发行资产、管理资产等应用是比特币或区块链领域的一个最直接需求。不管是从彩色币的探索到BRC20,ARC20等应用,还是以太坊上面的ICO,IDO等应用,都是在探索资产发行。像Uniswap,Lending,AMM,都是资产管理的应用,这部分应用在以太坊等网络上已经得到成熟发展,随着比特币生态技术的发展,这些资产管理应用会转移到比特币生态,更多的应该是在比特币二层上面进行。
在满足了发行资产、管理资产等需求,才会有精力和时间去发展属于Web3.0时代(也可以称为价值时代)的大规模应用。未来Web3.0时代大规模应用的系统架构,我在《从状态机的角度观察比特币二层,可以看到未来Web3.0应用的架构和建设路径》有相关的描述。
建设的路径是不断满足需求的过程,可以分为短期、中期、长期三个阶段。短期是通过比特币主网上面的新技术产生的应用和基于链的二层建设的简单阶段,产生的应用完成主要的能力扩充,满足各种金融应用。中期基于链的二层建设的中后期与基于分布式系统的二层建设,满足各种金融应用与信任应用。长期是基于比特币生态的大规模建设完成真正的Web3.0时代的建设。
参考文献说明
(1)ABCDE研报《[ABCDELabs]:比特币的过去、现在和未来》。
(2)https://en.bitcoin.it/wiki/Script
(3)https://en.bitcoin.it/wiki/Segregated_Witness
(4)https://en.bitcoin.it/wiki/Taproot_activation_proposals
(5)《超级详解隔离见证(segregation witness)》,
(6)《释疑:什么是比特币默克尔化抽象语法树?》,
No activity yet