PPT中文版
1. 引言
BitVM,定位为:
Bitcoin的链下合约
推动Bitcoin合约功能
开源代码见:
https://github.com/BitVM/BitVM(JavaScript)
其动机在于:
当前Bitcoin无法扩容
现有闪电网络扩容性不够
能否将Bitcoin扩容至数十亿用户?
设想的理想情况为:
100倍到1000倍的吞吐量
L2自由市场:如zk-rollups、sidechains、zkCoins等等。
快速创新、便宜的试验
所有L2通过闪电网络互联
如果可以,需要bridges。
2. Bitcoin脚本是stateful(有状态的)
Bitcoin脚本现状为:
中本聪禁用了所有有趣的opcodes
将脚本数量最小化
但仍遗留有足够多有吸引力的opcodes
脚本大小最多可为4MB
Bitcoin脚本code golf(代码越短越好)
Bitcoin脚本是stateful(有状态的):
理想情况:若可以对某value进行签名,则
* 可强化script1和script2中的$x$为相同值* Punish equivocation,对模棱两可进行惩罚
问题在于:如何对value进行签名呢?
* 当前并没有CSFS等脚本用于签名......
3. lamport签名
lamport签名:
概念非常简单
仅需要哈希函数
有可能能用比特币脚本来实现
主要缺点为:签名很大
但,可对u8、u32、u160进行签名
3.1 对1-bit message的lamport签名
对1-bit message的lamport签名,用比特币脚本表示为:
4. BitVM架构
4.1 BitVM范式
BitVM范式为:
1)像闪电网络一样,试图让东西保持在链下
2)2方设置:Prover和Verifier
3)Optimistic计算
4)反驳错误的结果,要比执行,容易得多
5)Tree++
4.2 Tree++
Tree++:
用于表示交易graphs中Bitcoin Contracts的语言
为脚本的模板化语言:
* Evaluate 常量表示* 展开循环* 组合函数
通过Lamport签名(u8、u32、u160等)实现stateful(有状态的)
组合opcodes(xor、shift、mul、blake3等)
connector outputs
前缀的大脚本、大Taptrees,和大TX graphs
4.3 BitVM:Bitcoin VM
BitVM:Bitcoin VM:
不想为每个应用,手写和手工优化其底层电路
构建某种通用VM
简洁地反驳任何错误结果
理想情况:RISC-V架构
4.4 BitVM Specs
BitVM Specs:
基础指令集:rv32i(貌似对riscV指令集有偏好?)
编译目标为:clang、gcc、LLVM
使用现有的C/C++/Rust等库
STARK & SNARK verifiers等等
BitVM Detailed Specs:
最大steps数为:$2^{32}$
内存为:$2^{32}*4$字节,约17GB
最坏情况:约40轮的挑战和回应
“Court case诉讼案”运行长达半年。
总共:约150KB的脚本
最坏情况为:严重激励不足
在现实应用程序中可能永远不会发生
5. BitVM Bridges
5.1 BitVM Bridges
BitVM Bridges:
将BTC bridge到其它系统
理想情况:有点笨重也可以
Bridge很少使用。仅大额时才使用bridge。
终端用户使用跨链swap
5.2 BitVM Bridge Guarantees
BitVM Bridge Guarantees:
Federation联盟:但只要有单个诚实会员就足够
确保该bridge是安全和有活性的:
* 安全性:无人可偷掉存款* 活性:无法阻止有效的peg-out
大型联盟:100+ 会员
你可成为会员,然后你无需信任任何人
6. BitVM的Limitations
BitVM的局限性:
复杂性
平衡激励:loser需给winner支付 "fees+bounty"
如果激励措施是平衡的,则不需要链(chain)
潜在的资本密集型
但不需要1:1的抵押
对于所有N方的每个peg-in,有N个预签名的peg-out交易
联盟可审查peg-ins
7. BitVM总结和展望
BitVM总结和展望:
BitVM,使得支持更复杂的Bitcoin合约
用例:用于rollups、sidechains、L2s等trust最小化的bridges
局限性:实用,但,笨重
无需软分叉
本月将完成toy版本(但目前未在twitter等公开toy版本是否完成)
粗估今年主网上线
参考资料
[1] 2024年1月16日PPT [BitVM:Off-chain Bitcoin Contracts](https://brink.dev/assets/files/2024-01-16-eng-bitvm-slides.pdf)
[2] [BitVM Transaction Graph](https://raw.githubusercontent.com/BitVM/BitVM/b196b4ea83c899264137342a5f75f0ec89456857/docs/bitVM_graph_v2.svg)
[3] 2024年1月16日 [Robin Linus on BitVM](https://brink.dev/blog/2024/01/16/eng-call-bitvm/)
[4] 2024年1月17日视频 [Robin Linus on BitVM](https://www.youtube.com/watch?v=9aBuGObjEHs&t=150s)
最后更新于