链客,专为开发者而生,有问必答!
此文章来自区块链技术社区,未经允许拒绝转载。
关于Dawn 4.0 RAM分配的反馈
一些社区成员表示担心,在其他任何人发现之前,有些人会通过购买便宜的内存来获得不合理的利润。为了缓解这种情况,我们建议那些人用一个非常有限的RAM供应来启动一个节点,然后在头几个月内逐步增加内存。如果RAM的供应量从32GB开始,然后在几个月内增长到1TB,那么RAM的价格可能会随着时间的推移而迅速下降到最初定价的3%。只有那些真正需要RAM或者在出价时考虑未来RAM供应的人才会购买初始RAM。无论哪种方式,没有人会获得“便宜”的RAM或“免费利润”。
测试网络状态
我们在欧洲,亚洲和美国拥有节点的内部测试网络一直运行良好,没有出现重大问题。
主观CPU资源使用率
在过去的几个月中,我们一直在试验客观的CPU计费。目标计费尝试以确定性方式计算交易使用的多个CPU指令。这具有很好的特性,可以确保对交易消耗的资源达成完全和明确的共识。这也是许多其他智能合约平台所使用的方法。
当我们在一年前引入EOSIO时,我们提出了使用主观尽力而为的调度。在这种模式下,每个区块生产者将测量执行交易所花费的挂钟时间并相应地向用户收费。为了保持对使用情况的一致性,生产者将向交易报告其计费的微秒数。
虽然客观计费对于消除账单纠纷和简化共识的能力非常好,但它有几个缺点,导致我们最终决定主观计费:
客观CPU度量通过引入额外的簿记降低了性能。
客观CPU度量在任何时候行为的实际成本与其目标近似之间存在不一致时引入攻击和拒绝服务向量。
客观CPU度量难以维护,升级并引入优化。
主观计费有其自身的挑战,特别是在共识系统中。幸运的是,我们找到了创新的解决方案,使其具有实用性其中一些挑战包括:
信任生产者准确报告使用情况。
解决生产者之间的意见分歧(由硬件/软件/负载引起)。
处理恶意生产者。
通过授权证明,预计区块生产商将成为具有合同义务和恶意行为法律后果的公共实体。进一步预计,所有21个活跃的生产者都会得到选择它们的社区的高度认可。
基于此,我们可以将一个信任元素放在所有这些元素上,充当CPU运行时间,而不是说事务运行需要多长时间。这意味着在正常运行条件下,我们可以相信所报告的运行时间在所有生产者的平均运行时间的合理误差范围内。
这种方法的批评者可能会指出,一个单一的恶意生产者可以构建一个无限循环的块,并报告它没有时间。为了防止这种情况,所有节点要为所有块放置几秒运行时间的上限;然而,即使有上限,也可能会导致网络中断。一个聪明的恶意生产者可能会构建一个块,使得50%的节点接受它并且50%拒绝它并因此分叉网络。
我们的团队已经分析了这些攻击媒介,并认识到运行时间非常长的块与网络延迟或中断很长时间没有区别。面对其他主观事物,在实际网络分叉中强健的任何一致性算法也应该是稳健的。由于带有BFT的DPOS可以承受网络分叉(例如,如果美国和中国暂时与更广泛的互联网断开连接),它可以在存在恶意的制造商的情况下生存。
有几种方法可以阻止生产商减少网络分叉的可能性,无论原因是大西洋的光缆断开还是恶意制造商,都有相同的方法。
维护多个连接
采用这种方法,如果跨大西洋的连接被切断,那么制作者会将数据包路由到太平洋。说到验证块,生产者应该有多个验证节点,并且从来没有两个节点试图验证同一个块。在最极端的情况下,每个生产者可以有专门的节点来处理来自每个同伴生产者的传入块。如果一个生产者用无限循环堵塞他们的验证通道,那么来自其他生产者的块仍然可以通过他们的独立和冗余通道。一旦不可逆块号移过坏块的块号(具有无限循环的块号),该节点可以强制块处理终止并退出。这将需要2/3以上的生产商才能成为拜占庭不断推进的共识.
维修或路线周围的损害
在切断其中一个光纤时,并不总是可以准备好接管多个光纤。在这种情况下,派遣一个团队来修复损坏的电缆并恢复连接。这可能需要更长时间,但最终连接恢复并且网络恢复达成共识,只不过有点停机时间。当涉及到恶劣的生产者造成恶作剧时,其他生产者可以简单地更新他们的配置,将坏的生产者列入黑名单,然后网络将恢复正常运行。将恶意生产者列入黑名单的过程甚至可以在他们观察到运行时间不合理的块时自动执行。最坏的情况是一个坏的BP在禁区边缘制作一个区块,这样只会导致一半BP将他列入黑名单。在这种情况下,最后的不可逆转的块将停止前进,而生产者决定哪个未完成的分支.
在所有上述情况下,依靠最后一个不可逆转块来确定终结点的用户是免于双重支出攻击的,并且网络经历的“停机时间”可能小于他们经历的典型“停机时间”公司或ISP。
我们认为,DPOS的治理流程和激励措施使得导致短期停机的恶意行为的概率低于导致所有区块链平台停机的互联网连接问题的可能性。至少在DPOS用户可以安然无知地在重新连接之后解开的少数连接。通过工作链的证明,网络拆分可能会导致对只依靠固定数量确认的人进行双重支出攻击。
系统合约更新
'eosio.system'合约是提供生产者注册,投票,放样和资源分配的实施方式。我们的团队一直致力于提供社区在创建链条时可能会选择采用的参考实施。在此版本中,系统合同已更新为包含以下内容:
没有人可以解锁,直到150,000,000.0000 TOKENS投票给至少一个制作人或代理人。
如果一个链希望将10%的TOKENS分配给Block.one,它将每年以1%的速率进行速率限制。
黑客帐户恢复和丢失的密码恢复
我们的团队创建了一种新方法来处理被黑客户帐户恢复和丢失的密码恢复,使几乎所有事情都可以在Web Assembly中实现。我们添加了一个新的内部API,它返回上次权限级别由帐户授权的情况。通过这些信息,智能合约现在可以实施执行30天不活动所需的逻辑,然后在完成Web Assembly的重设完全丢失密码之前提前7天通知。
我们删除了3个硬编码的动作处理程序,消除了潜在的错误,并可以稍后使用软更新轻松进行增强。丢失密码恢复的一个或多个实现可以在1.0发布之后作为单独的智能合约来提供。
现在在Github上可用
EOSIO Dawn 4.0现在可在GitHub上使用,因此开发人员可以开始测试他们的应用程序。
EOSIO 1.0即将推出
我们的团队正在全天候工作,在6月的第一周为市场带来稳定的EOSIO 1.0。这个初始版本将具备让任何人创建自己的基于EOSIO的区块链所需的一切。我们实施了“功能冻结”,接下来的几周将致力于运行和内部测试网络并修复发现的错误。我们的目标是确保最关键的功能坚如磐石。在EOSIO 1.0之后,我们将继续增强EOSIO软件的非分支变化,这将实现大量的可用性和基础设施改进。