注:原文来自OneTrueKirk在ethresear.ch上的帖子
这是我第一次在这里发主题帖子,如果有任何冒犯之处,我道歉。我一直在思考这个想法(StatelessRollups),主要是针对我们贷款协议的特殊Rollups,但我希望它能普遍适用,并感谢所有的反馈。
TLDR:
仅发布状态根,不发布调用数据。
(MarsBit注意:Calldata是合约交易中数据部分的值,不可修改。)
详述
如果不用以太坊作为数据可用性层,把完整的状态发布为calldata,只把状态根发布到主网会怎么样?主要好处是减少以太网车间存储的数据量,从而降低用户在L2上的交易成本。即使有了EIP-4844,blobace也不是免费的。
主要风险是DataWithholdingAttack,即提议者发布了一个有效的状态根,但扣留了其他rollup节点的完整数据,以垄断未来的块生产或持有资金。为了防止这种情况,诚实节点必须质疑任何没有对等体可以提供数据的状态更新。Arbitrum式的交互式欺诈证明可以用来强制提议者公开主网上的完整状态,但如果root有效,仍然会导致挑战失败,所以即使在失败的情况下,挑战的成本也很低。
(MarsBit注:DataWithholdingAttack是指攻击者在访问受保护数据时故意不返回所有数据或返回错误数据,以达到欺骗或破坏的目的。
如果挑战失败的成本较低,即使诚实的提议者正确地将状态数据点对点传播,也可能迫使他们支付将所有状态数据发布到主网的成本来抵御挑战,从而使诚实的提议者感到痛苦。发起挑战的成本必须与辩护的成本成比例,以确保诚实的支持者不会受到这种方式的攻击。
在最坏的情况下,如果攻击者可以花1美元让诚实的支持者损失1美元,他们就可以迫使支持者放弃,让他们的区块恢复。随后,一个新的诚实提议者可以出价,除非攻击者可以反复攻击所有潜在的诚实提议者,包括所有有资金的人,否则他们无法造成永久的宕机。有可能再增加一个条款。当一个有效区块定案时间过长,挑战的成本就会上升。这样,很容易挑战一个不诚实的提议者,但不可能长时间阻止状态转换。
更乐观的是,如果节点将数据从点到点传播,它们可以决定自己的数据备份和可访问性解决方案,用户最好在本地存储自己的状态转换所需的数据。在特定应用程序的上下文中,我考虑以与EVM完全不同的方式编码汇总状态,以优化它。与特定用户帐户相关的所有状态都可以编码为相同的哈希值,因此用户可以更容易地验证他们帐户中的更改,而无需知道全局状态(即,确认您在交换中收到了您想要的令牌数量,而无需担心它来自哪里)。
摘要
很想听听大家的想法,希望大家提供相关工作的链接。与普通的optimisticrollup不同的是,很容易确定提交的calldata是否与主网的状态根匹配,它们是否有效,但仅从状态根是无法知道一个更新是否有效的,所以需要仔细考虑挑战期和griefing(即恶意行为)的经济问题。
本网站声明:网站内容来源于网络。如有侵权,请联系我们,我们会及时处理。
温馨提示:注:内容来源均采集于互联网,不要轻信任何,后果自负,本站不承担任何责任。若本站收录的信息无意侵犯了贵司版权,请给我们来信(j7hr0a@163.com),我们会及时处理和回复。
原文地址"无状态设计是什么意思,无状态应用有哪些":http://www.guoyinggangguan.com/qkl/146081.html。
微信扫描二维码关注官方微信
▲长按图片识别二维码