比特币区块空间大小变化(图源:Dune)
作为参照系,以太坊主网Gas费的主要来源为DEX交易Gas费、L2的数据可用性费和稳定币转账Gas费等。与以太坊主网相比,比特币主网的收入类型单一、周期性强、波动率大。
比特币主网的可编程性能力,尚不能满足比特币主网区块空间供给侧的需求。而达到以太坊主网稳定且可持续的区块空间收入状态,需要比特币生态原生的DEX、稳定币和L2。而实现这些协议和应用的前提条件,是比特币可编程协议需要提供图灵完备的编程能力。
因此,如何原生地实现比特币图灵完备的可编程性,同时约束对比特币主网状态规模的负面影响,成为比特币生态的当前一个显学。
比特币可编程性的CKB方案
目前实现比特币原生的图灵完备的可编程性的方案要有:BitVM、RGB、CKB、EVM兼容RollupL2、DriveChain等等。
BitVM使用比特币的一组OPCode构建与非逻辑门,再通过与非逻辑门构建其他基础逻辑门,最终由这些基础逻辑门电路构建出一个比特币原生的VM。这个原理,有点类似著名科幻小说《三体》的秦王阵列图。Netflix改编的同名电视剧里有具体的场景呈现。BitVM方案的论文已经完全开源,备受加密社区的期待。但它的工程实现难度非常大,遇到链下数据管理成本、参与方数量限制、挑战-响应交互次数、哈希函数复杂度等等问题,短期内很难落地。
RGB协议使用客户端验证和一次性密封技术来实现图灵完备的可编程性,核心设计思想是将智能合约的状态和逻辑存储在比特币交易(Transaction)的输出(Output)上,将智能合约代码的维护和数据存储放在链下执行,由比特币主网作为最终状态的承诺层。
EVM兼容RollupL2,是快速复用成熟的RollupL2堆栈构建比特币L2的方案。但鉴于比特币主网目前无法支持欺诈证明/有效性证明,RollupL2需要引入社会信任假设(多签)。
DriveChain是一种侧链扩展方案,基本设计思想是将比特币作为区块链的底层,通过锁定比特币来创建侧链,从而实现比特币和侧链之间的双向互操作性。DriveChain工程的实现,需要对比特币进行协议级别改动,即将开发团队提议的BIP300、BIP301部署到主网。
以上比特币可编程性方案要么工程难度极大短期难以落地,要么引入过多社会信任假设,要么需要对比特币进行协议级别改动。
在CKB上编程到底有什么样的优势?
- Nervos从项目诞生之初,就一直秉持着自己的设计理念,坚持分层的设计方案,底层去解决安全和去中心化的问题,上层去解决效率、扩容、多功能的问题,希望可以通过这样的方式去解决区块链世界的不可能三角问题。Nervos是一套完整的解决方案,经济模型、共识、虚拟机、Cell模型、Layer2等等,相互之间环环相扣,形成一个完整又紧密的系统。
- 回到一个开发者所关心的问题,现在已经诞生这么多公链平台,那么在NervosCKB上进行编程,究竟会有什么与众不同的体验?在CKB上编程,又有什么样的优势呢?
- 本文试着从CKB中资产是一等公民、编程上的灵活性,以及状态的确定性这三个角度进行阐述。
开发者发行的资产在CKB上都是一等公民
- 在NervosCKB的设计哲学中,如果要将智能合约的风险降到最低,那么必须要将这些智能合约的「状态」去中心化。因为状态决定了资产的所有权,唯有将其去中心化,才能避免因状态的中心化而导致的智能合约漏洞,进而产生系统性风险,最终造成全部人的资产损失。
- 回顾过去,我们可以看到ERC20的Token存在着许多系统的脆弱性,例如著名的TheDAO事件,以及2018年美链的合约漏洞,它们都因为智能合约中有bug,进而造成无数资产所有者的损失。
- 为什么单个合约漏洞就能造成如此大的伤害呢?因为ERC20发行的Token本质上是将所有用户的资产都存在一个合约地址中,因此当这些dApp产生漏洞时,所有该资产的状态都可能发生变动,从而造成经济损失。在ERC20这样的模型下发行的资产,就像将该种资产全部都锁进大金库中。可想而知,只要金库的任何一个地方发生了漏洞,那么外来的人就可以进入金库,并将所有的资产都搬走。
- 发行资产是区块链开发者的一项重要的需求,原生代币和其它发行的资产,都应该是一等公民(First-classAsset),也就是任何一个资产的所有者可以拥有自己的状态所有权,而不是像ERC20Token那样,所有持有者的同类型资产都必须共用一把钥匙。因此,在NervosCKB中,不论是持有CKByte这样的原生代币,还是持有其他用户自定义的Token(UserDefinedToken,UDT),用户都是将这些资产分别锁在自己独自所有的小格子之中,并且只有用户自己才有解锁的钥匙。
- 为什么能够让资产成为一等公民?这是因为在NervosCKB中,所有的资产都储存在泛化的UTXO模型Cell之中,并且可以通过Cell中的lockscript验证所有权,以及通过typescript验证新cell的生成,这样的状态储存与验证规则同时适用于CKByte和UDT,因此降低了任何资产发行时,因合约漏洞而造成资产损失的风险。
CKB是开发者能够任意玩耍的灵活平台
- NervosCKB?哦,这是条公链啊?那他们的智能合约用啥语言写啊?
- 这样的问题在CKB上是不存在的,因为CKBVM是基于开源的RISC-V指令集开发的,使用了广泛实现的ELF格式,也就是说,任何可以编译成RISC-V程序的语言均可以直接用来为CKB开发智能合约;同时结合Cell模型这样的编程模型,我们可以将待验证的合约放在typescript中,并将所有权的验证放在lockscript中,这两大设计可以让在CKB上的编程拥有非常大的灵活性。
我们简单列举了一些优势来告诉你NervosCKB究竟灵活在哪里:
- 1.任何语言都有可能在CKB上开发:
- CKB核心只定义了底层的虚拟机模型,理论上任何提供了RISC-V后端的语言均可以用来开发CKB合约,而不需要局限在特定语言才能够进行编程,因此这样的设计在未来可以降低更多开发者的进入门槛,并且更能够捕获使用各种语言的开发者进入CKB生态之中。
- 2.你可以用各种密码学原语来作为资产的钥匙:
- 在CKB虚拟机上没有写死的密码学原语,因此任何密码学原语理论上都可以像普通的脚本一样被部署在cell中。这让Nervos的生态可以在不需要分叉的情况下,有了使用各种密码学技术的可能性。
- 这种特性的威力是巨大的,举例来说,你可以用以太坊和其他公链的地址和私钥去签署和收发CKB上的交易,因此如MetaMask等,这类在其他链上拥有成千上万用户的工具,可以在开发者开发好一款CKB上的产品之后直接为他所用,目前Lay2团队的ckb.pw正在做这个方向的努力;另外,像各种先进的密码学技术如Schnorr签名、BLS签名,和zkSNARKs/zkSTARKs等,都可以在CKB上使用。这也让安全性相关的签名机制、异构跨链、zkrollup或BLSrollup等分层的实验性技术未来更有机会在Nervos上实现。
- 3.CKB上可以实现可更新合约
- 合约部署后无法更新一直是区块链开发者的心头之痛,然而因为CKB交易中,可以验证inputcell中lockscript中的所有权,以及验证typescript中的生成规则,并且还能通过celldep引用其他的cell,所以我们能够在CKB上产生像是TypeID这样的利器。所谓TypeID是指某个Cell在确定只有某个独一无二的TypeID的条件下,持续更新合约,兼顾可升级与确定性,让开发者更灵活地部署并升级自己的合约脚本。
- 4.可以更灵活的支付手续费
- 对于CKB而言,其实交易的手续费支付具有非常大的灵活性,我们可以通过OpenTransaction的方式,将各个交易进行构造,这样的情况下我们不但可以更灵活的用各种非原生的代币支付手续费,绕开因原生代币不足而无法支付手续费,交易无法成功的窘境,甚至在构造交易时,我们还可以选择让交易的另一方帮你支付手续费。
- 5.Celldep调用的灵活性
- 如果您曾经在以太坊上进行开发,就会知道在以太坊上无法通过一个交易调用两个先前的合约,因为本质上我们需要调用的是两个合约账户,这时候就必须获得两次的合约授权(Approved),但在CKB中,我们可以将许多的合约通过celldep与typescript被调用,可以在使用更少的资源下实现更高的组合性。
- 灵活之余,CKB的确定性让你更安心
- 除了上面提到了灵活性之外,在CKB上的开发者还可以在拥抱灵活编程模型的同时,享有确定性。因为做为Layer1的NervosCKB,它只负责执行状态的验证,状态的生成发生在链下,因此它并不会像以太坊那样,开发者的合约需要经过计算才能得到成果。在CKB中,我们在链下就能够预期交易的输出状态,让整体交易的执行可以满足「确定性」这个去中心化应用的核心要求。所以,在状态具有确定性的特性下,开发者的合约可以避免被挪作它用,或是受到恶意攻击。这样一来,我们就能够最大程度的确保整体系统的稳定性。
比特币L1资产协议:RGB++
针对以上比特币可编程性协议存在的不足和问题,CKB团队给出了一个相对均衡的解决方案。该解决方案由比特币L1资产协议RGB++、比特币L2Raas服务商UTXOStack和与闪电网络集成的互操作协议组成的。
UXTO原生的原语:同构绑定
RGB++,是基于RGB设计思想开发的比特币L1资产发行协议。RGB++的工程实现,同时继承了CKB和RBG的技术原语。它有使用RGB的一次性密封和客户端验证技术,同时通过同构绑定将比特币UTXO映射到CKB主网的Cell(扩展版的UTXO),并使用CKB和比特币链上的脚本约束来验证状态计算的正确性和所有权变更的有效性。
换言之,RGB++是用CKB链上的Cell表达RGB资产的所有权关系。它把原本存放在RGB客户端本地的资产数据,挪到CKB链上用Cell的形式表达出来,与比特币UTXO之间建立映射关系,让CKB充当RGB资产的公开数据库与链下预结算层,替代RGB客户端,实现更可靠的数据托管与RGB合约交互。
-->> 2/4 文章未完,请继续阅读
以上就是Nervos CKB钱包引领比特币可编程性的新篇章的全部内容,望能这篇Nervos CKB钱包引领比特币可编程性的新篇章可以帮助您解决问题,能够解决大家的实际问题是非常好学习网一直努力的方向和目标。