Spookchain:使用受信任启动仪式和 APO,实现类似 drivechain 的侧链
作者:Jeremy Rubin
来源:https://rubin.io/bitcoin/2022/09/14/drivechain-apo/
本文大量借鉴了 Zmnscpxj 的精彩文章,他展示了如何使用递归的限制条款(covenants)来实现 drivechain。在本文中,我将展示类似的技巧,可以使用 AnyPrevOut 和一次性的受信任启动仪式,实现类似于 drivechain 的东西。
本文也介绍了可以用在不同类型的限制条款中的通用技巧。
注:我大概在 2022 年 5 月 5 日就写好了这篇文章,并小范围分享过。
皮亚诺计数器
我们需要构造的第一部分是一个皮亚诺计数器图(Peano counter graph)。Zmmscpxj 的方案用上了 SHA-256,但我们将使用一个公钥,并开发一个简单的从 1 到 5 的、可以递增递减(inc/dec)的计数器。
假设有公钥 K1 …… K5,并且有一个点具备 NUMS 属性(Nothing-up-my-sleeve number,本意来自魔术师在表演前向观众展示自己袖子里面没有藏东西,在密码学中表示随机取出而非有意选择的数 —— 此中无后门),例如是 HashToCurve(“Spookchains”)。
生成如下的脚本:
<1 || K1> CHECKSIG...<1 || K5> CHECKSIG
现在,在 Ki 下使用 sighash 标签 SIGHASH_SINGLE | SIGHASH_ANYONECANPAY | SIGHASH_ANYPREVOUT
生成两个签名(如下详述)。
递增规则
对每一个 Ki,只要 i < 5
,就创建一个签名,包含一笔这样的交易:
数额:1 聪公钥:Tr(NUMS, {<1 || K{i+1}> CHECKSIG})
递减规则
对每一个 Ki,只要 i > 1
,就创建一个签名,包含这样的交易:
数额:1 聪公钥:Tr(NUMS, {<1 || K{i+1}> CHECKSIG})
这真的是皮亚诺计数器吗?算是吧。虽然传统的皮亚诺数字是以结构化的类型来定义的,例如 Succ(Succ(Zero))
,这里我们通过一个 Inc/Dec 交易操作码定义了它们,而且我们必须显式地绑定这些皮亚诺数字,因为每个元素都需要一个唯一的公钥。它们在精神上是相似的。
实例化
产生一个由递增规则和递减规则产生的所有签名的列表。
诚实的参与者应该销毁私钥集 k
。
要创建一个计数器的时候,只需花费输出 C:
数额:1 聪公钥:Tr(NUMS, {<1 || K1> CHECKSIG})
来自 K1 的签名可以 绑定到 C,并将它 “转化成”(+1)状态:
数额:1 聪公钥:Tr(NUMS, {<1 || K2> CHECKSIG})
这个输出可以转变成 (+1)状态:
数额:1 聪公钥:Tr(NUMS, {<1 || K3> CHECKSIG})
这个输出又可以转化成(-1)状态:
数额:1 聪公钥:Tr(NUMS, {<1 || K2> CHECKSIG})
这个过程可以无限重复。
我们可以把这种技巧从 1 ... 5
推广到 1 ... N
。
处理任意的 存入/取出
前面展示的设计的一个问题是它无法很好地处理任意的存入。
一种简单的处理办法是为你希望支持的每一个数额实例化协议。
但这样做非常低效,而且需要大量的存储空间。
另一种方法是,按比特将存入的金额除以 2(或者其它基数),并放到计数器 UTXO 里。
对每一个比特,我们创建的输出需要带有 2^i 聪的面额,而不能使用 1 聪的面额。
这时候我们不能只使用 K1 ... KN
,而要使用 K^i_j
,其中 i 表示聪的数量,而 j 表示计数器。每个数额都需要多个公钥,不然签名就会对已经烧掉的资金有效。
分割与合并
对每一个 K^i_j
,允许分割和合并也是有用的。
分割可以通过预签名来实现,对每一个 K^i_j
,只要 i!=0
,就使用 SIGHASH_ALL | SIGHASH_ANYPREVOUT
签名:
输入:公钥 K^i_j 的 2^i 聪输出: - 2^{i-1} 聪,公钥为 K^{i-1}_j - 2^{i-1} 聪,公钥为 K^{i-1}_j
合并也可以通过预签名来实现,对每一个 K^i_j
,只要 i!=MAX
,就使用 SIGHASH_ALL | SIGHASH_ANYPREVOUT
签名:
输入: - 2^i 聪,公钥为 K^{i_j} - 2^i 聪,公钥为 K^{i_j}输出: - 公钥 K^{i+1}_j 的 2^i+1 聪
注意:合并允许第三方从外部存入资金,这并不是限制条款的一部分。
分割及合并的动作,意味着 spookchain 的运营者可以将 UTXO 合并以减少 UTXO 的数量,同时允许存入任意数额。
每个区块投一次票
为了强制执行每个区块只允许投一次票的规则,需要保证签名集中所有的输入的序列号(相对时间锁)都设置成 1 个区块。不需要 CSV 是因为签名中已经包含了 nSequence 字段。
终局状态/阈值
当一个计数器到达了第 N 个状态,就表示它在一段时间内已经积累了一定量的工作量、人们已经共识了某一些结果。
这时候就需要一些可用的状态转换方法。
一种解决方案是在此时将资金都发送到一个 OP_TRUE
输出中,而递增状态的矿工需要负责遵守该 Spookchain 的规则。或者,出于便利,也可以将资金指定给一些 管理员公钥/联盟,并且,在 N 个区块后降级到更少的签名者(最终是 0 )(这是为了在联盟死亡时允许恢复资金)。
这看起来就像,来自某一个 K^i_j
的一个签名将资金放到了一个 OP_TRUE
输出中然后立即花掉了它。不然,其它的 spaookchain 矿工就需要孤立这个区块。
开放状态/提议
对于一个状态 K^i_1
,将之转化为 K^i_2
的交易可以被视为 “特殊的”,而 OP_RETURN
输出类型可以用来承诺(例如)在到达终局状态时必须被创建的输出。这就厘清了 “被投票的是什么” 的问题。
这个方法 不会 在共识层锁定被投票的终局状态是什么。
在特定情况下,不违法一次性启动仪式的约束,如果一个固定的取款地址列表是提前可知的,那么开放状态可以包含给特定参与者的取款,然后这些取款必须得到来自矿工的一定数量的支持票。但是,如果不使用新的密码学元件的话,想实现可以表决任意交易提议似乎是不可能的。
启动仪式变量
xpubs
不是为每一个状态使用随机生成的公钥,而是使用一个 xpub 并根据 k/i/j 的派生路径为每一个 状态/面额 生成公钥。这可以节约一些数据,而且不需要那么多熵。
免信任的数据承诺
使用整个程序的详述的哈希值,作为对 xpub 的调整项,这样其他人就能快速验证自己是否拥有了你(在诚实假设下)需要生成的所有签名。
实现这种方案的一种方法是将一个哈希值确定性地转化成一个层级式确定性钱包 Child Number 的一个列表,并以此调整 xpub。这是一种便利但低效的调整 xpub 的方法,因为对签名设备来说,子密钥拥有一个正常的派生路径。
单方
由一个参与者预签名一个 Spookchain 的所有交易,并销毁自己的 xpriv(私钥)。
你需要相信 TA 已经删除了私钥并已经准备好了所有签名,但你不必信任给你提供 spookchain 数据以及执行所有状态转换的人,因为数据承诺是免信任的。
使用 MuSig 的多方
在参与启动仪式的所有参与者中定义一个 MuSig 公钥,并且是 N-of-N 的。
现在,你只需信任这个一次性启动仪式中至少有一个诚实参与者就可以了!非常棒!
不聚合的多方
这个模式也可以使用不聚合的多签名公钥。复杂度是 O(签名者数量),但是,这意味着你可以像照着菜单点菜那样,让从未 与启动仪式交互/执行启动仪式 的随机参与者聚合启动,只要他们签名了同一份程序详述。
也可以结合多个使用 MuSig 的多方。
这很棒,因为 MuSig 就意味着各参与方在某个点上串通做了一次 MuSig 的启动设置,但不聚合的多签名可以在各方没有任何交集的前提下执行。
软分叉掉信任
假设一个 Spookchain 变得非常流行。你可以配置自己的客户端以拒绝无效的状态转换,或者限制 Spookchain 密钥、使之仅能使用已知的签名。这种软分叉将平滑地更新信任假设。
状态转换规则与 DAG 限制条款的对称性
我们可以通过一个免信任的限制条款实现递增的状态转换规则,也可以通过启动设置实现向后的状态转换。
对于状态 i,其脚本看起来就像这样:
Tr(NUMS, { `<sig for state K_{i+1}> <1 || PK_nonsecret> CHECKSIG`, `<1 || Ki> CHECKSIG`})
这样的优化在理论上有很好的效果,因为它意味着计算中 只有 非解构性的(non-destructuring)递归部分是受制于一次性启动的信任假设的;受信任的一次性启动仪式在其它许多协议中也会用到,但在哪些协议中,递归特性只会在(例如)一段时间的超时后解锁(而在 spookchain 中,则每一步都需要用到)。
编译器的作者可以从任意的一个抽象图谱开始,然后有选择地移除例外情形(可以使用一些启发法,例如,最小化对一次性启动设置的依赖,或者最小化开销),直到这个图谱变成一个有向无环图,由一个或多个组件构成并使用被承诺的限制条款编译这些租金,然后使用一次性启动设置的密钥材料补回原先移除的例外情形。
关于信任和限制条款的评论
这是一种限制条款吗?我觉得 “是”。我在自己的 Calculus of Covenants 一文中定义限制条款时,每一种限制条款都有特定的一组假设。
在那个模型下,举个例子,你可以将使用特定已承诺指令的 7-10 多签名称作 4-10 诚实假设(需要至少 4 个签名人保持诚实,才能应对无效的状态转换)以及 4-10 可杀死假设(死亡的签名人达到 4 个就无法再恢复资金)。
至于被预先签名的模拟程序,例如用于模拟 CTV 的变种,那就是另一回事,因为如果你的程序是正确的,而且你预先获得了 N-N 的签名,那么它就是 1-N 诚实假设(只需要 1 个参与者是诚实的,就能防止无效的状态转换),而且是不可杀死的(所有参与者都可以安全删除私钥)。
我认为这些关于活性和诚实性的假设只是不同的 “复杂性类别”。
我想指出的是,上面展示的计数器模型,完全就是一个预先签名的 1-N 诚实假设和不可杀死的限制条款,不要求来自签名者的任何活性。更进一步地说,有了 APO,限制条款的新实例就不需要新的一组签名者,启动设置是真正一次性的。因此,这种类型的限制条款的信任复杂度类型比使用预签名交易模拟的 CTV 甚至更低,因为后者需要在每一个合约实例中动用一个新的联盟来签名。
讲完这些之后,我们再来分析一下这个限制条款:
1)交易内容集合的一个集合(一个家族),可能是递归的或者共递归的(co-recursive)(例如,可以产生的状态转换的类型)。这些内容由可以不用交易本身,而用一种可以生成这些交易的语言来表示。在这个意义上,我们使用 “家族” 而非 “集合” 来称呼,因为要想实例化一个限制条款我们必须选出一些家庭成员。
这个交易内容集合的集合是为了 递增/递减 到一个后代或者祖先,以及减半为两个实例或通过增加资金而使价值翻倍。每一个后代和祖先都是同类型的限制条款,就除了第一代和最后一代 —— 它们有一些特殊的规则。
2)一个验证器生成器,会产生一个函数,(该函数)接收一个交易内容(该内容是内容家族的一个成员的任意元素)以及一个相应的证明,并拒绝其它东西。
这里的验证器生成器就是 APO CHECKSIG 脚本。
3)一个证明器生成器,会产生一个函数,(该函数)接收一个交易内容(该内容是内容家族的一个成员的任意元素)以及一些额外的数据,并返回一个新的证明器函数、一个完成的诚征,或者拒绝(表示这不是一个有效的内容)。
这里的证明器生成器是从给定脚本的一个表格中选出正确的签名。
运行带有私钥的证明器生成器一次,就可以为所有可到达的状态实例化,并缓存相应的签名,然后其中的私钥就可以删除了(为了后续的运行)。
4)一组证明,让证明器、验证器和一组内容可以 “阻抗匹配”,也就是说,证明器可以证明的所有语句,与验证器可以验证的所有语句,是一一对应的;跟内容(一组交易)的一个元素也是一一对应的。
对给定的一个关键状态,可以发生的唯一时间就是签过名的交易,堆栈之外不需要解释其它数据。因此这是完美的阻抗匹配。
5)一组假设,限制条款就在这些假设下得到验证(例如,要求至少 1-N 诚实的多签名限制条款、要求任意 3-N 诚实的多签名限制条款、SHA256 抗碰撞性、离散对数难解、正确的 SGX 模块)。
特别的是,在启动阶段,至少一个私钥被彻底删除了。
为了安全性,也要假设对任何比特币交易来说都需要假设的有用方面。
6)可组合性
如果被任何其它限制条款家族请求,终局状态可以支付给一个预先指定的限制条款。
(完)
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
您可能感兴趣
-
解读CKB版 “闪电网络” Fiber Network:比特币可编程性扩展的另一种思路
作者:NingNing行业周期与宏观金融周期共振,加密行业正处在与 2019 年相似的整体性迷茫之中,现阶段不仅流动性枯竭,叙事貌似也在枯竭。市场不但对 VC 叙事兴趣阙如,对反 VC 的 Meme 叙事也已经疲倦。就像每次哲学危机,人们都会回归柏拉图寻找出路,当加密行业危机时,我们也需要回归比特币、回归中本聪。正如 CKB 生态 RGB++ 协议创始人 Cipher 在最新 Blog 里所阐述的,加密行业需要对以太坊 “链上计算” 的路径依赖进行反思,回归P2P经济学,让计算归于链下,让验证归于链上。因
-
面对NFL球员工会起诉,“退圈”的DraftKings竟主动承认NFT是证券?
作者:Zen,PANews近日,美国国家橄榄球联盟球员协会 (NFLPA) 指控数字体育娱乐和游戏公司DraftKings 逃避了其 NFT 球员许可协议的付款义务。在放弃NFT业务后,涉嫌出售未注册证券而遭到集体诉讼的DraftKings又背上了一起官司。而有趣的是,在与NFLPA的纠纷中,DraftKings的立场似乎已从反驳转变为积极承认“NFT就是证券”。放弃NFT业务:驳回集体诉讼的动议遭到否决今年7月底,Draftkings在给用户的电子邮件中表示:“经过慎重考虑,DraftKings 决定终
-
简析两种最新比特币智能合约实现方案:OP_NET与Arch有何区别?
作者:Cookie过去半个月,OP_NET 与 Arch 这两个比特币主网上的智能合约实现方案引发了较多的讨论。有意思的事情是,OP_NET 这个名字与大家熟悉的 OP_CAT 很像,都以「OP_」开头,具有很强的、让大家认为这哥俩差不多的迷惑性。所以,在开篇要和大家先提一嘴 OP_CAT。首先,OP_CAT 是比特币操作码,从去年开始有以「量子猫」Quantum Cats,也就是「大巫师」Taproot Wizards 的创始人 Udi Wertheimer 为首的社区力量一直在呼喊要「复活」OP_CA
-
争议不断,以太坊正在失去“万链之王”的权威
作者:Climber,金色财经近期围绕以太坊的话题和争议越来越多,不仅 Vitalik 本人需要下场解释观点,就连以太坊基金会也要发布公告来平息社区的质疑声。在本轮牛市周期中,以太坊的表现可谓平平。而美国以太坊现货 ETF 的通过也并未让 ETH 走势如投资者期待般爆发,相反却在币价方面越走越低。这就不免让有着「万链之王」美誉的以太坊逐渐失去投资者和社区的尊重,进而质疑起有关以太坊的方方面面。争议不断,以太坊亟需重塑权威最近一段时间以来社区成员对 Vitalik 言论观点、以太坊基金会乃至以太坊生态系统的
-
从《黑神话:悟空》谈起,GameFi何时能取得真经?
作者:YBB Capital Researcher Zeke前言本文是市场垃圾时间中的一些闲聊,需要对传统游戏市场有一定程度了解。大家可以把这篇文章当作日记或者随想观看,这些只是我在游玩《黑神话:悟空》之后对GameFi的一些粗浅思考,以及对这个赛道未来的看法。一、游戏科学的九九八十一难三天全网销量破千万、Steam玩家同时在线峰值破235万、多家品牌联名周边销售爆火、国家级媒体多次采访、多个游戏取景地可凭游戏通关记录终身免费进入、86版《西游记》YouTube观看量超400万。以上,是《黑神话:悟空》上
-
Gavin Wood:如何防止女巫攻击进行有效空投?
演讲:Gavin WoodGavin 近期一直在关注的女巫攻击(civil resistance)的问题,PolkaWorld 回顾了 Gavin Wood 博士在 Polkadot Decoded 2024 上的主题演讲,想要探究 Gavin 在如何防止女巫攻击上的一些见解。什么是女巫攻击?你们可能知道,我一直在研究一些项目,我在编写灰皮书,专注于 JAM 项目,也在这个方向上做了一些代码的工作。实际上,在过去的两年时间里,我一直在思考一个非常关键的问题,这个问题在这个领域中非常重要,那就是如何防止女巫
-
市场热议,链抽象将成加密新叙事?
2024年,加密货币领域的技术创新持续加速,链抽象(Chain Abstraction)逐渐成为行业内的焦点。链抽象技术的核心在于通过隐藏底层技术的复杂性,让用户能够更加便捷地在多个区块链之间进行操作。传统的区块链技术通常要求用户掌握不同链的操作流程,并需要应对跨链操作中的技术难题,这极大地吸引了新用户的进入。而链抽象的出现,则为这些问题提供了有效的解决方案,成为Web3建设不可忽视的重要一环。01、什么是链抽象及其作用链抽象能够将不同的区块链之间的差异整合在一个统一的操作界面中,使得用户只需一个账户即可
-
今日日报|马斯克和特斯拉赢得“被指控操纵狗狗币”的诉讼;稳定币支付平台Bridge完成5800万美元融资
今日要闻提示:马斯克和特斯拉赢得驳回指控他们操纵狗狗币的诉讼OpenAI和Anthropic已同意将其主要新AI模型在发布前共享给美国政府OKX将上线Hamster Kombat(HMSTR)现货交易X平台纽约总部将于9月13日关闭,预计将迁往得州萨尔瓦多总统布克尔成为《时代》杂志最新一期封面人物稳定币支付公司Bridge完成5800万美元融资数据:MATIC、SHIB、UNI代币头部地址持仓均超50%网龙今年上半年通过出售2.9亿元的加密货币,获利5100万元人民币监管消息美国众议院计划在9月举行多场加
- 成交量排行
- 币种热搜榜