目前为止,币圈/区块链行业的造福神话仍旧在继续,下一个重要的“造富”领域正在聚焦“游戏赛道”。XAI项目正在举办奥德赛活动,如果你感兴趣,请参与我在广场的这篇文章:XAI游戏公链奥德赛活动零成本新手入门指南
这篇文章,我将为你带来XAI游戏公链Sentry节点的详细解读!这篇文章相对偏技术,如果你对赚钱感兴趣,那么你必须认真阅读。因为只有你自己理解了”逻辑“,提升了认知,你才有机会赚钱!
如果你想直接看有关Sentry节点的情况,直接阅读第一部分,后面不用看;如果你希望有一个逻辑上的闭环,那么你需要阅读第二部分、第三部分和第四部分!
我想强调的是Xai获得Offchain Labs的直接技术支持。这种支持对其他Orbit链是不可想象的!并且是Xai作为Arbitrum生态系统中的战略游戏计划的一个关键组成部分。
第一部分:Sentry(哨兵)节点解释
Sentry(哨兵)节点是一个观察节点,用于监控Xai rollup协议,如果提议了一个错误的区块,它会发出警报(通过其操作者选择的任何方式),以便其他人可以干预。哨兵节点的目的是解决验证者的困境(验证者困境详见第四部分)。
点这里查看推介视频:
哨兵节点可以在社区成员的笔记本电脑、桌面电脑甚至云实例上运行。只要节点在运行,就有一个概率算法决定节点操作者是否会从网络获得esXai代币奖励。通过质押Xai,可以增加该算法的概率。如果你对esXai不了解,请参与我在广场的这篇文章:XAI项目“代币经济”解读
1.哨兵节点工作原理
Attention挑战v2协议涉及多个参与者,包括Xai链、一个母链(Arbitrum One)、一个受信任的挑战者、Xai哨兵及其许可密钥,以及一个Referee(裁判)合约。挑战者创建一个BLS密钥对,将公钥注册到裁判合约,并签署由验证者在Arbitrum One上的Xai rollup协议中所做的声明。这些签名由裁判合约验证并记录为与声明相关的挑战。
Xai哨兵可以通过购买哨兵许可密钥向裁判合约注册,以有资格发布关于声明的声明。他们获取正确声明的状态根,该声明将是发布声明的后续者。如果满足某个条件,他们通过调用裁判合约发布关于声明的声明。如果创建并确认了一个后续声明,并且哨兵发布了正确的声明,哨兵会联系裁判合约发布一个赎回交易。裁判在向哨兵支付奖励之前,会验证几个条件。
该协议确保每个声明必须完全消耗其前驱声明创建时存在的收件箱消息。这意味着,一旦创建了一个声明,其正确的后续声明的状态根就完全确定了,并且可以由任何节点计算。这鼓励每个哨兵确定正确的下一个状态根。哨兵的奖励取决于哨兵的状态许可ID、后续状态根以及一个挑战值,该值在完全确定后续状态根之后才会变得已知。
2.谁可以运行节点?
任何人都可以通过下载软件、安装并运行来操作哨兵。但是,要获得代币奖励,必须购买至少一个哨兵许可密钥。
购买者必须成功通过KYC检查,以确保他们:
不在美国
没有受到任何美国OFAC制裁(OFAC体现为一张美国制裁清单)
那些不运行或没有适当资金支付燃气费(GAS)的哨兵节点不会累积奖励,即使有许可密钥。因此,运营商会希望确保他们的节点有资金、在线并且正在运行。
3.Referee(裁判)合约
Referee(裁判)是一个智能合约,设计用来强制遵守预定义的规则,验证提交的来源,并在系统内向获胜者分发奖励。裁判智能合约是Xai生态系统中的关键组件,它负责管理和验证网络中哨兵节点所做的声明。该合约有几个关键功能:
3.1 提交声明
裁判合约允许哨兵节点向挑战提交声明。这个功能只能由哨兵许可密钥的所有者或他们在此合约上批准的地址调用。该功能检查挑战是否仍开放提交,以及NodeLicense是否已经为这个挑战提交过。
3.2 领取奖励
合约包含一个功能,允许用户为成功的声明领取奖励。此功能检查挑战是否已关闭提交,并检查节点密钥的所有者是否已经完成KYC。如果满足这些条件并且声明符合支付条件,奖励将发送给用户。
3.3 创建声明哈希并检查支付。
合约有一个功能,可以创建哨兵许可ID、挑战ID、挑战中的challengerSignedHash以及后续状态根的哈希。然后它检查哈希是否低于某个阈值,该阈值是基于已经铸造的哨兵许可总数来计算的。如果哈希低于阈值,那么声明就符合支付条件。
裁判合约通过验证声明并奖励成功的声明,确保了Xai网络的完整性,从而激励哨兵节点准确和勤奋地监控网络。
4.Challenger(挑战者)组件
挑战者是Xai生态系统中的一个受信任的实体。它创建一个BLS密钥对,并将公钥注册到裁判合约。当验证者在Xai rollup协议中做出一个声明时,挑战者使用其私钥签署声明,并将签名提交给裁判。裁判验证签名并将其记录为与声明相关的挑战。这个过程确保了在Xai rollup协议中所做的声明的完整性。
5.密钥(哨兵节点密钥许可,基于NFT)
哨兵许可密钥是一个独特的、不可替代的令牌(NFT),在Xai网络中操作哨兵节点时需要它。哨兵许可作为节点提交声明和接收奖励的资格证明。它通过发送正确数量的ETH来铸造,铸造的价格由一个递增的阈值系统决定。
节点许可在裁判合约中起着关键作用。当一个节点想要向挑战提交一个声明时,它必须提供其哨兵许可ID。裁判合约检查哨兵许可是否有效,以及节点是否是哨兵许可的所有者或一个被批准的运营者(上文KYC部分)。如果这些条件得到满足,节点的声明被提交给挑战。
当为成功的声明领取奖励时,哨兵许可也起到作用。裁判合约检查哨兵许可的所有者是否已经完成KYC,以及声明是否符合支付条件。如果这些条件得到满足,奖励被发送给哨兵许可的所有者。
总之,哨兵许可是Xai网络中的一个关键组件,它规范了哨兵节点的操作、声明的提交和奖励的分配。
6.节点下载和运行
要运行哨兵节点,用户只需下载一个特定的软件包。这个软件包可以在计算机的桌面应用或命令行工具中使用。简单来说,这些应用程序就是让哨兵软件更容易使用的工具。这个软件包的目的是自动完成所有运行哨兵所需的操作,使得设置和使用变得非常简单,即使你不懂技术也可以轻松上手。
这个软件包帮助用户完成如设置、管理和与其他部分的互动等任务,并且有一个易于使用的界面,让用户可以轻松查看和调整设置。使用这个软件包,用户可以更专注于如何更好地运行和获得更多的代币奖励。用户可以选择使用桌面应用或命令行工具运行这个软件包,两者都非常易于使用,使得操作过程非常流畅。
7.哨兵钱包功能
在Xai生态系统中,哨兵钱包在哨兵节点和裁判智能合约之间的互动中起到关键作用。哨兵钱包作为一个中介代理,负责代表相关的哨兵向裁判提交声明。这是通过裁判合约中的特定功能实现的,这些功能只能由哨兵许可密钥的所有者或他们在此合约上批准的地址调用。
哨兵钱包可以通过调用裁判合约中的submitAssertionToChallenge功能向挑战提交声明。这个功能检查挑战是否仍开放提交,以及节点密钥是否已经为这个挑战提交过。
哨兵钱包还可以通过调用裁判合约中的claimReward功能为成功的声明领取奖励。此功能检查挑战是否已关闭提交,并检查哨兵许可的所有者是否已经完成“KYC”检查。如果这些条件得到满足并且声明符合支付条件,奖励将发送给哨兵的所有者。
总之,哨兵钱包作为一个信使,促进了节点和裁判之间的互动,从而确保了Xai网络的顺利运行。
8.授权许可
许可数量与节点的提交能力之间的关系是基本的。虽然一个节点可以关联多个许可证是可能的,但必须认识到许可证的数量直接影响节点的提交能力。本质上,为了确保公平的提交配额,许可证与节点实例的比率被维持在1:1。通过遵循上述原则,系统建立了一个结构化的方法来许可、提交权利和生态系统内节点的整体操作。
9.Sentry(哨兵)节点软硬件件要求
哨兵节点软件支持Windows桌面、Mac和Linux(需要64位)。以下是运行最多100个许可密钥的哨兵节点软件所需的当前资源:
4 GB RAM
2 CPU核心
60 GB磁盘空间
x86/X64处理器 (支持ARM处理器,如Apple M1/M2芯片)
稳定的互联网连接
当在节点中加入额外的密钥时,理想情况下硬件能力也应该相应增加。然而,为每个密钥分配一个单独的机器并不是强制性的。预计系统的可扩展性可以在一台机器上容纳数十个密钥,甚至可能更多。
注意:这些硬件要求可能会发生变化。
10. 预计的Sentry节点网络奖励
XAI代币经济模型参阅:XAI项目“代币经济”解读
以下是三种估计运行Sentry节点可能获得的Xai奖励的情况。这三种情况基于以下条件假设:
XAI和esXAI的总和永远不会超过2,500,000,000。鉴于Xai生态系统是动态的,准确预测每个Sentry密钥的每月代币奖励是不可能的。
100%的GAS都被燃烧掉了,所以不能保证供应总是通货膨胀的,有可能会是通缩的。
Xai基金会不会出售超过50,000个Sentry密钥(一个节点可以加载多个密钥)。这预计需要2-3年。Sentry密钥的价格会随着时间的推移而越来越贵。
每个Sentry密钥的每月esXAI数量也可能根据生态系统中的质押参与者数量而波动。
下面三个表格的意思是,在XAI和esXAI代币不同流通量的情况下,网络中激活的节点密钥数量和对应的预计每月每密钥的代币奖励:
情况A预估:如果流通中总共有750,000个XAI和esXAI代币,那么每个Sentry密钥将根据下表获得esXAI奖励:
情况B预估:如果流通中总共有1,250,000,000个XAI和esXAI代币,那么每个Sentry密钥将根据下表获得esXAI奖励:
情况C预估:如果流通中总共有2,187,500,000个XAI和esXAI代币,那么每个Sentry密钥将根据下表获得esXAI奖励:
第二部分:XAI是由Arbitrum(ARB)开发和维护的,因此我们必须对Arbitrum的体系结构进行一些阐述:
1.Arbitrum Nitro
所有的Arbitrum链都是基于Arbitrum Nitro构建的,这是生态系统中所有链的基础技术。Nitro运行一个Geth的分叉版本,并使用WebAssembly作为其欺诈证明的底层虚拟机。
2.Arbitrum Anytrust
Anytrust是一个Arbitrum协议,通过一个被称为数据可用性委员会(DAC)的许可方集合来管理数据可用性。这个协议通过引入一个关于数据可用性的额外信任假设来降低交易费用,而不是使用以太坊的无需信任的数据可用性机制。
3.你可能知道的Arbitrum 2层简介
Arbitrum Nova是一个AnyTrust链的例子;Arbitrum One是另一个实现了纯粹无需信任的(并且更加消耗L1-gas)的Arbitrum Rollup协议的备选链。这两条链都是基于Nitro构建的。
4.Orbit 链
Arbitrum Orbit允许第三方创建他们自己的自我管理的Arbitrum Rollup和AnyTrust链。Arbitrum提供Rollup和AnyTrust技术,以在构建Orbit链时获得最大的灵活性。与Arbitrum生态系统中的所有链一样,Arbitrum Rollups和Arbitrum Anytrust Orbit链都使用Nitro作为底层技术进行构建。
5.理解Xai的基本情况
在上述这个背景下我们来理解Xai。Xai作为一个Arbitrum Orbit链运行,利用Anytrust技术实现最大的速度和最小的成本。与大多数“自我管理”的Orbit链不同,Xai得益于来自Offchain Labs的直接技术支持。这种支持对其他Orbit链是不可想象的!并且是Xai作为Arbitrum生态系统中的战略游戏计划的一个关键组成部分。
第三部分:当你有了上述这些概念后,我们进一步深入了解体系架构:
1.AnyTrust:革命化的区块链基础设施
在AnyTrust框架内,作为Arbitrum Nitro技术的前沿变种,Offchain Labs利用创新来解决区块链领域中一些最紧迫的挑战。AnyTrust通过融入轻度的信任假设,为我们带来了全新的视角,显著降低了成本,同时确保了强大的数据可用性和安全性。
2.通过信任假设降低成本
在Arbitrum协议的核心,所有Arbitrum节点(包括验证链的正确性并对准确结果进行质押的验证者)都需要访问Arbitrum链收件箱内的每一个第二层(L2)交易的数据。传统上,Arbitrum rollup通过在第一层(L1)以太坊上以calldata的形式发布数据来确保数据访问,这一过程产生了大量的以太坊gas费用,这是Arbitrum中的主要成本组成部分。
3.Ketsets 灵活性
Ketsets在AnyTrust的架构中起到了关键作用。它们指定了委员会成员的公钥和验证数据可用性证书(DACert)所需的签名数量。Ketsets为更改委员会成员提供了灵活性,并使委员会成员能够根据需要更新他们的密钥。
4.数据可用性证书(DACerts)
在AnyTrust中,一个基本的概念是数据可用性证书(DACert)。DACert包括数据块的哈希、一个过期时间以及证明N-1个委员会成员已经签署了(哈希,过期时间)对的证明。这个证明包括用于签名的关键集的哈希、一个指示哪些委员会成员签署的位图,以及一个在BLS12-381曲线上的BLS聚合签名,证明签名者。
由于2-of-N的信任假设,DACert作为一个证据,表明一个区块的数据至少会在一个诚实的委员会成员那里可用,直到指定的过期时间。这种信任假设是AnyTrust框架内数据可用性的可靠性和安全性的基础。
5.双重数据发布机制
AnyTrust引入了在L1上发布数据块的双重方法。除了传统的发布完整数据块的方法外,它还允许发布DACerts,这些证书证明数据的可用性。L1收件箱合约验证DACerts的有效性,包括参考DACert中指定的有效Ketsets。
负责从收件箱读取数据的L2代码被设计为可以无缝处理两种数据格式。当遇到DACert时,它执行有效性检查,包括确保签名者的数量满足Ketsets的要求、验证聚合签名,并确认过期时间超过当前的L2时间戳。有效的DACerts确保数据块是可访问的,并且可以被L2代码利用。
6.数据可用性服务器(DAS)
委员会成员操作数据可用性服务器(DAS),它提供两个关键的API:
(1)排序器API:专为Arbitrum链的排序器使用,这个JSON-RPC接口使排序器能够将数据块提交给DAS进行存储。
(2)REST API:设计为更广泛的可访问性,基于RESTful HTTP(S)的协议允许通过哈希检索数据块。它是完全可缓存的,部署时可以结合缓存代理或CDNs来增强可扩展性并防御潜在的DoS攻击。
7.排序器-委员会交互
当Arbitrum排序器打算通过委员会发布一个数据批次时,它通过RPC并行地将数据和一个过期时间发送给所有的委员会成员。每个委员会成员存储数据,使用其BLS密钥签署(哈希,过期时间)对,并将签名和成功指示符返回给排序器。 一旦收集到足够的签名,排序器将它们聚合起来为(哈希,过期时间)对创建一个有效的DACert。然后,这个DACert被发布到L1收件箱合约,使其对L2的AnyTrust链软件可访问。 在排序器无法在指定的时间范围内收集到足够的签名的情况下,它采用“回退到rollup”策略,直接将完整数据发布到L1链。L2软件擅长理解两种数据发布格式(通过DACert或完整数据),并适当地处理每种格式。 总之,AnyTrust作为Offchain Labs生态系统内的一个开创性的创新,代表了在解决数据可用性、安全性和区块链基础设施的成本效率方面的关键进步。通过一个明智的信任假设和一种新颖的数据发布方法,AnyTrust为更可扩展、可访问和安全的区块链解决方案铺平了道路。
第四部分:有了上述概念,现在让我们来解释为什么哨兵节点很重要:作弊者检查问题,为什么验证者的困境比你想象的要困难以及解决方案!
作者是Ed Felten,Arbitrum首席科学家
在区块链系统中,一个常见的设计模式是让一个方做一些工作并为正确的行为托管一个保证金,然后邀请其他人来验证这项工作,并在他们发现工作者作弊时拿走这个保证金。你可以称之为"断言-挑战"设计模式。我们在Arbitrum中这样做,最近在新闻中也看到了像Optimistic Rollup这样的提议。
这些系统可能会受到验证者的困境的影响,基本上是观察到,如果你知道他们不会作弊,那么检查某人的工作就没有意义;但如果你不去检查,他们就有作弊的动机。如果你是一个设计师,你希望证明你的系统是激励兼容的,这意味着如果每个人都与他们的激励一致行事,就不会发生作弊。这是一个直觉可能会误导你的领域。这个问题比看起来要难得多,当我们解开下面各方的激励时,我们会看到。
一个超简单的模型
我们首先构建一个我们能够构建的最简单的模型。假设有两个玩家。断言者提出一个声明,可能是真的也可能是假的。检查者可以检查断言者的声明,或者检查者可以选择什么都不做,大概是基于假设断言者可能在说实话。我们假设检查者检查的成本为C,如果检查者检查并发现断言者作弊,检查者将获得R的奖励。(R包括检查者因捕获作弊而获得的所有利益。这包括在“系统外”实现的利益,以及由于增加了对系统的信心而获得的任何利益。)如果断言者在没有被抓到的情况下作弊,检查者会损失L,例如因为作弊的断言者可以欺诈地从检查者那里拿走有价值的物品。
现在我们需要担心两个威胁:贿赂和懒惰。贿赂是断言者可能会贿赂检查者不检查的可能性,从而允许断言者在没有被发现的情况下作弊。我们可以通过确保断言者托管一个非常大的存款来防止这种情况发生,这个存款大于系统中的总价值,并且在检测到作弊时支付给检查者,这样断言者就不愿意支付大于检查者奖励R的贿赂。这将防止贿赂,但它要求系统完全抵押,这可能非常昂贵。
另一个威胁是懒惰,即检查者决定不检查断言者的工作的风险。(请记住,检查者可能会说他们正在检查,但实际上并没有这样做。)让我们看看检查者的激励,看看这是否是一个合理的策略。
假设断言者以X的概率作弊。现在,检查者的效用如下:
如果检查者检查:RX-C
如果检查者不检查:-XL
只有在检查的效用大于不检查的效用时,检查才是值得的,也就是说,如果X > C/(R+L)。这里有个坏消息:断言者可以随机作弊,作弊的概率小于C/(R+L),一个理性的检查者永远不会检查,所以断言者永远不会被抓到作弊。
让我们插入一些数字。如果检查每笔交易的成本为0.10美元,检查者如果检测到作弊,将获得75美元的赏金,但如果检查者未能检测到作弊,将损失25美元,那么断言者可以毫无惩罚地作弊一千次。如果我们希望这个系统运行数千笔交易,那么我们就有一个大问题。在这个模型中,我们显然不能做什么来将作弊的概率降到零。我们只能希望超额抵押系统,以使C/(R+L)的分母变大。
这是一个令人惊讶的稳健结果——以一种不好的方式。它完全不依赖于断言者的激励。只要断言者从成功的作弊中获得非零的优势,它就能以某种概率这样做,知道检查者不值得付出努力去检查。这个结果也不依赖于我们给检查者多少时间来完成工作,或者我们是否为(声称)检查者付费。也许你现在在想,问题是只有一个检查者。增加更多的检查者是否会减少作弊的可能性?令人惊讶的是,它不会。
增加检查者并不能帮助防止作弊
再次,让我们制定一个最简单的模型。现在有两个独立行动的检查者。每个检查者支付C如果它检查,如果有人检查并捕获断言者作弊,R的奖励支付给成功的检查者,或者如果他们都检查了,奖励平均分配给两个人。(如果你喜欢,他们都检查的情况下,你可以给其中一个随机的R的全部奖励。这不影响任何人的策略或结果。)和以前一样,每个检查者将损失L,如果断言者在没有被抓到的情况下作弊。
现在仍然是这样,如果断言者少于C/(R+L)的时间作弊,那么检查者检查是不值得的,因为检查的效用小于不检查的效用。事实上,激励问题比以前更糟,因为每个检查者检查的成本仍然是C,但成功的检查者捕获作弊的预期奖励少于R,因为奖励有时需要分割——预期奖励将在R/2和R之间。如果预期奖励是bR,其中b在0.5和1之间,那么断言者可以作弊高达C/(bR+L)的时间——这比只有一个检查者时更多的未被发现的作弊!(数学变得有点复杂,因为b的值取决于检查者的策略,他们的策略取决于b,但应该很清楚,他们有时会需要分割奖励。而且,L的有效值也减少了,因为一个不检查的检查者可能不会因为其他检查者检查而失去他们的L。)
增加检查者的一个真正有帮助的地方是防止贿赂。有了两个检查者,断言者必须支付超过R的贿赂给每个断言者,使贿赂变得两倍昂贵,从而允许50%的抵押,而不是完全的抵押。但是权衡是作弊的数量增加了。
我不会在这里详细介绍所有的数学,但在合理的假设下,从一个检查者增加到两个可能导致未被发现的作弊增加50%。
增加检查者会使事情变得更糟!
你可以增加更多的检查者,事情会变得更糟。随着检查者的增加,检查者需要更多地担心奖励被多种方式分割,所以每个成功的检查者的预期奖励逐渐下降,导致断言者安全作弊的概率逐渐上升。从这个角度看,最坏的情况是世界上的每个人都可能成为一个检查者。这不是无限坏的,因为随着检查者的增加,事情变得越来越糟,但它肯定不会帮助防止作弊,即使它确实有效地消除了贿赂的风险。
你确定你的系统是激励兼容的吗?
如果你有一个适合这种类型的模型的系统,并且你认为它是激励兼容的,你需要仔细考虑为什么。特别是,你需要解释为什么检查者会做检查的工作,即使他们认为断言者不太可能作弊。仅仅有一个大的作弊惩罚是不够的。仅仅有一个捕获作弊者的奖励是不够的。仅仅有很多检查者是不够的——事实上,这可能使事情变得更糟。为什么你的系统免疫?
这个挑战适用于像Optimistic Rollup这样的系统。当我们谈论Arbitrum时,它也适用于我们。
综合上述内容,传统的激励检查方法并没有得到期望的结果——存在一个基线的作弊率,低于这个率的检查者会认为检查是不值得的。总结来说:
有两个玩家,一个断言者,他提出的声明是真的还是假的,还有一个检查者,他可以检查这个声明,但需要一些计算成本。如果检查者进行检查,其效用是RX-C,如果不检查,其效用是-XL,其中R是捕获作弊的奖励,C是检查的成本,L是检查者因未检测到作弊而损失的,X是断言者作弊的概率(由断言者选择)。一些代数运算显示,如果X < C/(R+L),检查者就不会费心去检查,所以断言者可以逃脱这么多的作弊。
为了解决这个问题,并创建一个激励驱动的检查者总是会检查的情境,我们必须改变检查者的激励。基本的问题是,在原始模型中,检查者检查的积极激励都是与X成比例的,即作弊的概率,所以断言者可以使这些项变小,只要他们不作弊太多。如果我们想要一个无论如何都会操作的检查激励,我们需要创建一个与断言者的行为无关的检查激励或不检查的不激励。
TrueBit尝试通过向断言集添加故意错误的声明来做到这一点,本质上是用X加上一个常数来替换X。这种方法存在一些问题。(原始的Arbitrum论文有关于TrueBit的激励问题的一节。)
关注挑战
我们使用一个我们称之为关注挑战的不同方法。其思想是,如果断言者正在计算一个值f(x),它首先发布x和一个加密的挑战。为了正确地应对挑战,检查者需要知道f(x)。只有在挑战发生后,断言者才发布f(x)——此时,检查者已经完成了计算f(x)的艰难工作,所以它没有懒惰的动机。(关于协议的更多细节如下。)
为了减少这需要的链上交易数量,我们会安排事情,使得检查者对挑战的正确响应通常是沉默。但在罕见的情况下,检查者必须在链上发布一个很小的交易。如果检查者给出了错误的答案——在应该发布时沉默,或者在应该沉默时发布——它将失去一个小的存款。
让我们调整原始的激励模型,以纳入关注挑战。我们需要两个新的参数(我们都可以选择):P,检查者的正确响应是发布的时间的百分比,和A,如果检查者给出了错误的答案的罚款。现在,检查者的效用是:
如果检查:RX-C
如果不检查:-LX-PA
关键的观察是,只要PA > C,那么检查就是最佳策略,无论X(作弊的概率)是多少。
成本非常低
为了评估成本,让我们看一个具体的例子。我们假设每五分钟有一个断言,检查成本是$0.001。如果我们将概率P设置为0.3%,检查者将必须支付$3的存款。现在,检查者每次断言的成本是$0.0003的气体费用($0.10的气体费用用于发布其非沉默的响应,乘以0.3%的概率它必须发布),加上大约$0.0003的锁定其$3赌注五分钟的利息成本,总成本为每次断言$0.0006。
多个检查者的扩展
关注挑战在有多个检查者的情况下扩展得很好。协议发出一个挑战,这个挑战会对每个检查者产生不同的影响,迫使每个检查者自己计算f(x)。每个检查者都会经历相同的成本(在我们的例子中,每次断言$0.0006)。
在一个开放的系统中,任何人都有资格检查计算,你可以允许任何人注册为检查者并放置所需的小存款。这将使他们有资格接受关注挑战,并可能从dapp开发者那里获得补偿。任何人都可以挑战断言者的不正确声明,但只有注册的检查者会面临关注挑战。
协议的技术细节
了解了关注挑战可以为我们做什么,让我们深入了解它们是如何工作的技术细节。
每个检查者都有一个私钥k和相应的公钥gᵏ,在一个合适的组中定义。每个检查者的公钥都为大家所知。我们还将依赖于一个合适的哈希函数H。
为了对f(x)的计算发出挑战,其中函数f事先为大家所知,断言者生成一个随机值r,然后发布(x, gʳ)作为挑战。
拥有私钥k的检查者应该响应挑战,只有在H(gʳᵏ, f(x)) < T时,才发布一个很小的交易,其中T是一个适当选择的阈值。注意,只有断言者(知道r)和那个特定的检查者(知道其私钥k)可以计算哈希,因为他们是唯一可以计算gʳᵏ的人。还要注意,计算哈希需要知道f(x)。
在检查者有一段时间发布他们对挑战的回应后,断言者可以发布其f(x),如果任何检查者不同意它,它将像往常一样受到挑战。此时,断言者可以指责任何回应不正确的检查者;断言者必须发布r来证实其指控。矿工或合同可以检查指控是否正确,并惩罚违法者;但如果断言者声称的f(x)最终不被接受为正确,指控将被忽略。如果有任何检查者被罚款,断言者将获得一半的被没收的资金,另一半将被销毁。
这种方法给了检查者正确的激励。知道一个检查者应该如何响应挑战需要知道那个检查者的私钥和f(x),所以每个检查者都会想计算f(x)。除非检查者自己计算f(x),否则它不能安全地执行协议。其他检查者的响应对确定f(x)没有用,因为它们依赖于那些检查者的私钥。如果一个检查者依赖于其他人告诉它f(x),它没有办法验证那个声称的值(除了自己计算f(x)),并且如果它是错误的,检查者冒着被罚的风险。甚至有一个方有动机试图误导检查者关于f(x)的信息——那就是断言者,他从检查者的错误中获利,可能会用这些利润贿赂检查者的“朋友”给检查者提供错误的信息。
优化和结论
有几个技巧可以使这个协议更有效。例如,我们可以将一个断言与下一个挑战捆绑在一起,放入一个链上的交易中,这样挑战就不会增加交易的数量。如果P很小(例如,在我们的例子中为0.3%)并且检查者的数量不是很大,那么检查者很少需要在链上写交易,所以协议对链上交易的数量的总体影响将是最小的。
通过巧妙的实现,这个协议的成本应该非常低,与在链上发布断言的预先成本相比。在我们的例子中,将关注挑战添加到现有的断言-挑战协议中,增加的总成本不到1%。
而且收益是实质性的——我们得到了一个激励兼容的检查协议,不受验证者困境的影响。只要至少有一个检查者是理性的,断言者的声明总是会被检查的。
关于项目的其他信息可以参阅:游戏公链Xai:币安广场资料库