免费授权企业网站源码,物业管理系统和物业管理软件,网站一级域名和二级域名,利用国外免费空间做网站1. 引言
前序博客有#xff1a;
基于BitVM的乐观 BTC bridgeBitVM#xff1a;Bitcoin的链下合约Bitcoin Bridge#xff1a;治愈还是诅咒#xff1f;BitVM2#xff1a;比特币上的无需许可验证
比特币脚本的基础限制有#xff1a;
最大脚本size为#xff1a;4MB最大st…1. 引言
前序博客有
基于BitVM的乐观 BTC bridgeBitVMBitcoin的链下合约Bitcoin Bridge治愈还是诅咒BitVM2比特币上的无需许可验证
比特币脚本的基础限制有
最大脚本size为4MB最大stack size为altstack stack一共小于1000个元素单个stack元素最大size为520字节算术opcodes的最大输入size为32-bit words
比特币脚本的实际限制为
以32-bit words的最大脚本输入1000 items * 32-bit/item 32 kB脚本之间传输状态的开销为 使用Winternitz签名31 bytes per bit1 stack item for every 4bits每个item 20字节每个Script的最大输入状态size1000 items * 4 bit/item 4000 bits 500 bytes需要20kB签名数据单个full block可承诺数据量约为4 MB / block * 31 bytes / bit 16 kB
2. 可能的证明系统
可 以比特币脚本实现的可能的证明系统有
Groth16 ( 22000 Fq multiplications )FFlonk ( 14000 Fq multiplications hash function )FFlonk slonk
这3个证明系统均基于BN254曲线。
这些证明系统的示例实现有
Arkworks的 https://github.com/arkworks-rs/groth16Iden3的 https://github.com/iden3/snarkjs
3. 以比特币脚本来实现SNARK Verifier
以比特币脚本来实现SNARK Verifier对应的代码模块有
Lamport signatures / Winternitz signaturesu256 arithmetic addition, multiplication, Karatsuba multiplication bn254 field arithmetic addition, multiplication, inversionMontgomery reduction bn254 curve operations point addition, inversion, scalar multiplication bn254 degree-2, degree-6, and degree-12 extensionsbn254 pairings constant vs variable inputs
4. 复杂度分析
以比特币脚本来实现SNARK Verifier对应的复杂度分析为
Groth16 Proof size约为300个字节。其public inputs还另需约100个字节。当前占满比特币整个区块空间的手续费小于0.3BTC约2万美金。assertTx可能需承诺多达16KB的trace数据。单个degree-12 extension field element 约为3 KB。因此assertTx可能需承诺多达5个中间结果。因此Verifiers可能需从多达6个disproveTx Tapscripts中选择且所有Tapscripts的组合size将多达 6 x 4 MB 24 MB。
5. 优化思路
以比特币脚本来实现SNARK Verifier当前的优化思路有
Prover可在其kickoffTx中做另一large commitment。可使用一系列的commit交易高效将该commitment分散至多个区块。 f 1 , f 2 , f 3 , ⋯ f_1,f_2,f_3,\cdots f1,f2,f3,⋯ 无需按顺序排列。其输入输出可形成任何类型的DAG。因此不需要在每一步中发送全局信息。commitment脚本可以使用条件。如“若 z 3 1 z_3 1 z31则承诺 z 11 z_{11} z11否则承诺 z 17 z_{17} z17”可使用 f i f_i fi 的提示/辅助输入如提供某inverse倒数然后使用乘法来验证。可将脚本输入预先解析为正确的格式。如将某value以bits在stack上表示而不是30-bit limbs。 将 STARK 包裹进 SNARK。一次性设置可实现快速、紧凑的通用计算。 如RISC0Bonsai 和 Local disproveTx 可非常大因为只有不诚实的Prover才需要为此付费。可对中间结果进行哈希处理压缩assertTx但代价是必须在 disproveTx 中计算哈希函数。
参考资料
[1] SNARK Verifier in Bitcoin Script