ZK设计的主要目标是为比特币区块链建立一个专门定制的Layer2网络。比特币Layer2网络旨在满足比特币生态系统内日益增长的对更快速、更**交易的需求。通过将某些交易处理任务从主网上释放,旨在缓解比特币主网的拥堵问题并大幅减少交易确认所需的时间。
鉴于比特币虚拟机(VM)计算能力的固有限制,他们的设计使用了BitVM,它展示了在两层网络之间执行智能合约的潜力。通过利用挑战和响应方案,BitVM展示了一种比特币网络可编程性的新方法,打破了传统的限制。
为了增强比特币Layer2网络的安全性和完整性,该设计通过集成零知识证明(ZK)技术来实现状态验证。这些先进的加密技术允许比特币主网可以有效验证Layer2网络的状态,而不会损害底层交易的隐私和机密性。零知识证明能够验证信息而**露交易的具体细节,从而在保护隐私的同时确保Layer2网络的完整性。
总体而言,该设计旨在通过Layer2网络、采用BitVM进行智能合约执行以及集成零知识证明技术进行状态验证,提高比特币网络的可扩展性、速度和效率,同时保持底层交易的隐私和安全性。
0、架构
Layer2区块链采用账户模型。整个区块链的状态是通过基于Halo2证明系统的zkVM来验证的。Layer2状态与比特币主网络进行同步,并且所有Layer2状态都由BitVM实现的零知识证明(ZKP)验证器进行验证。 使用一个UTXO来追踪所有的Layer2状态。此外,还使用了一个可信的预言机来确保只有锁定/解锁脚本的输入/输出遵循Layer2协议。
1、Layer2委员会和可信预言机
由一组被选中的用户组成的Layer2委员会负责监督Layer2网络的整体运行状况。在出现协议问题时,委员会可以介入并停止协议,保护所有用户的资产。可信预言机对于验证输入/输出UTXO和脚本的正确性非常重要。
2、**层到第二层
在比特币网络上创建一个单一的Taproot地址来表示Layer2协议。当创建一个UTXO并将其转移到Taproot地址时,相应的UTXO实际上是从比特币主网“充值”到Layer2。
协议或委员会账户专门处理所有“充值”到Layer2的UTXO资产的“转移”权限。只有协议、可信预言机或委员会账户可以更改存入UTXO的所有权。可信预言机确保所有权转移交易中包含正确的输出UTXO脚本。
3、同步到比特币主网的区块
所有Layer2网络的状态以区块的形式同步到比特币主网。对于一个区块,应提供以下信息:
· 一个特定区块中的交易;
· 应用这些交易后的新账户状态;
· 当前区块状态下的新UTXO(即使协议被**,也始终准备好);
· 比特币网络的区块信息;
· 零知识证明(证明从上一个区块到当前区块的状态转换是正确的) 所有这些比特币主网的状态都记录在一个UTXO交易历史中。
3.1 关于证明的更多信息
零知识证明被用来验证Layer2的正确性。试图证明以下内容:
· Layer2的区块交易被正确签名。
· 所有账户的新状态被正确处理。
· 在比特币主网的某个特定区块之前的所有充值交易被正确处理。
· 对于当前状态,所有UTXO的分配都被正确创建。
3.2 区块信息挑战
为了确保比特币主网中指定的区块信息的正确性,他们使用了一个挑战和响应方案。证明者可以通过指出在锁定时间段内特定区块之后还存在N个区块来证明区块信息的准确性。
3.3 ZKP电路和BitVM增强
正如BitVM论文所示,ZKP验证可以表示为一个二进制电路,可以由两个参与方进行挑战。通过预签名交易,可以发送挑战以获取电路的比特承诺。如果揭示0和1,则挑战成功。为了使用BitVM来验证ZKP,需要注意以下两点:
相同的二进制电路承诺只能使用一次。也就是说,如果相同的电路承诺用于多个区块,可能会揭示一个比特承诺的0和1。
对于ZKP验证,除了电路的满足性外,还应检查“公共输入”。
为了处理这两个缺点,对于Layer2的每个区块,创建一个**的二进制电路,并且固定“公共输入”。比特币脚本用于处理公共输入的哈希和检查。正确的公共输入比特承诺由可信的预言机进行检查。就电路满足性而言,委员会内的**成员都有权利提出挑战。
4、从Layer2到比特币主网
资产可以通过两种方式从Layer2移动到比特币主网:提现(withdrawal)和强制提现(force-withdrawal)。 提现交易是从Layer2触发的,ZKP电路确保交易按预期进行处理。强制提现交易是从比特币网络发起的。
4.1 提现和强制提现交易
从Layer2触发的提现交易使用ZKP电路进行验证,以确保正确处理交易。从比特币网络发起的强制提现交易必须包含在下一个区块状态更新中。
4.2 UTXO分配
当一个区块的状态更新时,UTXO分配会进行同步。在协议停止的情况下,可以应用所有UTXO以确保所有用户资产的安全。在这些UTXO中,只有提现或强制提现的UTXO由协议签名。
5、Layer2退出
一旦ZKP未经验证,委员会必须停止并退出协议。如果协议停止,委员会会为Layer2**区块状态中指定的所有UTXO分配进行签名。凭借这些签名,用户可以从Layer2提现而不会有**损失。