Bitcoin+STARK: ZeroSync Khepri
1. 引言
当前,以下项目借助STARK,为Bitcoin引入类似Mina的功能:
- https://github.com/lucidLuckylee/zerosync:Pure Cairo based(Cairo+Python)
- https://github.com/bitcoin-stark/khepri:StarkNet contract based(Cairo+Python)
2. ZeroSync
ZeroSync定位为:
不再需要下载数百GB的区块,借助STARK proof,即可验证整个历史交易以及每个人的当前balance。
ZeroSync项目启动历程为:
- 2022年2月,Lukas George启动STARK relay作为其TU Berlin的本科论文,在STARK relay中,其证明了the headers chain of Bitcoin。
- Geometry Research为项目开发提供了grant资助。
- 2022年7月,Robin Linus加入项目,并将项目规划为full chain proof。
- Ruben Somsen将项目重命名为ZeroSync。
ZeroSync致力于成为custom Bitcoin proofs的工具盒。借助STARK proof,可:
- transform the blockchain data
- enhance the blockchain data
- filter the blockchain data
- index the blockchain data for efficient queries
- optimise the blockchain data for individual use case
ZeroSync的长期愿景为:“zerosync and scan the chain efficiently”,即:
- 1)Merkelized headers chain:对链上任意交易压缩并提供灵活的inclusion proofs;
- 2)Block filters:为zk-clients提供block filters,以检查某区块是否与其相关;
- 3)Compact blocks:为zk-clients提供区块压缩,可仅下载与其相关的部分区块,而不是所有区块。
ZeroSync未来也希望可实现:
- 1)Compact ring signatures:如,证明you control outputs worth at least 1BTC without revealing which ones。
- 2)Instant history verification for client-side validation protocols like Omni, RGB, or Taro,但是:
- 借助transaction graph obfuscation,具有更好的隐私。每笔交易可为a coin teleport proven in zk。
- 3)强化Lightning Network中的routing隐私?
Zero Sync当前仍处于早期阶段,ZeroSync路线图为:
1)阶段1——“assumvalid”:即模仿“assumevalid” option of Bitcoin Core实现chain proof,主要工作为:
- 解析区块、区块头和交易
- 验证链上各种哈希(如区块哈希、前一区块哈希、Merkle root、TxID等)
- 验证the chain’s work(proof-of-work 以及 难度重新校准)
- 验证UTXO set(Utreexo accumulator 以及 提供inclusion proof的“bridge node”)
- 以recursive STARKs实现的chain of proof:即在当前chain proof中验证previous chain proof。
2)阶段2——“measure and optimise”:测量并优化assumevalid proof的性能,使得其可支撑未来扩展到Bitcoin Scripts validation证明,基本流程为:
- 对full of transactions区块的assumevalid proof进行benchmark
- 识别性能瓶颈并看是否存在showstoppers
- 优化瓶颈,直到可满足添加Script validation性能要求
3)阶段3——“Bitcoin Script”:实现witness verification,并完成full chain proof:
- Bitcoin Script:
- Compute signature hashes(ALL/NONE/SINGLE/ANYONECANPAY,…)
- Script interpreter(实现所有opcodes)
- Payment类型有:
- Legacy:p2pk/p2pkh/p2sh
- SegWit:p2wpkh/p2wsh
- Taproot:p2tr,以及key path & script path spend
- Crypto:
- ECDSA,Schnorr
- SH256/HASH256/SHA1/RIPEMD160/HASH160
- Chain verifier:
- 软件:用于下载和证明a chainstate directory for a Bitcoin Core full node
- 网站:在一个简单的网站中展示chainstate proof demo。
完成以上3个阶段之后,可同步a pruned full node by downloading only the current UTXO set。
运行一个ZeroSync全节点无需修改Bitcoin Core的代码,仅需要在验证通过之后,将UTXO set拷贝到Core的chainstate路径下即可。- Bitcoin Script:
4)阶段4——Hardening:代码在生产可用之前,需对其进行测试、review、固化:
- 收集社区反馈
- 进行代码review
- 更多的testing,并添加fuzzing
- Bug Bounty program
3. Khepri
Khepri定位为:
- STARK-proven Stateful Bitcoin client enabling hyper fast trustless sync and checkpoints。
Khepri当前仍处于PoC阶段,用于展示在不改变Bitcoin协议的情况下如何使用STARK proof。
Kehpri的核心思想为:
- 借助STARK proof system来解决Bitcoin生态中的某些issue,或至少强化用户体验。
借助STARK proof和Cairo,可验证the integrity of a computation without having to naively redo all computation。因此,Verifier可确信the honest execution of a program,而不需要执行该程序来检查结果。
验证proof 比 直接执行该程序 的速度要快指数级的,从而提供了可扩容性。
此外,生成proof的开销,相对于 正常执行程序而不生成proof 的开销,是可忽略的。
这种机制为多个用户场景提供了很多潜在优化可能,如:
- hyper fast & trustless synchronization (IBD)
- enhanced Simplified Payment Verification
- protection against DoS on the P2P layer
Kehpri总体架构为:
附录
- Omni:为构建与Bitcoin之上的去中心化资产平台,用于创建和交易自定义数字资产及货币。
- RGB:为基于Bitcoin和闪电网络之上构建的复杂智能合约协议。为Bitcoin生态的Layer2和Layer3,为client-side validated state and smart contracts system。RGB:
- 不是token协议;
- 与闪电网络配合使用;
- 由于是client-validated特性,无链上使用和可跟踪痕迹;
- 独立于Bitcoin timechain扩容;
- 基于最好的研究产品可提供零知识性和隐私性:
- Mimblewhimble:Bulletproofs by Andrew Poelstra
- Liquid:Confidential Assets by Blockstream
- Taro:为Bitcoin闪电网络实验室(Lightning Labs) 的项目,Taro协议利用2021年11月在比特币上推出的Taproot升级基础上,向比特币和闪电网络的用户引入稳定币、NFT和其他资产的方案。Taro将允许比特币以外的资产在比特币主区块链上发行,并能通过第二层闪电网络(LN)转移和使用这些资产
Taproot升级:- 使用Schnorr签名代替ECDSA签名,可将多笔交易打包形成聚合签名,打包后的交易 与 普通交易没有区别,具有更好的安全性和隐匿性;
- 利用MSAT(Merklized Abstract Syntax Tree)结构——来自于抽象语法树(Abstract Syntax Tree)和默克尔树(Merkle Tree)的结合。MAST允许在散列所有内容之前对交易或智能合约的每个属性进行分割。当比特币交易发生时,只需要提供其分支运算并将分支哈希连接到固定大小的默克尔根上,从而减少交易数据,提升区块空间。而且MAST可以根据交易不同设置不同的条件,也就是实现智能合约功能。
参考资料
[1] twitter some efforts to make Bitcoin work similarly to Mina
[2] 比特币Taproot升级顺利完成,对比特币有哪些长期影响?
[3] Taro——Taproot-powered protocol
[4] Bitcoin RGB协议
Bitcoin+STARK: ZeroSync Khepri相关推荐
- Python Day23 stark组件1
模仿admin写一个类似功能的组件,叫做stark admin流程之启动 单例模式 单例:只允许一个类实例化出一个对象 使用 new 为了使类只能出现一个实例,我们可以使用 new 来控制实例的创建过 ...
- 从源码开始运行Bitcoin Core
安装Ubuntu 环境:虚拟机 网络连接:桥接 系统版本:16.04 源:ali 安装编译环境(依赖库) sudo apt-get update sudo apt-get install build- ...
- Bitcoin.com| 比特币现金2019·年度回顾
2019年即将结束,比特币现金(BCH)生态系统已经非常成熟.今年比特币现金成功实现两次升级.此外,BCH今年的应用率有所增加,SLP Token爆炸式增长,第三方应用程序大量涌现,并且随着CashS ...
- Bitcoin.com宣布将成立2亿美元的BCH生态系统投资基金
美国东部时间11月19日下午,在英国伦敦举办的BCH聚会如期而至,Bitcoin.com网站拥有者Roger Ver在做分享的时候宣布将会在2020年设立2亿美元的BCH生态系统投资基金,用于发展推广 ...
- Bitcoin.com开发人员正创建一个用Rust语言编写的BCH全节点
近日,Bitcoin.com开发人员Gabriel Cardona在推特表示,自己正创建一个用Rust语言编写的BCH全节点,目的是为了改变完整节点的范式,让BCH代码库更加安全.编程人员技术贡献更加 ...
- Bitcoin.com| 使用加密的三大驱动因素——BCH City总结
随着澳大利亚汤斯维尔的会议和相关后续活动的全部结束,参与者们回家重新投入工作中. 随着澳大利亚汤斯维尔的会议和相关后续活动的全部结束,参与者们回家后重新投入工作中.因此,我们将从整体上审视本次会 ...
- Bitcoin.com支持BCH第N弹——派息神器SLP Dividend Calculator
8月23日,支持BCH的网站Bitcoin.com发布了一款名为SLP Dividend Calculator的新应用程序.这一应用程序是一款派息神器,能够允许用户构建交易向任何SLP代币持有者支付股 ...
- Bitcoin推特遭到清洗!发生了什么?
近日,BCH社区爱好者发现Bitcoin推特号遭到了清洗,大量与BCH相关的推文被删除,账号附带的链接也从Roger Ver的Bitcoin.com网站变为了Bitcoin core所持有的Bitco ...
- Bitcoin Unlimited客户端发布新版本,删除了BSV协议功能
上周末,BCH核心开发组之一Bitcoin Unlimited开发人员发布了新版本的客户端1.6.0.1,新版的客户端删除了Bitcoin SV协议功能,这意味着BU全节点客户端将不再支持BSV区块链 ...
最新文章
- ListView getChildCount 以及getChildAt 坑 误区指南
- 【控制】《多智能体系统的动力学分析与设计》徐光辉老师-第9章-不确定分数阶系统的包含控制
- Linux常用网络命令总结
- xamp已有mysql端口修改依然启动不_关于xampp启动不了mysql的解决方法
- Unit Testing in iOS
- Java中带标签的break,continue
- MediaWiki/安装
- cte公用表表达式_CTE SQL删除; 在SQL Server中删除具有公用表表达式的数据时的注意事项
- 华为员工:工作3年,年薪50万,为什么要辞职?出租车司机觉得我在吸毒!
- 本地Git仓库关联多个远程仓库的两种方法
- python web框架的基础:WSGI、uWSGI、Nginx、web框架的关系
- python 英文语义分析_python语意分析
- 同IP不同端口导致cookie冲突的解决方法
- BZOJ2827 : 千山鸟飞绝
- 无数个骂娘的故事告诉你,千万别做技术合伙人
- element-ui+vue给登录界面创建一个走马灯幻灯片切换
- mybatis:Error preparing statement. Cause: java.lang.NullPointerException
- LeetCode/LintCode 题解丨一周爆刷字符串:旋转字符数组
- 程序员的内斗: 测试和开发干仗, 已经到用鼠标线勒脖子的程度
- Android android_id, deviceId, oaid的区别