
1月14号的文章《比特币L2:三个未发币早期二层项目机会》大概写了一下Bsquare这个项目,主要是为了他们的测试网活动。最近他们宣布了种子轮融资情况:投资机构包括HashKey 资本, OKX 风投, IDG, KuCoin 风投, ABCDE, 水滴资本, Satoshi Lab, OGs 基金和 Antalpha。
这么多机构看好,应该是一个挺靠谱的项目,所以我又花了一点精力去研究了一下。今天来分享一下研究的结果。
简单复述上一篇文章《比特币L2:三个未发币早期二层项目机会》内容:
简单介绍:这是一个基于零知识证明的比特币Rollup二层链
项目方推特:@BsquaredNetwork特别提醒:关注推特信息时一定要注意官方推特账号的英文拼写,现在很多骗子会在项目方帖子下面以官推名义发钓鱼信息,来获取用户钱包的授权盗取资金。他们会把推特昵称改成跟官方一样,但是推特账号是唯一的,无法改成一样,所以不要只看推特昵称,要仔细查看推特账号。
价值主张:
1)提升比特币的性能:交易处理速度,交易成本
2)扩展比特币链上的应用类型
3)不牺牲比特币提供的安全性
4)二层上可运行智能合约
5)交易证明通过比特币L1链上验证
6)第一个由比特币一层链验证交易证明的零知识证明L2

上次写文章的时候提到对最后两个价值主张我很质疑,质疑的主要是比特币一层链如何能够验证二层的交易数据。
我的理解是比特币一层链不能去验证非比特币原生交易的数据,二层网络的数据并不是一层BTC的交易数据,应该只能保存到一层提供的空间里,但是要比特币的全节点去验证这些数据我觉得可能性有点小。
所以对B² Network提出的通过比特币L1验证L2交易有效性的主张,有些不敢相信。
今天试试看能不能自我解答一下。

Layer2的定义其实没有一个确定说法,以太坊链上Vitalik给出过一个权威性(意思是中心化)的思路:以Rollup为中心的以太坊扩展路线,大概说明了以太坊的二层就是在Rollup链上对交易进行链下的批量处理,然后汇总交易数据然后发到以太坊一层链上进行存储和验证。也就是交易的计算和执行放在在二层,数据存储和验证,以及交易的结算放在一层。
但是比特币生态中没有一个像Vitalik这样的核心人物,所以大家对比特币二层的理解,思路就会比较散,方向和流派比较多。我这里以Nervos 项目首席架构师谢晗剑Jan给的定义来进行理解:
第一:链下,是指BTC Layer2不包括在比特币一层链上开发的协议和应用第二:与比特币一层链有某种形式的联系,可以是技术上的,经济上的第三:能够提升比特币L1在某些方面的能力,比如性能,编程能力,隐私性等。
根据这三个维度来理解Layer2,可以认为Layer2是以跨链或者其他方式,比如Rootstock采用的联合挖矿等形式,与比特币联系起来的另外一条链或者非链结构,目的是为了提升比特币一层链的能力。
非链结构大概意思是不基于区块链来执行+验证交易,以及组织+存储交易数据的结构。比如闪电网络采用的支付通道就是基于点对点的节点形成的网状结构,没有链。交易发生,执行,验证以及存储,还有账本的管理维护都是在交易的双方之间进行,不需要所有节点共同维护一个链及链上的账本,所以也不存在确定记账权的共识机制。

所以,我对Layer2的分析主要会主要集中在这几个维度:
分析Layer2的维度
第一:如何实现一层和二层之间的连接
是用跨链还是联合挖矿,或者其他方式?
如果是跨链是采用哪种跨链方式?
跨链资产和信息的安全性如何保证?
资产托管在哪里?合约,多签还是其他?
合约地址私钥由谁控制?
多签由谁来管理私钥,需要多少签名?
交易签名如何验证,谁来验证?
第二层交易数据的生产,发布:谁来生成和发布交易原始数据?
交易数据的保存:保存的交易数据包括哪些类型,保存在哪里?
数据的有效性:保存的数据是不是完整真实有效,如何确保不会被篡改?
数据保存是不是永久性,会不会丢失?
数据能不能公开易获得,验证者能不能轻松获得足够的数据来验证交易和账户状态?
数据的验证机制是什么?
谁来验证,如何验证,需要哪些数据,从哪里获取?
今天主要来试着解答第二个维度的部分问题,关于数据可用性的相关问题,其他的问题以后有时间再来研究。
其实还有第三个维度是二层如何为一层赋能,就是二层在哪些方面可以帮助一层的能力得到提升,这个话题相对比较简单,等弄清楚了前面两个问题,应该就能够得到一些答案。
这篇文章主要内容不是来自对Bsquare白皮书的研究,而是通过研究网络中几篇文章之后写出来的,实话说直接看白皮书很多东西我还理解不了,参考其他大咖的解读能够更加通俗的理解这个项目,再加上我自己用更加白话的方式解读一次,在这个基础上以后再去研究白皮书可能会更容易理解一些。

关于二层数据,主要涉及的工作包括数据的生产,发布,存储和验证, Bsquare在二层构建了两个模块来分别进行处理。Rollup Layer也就是汇总模块,负责数据的生产;DA Layer 数据可用性模块负责数据的发布,存储和验证。
涉及二层数据的生产主要有以下工作,由排序器来完成
交易的收集与批处理,生产出交易的原始数据
ZKP的生成:通过ZKEVM零知识证明的虚拟机,对交易的原始数据通过零知识算法处理,生成零知识证明
交易数据的汇总:汇总的数据包括交易的原始数据,区块内的Merkle树数据(交易元数据,交易数据的哈希值,所有交易的根哈希),BTC资金和账户的状态等
数据同步:汇总后的数据,加上零知识证明,一起同步给Bsquare二层链的节点。

L2产生的数据同步给Bsquare节点之后,会存储在Bsquare客户端环境中的节点服务器数据库中
接下来的数据可用性工作由在客户端环境下构建的DA 数据可用性层负责
负责这一层的节点会完成以下工作
对收到的交易汇总数据+零知识的证明数据进行电路预编译压缩处理;
运行一个证明系统,并对零知识证明进行验证然后生成一个承诺,用来承诺和断言承诺中的数据真实有效。
把第一步对Rollup数据进行编译压缩后的数据,加上第二步对零知识证明生成的承诺数据一起进行铭文格式的转换,然后铭刻到比特币第一层的UTXO脚本中,也就是完成L2数据在L1的发布。

因此保存在比特币1层的数据包括两个部分:
一是汇总数据的编译压缩版,二是对数据真实有效性的承诺
也就是说保存在1层的并非二层交易的原始数据,也不是完整数据。
存储的方式是以铭文的格式写在UTXO 的存储空间里面。
这样的存储方式主要有两个作用:
一是可以减少数据对比特币一层链空间的占用,
二是被保存的数据能享受比特币UTXO提供的安全性保障和防篡改性。

但是数据的可用性保障实际上是由Layer2的DA层来提供的
因为交易的原始数据,Merkle树数据,以及资金状态等数据都是存在Bsquare节点服务器。意味着需要验证交易的时候,这些数据都是原始数据,需要进行计算之后与发布并保存到一层上的承诺数据进行对比才能完成验证。
一层为二层提供数据验证所需要的原始凭证记录
所以存在比特币一层链上的数据提供的主要功能实际上是防篡改属性,因为承诺就是根据这些原始数据通过特定算法计算出来的值,具有唯一性,用UTXO来存储这个值可以保障二层做出的真实性承诺凭据无法修改。
也就是说比特币一层为验证在二层保存的交易数据提供了一个记录和凭据,以此来保证二层的交易原始数据不被修改。

Bsquare的设计中,二层的交易数据是由比特币L1进行验证
基本思路
但是与比特币一层交易需要对所有交易都进行全网验证不同,Bsquare的验证是欺诈证明的验证模式,也就是不对所有交易数据都进行验证,只对发起过争议提交的交易数据进行验证。
关于验证的难点和疑问
这里我还有一些疑问

在我的理解中,比特币L1的全节点只对比特币交易输入中的数据进行验证,目的是核对这一笔输入提供的信息能不能匹配其来源交易的输出中设置的花费解锁条件。验证的主要内容包括交易的来源交易,转账地址,转账金额和交易发起者提供的数字签名。而在这些数据的存储空间中,能够提供空间给二层写入数据的应该只有签名字段。

所以如果要一层来执行对二层数据的验证,那就要在发起请求验证的比特币交易里面(就是挑战者发起的争议提交,通过发起一笔比特币交易来提交他认为有争议的交易内容),把需要验证的交易数据放在签名的字段里面,实现二层数据在一层的上链。
比特币程序在验证签名时会把相关数据压入堆栈进行计算和执行,然后用计算出的结果与之前存在UTXO里面的承诺值进行对比。
所以我的疑问是:如何能够把二层交易的原始数据放进这笔交易的签名字段里面?比特币的一笔交易能够占用的空间毕竟有限,因为比特币一个区块的大小上限也就4M,就算一个区块只打包一笔交易,要想在这么小的空间里面放进去那么多的信息也比较难。但是如果不把原始数据放进来,比特币程序在验证的时候就要去调用并计算二层保存的数据,在我的理解中这更不可能了。
我的理解中还有一个难点,是如何能够把二层上需要验证的交易数据和代码转换成比特币一层UTXO脚本的语言。因为之所以需要二层,很大一个原因就是一层使用的代码语言也就是脚本功能太简单了,无法实现复杂的逻辑和功能,所以二层使用的代码一定比脚本语言更复杂,才能比脚本实现更复杂的逻辑和功能,所以要把二层的数据拿到一层去验证,也就是计算和执行,就必须要把二层的代码转换成一层能够识别和计算的代码,然后再按照签名的格式写入对应的字段里面供比特币程序读取和执行。
这两个疑问其实我还没有找到令人满意的解答,留到以后吧。

前面提了一下,Bsquare二层交易的验证采用的是欺诈证明的模式,而不是比特币一层采用的所有交易全部验证的模式。
1)防止作假的欺诈证明挑战机制
欺诈证明机制的特点:
欺诈证明机制的特点是不需要验证所有的交易,如果没有人对交易提出异议的时候,就不需要验证。只在有人对交易提出挑战的时候才需要进行验证和裁决,而且只需要验证跟有争议的交易相关的数据。
欺诈证明机制的博弈原理:
欺诈证明主要有两个角色:对二层交易数据真实性提供承诺的节点,和发起交易质疑的挑战者。
前置条件:双方都要在比特币L1的UTXO里面锁定一定数量的BTC做押金,以此来作为恶意操作的代价。
欺诈证明的奖惩机制:
如果经过比特币程序计算和验证的结果是二层数据有问题,即二层保存的数据与一层之前保存的承诺不符,说明二层保存的交易是被篡改过的,那么挑战者赢,提供承诺节点质押的BTC会被挑战者拿走,交易会被回滚。如果验证结果是节点提供的数据没有问题,那么挑战者输,挑战者质押的BTC会被节点拿走。交易维持原状。

2)Bsquare欺诈证明的实现机制:
简单理解逻辑门电路
Bsquare对欺诈证明的实现,采用的是Bitvm提出的逻辑门电路原理,也就是通过门电路系统让比特币程序实现复杂计算的能力,因为计算机的计算能力是通过门电路的输入和输出系统来实现的。
所谓门电路是指通过信号来传递或者表达逻辑关系的电路,作用是用来实现基本的逻辑运算。具体来说当输入信号时,如果信号满足门电路的某个逻辑关系,就会有信号输出。通过门电路控制的逻辑关系,只有有和无两种状态,用“1”表示有,“0”表示无。所以这是一种通过硬件信号来控制信息输出的方式。

比如你可以用点亮手电筒表示1,关闭电筒表示0,多次点亮就表示多个1的组合,多次关闭表示多个0的组合,多次操作的组合就可以形成二进制语言,类似1100110101。。。
而计算机硬件能识别的语言就是0和1组成的二进制语言,所以计算机语言就可以理解成由无数个0和1按照不同方式组成的二进制代码。
比特币程序能识别和执行的代码是脚本语言,主要是由OP操作码来表达要执行的指令,比特币脚本就可以理解成由表达不同意思的不同OP操作码加上输入的数据组合成的代码形式。
Bitvm的逻辑门电路原理
所以Bitvm的逻辑门电路原理就可以理解成把用复杂代码(比如用Solidity编写的合约代码)所表达的二层交易的复杂逻辑,转换成二进制门电路脚本,让比特币程序去执行这些电路脚本,在比特币的脚本上实现复杂的计算和执行能力。

欺诈证明用电路实现的逻辑
而欺诈证明的特点是只需要验证有争议的交易数据,所以需要通过比特币脚本来进行验证的数据就是那些被发起挑战的交易数据,也就是说只有这一部分交易涉及的操作代码和数据才会被转换成比特币脚本操作码,然后通过比特币的程序来进行计算和执行。执行完之后会返回一个结果,要么是0,要么是1。0代表结果为假,1代表真。
3)总结Bitvm实现欺诈证明的原理
用比特币的脚本语言来模拟门电路的输入输出效果,用门电路来表达二层的业务逻辑,也就是把二层由争议的交易中,相关数据涉及的操作码代码转换为比特币脚本语言的OP操作码在比特币的客户端里面执行一遍。
今天的文章解答了这些问题:Bsquare 二层数据的生产,发布,存储,以及数据验证的基本原理问题。
至于数据验证的更深入理解,比如如何才能把二层上引起争议的交易定位到具体那一段操作码和数据,如何实现把二层交易的复杂逻辑转换为电路实现的比特币脚本,如何把这些转换后的代码写入比特币的脚本,以及如何实现用比特币的程序去验证这些写入的代码和数据,我还没有弄清楚,希望后面还有兴趣和勇气能继续研究下去,如果有结果再来分享。

第一个就是今天写的BsquaredNetwork,目前能够参与的活动包括测试网任务和质押挖矿两个
测试网交互地址:https://task.bsquared.network/leaderboard?code=uppEPIL
Bsqure Buzz 挖矿地址:https://buzz.bsquared.network?code=dSLof
Buzz 质押挖矿的教程也会在今天晚些时候发出来
除了B2 还有下面这几个
梅林质押空投积分活动
比特币链: https://merlinchain.io/bridge/staking
EVM链:https://merlin.meson.fi
邀请码:56YASBTC L2 mirrorL2 节点竞选投票获空投积分
https://mirrorl2.com/?6FLNYU9xBitcoin Cats主网启动早鸟积分活动
https://www.bitcoincats.world/Points/?inviter=urYsTrP6qaBTC L2:BEVM 奥德赛第二期
https://campaign.bevm.io/points?invite=FEhL4PCYOOYU4T2pScZ2BN71_U4=Yuliverse 签到 + 日常任务领空投积分:
https://airdrop.yuliverse.com/
邀请码:SKAHBQCarv Protocol日常签到领取Soul的活动
https://protocol.carv.io/airdrop?invite_code=9QBPFAUltiverse 电羊每日探险获取积分和Soul
pilot.ultiverse.io/?inviteCode=pjrTPSecond Live每日打卡及周一质押挖Live
https://secondlive.world/invite?user_id=18407Io.net的银河+Discord 空投积分活动https://galxe.com/8xehTTQLX6wAAFMgKa7UiH/campaign/GCD5ot4oXP?referral_code=GRFr2JSkbCmvW3p_ptSGJnDv9dVHiOVfsHKQ0qKnMcdIQ8A
关于群和联系方式的统一回复:
我现在没有运营微信群。如果要交流的同学可以直接在文章下面留言。如果你真的有项目研究和投资方面的交流需求,并且有自己的见解和真实的研究成果,可以在留言里面说明,能够进行深入交流的需求我也有,我会联系你。以后我可能也会考虑建立一个能够进行投资和项目研究深度交流的群。
玩推特的同学也可以关注我的推特账号@xueblock,以后有观点和研究结果的时候我会在推特上面发一些内容。
声明:文章中涉及的所有项目都只用于我自己学习和实践的目的,不作为任何投资参考,也没有任何投资建议。由于能力和精力有限,很可能我的研究结果会有漏洞,甚至是错的,要参与的同学请一定要做自己的调研,确保自己的资金安全。
免责声明:
文章中涉及的所有项目都只用于我自己学习和实践的目的,不作为任何投资参考,也没有任何投资建议。由于能力和精力有限,很可能我的研究结果会有漏洞,甚至是错的,要参与的同学请一定要做自己的调研,确保自己的资金安全。
参考文章:
公众号链上观 郝天《详解B²Network机制:ZK+BitVM挑战会成为比特币layer2标榜吗?》
公众号极客Web3 Faust&雾月《极简解读BitVM:如何在BTC链上验证欺诈证明(执行EVM或其他VM的操作码》
公众号字节元CKB 《比特币L2的继承之战:缘起,转折和CKB的选择》
