| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 区块链 -> 2021-09-06 -> 正文阅读 |
|
[区块链]2021-09-06 |
ICPunks是Dfinity上第一个Cyptopunks风格创建的IC NFT项目,ICPunks上的NFT是引入ERC-721进行铸造的,该项目一共铸造10000个不同特征免费供于社区索取链上小丑,该项目10000个NFT的索取过程分为4个时间线:北京时间9月2日凌晨0点,北京时间凌晨2点,北京时间凌晨3点,北京时间凌晨4点,前三个时间线皆是白名单索取,凌晨4点时间线为普通参与者索取,在4点时间线时有大部分用户到点之后几乎大部分参与者无法索取NFT,本期文章带各位小伙探讨ICPunks无法索取的根本原因? 我们回忆一下当时UTC时间20:00(北京时间凌晨4点)当时在ICPunks官网无法索取的两个问题:第一个是ICPunks前端没有加载出Chaim功能无无法索取,第二个是Chaim按钮出现后大部分人Chaim不了NFT。 以下部分资料由开发者论坛的队员提供,注意:以下均是个人分析,ICPunks官方解释出来可能会有变更: 我们在Plug钱包中查看交互过的Dapp查看到ICpunks Dapp由两个部署在ID为Pjljw的公共子网上的Canisters组成,通过IC.Rocks区块浏览器可以查看到该Canisters的分布详情。由此可见ICPunks 的Canisters均部署在ID为Pjijw 的子网上。 qcg3w-tyaaa-aaaah-qakea-cai 3hdbp-uiaaa-aaaah-qau4q-cai 回到在开发者论坛队员提供的资料显示在UTC时间2021-09-01 16:00(北京时间0点)时第一波增加流量开始访问pjijw子网,该时间是ICPunks第一波白名单索取NFT的用户,在下图边界节点发送的HTTP请求显示在UTC时间16:00至19:00发送的HTTP请求只增不减,逐渐增长的流量发送的HTTP请求开始达到边界节点配置的速率限制,所以边界节点开始限制对子网上容器的消息请求,这不仅对ICPunks部署的容器造成了影响,也对pjijw子网上的其他容器造成影响,这就意味着边界节点开始限制用户发起的HTTP消息请求。 边界节点发起的HTTP请求 而在UTC 20:00的时候从边界节点发起的HTTP请求急剧增加,这也是ICPunks全面开放的极端,当时发起HTTP请求的峰值达到了每秒38k次以上。 UTC 20:00 边界节点发起的HTTP请求 在ICPunks还未启动Chaim时,节点和子网表现是正常的,而在开启Chaim索取时,大量的更新调用提交涌入子网,从每秒提交18次更新到超过每秒提交1000次更新调用请求。 以下图片是通过边界节点发起的请求响应的返回结果的数据: 图一 图二 我们可以看得到在图一在UTC时间16:00之前状态峰值相对于来说处于一个稳定的状况,自ICPunks第一批百名单开始(UTC时间16:00)之后,大批流量涌入通过边界节点不断的发起调用请求之后,子网节点开始返回403结果,而在UTC时间20:00 ICPunks全面启动的的时候,返回403结果的数量更是达到了一个新的临界点(403结果是被子网节点拒绝的调用请求)。而在图二中ICPunks全面开启之后返回202结果只有少数部分(202 HTTP状态代表消息调用被受理)这意味在ICPunks从20:00开始之后只有少部分人的调用请求被受理了,而大部分人的调用请求被节点拒绝,也就能表明当时出现Chaim界面之后只有少数人可以索取,大部分用户则是被拒绝请求的。 由于ICPunks全面开启(UTC时间20:00)之后大量流量涌入导致pjljw子网的最终区块的确定率从1秒/块下降至1秒/0.3个区块。 并且这个阶段pjljw子网通过入口的消息调用限制为每秒50条。 在根据开发者论坛队员给出的资料我们可以将ICPunks造成pjljw子网网络拥堵的时间线流程分为:
根据开发者论坛队员的描述:在客户端(浏览器的控制台日志中)显示边界节点网关.ic0.app返回大量的报错代码500,而ICPunks的静态资源是通过Dfinity提供服务的,所以只有ICPuks的前端加载足够多的静态资源才能够发挥作用:这也是为什么这么多用户除了不断的重新加载页面而什么都做不了的原因。 从UTC20:00时间之后边界节点涌入大量流量并向ICPunks的两个容器发送高频的调用消息请求,而容器高频更新负载导致子网性能下降,这个因素导致用户无法与ICPunks上的Canisters进行交互索取NFT,以及访问pjljw子网上的其他容器,并且这段时间内大多数消息请求要么会被受到速率限制,要么会被节点直接拒绝(因为消息请求过载)或者会被返回不同的报错结果,所以在当时只有一小部分用户的调用请求被受理,而大部分用户的请求是被拒绝的,而第一批白名单的用户能够正常Chaim他们的NFT是因为当时他们并没有受到速率限制并且当时子网的完成率是正常的。 尽管在当时的流量很高pjljw子网也继续处理查询调用和更新调用的请求,边界节点也继续为流量提供服务,速率限制是为了保护子网免受大量流量的影响,因为未经过过滤的流量可能会导致子网节点更多终端。 在开发者论坛中队员表示会通过改进以下要求防止再次出现此类事件的再次发生:
Dfinity深圳社区,专注于Dfinity生态技术发展交流与优质项目挖掘分析 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 18:42:59- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |