链客,专为开发者而生,有问必答!

此文章来自区块链技术社区,未经允许拒绝转载。

关于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软件的非分支变化,这将实现大量的可用性和基础设施改进。

EOSIO Dawn 4.0 发布相关推荐

  1. Boost 1.53.0 发布,可移植的C++标准库

    Boost 1.53.0 发布了,包含了 5 个新的库,修复了一些安全漏洞以及 Boost.Locale 组件的 bug . 新增的 5 个库包括: Boost.Atomic Boost.Corout ...

  2. java 开源sns_JEESNS V1.0发布,JAVA 开源 SNS 社交系统

    JEESNS V1.0 发布了,本次更新内容: 增加后台管理员授权与取消功能 增加私信模块 解决在微博页面,左侧微博点赞过后,左侧展示列表小手会变黑,但是右侧热门出小手依然是白色 修复后台添加栏目.文 ...

  3. Element 2.6.0 发布,基于 Vue 2.0 的桌面端组件库

    开发四年只会写业务代码,分布式高并发都不会还做程序员?   Element 2.6.0 发布了,Element 是一套为开发者.设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库,提供了配套设 ...

  4. Git 2.25.0发布,支持部分clone、稀疏checkout

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者 | oschina 来源 | https://www.osc ...

  5. Sequelize 4.43.0 发布,基于 Nodejs 的异步 ORM 框架

    Sequelize 4.43.0 发布了,Sequelize 是一款基于 Nodejs 的异步 ORM 框架,它同时支持 PostgreSQL.MySQL.SQLite 和 MSSQL 多种数据库,很 ...

  6. pxeconfig 4.2.0 发布,PXE 首要启动设备

    pxeconfig 4.2.0 发布了,pexconfig 可以让你使用支持 PXE 的网卡作为系统的首要启动设备.该软件包括 PXE 菜单工具用于控制网络计算机直接在 BIOS 级别上从控制台上启动 ...

  7. Ionic 4.3.0 发布,移动应用开发框架

    Ionic 4.3.0 发布了,Ionic 是一个高级的 HTML5 移动端应用框架,也是一个开发混合移动应用的前端框架. Bug 修复 action-sheet:默认按钮清空数组(9e63947) ...

  8. 一篇文章回顾智源悟道 1.0 发布全程

    北京卫视新闻频道,对智源"悟道1.0"发布进行报道 3月20日,北京智源人工智能研究院发布"悟道1.0",这是我国首个超大规模智能模型系统! "悟道1 ...

  9. Apache Camel 2.15.0 发布,Java 规则引擎

    Apache Camel 2.15.0 发布啦!!!该版本经过 6 个月开发,修复了超过 500 个 bug.但最值得关注的是给我们带来的新特性: 自文档 目录组件 Camel 工具类目录 重用 Ca ...

最新文章

  1. elasticsearch使用bulk实现批量操作
  2. Matlab学习笔记——二进制文件的读写
  3. java util concurrent_Error: java.util.concurrent.Execution
  4. ISO 5 Lecture for Micro-Macro Interactions
  5. 在线运行 Linux,强的离谱!
  6. 理论计算机科学研究生,清华大学理论计算机科学中心姚期智组招收保送研究生,请帮忙发到虎...
  7. C++STL Vector
  8. java 方法重载调用_Java方法的定义以及调用、方法重载、可变参数以及递归
  9. ORA-01791: 不是 SELECTed 表达式
  10. 用java绘制一个光照球体_HTML5 Canvas一个基本光线行进的球体光照效果
  11. 1588: [HNOI2002]营业额统计 - BZOJ
  12. 在Ubuntu上面使用华为EC3372
  13. 决策树算法的应用python实现_决策树ID3和C4.5算法Python实现源码
  14. 高通android刷机工具,步步高工具高通版刷机救砖教程图解
  15. IDM下载器使用教程
  16. cad转pdf格式简易步骤
  17. 37个自学网站,一年让你省下十几万
  18. fulisha-English
  19. 西北工业大学21计算机考研,研友分享:西北工业大学计算机考研血泪史
  20. ASP.NET——使用FileUpLoad服务器控件实现文件上传

热门文章

  1. java并发读取相同的文件_高效读取大文件,再也不用担心 OOM 了!
  2. HTML页面中使两个div并排显示
  3. 微信小程序如何进行登录授权和获取用户信息
  4. maya批量命名插件_教你玩转MAYA的四十二精华造诣(第一期)
  5. 【学习——字符串】字符串之一网打尽quq
  6. Windows Phone SDK update for Windows Phone 7.8
  7. loadrunner另类玩法【测试帮日记公开课】
  8. 构建基于Chromium的应用程序(Winform程序加载Html页面)
  9. 【独家】深入浅出话AI:定义和主要研究方法
  10. 便捷,轻巧的Groovy数据库操作