diff --git a/404.html b/404.html index 1f094e805..6bcdde35b 100644 --- a/404.html +++ b/404.html @@ -13,13 +13,13 @@ gtag('config', 'G-SMSDTMGLTV'); - +

404

That's a Four-Oh-Four.
Take me home.
- + diff --git a/_Footer.html b/_Footer.html index 7d7793d69..99c10537d 100644 --- a/_Footer.html +++ b/_Footer.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -38,6 +38,6 @@

See something missing? Have tips to share? File an issue (opens new window), and we'll follow up as soon as possible. (If you have write permission in this repo, feel free to edit directly.)

- + diff --git a/about/index.html b/about/index.html index 2a2a9277a..1495a447a 100644 --- a/about/index.html +++ b/about/index.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -38,6 +38,6 @@

# Mission, Vision, Value

# Contacts

# Resources

- + diff --git a/assets/js/12.7c086c57.js b/assets/js/12.22497a30.js similarity index 99% rename from assets/js/12.7c086c57.js rename to assets/js/12.22497a30.js index 31c26a295..afd76535c 100644 --- a/assets/js/12.7c086c57.js +++ b/assets/js/12.22497a30.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{328:function(e,s,n){e.exports=n.p+"assets/img/venus-gateway-system-design.993fdfcd.png"},426:function(e,s,n){"use strict";n.r(s);var t=n(17),o=Object(t.a)({},(function(){var e=this,s=e.$createElement,t=e._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h2",{attrs:{id:"前言"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#前言"}},[e._v("#")]),e._v(" 前言")]),e._v(" "),t("p",[e._v("在同一条区块链上需要具有多个互操作的软件实现,每个实现都有自己的安全问题集,但是所有实现不尽相同,因此,启动具有多种实现方式的加密货币网络可降低发生灾难性错误的可能性,Venus 正是 Filecoin 的实现之一。")]),e._v(" "),t("p",[e._v("Venus 代指 Filecoin 的通用实现之一,venus 则代指 Venus 的组件之一。Venus 致力于帮助中小存储提供者能够更加简单的加入到 Filecoin 生态网络建设中。")]),e._v(" "),t("p",[e._v("目前 Venus 通过 venus、damocles、sophon-miner、venus-wallet、sophon-messager、sophon-auth、sophon-gateway 组件,已经实现了 Filecoin 分布式矿池的支持,未来,Venus 将持续完善自身,并共同推进开源的 Filecoin 开发与生态的发展。")]),e._v(" "),t("h2",{attrs:{id:"为什么我们要这样做"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#为什么我们要这样做"}},[e._v("#")]),e._v(" 为什么我们要这样做")]),e._v(" "),t("p",[e._v("2020 年 6 月,Protocol Lab 发起了关于由社区后续维护 go-filecoin 的 RFP,IPFSForce 随后申请并获得了维护权。10 月,go-filecoin 更名为 Venus,我们继续推进对 Venus 项目的维护工作。")]),e._v(" "),t("p",[e._v("在重新保持维护之前,Venus 是一个严重缺乏维护的项目。协议和组件上,vm/mpool/chain/rpc 虽然都有了,但是全都存在不同程度的问题,我们用了三个多月的时间,逐渐修复很多协议层、代码层,、性能的问题,使得 Venus 完成了与 Lotus 的互操作,让使用 Venus 的节点可以正常的在网络上运行。后续我们又逐渐的让 Venus 支持了 Calibration、2k 网络。")]),e._v(" "),t("p",[e._v("完成以上工作后,我们着手于 Venus 的开发方向。")]),e._v(" "),t("p",[e._v("我们的设计是让 Venus 向矿池的发展角度去支持,最初的设计是从“如何扩展单一存储提供者”思考,这个方向存在理论上的可行性,但是最大的问题在于 Filecoin 独特的证明机制。因为 Filecoin 网络的存储提供者必须周期性的提交‘时空证明’,而为了生成证明,存储提供者必须读取一整个 partition 的数据,如果 sector 极其分散的分布到不同的地方,通过公网读取,则不是一个可执行的方案。")]),e._v(" "),t("p",[e._v("后来我们通过数次的设计与修改,最终产生了现在的方案,就是分布式矿池。分布式矿池并非体现在单一存储提供者,而是将分布式的概念体现在多存储提供者的管理,这更像一个存储提供者联合体。")]),e._v(" "),t("p",[e._v("Venus 分布式矿池在外部的体现和传统的分布式矿池是相似的。在存储资源上体现在地域分布性,只要有网络可以访问的地方,都可以使节点接入到 Venus 矿池;在出块的角度上,因为 Filecoin 按算力比例来计算出块机率,所以分散的计算和整体的计算的最终结果应该是相同:"),t("em",[t("strong",[e._v("n1/p+ n2/p+n3/p......= (n1+n2+n3+.....)/p")])]),e._v(",这在算法的基础上提供了理论基础。")]),e._v(" "),t("p",[e._v("在真实数据存储检索上,存储提供者可以通过 venus 统一入口接入网络或者自主接入。设计中,venus 会在获得存储提供者允许的条件下,按照数据的访问需求来选择合适的节点存储数据,使得数据更贴近真实的使用场景。")]),e._v(" "),t("ol",[t("li",[t("em",[t("strong",[e._v("数据存储")])]),e._v(":支持组件共享,存储会逐渐迁移到 MySQL,通过一些高可用的方案保证 Venus 的元数据安全。")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("共享组件")])]),e._v(":支持高可用,保证服务的质量,减少存储提供者的时间成本与维护成本,这使得存储提供者能够更容易加入到矿池生态中。现在的挖矿活动专业性很强,而实现 Filecoin 利用闲散存储资源的梦想则不可避免需要降低参与门槛,才能吸引更多的参与者进来。")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("聚集出块权")])]),e._v(":存储提供者能够将资源整合在一起,互相帮助打包消息,这样可以避免小存储提供者的消息无人打包的困境。")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("提升 Filecoin 网络的吞吐量")])]),e._v(":如果同一高度存在多个区块,venus-miner 能够保证每个区块中的消息都是不同的,而如果各自出块,消息则很可能大量重复。")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("提升消息的稳定性")])]),e._v(":挖矿活动中的消息可以和节点分开,由 venus-messager 来管理,venus-messager 会跟踪链的最新状态来设置一个相对合理的预估的 gas 参数,同时也支持用户自己设置一个消息参数。")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("提升数据访问速度")])]),e._v(":目前的 Filecoin 网络更多的还是存储,但是作为一个存储服务,最终需要对外输出检索服务才能实现根本价值。如果有足够多的存储提供者使用 Venus,那么 Venus 在真实数据的处理上就有更多的可能,比如数据的分布,Venus 可以将数据分布到距离客户最近的一些存储提供者节点,这样可以提高客户的访问速度;比如一些公有数据可以把这些数据尽可能的分散到更多的节点上,保障在任意位置的访问都有效,这可以大大提升 IPFS 网络的效能,进一步实现 IPFS Web3.0 的梦想。")])]),e._v(" "),t("h2",{attrs:{id:"venus-如何工作"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-如何工作"}},[e._v("#")]),e._v(" venus 如何工作")]),e._v(" "),t("p",[e._v("Venus 是 Filecoin 的通用实现之一,致力于分布式的集群架构及更简洁的职责划分。")]),e._v(" "),t("p",[e._v("Venus 分布式存储池在外部的呈现和传统的分布式矿池是相似的。在存储资源上体现在地域分布性,只要有网络可以访问的地方,都可以使节点接入到 Venus 矿池。")]),e._v(" "),t("h3",{attrs:{id:"venus"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus"}},[e._v("#")]),e._v(" venus")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/filecoin-project/venus",target:"_blank",rel:"noopener noreferrer"}},[e._v("venus"),t("OutboundLink")],1),e._v(" 类似 lotus-daemon,用于实现全节点。venus 接入 Filecoin 区块链网络,为 Venus 提供数据支持。可以把 venus 当作普通节点来使用,它具有区块链节点必备的所有功能,如 chain、mpool、wallet。venus 的接口和 lotus 基本兼容(如果存在不兼容的接口,欢迎发布 Issue),你可以在 venus 上创建私钥、查询资产、转账等等。在典型部署环境里,venus 仅仅提供基础链上数据查询服务,本身不保存私钥。slashfilter 所需要的区块数据,存储到数据库里,节点本身是无状态的,这样通过 nginx 反向代理后就可以实现 venus 节点的高可用。")]),e._v(" "),t("p",[e._v("venus 节点自身有一些区别与 lotus 的地方:")]),e._v(" "),t("ol",[t("li",[e._v("创建区块的接口中支持了外部签名(后续会向 Lotus 提 PR)")]),e._v(" "),t("li",[e._v("消息选择的接口支持同时选择多个批次的消息,用于多存储提供者出块时选择消息。")]),e._v(" "),t("li",[e._v("支持 sophon-auth 的的中心访问授权")])]),e._v(" "),t("p",[e._v("因此如果对 Venus/Lotus 混合部署感兴趣,需要使用我们维护的 "),t("a",{attrs:{href:"https://github.com/ipfs-force-community/lotus/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("lotus 兼容 venus 的项目"),t("OutboundLink")],1),e._v(",可自行 pick 代码编译。")]),e._v(" "),t("h3",{attrs:{id:"sophon-auth"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sophon-auth"}},[e._v("#")]),e._v(" sophon-auth")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/ipfs-force-community/sophon-auth",target:"_blank",rel:"noopener noreferrer"}},[e._v("sophon-auth"),t("OutboundLink")],1),e._v(" (原 venus-auth) 是用于授权的组件,在典型的部署环境下 sophon-auth 用于给 venus、sophon-miner、sophon-messager 提供授权服务,每个本地的节点访问共享组件都要经过授权,后续会在这个基础上进行功能扩充,做一些安全方面的控制,比如访问限流、黑名单。")]),e._v(" "),t("h3",{attrs:{id:"sophon-miner"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sophon-miner"}},[e._v("#")]),e._v(" sophon-miner")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/ipfs-force-community/sophon-miner",target:"_blank",rel:"noopener noreferrer"}},[e._v("sophon-miner"),t("OutboundLink")],1),e._v(" (原 venus-miner) 的作用是聚集出块权,可以为接入链服务的多个集群执行出块逻辑。sophon-miner 有以下特点:")]),e._v(" "),t("ol",[t("li",[e._v("分离数据:由于生成区块的过程需要访问数据,并且存储提供者的 sealer 可能是异构的,但目前多数存储提供者会使用自己定制的代码,那么要实现联合挖矿就存在如何访问到这些数据的问题。通过隔断 sophon-miner 对存储组织方式的依赖,通过让证明在存储提供者侧完成,无论存储提供者的 sealer 如何组织存储,只要实现了"),t("strong",[e._v("ComputeProof")]),e._v("接口,sophon-miner 就可以通过这个接口来生成证明。")]),e._v(" "),t("li",[e._v("分离私钥:计算随机数及签名区块的过程中,所有涉及到私钥的操作都通过远程钱包的方式来访问,这样既无泄漏集群私钥,又能保证出块逻辑正常运行。")]),e._v(" "),t("li",[e._v("提高网络 TPS:当 sophon-miner 负责的存储提供者在一个周期获得多个(>1)出块权,sophon-miner 会尽量从消息池中选择不同的消息进行打包,这样一定程度上可以提升消息上链的速度,同时使该出块可能获得更多的小费奖励(Premium)。")]),e._v(" "),t("li",[e._v("收益稳定性:多存储提供者联合挖矿配套奖励池分配系统可以让小存储提供者每天都能获得区块奖励,也可以减少某些存储提供者偶发性出块错误造成的损失。")])]),e._v(" "),t("h3",{attrs:{id:"sophon-messager"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sophon-messager"}},[e._v("#")]),e._v(" sophon-messager")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/ipfs-force-community/sophon-messager",target:"_blank",rel:"noopener noreferrer"}},[e._v("sophon-messager"),t("OutboundLink")],1),e._v(" (原 venus-messager) 组件的目标是更好的帮助消息上链,并能够灵活的控制消息上链的时机,减少 gas 消耗,流量控制等。其中包括远程钱包管理、地址管理、消息管理。")]),e._v(" "),t("ol",[t("li",[e._v("地址管理:主要是管理 nonce 值,保证 nonce 值能够按照正确的顺序分配。")]),e._v(" "),t("li",[e._v("消息管理:消息管理分成三个部分,分别是“消息接收和保存”、“消息选择及推送”“消息上链状态的追踪”。")]),e._v(" "),t("li",[e._v("GasFee 管理:可以按地址分别设置 gasLimit 的系数和 maxFee。")])]),e._v(" "),t("p",[e._v("从功能性上来说:")]),e._v(" "),t("ol",[t("li",[e._v("远程钱包支持:一个 sophon-messager 支持多个钱包,分别管理自己的 message。")]),e._v(" "),t("li",[e._v("支持 sqlite 本地存储和 mysql 远程存储:存储更加安全稳定。")]),e._v(" "),t("li",[e._v("动态填充:根据 gas 和 push 策略,在链上发送消息时,需要填写 gas 相关参数和 nonce,以确保 gas 估算和其他设置有效。")]),e._v(" "),t("li",[e._v("维护消息状态:包括消息是否被链接和替换,保存执行结果。")]),e._v(" "),t("li",[e._v("多点消息传递(通过 Mpool API 推送到多个节点):确保消息在网络上传播。")]),e._v(" "),t("li",[e._v("灵活配置:包括 gas 估算、消息推送策略等。")])]),e._v(" "),t("h3",{attrs:{id:"venus-wallet"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-wallet"}},[e._v("#")]),e._v(" venus-wallet")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/filecoin-project/venus-wallet",target:"_blank",rel:"noopener noreferrer"}},[e._v("venus-wallet"),t("OutboundLink")],1),e._v(" 是一个远程钱包,协议上能够同时支持 lotus 和 venus。在典型的部署环境中,这个组件由存储提供者部署在本地,并通过一定的策略配置保证资产的安全。venus-wallet 有以下功能特点:")]),e._v(" "),t("ol",[t("li",[e._v("私钥管理模块:目前支持非对称算法 BLS 和 SECP 的私钥管理,能够生成随机私钥,并运用 aes128 对私钥进行对称加密存储,同时支持私钥对数据进行签名。")]),e._v(" "),t("li",[e._v("签名验证:每种签名类型都有对应验证策略,保证了签名方不能在签名类型上欺骗钱包。")]),e._v(" "),t("li",[e._v("签名策略模块:针对 Filecoin 的 Lotus 及 Venus 实现,对存在的数 10 种数据结构以及 message 数据结构中的 60 余种签名类型进行统一管理,按需配置各种组合方式绑定私钥签名规则,而后可以将数种不同的私钥签名规则组成一个整体,授权于外部组件使用。")])]),e._v(" "),t("h3",{attrs:{id:"droplet"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#droplet"}},[e._v("#")]),e._v(" droplet")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/ipfs-force-community/droplet",target:"_blank",rel:"noopener noreferrer"}},[e._v("droplet"),t("OutboundLink")],1),e._v(" (原 venus-market) 是 Venus 系统中的市场组件。其愿景是打造 Filecoin 网络中分布式的存储和检索市场。目前已经实现了兼容 Lotus 协议的订单存储和检索,逐渐向着 droplet 服务多个集群的接单,对外提供统一的检索服务方向发展。可参见"),t("a",{attrs:{href:"https://github.com/filecoin-project/venus/blob/master/documentation/en/venus-market-design-roadmap.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("droplet 设计与路线图"),t("OutboundLink")],1)]),e._v(" "),t("h3",{attrs:{id:"sophon-gateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sophon-gateway"}},[e._v("#")]),e._v(" sophon-gateway")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/ipfs-force-community/sophon-gateway",target:"_blank",rel:"noopener noreferrer"}},[e._v("sophon-gateway"),t("OutboundLink")],1),e._v(" (原 venus-gateway) 是独立组件与链服务层的桥梁,用于简化部署并降低存储提供者访问的复杂性、增加存储提供者访问的安全性。独立组件启动时将其服务接口注册到 sophon-gateway,链服务组件需要时通过 sophon-gateway 请求对应集群的服务接口。")]),e._v(" "),t("ul",[t("li",[e._v("存储提供者不需要外部 IP 和曝露钱包服务;")]),e._v(" "),t("li",[e._v("存储池配置 SSL 证书后,集群与存储池的连接是安全的;")]),e._v(" "),t("li",[e._v("存储提供者可以简单地将多个客户端(钱包/证明)注册到存储池以获得高可用性。")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(328),alt:"sophon-gateway"}})]),e._v(" "),t("h3",{attrs:{id:"damocles"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#damocles"}},[e._v("#")]),e._v(" damocles")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/ipfs-force-community/damocles",target:"_blank",rel:"noopener noreferrer"}},[e._v("damocles"),t("OutboundLink")],1),e._v(" (原 venus-cluster) 是 Venus 推出的新版本扇区封装、算力维持组件,相对于原本的 venus-sealer,在任务调度、最大化系统资源方面有一定优势,其面向的用户受众也将有所不同。")])])}),[],!1,null,null,null);s.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{328:function(e,s,n){e.exports=n.p+"assets/img/venus-gateway-system-design.993fdfcd.png"},425:function(e,s,n){"use strict";n.r(s);var t=n(17),o=Object(t.a)({},(function(){var e=this,s=e.$createElement,t=e._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h2",{attrs:{id:"前言"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#前言"}},[e._v("#")]),e._v(" 前言")]),e._v(" "),t("p",[e._v("在同一条区块链上需要具有多个互操作的软件实现,每个实现都有自己的安全问题集,但是所有实现不尽相同,因此,启动具有多种实现方式的加密货币网络可降低发生灾难性错误的可能性,Venus 正是 Filecoin 的实现之一。")]),e._v(" "),t("p",[e._v("Venus 代指 Filecoin 的通用实现之一,venus 则代指 Venus 的组件之一。Venus 致力于帮助中小存储提供者能够更加简单的加入到 Filecoin 生态网络建设中。")]),e._v(" "),t("p",[e._v("目前 Venus 通过 venus、damocles、sophon-miner、venus-wallet、sophon-messager、sophon-auth、sophon-gateway 组件,已经实现了 Filecoin 分布式矿池的支持,未来,Venus 将持续完善自身,并共同推进开源的 Filecoin 开发与生态的发展。")]),e._v(" "),t("h2",{attrs:{id:"为什么我们要这样做"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#为什么我们要这样做"}},[e._v("#")]),e._v(" 为什么我们要这样做")]),e._v(" "),t("p",[e._v("2020 年 6 月,Protocol Lab 发起了关于由社区后续维护 go-filecoin 的 RFP,IPFSForce 随后申请并获得了维护权。10 月,go-filecoin 更名为 Venus,我们继续推进对 Venus 项目的维护工作。")]),e._v(" "),t("p",[e._v("在重新保持维护之前,Venus 是一个严重缺乏维护的项目。协议和组件上,vm/mpool/chain/rpc 虽然都有了,但是全都存在不同程度的问题,我们用了三个多月的时间,逐渐修复很多协议层、代码层,、性能的问题,使得 Venus 完成了与 Lotus 的互操作,让使用 Venus 的节点可以正常的在网络上运行。后续我们又逐渐的让 Venus 支持了 Calibration、2k 网络。")]),e._v(" "),t("p",[e._v("完成以上工作后,我们着手于 Venus 的开发方向。")]),e._v(" "),t("p",[e._v("我们的设计是让 Venus 向矿池的发展角度去支持,最初的设计是从“如何扩展单一存储提供者”思考,这个方向存在理论上的可行性,但是最大的问题在于 Filecoin 独特的证明机制。因为 Filecoin 网络的存储提供者必须周期性的提交‘时空证明’,而为了生成证明,存储提供者必须读取一整个 partition 的数据,如果 sector 极其分散的分布到不同的地方,通过公网读取,则不是一个可执行的方案。")]),e._v(" "),t("p",[e._v("后来我们通过数次的设计与修改,最终产生了现在的方案,就是分布式矿池。分布式矿池并非体现在单一存储提供者,而是将分布式的概念体现在多存储提供者的管理,这更像一个存储提供者联合体。")]),e._v(" "),t("p",[e._v("Venus 分布式矿池在外部的体现和传统的分布式矿池是相似的。在存储资源上体现在地域分布性,只要有网络可以访问的地方,都可以使节点接入到 Venus 矿池;在出块的角度上,因为 Filecoin 按算力比例来计算出块机率,所以分散的计算和整体的计算的最终结果应该是相同:"),t("em",[t("strong",[e._v("n1/p+ n2/p+n3/p......= (n1+n2+n3+.....)/p")])]),e._v(",这在算法的基础上提供了理论基础。")]),e._v(" "),t("p",[e._v("在真实数据存储检索上,存储提供者可以通过 venus 统一入口接入网络或者自主接入。设计中,venus 会在获得存储提供者允许的条件下,按照数据的访问需求来选择合适的节点存储数据,使得数据更贴近真实的使用场景。")]),e._v(" "),t("ol",[t("li",[t("em",[t("strong",[e._v("数据存储")])]),e._v(":支持组件共享,存储会逐渐迁移到 MySQL,通过一些高可用的方案保证 Venus 的元数据安全。")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("共享组件")])]),e._v(":支持高可用,保证服务的质量,减少存储提供者的时间成本与维护成本,这使得存储提供者能够更容易加入到矿池生态中。现在的挖矿活动专业性很强,而实现 Filecoin 利用闲散存储资源的梦想则不可避免需要降低参与门槛,才能吸引更多的参与者进来。")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("聚集出块权")])]),e._v(":存储提供者能够将资源整合在一起,互相帮助打包消息,这样可以避免小存储提供者的消息无人打包的困境。")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("提升 Filecoin 网络的吞吐量")])]),e._v(":如果同一高度存在多个区块,venus-miner 能够保证每个区块中的消息都是不同的,而如果各自出块,消息则很可能大量重复。")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("提升消息的稳定性")])]),e._v(":挖矿活动中的消息可以和节点分开,由 venus-messager 来管理,venus-messager 会跟踪链的最新状态来设置一个相对合理的预估的 gas 参数,同时也支持用户自己设置一个消息参数。")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("提升数据访问速度")])]),e._v(":目前的 Filecoin 网络更多的还是存储,但是作为一个存储服务,最终需要对外输出检索服务才能实现根本价值。如果有足够多的存储提供者使用 Venus,那么 Venus 在真实数据的处理上就有更多的可能,比如数据的分布,Venus 可以将数据分布到距离客户最近的一些存储提供者节点,这样可以提高客户的访问速度;比如一些公有数据可以把这些数据尽可能的分散到更多的节点上,保障在任意位置的访问都有效,这可以大大提升 IPFS 网络的效能,进一步实现 IPFS Web3.0 的梦想。")])]),e._v(" "),t("h2",{attrs:{id:"venus-如何工作"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-如何工作"}},[e._v("#")]),e._v(" venus 如何工作")]),e._v(" "),t("p",[e._v("Venus 是 Filecoin 的通用实现之一,致力于分布式的集群架构及更简洁的职责划分。")]),e._v(" "),t("p",[e._v("Venus 分布式存储池在外部的呈现和传统的分布式矿池是相似的。在存储资源上体现在地域分布性,只要有网络可以访问的地方,都可以使节点接入到 Venus 矿池。")]),e._v(" "),t("h3",{attrs:{id:"venus"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus"}},[e._v("#")]),e._v(" venus")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/filecoin-project/venus",target:"_blank",rel:"noopener noreferrer"}},[e._v("venus"),t("OutboundLink")],1),e._v(" 类似 lotus-daemon,用于实现全节点。venus 接入 Filecoin 区块链网络,为 Venus 提供数据支持。可以把 venus 当作普通节点来使用,它具有区块链节点必备的所有功能,如 chain、mpool、wallet。venus 的接口和 lotus 基本兼容(如果存在不兼容的接口,欢迎发布 Issue),你可以在 venus 上创建私钥、查询资产、转账等等。在典型部署环境里,venus 仅仅提供基础链上数据查询服务,本身不保存私钥。slashfilter 所需要的区块数据,存储到数据库里,节点本身是无状态的,这样通过 nginx 反向代理后就可以实现 venus 节点的高可用。")]),e._v(" "),t("p",[e._v("venus 节点自身有一些区别与 lotus 的地方:")]),e._v(" "),t("ol",[t("li",[e._v("创建区块的接口中支持了外部签名(后续会向 Lotus 提 PR)")]),e._v(" "),t("li",[e._v("消息选择的接口支持同时选择多个批次的消息,用于多存储提供者出块时选择消息。")]),e._v(" "),t("li",[e._v("支持 sophon-auth 的的中心访问授权")])]),e._v(" "),t("p",[e._v("因此如果对 Venus/Lotus 混合部署感兴趣,需要使用我们维护的 "),t("a",{attrs:{href:"https://github.com/ipfs-force-community/lotus/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("lotus 兼容 venus 的项目"),t("OutboundLink")],1),e._v(",可自行 pick 代码编译。")]),e._v(" "),t("h3",{attrs:{id:"sophon-auth"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sophon-auth"}},[e._v("#")]),e._v(" sophon-auth")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/ipfs-force-community/sophon-auth",target:"_blank",rel:"noopener noreferrer"}},[e._v("sophon-auth"),t("OutboundLink")],1),e._v(" (原 venus-auth) 是用于授权的组件,在典型的部署环境下 sophon-auth 用于给 venus、sophon-miner、sophon-messager 提供授权服务,每个本地的节点访问共享组件都要经过授权,后续会在这个基础上进行功能扩充,做一些安全方面的控制,比如访问限流、黑名单。")]),e._v(" "),t("h3",{attrs:{id:"sophon-miner"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sophon-miner"}},[e._v("#")]),e._v(" sophon-miner")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/ipfs-force-community/sophon-miner",target:"_blank",rel:"noopener noreferrer"}},[e._v("sophon-miner"),t("OutboundLink")],1),e._v(" (原 venus-miner) 的作用是聚集出块权,可以为接入链服务的多个集群执行出块逻辑。sophon-miner 有以下特点:")]),e._v(" "),t("ol",[t("li",[e._v("分离数据:由于生成区块的过程需要访问数据,并且存储提供者的 sealer 可能是异构的,但目前多数存储提供者会使用自己定制的代码,那么要实现联合挖矿就存在如何访问到这些数据的问题。通过隔断 sophon-miner 对存储组织方式的依赖,通过让证明在存储提供者侧完成,无论存储提供者的 sealer 如何组织存储,只要实现了"),t("strong",[e._v("ComputeProof")]),e._v("接口,sophon-miner 就可以通过这个接口来生成证明。")]),e._v(" "),t("li",[e._v("分离私钥:计算随机数及签名区块的过程中,所有涉及到私钥的操作都通过远程钱包的方式来访问,这样既无泄漏集群私钥,又能保证出块逻辑正常运行。")]),e._v(" "),t("li",[e._v("提高网络 TPS:当 sophon-miner 负责的存储提供者在一个周期获得多个(>1)出块权,sophon-miner 会尽量从消息池中选择不同的消息进行打包,这样一定程度上可以提升消息上链的速度,同时使该出块可能获得更多的小费奖励(Premium)。")]),e._v(" "),t("li",[e._v("收益稳定性:多存储提供者联合挖矿配套奖励池分配系统可以让小存储提供者每天都能获得区块奖励,也可以减少某些存储提供者偶发性出块错误造成的损失。")])]),e._v(" "),t("h3",{attrs:{id:"sophon-messager"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sophon-messager"}},[e._v("#")]),e._v(" sophon-messager")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/ipfs-force-community/sophon-messager",target:"_blank",rel:"noopener noreferrer"}},[e._v("sophon-messager"),t("OutboundLink")],1),e._v(" (原 venus-messager) 组件的目标是更好的帮助消息上链,并能够灵活的控制消息上链的时机,减少 gas 消耗,流量控制等。其中包括远程钱包管理、地址管理、消息管理。")]),e._v(" "),t("ol",[t("li",[e._v("地址管理:主要是管理 nonce 值,保证 nonce 值能够按照正确的顺序分配。")]),e._v(" "),t("li",[e._v("消息管理:消息管理分成三个部分,分别是“消息接收和保存”、“消息选择及推送”“消息上链状态的追踪”。")]),e._v(" "),t("li",[e._v("GasFee 管理:可以按地址分别设置 gasLimit 的系数和 maxFee。")])]),e._v(" "),t("p",[e._v("从功能性上来说:")]),e._v(" "),t("ol",[t("li",[e._v("远程钱包支持:一个 sophon-messager 支持多个钱包,分别管理自己的 message。")]),e._v(" "),t("li",[e._v("支持 sqlite 本地存储和 mysql 远程存储:存储更加安全稳定。")]),e._v(" "),t("li",[e._v("动态填充:根据 gas 和 push 策略,在链上发送消息时,需要填写 gas 相关参数和 nonce,以确保 gas 估算和其他设置有效。")]),e._v(" "),t("li",[e._v("维护消息状态:包括消息是否被链接和替换,保存执行结果。")]),e._v(" "),t("li",[e._v("多点消息传递(通过 Mpool API 推送到多个节点):确保消息在网络上传播。")]),e._v(" "),t("li",[e._v("灵活配置:包括 gas 估算、消息推送策略等。")])]),e._v(" "),t("h3",{attrs:{id:"venus-wallet"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-wallet"}},[e._v("#")]),e._v(" venus-wallet")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/filecoin-project/venus-wallet",target:"_blank",rel:"noopener noreferrer"}},[e._v("venus-wallet"),t("OutboundLink")],1),e._v(" 是一个远程钱包,协议上能够同时支持 lotus 和 venus。在典型的部署环境中,这个组件由存储提供者部署在本地,并通过一定的策略配置保证资产的安全。venus-wallet 有以下功能特点:")]),e._v(" "),t("ol",[t("li",[e._v("私钥管理模块:目前支持非对称算法 BLS 和 SECP 的私钥管理,能够生成随机私钥,并运用 aes128 对私钥进行对称加密存储,同时支持私钥对数据进行签名。")]),e._v(" "),t("li",[e._v("签名验证:每种签名类型都有对应验证策略,保证了签名方不能在签名类型上欺骗钱包。")]),e._v(" "),t("li",[e._v("签名策略模块:针对 Filecoin 的 Lotus 及 Venus 实现,对存在的数 10 种数据结构以及 message 数据结构中的 60 余种签名类型进行统一管理,按需配置各种组合方式绑定私钥签名规则,而后可以将数种不同的私钥签名规则组成一个整体,授权于外部组件使用。")])]),e._v(" "),t("h3",{attrs:{id:"droplet"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#droplet"}},[e._v("#")]),e._v(" droplet")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/ipfs-force-community/droplet",target:"_blank",rel:"noopener noreferrer"}},[e._v("droplet"),t("OutboundLink")],1),e._v(" (原 venus-market) 是 Venus 系统中的市场组件。其愿景是打造 Filecoin 网络中分布式的存储和检索市场。目前已经实现了兼容 Lotus 协议的订单存储和检索,逐渐向着 droplet 服务多个集群的接单,对外提供统一的检索服务方向发展。可参见"),t("a",{attrs:{href:"https://github.com/filecoin-project/venus/blob/master/documentation/en/venus-market-design-roadmap.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("droplet 设计与路线图"),t("OutboundLink")],1)]),e._v(" "),t("h3",{attrs:{id:"sophon-gateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sophon-gateway"}},[e._v("#")]),e._v(" sophon-gateway")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/ipfs-force-community/sophon-gateway",target:"_blank",rel:"noopener noreferrer"}},[e._v("sophon-gateway"),t("OutboundLink")],1),e._v(" (原 venus-gateway) 是独立组件与链服务层的桥梁,用于简化部署并降低存储提供者访问的复杂性、增加存储提供者访问的安全性。独立组件启动时将其服务接口注册到 sophon-gateway,链服务组件需要时通过 sophon-gateway 请求对应集群的服务接口。")]),e._v(" "),t("ul",[t("li",[e._v("存储提供者不需要外部 IP 和曝露钱包服务;")]),e._v(" "),t("li",[e._v("存储池配置 SSL 证书后,集群与存储池的连接是安全的;")]),e._v(" "),t("li",[e._v("存储提供者可以简单地将多个客户端(钱包/证明)注册到存储池以获得高可用性。")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(328),alt:"sophon-gateway"}})]),e._v(" "),t("h3",{attrs:{id:"damocles"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#damocles"}},[e._v("#")]),e._v(" damocles")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/ipfs-force-community/damocles",target:"_blank",rel:"noopener noreferrer"}},[e._v("damocles"),t("OutboundLink")],1),e._v(" (原 venus-cluster) 是 Venus 推出的新版本扇区封装、算力维持组件,相对于原本的 venus-sealer,在任务调度、最大化系统资源方面有一定优势,其面向的用户受众也将有所不同。")])])}),[],!1,null,null,null);s.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/13.a0226e76.js b/assets/js/13.29d03f5f.js similarity index 92% rename from assets/js/13.a0226e76.js rename to assets/js/13.29d03f5f.js index 547d7a22c..a0798bee3 100644 --- a/assets/js/13.a0226e76.js +++ b/assets/js/13.29d03f5f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{329:function(t,e,s){t.exports=s.p+"assets/img/damocles-banner.cdc65a5a.jpg"},429:function(t,e,s){"use strict";s.r(e);var n=s(17),r=Object(n.a)({},(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[n("p",[n("img",{attrs:{src:s(329),alt:"damocles"}})]),t._v(" "),n("h3",{attrs:{id:"执剑人"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#执剑人"}},[t._v("#")]),t._v(" 执剑人")]),t._v(" "),n("p",[t._v("执剑人,原 Venus 算力服务,是一个"),n("code",[t._v("Filecoin")]),t._v("存储算力解决方案。请在"),n("a",{attrs:{href:"https://damocles.venus-fil.io/zh/",target:"_blank",rel:"noopener noreferrer"}},[t._v("此"),n("OutboundLink")],1),t._v("了解更多关于执剑人的信息。")])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{329:function(t,e,s){t.exports=s.p+"assets/img/damocles-banner.cdc65a5a.jpg"},431:function(t,e,s){"use strict";s.r(e);var n=s(17),r=Object(n.a)({},(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[n("p",[n("img",{attrs:{src:s(329),alt:"damocles"}})]),t._v(" "),n("h3",{attrs:{id:"执剑人"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#执剑人"}},[t._v("#")]),t._v(" 执剑人")]),t._v(" "),n("p",[t._v("执剑人,原 Venus 算力服务,是一个"),n("code",[t._v("Filecoin")]),t._v("存储算力解决方案。请在"),n("a",{attrs:{href:"https://damocles.venus-fil.io/zh/",target:"_blank",rel:"noopener noreferrer"}},[t._v("此"),n("OutboundLink")],1),t._v("了解更多关于执剑人的信息。")])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/14.e52ce5c2.js b/assets/js/14.1bc0fc37.js similarity index 92% rename from assets/js/14.e52ce5c2.js rename to assets/js/14.1bc0fc37.js index aa6b5790b..5403b7f9e 100644 --- a/assets/js/14.e52ce5c2.js +++ b/assets/js/14.1bc0fc37.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{330:function(t,e,r){t.exports=r.p+"assets/img/droplet-banner.5da6d582.jpg"},430:function(t,e,r){"use strict";r.r(e);var n=r(17),s=Object(n.a)({},(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[n("p",[n("img",{attrs:{src:r(330),alt:"droplet"}})]),t._v(" "),n("h3",{attrs:{id:"水滴"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#水滴"}},[t._v("#")]),t._v(" 水滴")]),t._v(" "),n("p",[t._v("水滴,原 Venus 订单服务,是一个"),n("code",[t._v("Filecoin")]),t._v("存储订单解决方案。请在"),n("a",{attrs:{href:"https://droplet.venus-fil.io/zh/",target:"_blank",rel:"noopener noreferrer"}},[t._v("此"),n("OutboundLink")],1),t._v("了解更多关于水滴的信息。")])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{330:function(t,e,r){t.exports=r.p+"assets/img/droplet-banner.5da6d582.jpg"},429:function(t,e,r){"use strict";r.r(e);var n=r(17),s=Object(n.a)({},(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[n("p",[n("img",{attrs:{src:r(330),alt:"droplet"}})]),t._v(" "),n("h3",{attrs:{id:"水滴"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#水滴"}},[t._v("#")]),t._v(" 水滴")]),t._v(" "),n("p",[t._v("水滴,原 Venus 订单服务,是一个"),n("code",[t._v("Filecoin")]),t._v("存储订单解决方案。请在"),n("a",{attrs:{href:"https://droplet.venus-fil.io/zh/",target:"_blank",rel:"noopener noreferrer"}},[t._v("此"),n("OutboundLink")],1),t._v("了解更多关于水滴的信息。")])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/15.2739a67e.js b/assets/js/15.2770a953.js similarity index 85% rename from assets/js/15.2739a67e.js rename to assets/js/15.2770a953.js index 6f225d475..64c2029e9 100644 --- a/assets/js/15.2739a67e.js +++ b/assets/js/15.2770a953.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{331:function(t,s,e){t.exports=e.p+"assets/img/one-pager-venus.ba147919.png"},431:function(t,s,e){"use strict";e.r(s);var n=e(17),r=Object(n.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("p",[s("img",{attrs:{src:e(331),alt:"venus-cluster"}})])])}),[],!1,null,null,null);s.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{331:function(t,s,e){t.exports=e.p+"assets/img/one-pager-venus.ba147919.png"},430:function(t,s,e){"use strict";e.r(s);var n=e(17),r=Object(n.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("p",[s("img",{attrs:{src:e(331),alt:"venus-cluster"}})])])}),[],!1,null,null,null);s.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/21.846a0b51.js b/assets/js/21.9db4dcdf.js similarity index 97% rename from assets/js/21.846a0b51.js rename to assets/js/21.9db4dcdf.js index cbbcf055d..22d88b566 100644 --- a/assets/js/21.846a0b51.js +++ b/assets/js/21.9db4dcdf.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{401:function(e,t,r){"use strict";r.r(t);var n=r(17),o=Object(n.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h2",{attrs:{id:"mission-vision-value"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#mission-vision-value"}},[e._v("#")]),e._v(" Mission, Vision, Value")]),e._v(" "),r("ul",[r("li",[e._v("❗️Mission: push ecosystem forward by driving Filcoin infrastructure")]),e._v(" "),r("li",[e._v("🌏 Vision: democratize Filecoin ecosystem participation")]),e._v(" "),r("li",[e._v("☯️ Value: Open and trustless")])]),e._v(" "),r("h2",{attrs:{id:"contacts"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#contacts"}},[e._v("#")]),e._v(" Contacts")]),e._v(" "),r("ul",[r("li",[e._v("Ask us any questions: "),r("a",{attrs:{href:"https://filecoinproject.slack.com/archives/CEHHJNJS3",target:"_blank",rel:"noopener noreferrer"}},[e._v("#fil-venus"),r("OutboundLink")],1),e._v(", "),r("a",{attrs:{href:"https://filecoinproject.slack.com/archives/C028PCH8L31",target:"_blank",rel:"noopener noreferrer"}},[e._v("#fil-venus-cn"),r("OutboundLink")],1),e._v(", "),r("a",{attrs:{href:"mailto:venus@ipfsforce.com"}},[e._v("venus@ipfsforce.com")])])]),e._v(" "),r("h2",{attrs:{id:"resources"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#resources"}},[e._v("#")]),e._v(" Resources")]),e._v(" "),r("ul",[r("li",[e._v("venus-docs: "),r("a",{attrs:{href:"venus.filecoin.io"}},[e._v("venus.filecoin.io")])]),e._v(" "),r("li",[e._v("VenusHub: "),r("a",{attrs:{href:"venushub.io"}},[e._v("venushub.io")])]),e._v(" "),r("li",[e._v("Github: "),r("a",{attrs:{href:"https://github.com/filecoin-project/venus",target:"_blank",rel:"noopener noreferrer"}},[e._v("venus"),r("OutboundLink")],1),e._v(", "),r("a",{attrs:{href:"https://github.com/ipfs-force-community/damocles",target:"_blank",rel:"noopener noreferrer"}},[e._v("damocles"),r("OutboundLink")],1),e._v(", "),r("a",{attrs:{href:"https://github.com/ipfs-force-community/droplet",target:"_blank",rel:"noopener noreferrer"}},[e._v("droplet"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Social Media: "),r("a",{attrs:{href:"https://twitter.com/venus_filecoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),r("OutboundLink")],1),e._v(", "),r("a",{attrs:{href:"https://mp.weixin.qq.com/s/p4_ch03QeMMXxPyakr_8XQ",target:"_blank",rel:"noopener noreferrer"}},[e._v("Wechat"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Security audit report: "),r("a",{attrs:{href:"https://leastauthority.com/static/publications/LeastAuthority_Filecoin_Foundation_Venus_Final_Audit_Report.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("link"),r("OutboundLink")],1)])])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{402:function(e,t,r){"use strict";r.r(t);var n=r(17),o=Object(n.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h2",{attrs:{id:"mission-vision-value"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#mission-vision-value"}},[e._v("#")]),e._v(" Mission, Vision, Value")]),e._v(" "),r("ul",[r("li",[e._v("❗️Mission: push ecosystem forward by driving Filcoin infrastructure")]),e._v(" "),r("li",[e._v("🌏 Vision: democratize Filecoin ecosystem participation")]),e._v(" "),r("li",[e._v("☯️ Value: Open and trustless")])]),e._v(" "),r("h2",{attrs:{id:"contacts"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#contacts"}},[e._v("#")]),e._v(" Contacts")]),e._v(" "),r("ul",[r("li",[e._v("Ask us any questions: "),r("a",{attrs:{href:"https://filecoinproject.slack.com/archives/CEHHJNJS3",target:"_blank",rel:"noopener noreferrer"}},[e._v("#fil-venus"),r("OutboundLink")],1),e._v(", "),r("a",{attrs:{href:"https://filecoinproject.slack.com/archives/C028PCH8L31",target:"_blank",rel:"noopener noreferrer"}},[e._v("#fil-venus-cn"),r("OutboundLink")],1),e._v(", "),r("a",{attrs:{href:"mailto:venus@ipfsforce.com"}},[e._v("venus@ipfsforce.com")])])]),e._v(" "),r("h2",{attrs:{id:"resources"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#resources"}},[e._v("#")]),e._v(" Resources")]),e._v(" "),r("ul",[r("li",[e._v("venus-docs: "),r("a",{attrs:{href:"venus.filecoin.io"}},[e._v("venus.filecoin.io")])]),e._v(" "),r("li",[e._v("VenusHub: "),r("a",{attrs:{href:"venushub.io"}},[e._v("venushub.io")])]),e._v(" "),r("li",[e._v("Github: "),r("a",{attrs:{href:"https://github.com/filecoin-project/venus",target:"_blank",rel:"noopener noreferrer"}},[e._v("venus"),r("OutboundLink")],1),e._v(", "),r("a",{attrs:{href:"https://github.com/ipfs-force-community/damocles",target:"_blank",rel:"noopener noreferrer"}},[e._v("damocles"),r("OutboundLink")],1),e._v(", "),r("a",{attrs:{href:"https://github.com/ipfs-force-community/droplet",target:"_blank",rel:"noopener noreferrer"}},[e._v("droplet"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Social Media: "),r("a",{attrs:{href:"https://twitter.com/venus_filecoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),r("OutboundLink")],1),e._v(", "),r("a",{attrs:{href:"https://mp.weixin.qq.com/s/p4_ch03QeMMXxPyakr_8XQ",target:"_blank",rel:"noopener noreferrer"}},[e._v("Wechat"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Security audit report: "),r("a",{attrs:{href:"https://leastauthority.com/static/publications/LeastAuthority_Filecoin_Foundation_Venus_Final_Audit_Report.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("link"),r("OutboundLink")],1)])])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/22.86e9aa53.js b/assets/js/22.a30fdb61.js similarity index 90% rename from assets/js/22.86e9aa53.js rename to assets/js/22.a30fdb61.js index d7c52039c..91a859d50 100644 --- a/assets/js/22.86e9aa53.js +++ b/assets/js/22.a30fdb61.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{406:function(e,t,s){"use strict";s.r(t);var i=s(17),n=Object(i.a)({},(function(){var e=this.$createElement,t=this._self._c||e;return t("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[t("p",[t("em",[this._v("See something missing? Have tips to share? "),t("a",{attrs:{href:"https://github.com/filecoin-project/venus/issues/new",target:"_blank",rel:"noopener noreferrer"}},[this._v("File an issue"),t("OutboundLink")],1),this._v(", and we'll follow up as soon as possible. (If you have write permission in this repo, feel free to edit directly.)")])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{404:function(e,t,s){"use strict";s.r(t);var i=s(17),n=Object(i.a)({},(function(){var e=this.$createElement,t=this._self._c||e;return t("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[t("p",[t("em",[this._v("See something missing? Have tips to share? "),t("a",{attrs:{href:"https://github.com/filecoin-project/venus/issues/new",target:"_blank",rel:"noopener noreferrer"}},[this._v("File an issue"),t("OutboundLink")],1),this._v(", and we'll follow up as soon as possible. (If you have write permission in this repo, feel free to edit directly.)")])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/29.350338c7.js b/assets/js/29.b536a87c.js similarity index 95% rename from assets/js/29.350338c7.js rename to assets/js/29.b536a87c.js index 48e9cac2b..ff50b50ca 100644 --- a/assets/js/29.350338c7.js +++ b/assets/js/29.b536a87c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[29],{414:function(t,e,o){"use strict";o.r(e);var r=o(17),n=Object(r.a)({},(function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("h2",{attrs:{id:"commands-from-lotus"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#commands-from-lotus"}},[t._v("#")]),t._v(" Commands from Lotus")]),t._v(" "),o("p",[t._v("Many basic commands including but not limited to "),o("a",{attrs:{href:"https://lotus.filecoin.io/docs/storage-providers/addresses/",target:"_blank",rel:"noopener noreferrer"}},[t._v("creating worker/controler addresses"),o("OutboundLink")],1),t._v(", setting different types of "),o("a",{attrs:{href:"https://lotus.filecoin.io/docs/storage-providers/config/",target:"_blank",rel:"noopener noreferrer"}},[t._v("configurations"),o("OutboundLink")],1),t._v(", or "),o("a",{attrs:{href:"https://lotus.filecoin.io/docs/storage-providers/lifecycle/#changing-storage-locations",target:"_blank",rel:"noopener noreferrer"}},[t._v("changing storage locations"),o("OutboundLink")],1),t._v(" apply to both Lotus and Venus. Node operators are expected to follow the same process as what is instructed on the Lotus documentation. If you encounter any questions please do not hesitate to reach out to us on "),o("a",{attrs:{href:"https://filecoinproject.slack.com/archives/CEHHJNJS3",target:"_blank",rel:"noopener noreferrer"}},[t._v("#fil-venus"),o("OutboundLink")],1),t._v(".")])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[29],{415:function(t,e,o){"use strict";o.r(e);var r=o(17),n=Object(r.a)({},(function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("h2",{attrs:{id:"commands-from-lotus"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#commands-from-lotus"}},[t._v("#")]),t._v(" Commands from Lotus")]),t._v(" "),o("p",[t._v("Many basic commands including but not limited to "),o("a",{attrs:{href:"https://lotus.filecoin.io/docs/storage-providers/addresses/",target:"_blank",rel:"noopener noreferrer"}},[t._v("creating worker/controler addresses"),o("OutboundLink")],1),t._v(", setting different types of "),o("a",{attrs:{href:"https://lotus.filecoin.io/docs/storage-providers/config/",target:"_blank",rel:"noopener noreferrer"}},[t._v("configurations"),o("OutboundLink")],1),t._v(", or "),o("a",{attrs:{href:"https://lotus.filecoin.io/docs/storage-providers/lifecycle/#changing-storage-locations",target:"_blank",rel:"noopener noreferrer"}},[t._v("changing storage locations"),o("OutboundLink")],1),t._v(" apply to both Lotus and Venus. Node operators are expected to follow the same process as what is instructed on the Lotus documentation. If you encounter any questions please do not hesitate to reach out to us on "),o("a",{attrs:{href:"https://filecoinproject.slack.com/archives/CEHHJNJS3",target:"_blank",rel:"noopener noreferrer"}},[t._v("#fil-venus"),o("OutboundLink")],1),t._v(".")])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/30.f9819710.js b/assets/js/30.22af68d7.js similarity index 99% rename from assets/js/30.f9819710.js rename to assets/js/30.22af68d7.js index 53b55a224..31189ddfb 100644 --- a/assets/js/30.f9819710.js +++ b/assets/js/30.22af68d7.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{415:function(t,e,a){"use strict";a.r(e);var s=a(17),o=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h2",{attrs:{id:"upgrading-to-network-version-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrading-to-network-version-15"}},[t._v("#")]),t._v(" Upgrading to network version 15")]),t._v(" "),a("p",[t._v("Please upgrade each venus component in the order as it is presented in this document. We recommend that you go through the document before upgrading. When in doubt, please do not hesitate to reach out to us "),a("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions/4688",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Please make sure that your storage system is not doing any windowPost when you upgrade and leave ample time before the next upcoming windowPost")])]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If you have partitions in all deadlines, it is recommended that you build another transition environment for the upgrade.")])]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("It is recommended that you backup your old binary and critical data as you go through the upgrade process.")])]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("For large scale storage systems, it is recommended that running chain-co with both venus daemon and venus wrapped daemon.")])]),t._v(" "),a("ol",[a("li",[a("p",[t._v("venus-auth: "),a("code",[t._v("optional")]),t._v(" upgrade; branch/tag "),a("code",[t._v("v1.3.2")]),t._v(";")])]),t._v(" "),a("li",[a("p",[t._v("venus-wallet: "),a("code",[t._v("optional")]),t._v(" upgrade; branch/tag "),a("code",[t._v("v1.4.0")]),t._v(";")])]),t._v(" "),a("li",[a("p",[t._v("venus daemon: "),a("code",[t._v("mandatory")]),t._v(" upgrade; branch/tag "),a("code",[t._v("v1.2.1")]),t._v(";")])])]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Checkups after upgrading:")]),t._v(" "),a("ul",[a("li",[t._v("integrity of vk files")]),t._v(" "),a("li",[t._v("see if upgrade epochs are properly set in config files")])]),t._v(" "),a("div",{staticClass:"language-toml extra-class"},[a("pre",{pre:!0,attrs:{class:"language-toml"}},[a("code",[t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# cali")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"upgradeOhSnapHeight"')]),t._v(": "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("682006")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# mainnet")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"upgradeOhSnapHeight"')]),t._v(": "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1594680")]),t._v("\n")])])]),a("ul",[a("li",[t._v("see if "),a("code",[t._v("maxfee")]),t._v(" under "),a("code",[t._v("mpool")]),t._v(" section is now in the format of "),a("code",[t._v("[x] Fil")])])]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v('"mpool": {\n\t"maxNonceGap": 100,\n \t"maxFee": "10 FIL"\n},\n')])])]),a("ul",[a("li",[t._v("see if chain synchronization is working properly")])])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("As a result of a mandatory network upgrade with API changes, sealer connection maybe lost during the this step of the upgrade.")])]),t._v(" "),a("ol",{attrs:{start:"4"}},[a("li",[t._v("venus wrapped deamon: "),a("code",[t._v("mandatory")]),t._v(" upgrade (if you are using "),a("code",[t._v("chain-co")]),t._v("); branch/tag "),a("code",[t._v("venus/v1.14.0")]),t._v(";")])]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Checkups after upgrading:")]),t._v(" "),a("ul",[a("li",[t._v("see if chain synchronization is working properly")]),t._v(" "),a("li",[t._v("see if connection to venus-auth is okay")])]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v('curl http://127.0.0.1:3453/rpc/v0 -X POST -H "Content-Type: application/json" -H "Authorization: Bearer " -d \'{"method": "Filecoin.ChainHead","params":[], "id": 0}\'\n')])])])]),t._v(" "),a("ol",{attrs:{start:"5"}},[a("li",[t._v("chain-co: "),a("code",[t._v("mandatory")]),t._v(" upgrade (if you deployed chain-co for your HA solution); branch/tag "),a("code",[t._v("v0.1.0")]),t._v(";")])]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Checkups after upgrading:")]),t._v(" "),a("ul",[a("li",[t._v("see if two new API MpoolPending and MpoolGetNonce are working properly")])])]),t._v(" "),a("ol",{attrs:{start:"6"}},[a("li",[a("p",[t._v("venus-messager: "),a("code",[t._v("mandatory")]),t._v(" upgrade; branch/tag "),a("code",[t._v("v1.4.0")]),t._v(";")])]),t._v(" "),a("li",[a("p",[t._v("venus-gateway: "),a("code",[t._v("mandatory")]),t._v(" upgrade; branch/tag "),a("code",[t._v("v1.2.0")]),t._v(";")])])]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("ul",[a("li",[t._v("support for both old and new API due to changes in ComputeProof's params")]),t._v(" "),a("li",[t._v("see if both v0 and v1 APIs are working properly")])])]),t._v(" "),a("ol",{attrs:{start:"8"}},[a("li",[t._v("venus-miner: "),a("code",[t._v("mandatory")]),t._v(" upgrade; branch/tag "),a("code",[t._v("v1.4.0")]),t._v(";")])]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Parameter changes for ComputeProof.")])]),t._v(" "),a("ol",{attrs:{start:"9"}},[a("li",[a("p",[t._v("venus-market: "),a("code",[t._v("optional")]),t._v(" upgrade; branch/tag "),a("code",[t._v("v2.0.0")]),t._v(";")])]),t._v(" "),a("li",[a("p",[t._v("venus-sealer: "),a("code",[t._v("mandatory")]),t._v(" upgrade; branch/tag "),a("code",[t._v("v1.4.0")]),t._v(";")])])]),t._v(" "),a("p",[t._v("For more question regarding nv15 upgrade, please refer to this discussion "),a("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions/4688",target:"_blank",rel:"noopener noreferrer"}},[t._v("thread"),a("OutboundLink")],1),t._v(".")])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{414:function(t,e,a){"use strict";a.r(e);var s=a(17),o=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h2",{attrs:{id:"upgrading-to-network-version-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrading-to-network-version-15"}},[t._v("#")]),t._v(" Upgrading to network version 15")]),t._v(" "),a("p",[t._v("Please upgrade each venus component in the order as it is presented in this document. We recommend that you go through the document before upgrading. When in doubt, please do not hesitate to reach out to us "),a("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions/4688",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Please make sure that your storage system is not doing any windowPost when you upgrade and leave ample time before the next upcoming windowPost")])]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If you have partitions in all deadlines, it is recommended that you build another transition environment for the upgrade.")])]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("It is recommended that you backup your old binary and critical data as you go through the upgrade process.")])]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("For large scale storage systems, it is recommended that running chain-co with both venus daemon and venus wrapped daemon.")])]),t._v(" "),a("ol",[a("li",[a("p",[t._v("venus-auth: "),a("code",[t._v("optional")]),t._v(" upgrade; branch/tag "),a("code",[t._v("v1.3.2")]),t._v(";")])]),t._v(" "),a("li",[a("p",[t._v("venus-wallet: "),a("code",[t._v("optional")]),t._v(" upgrade; branch/tag "),a("code",[t._v("v1.4.0")]),t._v(";")])]),t._v(" "),a("li",[a("p",[t._v("venus daemon: "),a("code",[t._v("mandatory")]),t._v(" upgrade; branch/tag "),a("code",[t._v("v1.2.1")]),t._v(";")])])]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Checkups after upgrading:")]),t._v(" "),a("ul",[a("li",[t._v("integrity of vk files")]),t._v(" "),a("li",[t._v("see if upgrade epochs are properly set in config files")])]),t._v(" "),a("div",{staticClass:"language-toml extra-class"},[a("pre",{pre:!0,attrs:{class:"language-toml"}},[a("code",[t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# cali")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"upgradeOhSnapHeight"')]),t._v(": "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("682006")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# mainnet")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"upgradeOhSnapHeight"')]),t._v(": "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1594680")]),t._v("\n")])])]),a("ul",[a("li",[t._v("see if "),a("code",[t._v("maxfee")]),t._v(" under "),a("code",[t._v("mpool")]),t._v(" section is now in the format of "),a("code",[t._v("[x] Fil")])])]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v('"mpool": {\n\t"maxNonceGap": 100,\n \t"maxFee": "10 FIL"\n},\n')])])]),a("ul",[a("li",[t._v("see if chain synchronization is working properly")])])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("As a result of a mandatory network upgrade with API changes, sealer connection maybe lost during the this step of the upgrade.")])]),t._v(" "),a("ol",{attrs:{start:"4"}},[a("li",[t._v("venus wrapped deamon: "),a("code",[t._v("mandatory")]),t._v(" upgrade (if you are using "),a("code",[t._v("chain-co")]),t._v("); branch/tag "),a("code",[t._v("venus/v1.14.0")]),t._v(";")])]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Checkups after upgrading:")]),t._v(" "),a("ul",[a("li",[t._v("see if chain synchronization is working properly")]),t._v(" "),a("li",[t._v("see if connection to venus-auth is okay")])]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v('curl http://127.0.0.1:3453/rpc/v0 -X POST -H "Content-Type: application/json" -H "Authorization: Bearer " -d \'{"method": "Filecoin.ChainHead","params":[], "id": 0}\'\n')])])])]),t._v(" "),a("ol",{attrs:{start:"5"}},[a("li",[t._v("chain-co: "),a("code",[t._v("mandatory")]),t._v(" upgrade (if you deployed chain-co for your HA solution); branch/tag "),a("code",[t._v("v0.1.0")]),t._v(";")])]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Checkups after upgrading:")]),t._v(" "),a("ul",[a("li",[t._v("see if two new API MpoolPending and MpoolGetNonce are working properly")])])]),t._v(" "),a("ol",{attrs:{start:"6"}},[a("li",[a("p",[t._v("venus-messager: "),a("code",[t._v("mandatory")]),t._v(" upgrade; branch/tag "),a("code",[t._v("v1.4.0")]),t._v(";")])]),t._v(" "),a("li",[a("p",[t._v("venus-gateway: "),a("code",[t._v("mandatory")]),t._v(" upgrade; branch/tag "),a("code",[t._v("v1.2.0")]),t._v(";")])])]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("ul",[a("li",[t._v("support for both old and new API due to changes in ComputeProof's params")]),t._v(" "),a("li",[t._v("see if both v0 and v1 APIs are working properly")])])]),t._v(" "),a("ol",{attrs:{start:"8"}},[a("li",[t._v("venus-miner: "),a("code",[t._v("mandatory")]),t._v(" upgrade; branch/tag "),a("code",[t._v("v1.4.0")]),t._v(";")])]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Parameter changes for ComputeProof.")])]),t._v(" "),a("ol",{attrs:{start:"9"}},[a("li",[a("p",[t._v("venus-market: "),a("code",[t._v("optional")]),t._v(" upgrade; branch/tag "),a("code",[t._v("v2.0.0")]),t._v(";")])]),t._v(" "),a("li",[a("p",[t._v("venus-sealer: "),a("code",[t._v("mandatory")]),t._v(" upgrade; branch/tag "),a("code",[t._v("v1.4.0")]),t._v(";")])])]),t._v(" "),a("p",[t._v("For more question regarding nv15 upgrade, please refer to this discussion "),a("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions/4688",target:"_blank",rel:"noopener noreferrer"}},[t._v("thread"),a("OutboundLink")],1),t._v(".")])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/31.a103ce73.js b/assets/js/31.cc5663af.js similarity index 99% rename from assets/js/31.a103ce73.js rename to assets/js/31.cc5663af.js index fb8c43655..353440c6e 100644 --- a/assets/js/31.a103ce73.js +++ b/assets/js/31.cc5663af.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{419:function(e,t,a){"use strict";a.r(t);var n=a(17),s=Object(n.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h2",{attrs:{id:"nv16-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#nv16-upgrade"}},[e._v("#")]),e._v(" nv16 upgrade")]),e._v(" "),a("h3",{attrs:{id:"timeline"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#timeline"}},[e._v("#")]),e._v(" timeline")]),e._v(" "),a("p",[e._v("Mainnet upgrade time: 2022-07-06T14:00:00Z")]),e._v(" "),a("h3",{attrs:{id:"venus-auth"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-auth"}},[e._v("#")]),e._v(" venus-auth")]),e._v(" "),a("ul",[a("li",[e._v("tag: v1.6.0")]),e._v(" "),a("li",[e._v("New features: shared token access support for multi SPs")]),e._v(" "),a("li",[e._v("Dependency on other components: none")])]),e._v(" "),a("p",[e._v("Things to look out for:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Add a "),a("code",[e._v("miners")]),e._v(" table to save the correspondence between "),a("code",[e._v("user")]),e._v(" and "),a("code",[e._v("miner")])])]),e._v(" "),a("li",[a("p",[e._v("Write the values ​​of the "),a("code",[e._v("name")]),e._v(" and "),a("code",[e._v("miner")]),e._v(" fields of each row of data in the "),a("code",[e._v("users")]),e._v(" table to the "),a("code",[e._v("user")]),e._v(" and "),a("code",[e._v("miner")]),e._v(" fields in the "),a("code",[e._v("miners")]),e._v(" table, check whether there is any problem with the writing, the success log: "),a("code",[e._v("migrate from:0, to:1 success;")]),e._v(" failure log: "),a("code",[e._v("migrate from store version:0 failed")])])]),e._v(" "),a("li",[a("p",[e._v("Use "),a("code",[e._v("./venus-auth user miner list ")]),e._v(" to list all miners binded to "),a("code",[e._v("user")])])]),e._v(" "),a("li",[a("p",[e._v("Use the command "),a("code",[e._v("./venus-auth user list")]),e._v(" to list all users. "),a("strong",[e._v("Note: make sure that the status of the user being used is enabled")])])])]),e._v(" "),a("h3",{attrs:{id:"venus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus"}},[e._v("#")]),e._v(" venus")]),e._v(" "),a("ul",[a("li",[e._v("tag: v1.6.0")]),e._v(" "),a("li",[e._v("New features: Support for nv16 networks")]),e._v(" "),a("li",[e._v("Dependency on other components: none")])]),e._v(" "),a("p",[e._v("Things to look out for:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Check whether the vk file is complete after the upgrade")])]),e._v(" "),a("li",[a("p",[e._v("Check the configuration file after the upgrade to see if the upgrade height is properly set. The default configuration file is in "),a("code",[e._v("~/.venus/config.json")]),e._v(" :")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('# cali\n"upgradeSkyrHeight": 1044660\n#mainnet\n"upgradeSkyrHeight": 1960320\n')])])])]),e._v(" "),a("li",[a("p",[e._v("After the upgrade, check whether the blocks are properly synchronized")])]),e._v(" "),a("li",[a("p",[e._v("The api version has changed, affecting the miner connection")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('# Use the curl command to test the interfaces StateGetBeaconEntry, BeaconGetEntry, the following three curl commands should return the same results\ncurl http://127.0.0.1:3453/rpc/v0 -X POST -H "Content-Type: application/json" -H "Authorization: Bearer token" -d \'{"method": "Filecoin.BeaconGetEntry", "params":[1933610], "id": 0}\'\ncurl http://127.0.0.1:3453/rpc/v1 -X POST -H "Content-Type: application/json" -H "Authorization: Bearer token" -d \'{"method": "Filecoin.BeaconGetEntry", "params":[1933610], "id": 0}\'\ncurl http://127.0.0.1:3453/rpc/v1 -X POST -H "Content-Type: application/json" -H "Authorization: Bearer token" -d \'{"method": "Filecoin.StateGetBeaconEntry", "params":[1933610], "id": 0}\'\n')])])])]),e._v(" "),a("li",[a("p",[e._v("Check the mainnet v8 actors cid and make sure it is the same as the output below")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("./venus state actor-cids\n\n# The order may vary\n_manifest bafy2bzacebogjbpiemi7npzxchgcjjki3tfxon4ims55obfyfleqntteljsea\naccount bafk2bzacedudbf7fc5va57t3tmo63snmt3en4iaidv4vo3qlyacbxaa6hlx6y\nstoragemarket bafk2bzacediohrxkp2fbsl4yj4jlupjdkgsiwqb4zuezvinhdo2j5hrxco62q\nstorageminer bafk2bzacecgnynvd3tene3bvqoknuspit56canij5bpra6wl4mrq2mxxwriyu\nmultisig bafk2bzacebhldfjuy4o5v7amrhp5p2gzv2qo5275jut4adnbyp56fxkwy5fag\npaymentchannel bafk2bzacebalad3f72wyk7qyilvfjijcwubdspytnyzlrhvn73254gqis44rq\nreward bafk2bzacecwzzxlgjiavnc3545cqqil3cmq4hgpvfp2crguxy2pl5ybusfsbe\nsystem bafk2bzacedwq5uppsw7vp55zpj7jdieizirmldceehu6wvombw3ixq2tcq57w\ncron bafk2bzacecqb3eolfurehny6yp7tgmapib4ocazo5ilkopjce2c7wc2bcec62\ninit bafk2bzaceaipvjhoxmtofsnv3aj6gj5ida4afdrxa4ewku2hfipdlxpaektlw\nstoragepower bafk2bzacebjvqva6ppvysn5xpmiqcdfelwbbcxmghx5ww6hr37cgred6dyrpm\nverifiedregistry bafk2bzaceb3zbkjz3auizmoln2unmxep7dyfcmsre64vnqfhdyh7rkqfoxlw4\n")])])])]),e._v(" "),a("li",[a("p",[e._v("Mainnet can use fvm on nv15 network by setting environment variable "),a("code",[e._v("export VENUS_USE_FVM_TO_SYNC_MAINNET_V15=1")])])]),e._v(" "),a("li",[a("p",[e._v("If you do not troubleshoot the problem, the rust log level is "),a("strong",[e._v("not recommended")]),e._v(" to be set to "),a("code",[e._v("trace")]),e._v(", because more logs will be printed")])]),e._v(" "),a("li",[a("p",[e._v("After the upgrade, you can use the command "),a("code",[e._v("./venus state get-actor t01000")]),e._v(" to confirm whether the upgrade is successful")])])]),e._v(" "),a("h3",{attrs:{id:"venus-messager"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-messager"}},[e._v("#")]),e._v(" venus-messager")]),e._v(" "),a("ul",[a("li",[e._v("tag:v1.6.0")]),e._v(" "),a("li",[e._v("Affected function: Support new network version, add home directory, default in "),a("code",[e._v("~/.venus-messager")])]),e._v(" "),a("li",[e._v("Dependency on other components: none")])]),e._v(" "),a("p",[e._v("Things to look out for:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Whether to generate the main directory "),a("code",[e._v("~/.venus-messager")]),e._v(" after the upgrade")])]),e._v(" "),a("li",[a("p",[e._v("After the upgrade, the main directory should contain "),a("code",[e._v("config.toml")]),e._v(" and "),a("code",[e._v("tipset.json")]),e._v(", "),a("code",[e._v("config.toml")]),e._v(" should be consistent with the configuration file used to start "),a("code",[e._v("messager")]),e._v(", "),a("code",[e._v("~/.venus-messager/tipset.json")]),e._v(" is copied from "),a("code",[e._v("tipset.json")]),e._v(" in the current directory")])]),e._v(" "),a("li",[a("p",[e._v("After the upgrade is successful, restarting again is to read the configuration is "),a("code",[e._v("~/.venus-messager/config.toml")])])]),e._v(" "),a("li",[a("p",[e._v("Whether the message can be received and pushed to the node normally")])])]),e._v(" "),a("h3",{attrs:{id:"venus-miner"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-miner"}},[e._v("#")]),e._v(" venus-miner")]),e._v(" "),a("ul",[a("li",[e._v("tag: v1.6.0")]),e._v(" "),a("li",[e._v("New features: Get the interface name of beacon Change from "),a("code",[e._v("BeaconGetEntry")]),e._v(" to "),a("code",[e._v("StateGetBeaconEntry")])]),e._v(" "),a("li",[e._v("Dependency on other components: venus, venus-auth, venus-gateway")])]),e._v(" "),a("p",[e._v("Things to look out for:")]),e._v(" "),a("ol",[a("li",[e._v("After the upgrade, use the commonly used command address state/list/update to verify it.")]),e._v(" "),a("li",[e._v("If you use a mysql database, check that the parent_key field in the miner_blocks table is varchar(1000)")])]),e._v(" "),a("h3",{attrs:{id:"venus-gateway"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-gateway"}},[e._v("#")]),e._v(" venus-gateway")]),e._v(" "),a("ul",[a("li",[e._v("tag: v1.6.0")]),e._v(" "),a("li",[e._v("New Feature: Fix requests without auto cleanup timeouts")])]),e._v(" "),a("p",[e._v("Things to look out for:")]),e._v(" "),a("ol",[a("li",[e._v("Is "),a("code",[e._v("wallet")]),e._v(" re-registered after the upgrade")])]),e._v(" "),a("h3",{attrs:{id:"venus-market"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-market"}},[e._v("#")]),e._v(" venus-market")]),e._v(" "),a("ul",[a("li",[e._v("tag: v2.2.0")]),e._v(" "),a("li",[e._v("New features:")])]),e._v(" "),a("p",[e._v("Things to look out for::")]),e._v(" "),a("h3",{attrs:{id:"venus-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-wallet"}},[e._v("#")]),e._v(" venus-wallet")]),e._v(" "),a("h4",{attrs:{id:"community"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#community"}},[e._v("#")]),e._v(" Community")]),e._v(" "),a("ul",[a("li",[e._v("tag: v1.6.0")]),e._v(" "),a("li",[e._v("New features:")])]),e._v(" "),a("p",[e._v("Things to look out for::")]),e._v(" "),a("ol",[a("li",[e._v("Need to unlock wallet")]),e._v(" "),a("li",[e._v("if wallet is properly registered on the gateway")])])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{416:function(e,t,a){"use strict";a.r(t);var n=a(17),s=Object(n.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h2",{attrs:{id:"nv16-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#nv16-upgrade"}},[e._v("#")]),e._v(" nv16 upgrade")]),e._v(" "),a("h3",{attrs:{id:"timeline"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#timeline"}},[e._v("#")]),e._v(" timeline")]),e._v(" "),a("p",[e._v("Mainnet upgrade time: 2022-07-06T14:00:00Z")]),e._v(" "),a("h3",{attrs:{id:"venus-auth"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-auth"}},[e._v("#")]),e._v(" venus-auth")]),e._v(" "),a("ul",[a("li",[e._v("tag: v1.6.0")]),e._v(" "),a("li",[e._v("New features: shared token access support for multi SPs")]),e._v(" "),a("li",[e._v("Dependency on other components: none")])]),e._v(" "),a("p",[e._v("Things to look out for:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Add a "),a("code",[e._v("miners")]),e._v(" table to save the correspondence between "),a("code",[e._v("user")]),e._v(" and "),a("code",[e._v("miner")])])]),e._v(" "),a("li",[a("p",[e._v("Write the values ​​of the "),a("code",[e._v("name")]),e._v(" and "),a("code",[e._v("miner")]),e._v(" fields of each row of data in the "),a("code",[e._v("users")]),e._v(" table to the "),a("code",[e._v("user")]),e._v(" and "),a("code",[e._v("miner")]),e._v(" fields in the "),a("code",[e._v("miners")]),e._v(" table, check whether there is any problem with the writing, the success log: "),a("code",[e._v("migrate from:0, to:1 success;")]),e._v(" failure log: "),a("code",[e._v("migrate from store version:0 failed")])])]),e._v(" "),a("li",[a("p",[e._v("Use "),a("code",[e._v("./venus-auth user miner list ")]),e._v(" to list all miners binded to "),a("code",[e._v("user")])])]),e._v(" "),a("li",[a("p",[e._v("Use the command "),a("code",[e._v("./venus-auth user list")]),e._v(" to list all users. "),a("strong",[e._v("Note: make sure that the status of the user being used is enabled")])])])]),e._v(" "),a("h3",{attrs:{id:"venus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus"}},[e._v("#")]),e._v(" venus")]),e._v(" "),a("ul",[a("li",[e._v("tag: v1.6.0")]),e._v(" "),a("li",[e._v("New features: Support for nv16 networks")]),e._v(" "),a("li",[e._v("Dependency on other components: none")])]),e._v(" "),a("p",[e._v("Things to look out for:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Check whether the vk file is complete after the upgrade")])]),e._v(" "),a("li",[a("p",[e._v("Check the configuration file after the upgrade to see if the upgrade height is properly set. The default configuration file is in "),a("code",[e._v("~/.venus/config.json")]),e._v(" :")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('# cali\n"upgradeSkyrHeight": 1044660\n#mainnet\n"upgradeSkyrHeight": 1960320\n')])])])]),e._v(" "),a("li",[a("p",[e._v("After the upgrade, check whether the blocks are properly synchronized")])]),e._v(" "),a("li",[a("p",[e._v("The api version has changed, affecting the miner connection")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('# Use the curl command to test the interfaces StateGetBeaconEntry, BeaconGetEntry, the following three curl commands should return the same results\ncurl http://127.0.0.1:3453/rpc/v0 -X POST -H "Content-Type: application/json" -H "Authorization: Bearer token" -d \'{"method": "Filecoin.BeaconGetEntry", "params":[1933610], "id": 0}\'\ncurl http://127.0.0.1:3453/rpc/v1 -X POST -H "Content-Type: application/json" -H "Authorization: Bearer token" -d \'{"method": "Filecoin.BeaconGetEntry", "params":[1933610], "id": 0}\'\ncurl http://127.0.0.1:3453/rpc/v1 -X POST -H "Content-Type: application/json" -H "Authorization: Bearer token" -d \'{"method": "Filecoin.StateGetBeaconEntry", "params":[1933610], "id": 0}\'\n')])])])]),e._v(" "),a("li",[a("p",[e._v("Check the mainnet v8 actors cid and make sure it is the same as the output below")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("./venus state actor-cids\n\n# The order may vary\n_manifest bafy2bzacebogjbpiemi7npzxchgcjjki3tfxon4ims55obfyfleqntteljsea\naccount bafk2bzacedudbf7fc5va57t3tmo63snmt3en4iaidv4vo3qlyacbxaa6hlx6y\nstoragemarket bafk2bzacediohrxkp2fbsl4yj4jlupjdkgsiwqb4zuezvinhdo2j5hrxco62q\nstorageminer bafk2bzacecgnynvd3tene3bvqoknuspit56canij5bpra6wl4mrq2mxxwriyu\nmultisig bafk2bzacebhldfjuy4o5v7amrhp5p2gzv2qo5275jut4adnbyp56fxkwy5fag\npaymentchannel bafk2bzacebalad3f72wyk7qyilvfjijcwubdspytnyzlrhvn73254gqis44rq\nreward bafk2bzacecwzzxlgjiavnc3545cqqil3cmq4hgpvfp2crguxy2pl5ybusfsbe\nsystem bafk2bzacedwq5uppsw7vp55zpj7jdieizirmldceehu6wvombw3ixq2tcq57w\ncron bafk2bzacecqb3eolfurehny6yp7tgmapib4ocazo5ilkopjce2c7wc2bcec62\ninit bafk2bzaceaipvjhoxmtofsnv3aj6gj5ida4afdrxa4ewku2hfipdlxpaektlw\nstoragepower bafk2bzacebjvqva6ppvysn5xpmiqcdfelwbbcxmghx5ww6hr37cgred6dyrpm\nverifiedregistry bafk2bzaceb3zbkjz3auizmoln2unmxep7dyfcmsre64vnqfhdyh7rkqfoxlw4\n")])])])]),e._v(" "),a("li",[a("p",[e._v("Mainnet can use fvm on nv15 network by setting environment variable "),a("code",[e._v("export VENUS_USE_FVM_TO_SYNC_MAINNET_V15=1")])])]),e._v(" "),a("li",[a("p",[e._v("If you do not troubleshoot the problem, the rust log level is "),a("strong",[e._v("not recommended")]),e._v(" to be set to "),a("code",[e._v("trace")]),e._v(", because more logs will be printed")])]),e._v(" "),a("li",[a("p",[e._v("After the upgrade, you can use the command "),a("code",[e._v("./venus state get-actor t01000")]),e._v(" to confirm whether the upgrade is successful")])])]),e._v(" "),a("h3",{attrs:{id:"venus-messager"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-messager"}},[e._v("#")]),e._v(" venus-messager")]),e._v(" "),a("ul",[a("li",[e._v("tag:v1.6.0")]),e._v(" "),a("li",[e._v("Affected function: Support new network version, add home directory, default in "),a("code",[e._v("~/.venus-messager")])]),e._v(" "),a("li",[e._v("Dependency on other components: none")])]),e._v(" "),a("p",[e._v("Things to look out for:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Whether to generate the main directory "),a("code",[e._v("~/.venus-messager")]),e._v(" after the upgrade")])]),e._v(" "),a("li",[a("p",[e._v("After the upgrade, the main directory should contain "),a("code",[e._v("config.toml")]),e._v(" and "),a("code",[e._v("tipset.json")]),e._v(", "),a("code",[e._v("config.toml")]),e._v(" should be consistent with the configuration file used to start "),a("code",[e._v("messager")]),e._v(", "),a("code",[e._v("~/.venus-messager/tipset.json")]),e._v(" is copied from "),a("code",[e._v("tipset.json")]),e._v(" in the current directory")])]),e._v(" "),a("li",[a("p",[e._v("After the upgrade is successful, restarting again is to read the configuration is "),a("code",[e._v("~/.venus-messager/config.toml")])])]),e._v(" "),a("li",[a("p",[e._v("Whether the message can be received and pushed to the node normally")])])]),e._v(" "),a("h3",{attrs:{id:"venus-miner"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-miner"}},[e._v("#")]),e._v(" venus-miner")]),e._v(" "),a("ul",[a("li",[e._v("tag: v1.6.0")]),e._v(" "),a("li",[e._v("New features: Get the interface name of beacon Change from "),a("code",[e._v("BeaconGetEntry")]),e._v(" to "),a("code",[e._v("StateGetBeaconEntry")])]),e._v(" "),a("li",[e._v("Dependency on other components: venus, venus-auth, venus-gateway")])]),e._v(" "),a("p",[e._v("Things to look out for:")]),e._v(" "),a("ol",[a("li",[e._v("After the upgrade, use the commonly used command address state/list/update to verify it.")]),e._v(" "),a("li",[e._v("If you use a mysql database, check that the parent_key field in the miner_blocks table is varchar(1000)")])]),e._v(" "),a("h3",{attrs:{id:"venus-gateway"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-gateway"}},[e._v("#")]),e._v(" venus-gateway")]),e._v(" "),a("ul",[a("li",[e._v("tag: v1.6.0")]),e._v(" "),a("li",[e._v("New Feature: Fix requests without auto cleanup timeouts")])]),e._v(" "),a("p",[e._v("Things to look out for:")]),e._v(" "),a("ol",[a("li",[e._v("Is "),a("code",[e._v("wallet")]),e._v(" re-registered after the upgrade")])]),e._v(" "),a("h3",{attrs:{id:"venus-market"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-market"}},[e._v("#")]),e._v(" venus-market")]),e._v(" "),a("ul",[a("li",[e._v("tag: v2.2.0")]),e._v(" "),a("li",[e._v("New features:")])]),e._v(" "),a("p",[e._v("Things to look out for::")]),e._v(" "),a("h3",{attrs:{id:"venus-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-wallet"}},[e._v("#")]),e._v(" venus-wallet")]),e._v(" "),a("h4",{attrs:{id:"community"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#community"}},[e._v("#")]),e._v(" Community")]),e._v(" "),a("ul",[a("li",[e._v("tag: v1.6.0")]),e._v(" "),a("li",[e._v("New features:")])]),e._v(" "),a("p",[e._v("Things to look out for::")]),e._v(" "),a("ol",[a("li",[e._v("Need to unlock wallet")]),e._v(" "),a("li",[e._v("if wallet is properly registered on the gateway")])])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/32.f4b496d6.js b/assets/js/32.b7e9f209.js similarity index 99% rename from assets/js/32.f4b496d6.js rename to assets/js/32.b7e9f209.js index 8ca08bd2d..b3b82a108 100644 --- a/assets/js/32.f4b496d6.js +++ b/assets/js/32.b7e9f209.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[32],{416:function(e,t,a){"use strict";a.r(t);var n=a(17),r=Object(n.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"nv17-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#nv17-upgrade"}},[e._v("#")]),e._v(" nv17 upgrade")]),e._v(" "),a("p",[e._v("If you are upgrading "),a("code",[e._v("venus-wallet")]),e._v(" or "),a("code",[e._v("venus-gateway")]),e._v(" from "),a("code",[e._v("v1.6.x")]),e._v(" to "),a("code",[e._v("v1.8.0")]),e._v(", please read "),a("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions/5265",target:"_blank",rel:"noopener noreferrer"}},[e._v("Venus component v1.7.0 usage notes"),a("OutboundLink")],1),e._v(" first and pay attention to the upgrade order of "),a("code",[e._v("venus-gateway")]),e._v(" and "),a("code",[e._v("venus-wallet")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"timeline"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#timeline"}},[e._v("#")]),e._v(" timeline")]),e._v(" "),a("p",[e._v("Upgrade time (UTC): 2022-11-30T14:00:00Z\nUpgrade time (Beijing): 2022-11-30 22:00:00")]),e._v(" "),a("h3",{attrs:{id:"versions-of-each-component"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#versions-of-each-component"}},[e._v("#")]),e._v(" Versions of each component")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions/5386#discussioncomment-3893446",target:"_blank",rel:"noopener noreferrer"}},[e._v("calibrationnet"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions/5386#discussioncomment-3893449",target:"_blank",rel:"noopener noreferrer"}},[e._v("mainnet"),a("OutboundLink")],1)])]),e._v(" "),a("h3",{attrs:{id:"venus-auth"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-auth"}},[e._v("#")]),e._v(" venus-auth")]),e._v(" "),a("p",[e._v("Affected function:")]),e._v(" "),a("p",[e._v("Dependency: none")]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("ol",[a("li",[e._v("Add field "),a("code",[e._v("open_mining")]),e._v(" to "),a("code",[e._v("miners")]),e._v(" table, 0 means no block, 1 means block, default is 1")])]),e._v(" "),a("h3",{attrs:{id:"venus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus"}},[e._v("#")]),e._v(" venus")]),e._v(" "),a("p",[e._v("Affected function: nv17 network support")]),e._v(" "),a("p",[e._v("Dependency: None")]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("p",[e._v("Compilation: first "),a("code",[e._v("make dist-clean")]),e._v(" and then "),a("code",[e._v("make")]),e._v(", this can prevent problems caused by failing to upgrade "),a("code",[e._v("filecoin-ffi")]),e._v(".")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Check whether the vk file is complete after upgrading")])]),e._v(" "),a("li",[a("p",[e._v("Check the configuration file after the upgrade, whether the upgrade height is set correctly, the configuration file is in "),a("code",[e._v("~/.venus/config.json")]),e._v(" by default:")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('#cali\n"upgradeSkyrHeight": 16800\n#mainnet\n"upgradeSkyrHeight": 2383680\n')])])])]),e._v(" "),a("li",[a("p",[e._v("After the upgrade, you need to check whether height is synchronized correctly")])]),e._v(" "),a("li",[a("p",[e._v("Check the mainnet "),a("code",[e._v("v9 actors code")]),e._v(" to make sure it is the same as the output below")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("./venus state actor-cids --network-version 17\n\n# order may vary\nNetwork Version: 17\nActor Version: 9\nActor CIDs\nreward bafk2bzacebezgbbmcm2gbcqwisus5fjvpj7hhmu5ubd37phuku3hmkfulxm2o\nsystem bafk2bzaceagvlo2jtahj7dloshrmwfulrd6e2izqev32qm46eumf754weec6c\n_manifest bafy2bzaceb6j6666h36xnhksu3ww4kxb6e25niayfgkdnifaqi6m6ooc66i6i\nstoragemarket bafk2bzacec3j7p6gklk64stax5px3xxd7hdtejaepnd4nw7s2adihde6emkcu\nmultisig bafk2bzacec4va3nmugyqjqrs3lqyr2ij67jhjia5frvx7omnh2isha6abxzya\npaymentchannel bafk2bzacebhdvjbjcgupklddfavzef4e4gnkt3xk3rbmgfmk7xhecszhfxeds\nstoragepower bafk2bzacedsetphfajgne4qy3vdrpyd6ekcmtfs2zkjut4r34cvnuoqemdrtw\nverifiedregistry bafk2bzacecf3yodlyudzukumehbuabgqljyhjt5ifiv4vetcfohnvsxzynwga\ndatacap bafk2bzacebb6uy2ys7tapekmtj7apnjg7oyj4ia5t7tlkvbmwtxwv74lb2pug\naccount bafk2bzacect2p7urje3pylrrrjy3tngn6yaih4gtzauuatf2jllk3ksgfiw2y\ncron bafk2bzacebcec3lffmos3nawm5cvwehssxeqwxixoyyfvejy7viszzsxzyu26\ninit bafk2bzacebtdq4zyuxk2fzbdkva6kc4mx75mkbfmldplfntayhbl5wkqou33i\nstorageminer bafk2bzacedyux5hlrildwutvvjdcsvjtwsoc5xnqdjl73ouiukgklekeuyfl4\n")])])])]),e._v(" "),a("li",[a("p",[e._v("If you are not troubleshooting anything, it is "),a("strong",[e._v("NOT")]),e._v(" recommended to set rust log level to "),a("code",[e._v("trace")]),e._v(" as more irrelavant logs will be printed")])]),e._v(" "),a("li",[a("p",[e._v("After the upgrade, you can use the command "),a("code",[e._v("./venus state get-actor t01000")]),e._v(" to confirm whether the upgrade is successful")])])]),e._v(" "),a("h3",{attrs:{id:"venus-messager"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-messager"}},[e._v("#")]),e._v(" venus-messager")]),e._v(" "),a("p",[e._v("Affected function:")]),e._v(" "),a("ol",[a("li",[e._v("Increase the control of basefee, you can set the basefee separately for an address, when the basefee on the chain is higher than the basefee limit, the message will not be pushed out")])]),e._v(" "),a("p",[e._v("Dependency upgrade components:")]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("ol",[a("li",[e._v("After the upgrade, observe whether the message can be on-chained normally")])]),e._v(" "),a("h3",{attrs:{id:"venus-miner"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-miner"}},[e._v("#")]),e._v(" venus-miner")]),e._v(" "),a("p",[e._v("Affected function:")]),e._v(" "),a("p",[e._v("Dependency upgrade components:")]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("If you are upgrading from "),a("code",[e._v("1.7.*")]),e._v(" to "),a("code",[e._v("v1.8.0")]),e._v(", it will automatically migrate configuration files. Whereas if you are upgrading from "),a("code",[e._v("1.6.*")]),e._v(" to "),a("code",[e._v("v1.8.0")]),e._v(", it is required to have a reinitialization of "),a("code",[e._v("repo")]),e._v(" (init). Please checkout this "),a("a",{attrs:{href:"https://github.com/filecoin-project/venus-miner/blob/master/docs/zh/CHANGELOG.md#%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9-2",target:"_blank",rel:"noopener noreferrer"}},[e._v("guide"),a("OutboundLink")],1),e._v(" to learn more.")])]),e._v(" "),a("li",[a("p",[e._v("Check if blocks can be produced normally after the upgrade.")])])]),e._v(" "),a("h3",{attrs:{id:"venus-gateway"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-gateway"}},[e._v("#")]),e._v(" venus-gateway")]),e._v(" "),a("p",[e._v("Affected function:")]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("p",[e._v("Compile: first "),a("code",[e._v("make dist-clean")]),e._v(" and then "),a("code",[e._v("make")])]),e._v(" "),a("ol",[a("li",[e._v("Check wallet after upgrade: "),a("code",[e._v("./venus-gateway wallet list")])]),e._v(" "),a("li",[e._v("Check miners after upgrade: "),a("code",[e._v("./venus-gateway miner list")])])]),e._v(" "),a("h3",{attrs:{id:"venus-market"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-market"}},[e._v("#")]),e._v(" venus-market")]),e._v(" "),a("p",[e._v("Affected function:")]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("p",[e._v("Compile: first "),a("code",[e._v("make dist-clean")]),e._v(" and then "),a("code",[e._v("make")])]),e._v(" "),a("h3",{attrs:{id:"venus-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-wallet"}},[e._v("#")]),e._v(" venus-wallet")]),e._v(" "),a("p",[e._v("Affect function:")]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("ol",[a("li",[e._v("Make sure to unlock the wallet after startup")]),e._v(" "),a("li",[e._v("Check whether the wallet is registered on the gateway")])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[32],{417:function(e,t,a){"use strict";a.r(t);var n=a(17),r=Object(n.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"nv17-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#nv17-upgrade"}},[e._v("#")]),e._v(" nv17 upgrade")]),e._v(" "),a("p",[e._v("If you are upgrading "),a("code",[e._v("venus-wallet")]),e._v(" or "),a("code",[e._v("venus-gateway")]),e._v(" from "),a("code",[e._v("v1.6.x")]),e._v(" to "),a("code",[e._v("v1.8.0")]),e._v(", please read "),a("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions/5265",target:"_blank",rel:"noopener noreferrer"}},[e._v("Venus component v1.7.0 usage notes"),a("OutboundLink")],1),e._v(" first and pay attention to the upgrade order of "),a("code",[e._v("venus-gateway")]),e._v(" and "),a("code",[e._v("venus-wallet")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"timeline"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#timeline"}},[e._v("#")]),e._v(" timeline")]),e._v(" "),a("p",[e._v("Upgrade time (UTC): 2022-11-30T14:00:00Z\nUpgrade time (Beijing): 2022-11-30 22:00:00")]),e._v(" "),a("h3",{attrs:{id:"versions-of-each-component"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#versions-of-each-component"}},[e._v("#")]),e._v(" Versions of each component")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions/5386#discussioncomment-3893446",target:"_blank",rel:"noopener noreferrer"}},[e._v("calibrationnet"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions/5386#discussioncomment-3893449",target:"_blank",rel:"noopener noreferrer"}},[e._v("mainnet"),a("OutboundLink")],1)])]),e._v(" "),a("h3",{attrs:{id:"venus-auth"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-auth"}},[e._v("#")]),e._v(" venus-auth")]),e._v(" "),a("p",[e._v("Affected function:")]),e._v(" "),a("p",[e._v("Dependency: none")]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("ol",[a("li",[e._v("Add field "),a("code",[e._v("open_mining")]),e._v(" to "),a("code",[e._v("miners")]),e._v(" table, 0 means no block, 1 means block, default is 1")])]),e._v(" "),a("h3",{attrs:{id:"venus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus"}},[e._v("#")]),e._v(" venus")]),e._v(" "),a("p",[e._v("Affected function: nv17 network support")]),e._v(" "),a("p",[e._v("Dependency: None")]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("p",[e._v("Compilation: first "),a("code",[e._v("make dist-clean")]),e._v(" and then "),a("code",[e._v("make")]),e._v(", this can prevent problems caused by failing to upgrade "),a("code",[e._v("filecoin-ffi")]),e._v(".")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Check whether the vk file is complete after upgrading")])]),e._v(" "),a("li",[a("p",[e._v("Check the configuration file after the upgrade, whether the upgrade height is set correctly, the configuration file is in "),a("code",[e._v("~/.venus/config.json")]),e._v(" by default:")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('#cali\n"upgradeSkyrHeight": 16800\n#mainnet\n"upgradeSkyrHeight": 2383680\n')])])])]),e._v(" "),a("li",[a("p",[e._v("After the upgrade, you need to check whether height is synchronized correctly")])]),e._v(" "),a("li",[a("p",[e._v("Check the mainnet "),a("code",[e._v("v9 actors code")]),e._v(" to make sure it is the same as the output below")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("./venus state actor-cids --network-version 17\n\n# order may vary\nNetwork Version: 17\nActor Version: 9\nActor CIDs\nreward bafk2bzacebezgbbmcm2gbcqwisus5fjvpj7hhmu5ubd37phuku3hmkfulxm2o\nsystem bafk2bzaceagvlo2jtahj7dloshrmwfulrd6e2izqev32qm46eumf754weec6c\n_manifest bafy2bzaceb6j6666h36xnhksu3ww4kxb6e25niayfgkdnifaqi6m6ooc66i6i\nstoragemarket bafk2bzacec3j7p6gklk64stax5px3xxd7hdtejaepnd4nw7s2adihde6emkcu\nmultisig bafk2bzacec4va3nmugyqjqrs3lqyr2ij67jhjia5frvx7omnh2isha6abxzya\npaymentchannel bafk2bzacebhdvjbjcgupklddfavzef4e4gnkt3xk3rbmgfmk7xhecszhfxeds\nstoragepower bafk2bzacedsetphfajgne4qy3vdrpyd6ekcmtfs2zkjut4r34cvnuoqemdrtw\nverifiedregistry bafk2bzacecf3yodlyudzukumehbuabgqljyhjt5ifiv4vetcfohnvsxzynwga\ndatacap bafk2bzacebb6uy2ys7tapekmtj7apnjg7oyj4ia5t7tlkvbmwtxwv74lb2pug\naccount bafk2bzacect2p7urje3pylrrrjy3tngn6yaih4gtzauuatf2jllk3ksgfiw2y\ncron bafk2bzacebcec3lffmos3nawm5cvwehssxeqwxixoyyfvejy7viszzsxzyu26\ninit bafk2bzacebtdq4zyuxk2fzbdkva6kc4mx75mkbfmldplfntayhbl5wkqou33i\nstorageminer bafk2bzacedyux5hlrildwutvvjdcsvjtwsoc5xnqdjl73ouiukgklekeuyfl4\n")])])])]),e._v(" "),a("li",[a("p",[e._v("If you are not troubleshooting anything, it is "),a("strong",[e._v("NOT")]),e._v(" recommended to set rust log level to "),a("code",[e._v("trace")]),e._v(" as more irrelavant logs will be printed")])]),e._v(" "),a("li",[a("p",[e._v("After the upgrade, you can use the command "),a("code",[e._v("./venus state get-actor t01000")]),e._v(" to confirm whether the upgrade is successful")])])]),e._v(" "),a("h3",{attrs:{id:"venus-messager"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-messager"}},[e._v("#")]),e._v(" venus-messager")]),e._v(" "),a("p",[e._v("Affected function:")]),e._v(" "),a("ol",[a("li",[e._v("Increase the control of basefee, you can set the basefee separately for an address, when the basefee on the chain is higher than the basefee limit, the message will not be pushed out")])]),e._v(" "),a("p",[e._v("Dependency upgrade components:")]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("ol",[a("li",[e._v("After the upgrade, observe whether the message can be on-chained normally")])]),e._v(" "),a("h3",{attrs:{id:"venus-miner"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-miner"}},[e._v("#")]),e._v(" venus-miner")]),e._v(" "),a("p",[e._v("Affected function:")]),e._v(" "),a("p",[e._v("Dependency upgrade components:")]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("If you are upgrading from "),a("code",[e._v("1.7.*")]),e._v(" to "),a("code",[e._v("v1.8.0")]),e._v(", it will automatically migrate configuration files. Whereas if you are upgrading from "),a("code",[e._v("1.6.*")]),e._v(" to "),a("code",[e._v("v1.8.0")]),e._v(", it is required to have a reinitialization of "),a("code",[e._v("repo")]),e._v(" (init). Please checkout this "),a("a",{attrs:{href:"https://github.com/filecoin-project/venus-miner/blob/master/docs/zh/CHANGELOG.md#%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9-2",target:"_blank",rel:"noopener noreferrer"}},[e._v("guide"),a("OutboundLink")],1),e._v(" to learn more.")])]),e._v(" "),a("li",[a("p",[e._v("Check if blocks can be produced normally after the upgrade.")])])]),e._v(" "),a("h3",{attrs:{id:"venus-gateway"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-gateway"}},[e._v("#")]),e._v(" venus-gateway")]),e._v(" "),a("p",[e._v("Affected function:")]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("p",[e._v("Compile: first "),a("code",[e._v("make dist-clean")]),e._v(" and then "),a("code",[e._v("make")])]),e._v(" "),a("ol",[a("li",[e._v("Check wallet after upgrade: "),a("code",[e._v("./venus-gateway wallet list")])]),e._v(" "),a("li",[e._v("Check miners after upgrade: "),a("code",[e._v("./venus-gateway miner list")])])]),e._v(" "),a("h3",{attrs:{id:"venus-market"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-market"}},[e._v("#")]),e._v(" venus-market")]),e._v(" "),a("p",[e._v("Affected function:")]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("p",[e._v("Compile: first "),a("code",[e._v("make dist-clean")]),e._v(" and then "),a("code",[e._v("make")])]),e._v(" "),a("h3",{attrs:{id:"venus-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-wallet"}},[e._v("#")]),e._v(" venus-wallet")]),e._v(" "),a("p",[e._v("Affect function:")]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("ol",[a("li",[e._v("Make sure to unlock the wallet after startup")]),e._v(" "),a("li",[e._v("Check whether the wallet is registered on the gateway")])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/33.cc87c1c3.js b/assets/js/33.038b9473.js similarity index 99% rename from assets/js/33.cc87c1c3.js rename to assets/js/33.038b9473.js index a27e3f2e6..206be7743 100644 --- a/assets/js/33.cc87c1c3.js +++ b/assets/js/33.038b9473.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{417:function(e,a,t){"use strict";t.r(a);var s=t(17),r=Object(s.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"nv18-upgrade-guide"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#nv18-upgrade-guide"}},[e._v("#")]),e._v(" nv18 Upgrade Guide")]),e._v(" "),t("p",[e._v("If you are upgrading chain service components from "),t("code",[e._v("v1.8.x")]),e._v(" to "),t("code",[e._v("v1.10.0")]),e._v(", please read "),t("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions/5531",target:"_blank",rel:"noopener noreferrer"}},[e._v("venus chain-service v1.9.* & venus-market v2.5.* upgrade list / 链服务 v1.9.*和订单服务 v2.5.*升级清单"),t("OutboundLink")],1),e._v(" first and pay special attention to the upgrade of "),t("code",[e._v("venus-auth")]),e._v(" and "),t("code",[e._v("venus-market")]),e._v(". Before upgrading "),t("code",[e._v("venus-auth")]),e._v(", a user account needs to be created for each miner. Also startup CLI and configurations of "),t("code",[e._v("venus-market")]),e._v(" major breaking changes made to it.")]),e._v(" "),t("h2",{attrs:{id:"about-nv18-upgrade"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#about-nv18-upgrade"}},[e._v("#")]),e._v(" About nv18 upgrade")]),e._v(" "),t("p",[e._v("We storngly encourage you to test out the upgrade in calibration before mainnet.")]),e._v(" "),t("h3",{attrs:{id:"upgrade-timeline"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-timeline"}},[e._v("#")]),e._v(" Upgrade Timeline")]),e._v(" "),t("p",[e._v("Upgrade UTC time: 2023-03-14T15:14:00Z, which is 2023-03-14 23:14:00 in Beijing time")]),e._v(" "),t("h3",{attrs:{id:"nv18-compatible-versions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#nv18-compatible-versions"}},[e._v("#")]),e._v(" nv18 compatible versions")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions/5649#discussioncomment-4652920",target:"_blank",rel:"noopener noreferrer"}},[e._v("calibrationnet"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions/5649#discussioncomment-4652933",target:"_blank",rel:"noopener noreferrer"}},[e._v("mainnet"),t("OutboundLink")],1)])]),e._v(" "),t("h2",{attrs:{id:"venus"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus"}},[e._v("#")]),e._v(" venus")]),e._v(" "),t("p",[e._v("Feature: support nv18 network")]),e._v(" "),t("p",[e._v("Dependency: None")]),e._v(" "),t("p",[e._v("Precautions:")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Compile: make sure to first "),t("code",[e._v("make dist-clean")]),e._v(" and then "),t("code",[e._v("make")]),e._v(". This can prevent problems caused by failing to upgrade "),t("code",[e._v("filecoin-ffi")]),e._v(" normally")])]),e._v(" "),t("li",[t("p",[e._v("Check whether the vk file is complete after upgrading")])]),e._v(" "),t("li",[t("p",[e._v("After upgrading, check the configuration file. And see whether "),t("code",[e._v("AllowableClockDriftSecs")]),e._v(", "),t("code",[e._v("UpgradeHyggeHeight")]),e._v(" and "),t("code",[e._v("UpgradeHyggeHeight")]),e._v(" are normal in the log:")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("#cali\nAllowableClockDriftSecs: 1\nEip155ChainID:314159\nUpgradeHyggeHeight: 322354\n#mainnet\nAllowableClockDriftSecs: 1\nEip155ChainID:314\nUpgradeHyggeHeight: 2683348\n")])])])]),e._v(" "),t("li",[t("p",[e._v("After upgrading, check the status of block synchronization")])]),e._v(" "),t("li",[t("p",[e._v("Check the mainnet v10 actors CID and make sure it is the same as the output below...")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("./venus state actor-cids --network-version 18\n\n# order may vary\nNetwork Version: 18\nActor Version: 10\nActor CIDs\ndatacap bafk2bzacealj5uk7wixhvk7l5tnredtelralwnceafqq34nb2lbylhtuyo64u\nevm bafk2bzaceahmzdxhqsm7cu2mexusjp6frm7r4kdesvti3etv5evfqboos2j4g\ninit bafk2bzaced2f5rhir3hbpqbz5ght7ohv2kgj42g5ykxrypuo2opxsup3ykwl6\naccount bafk2bzaceampw4romta75hyz5p4cqriypmpbgnkxncgxgqn6zptv5lsp2w2bo\nethaccount bafk2bzaceaqoc5zakbhjxn3jljc4lxnthllzunhdor7sxhwgmskvc6drqc3fa\nmultisig bafk2bzaceduf3hayh63jnl4z2knxv7cnrdenoubni22fxersc4octlwpxpmy4\npaymentchannel bafk2bzaceartlg4mrbwgzcwric6mtvyawpbgx2xclo2vj27nna57nxynf3pgc\nreward bafk2bzacebnhtaejfjtzymyfmbdrfmo7vgj3zsof6zlucbmkhrvcuotw5dxpq\nstoragemarket bafk2bzaceclejwjtpu2dhw3qbx6ow7b4pmhwa7ocrbbiqwp36sq5yeg6jz2bc\nstorageminer bafk2bzaced4h7noksockro7glnssz2jnmo2rpzd7dvnmfs4p24zx3h6gtx47s\nverifiedregistry bafk2bzacedfel6edzqpe5oujno7fog4i526go4dtcs6vwrdtbpy2xq6htvcg6\neam bafk2bzacedrpm5gbleh4xkyo2jvs7p5g6f34soa6dpv7ashcdgy676snsum6g\nplaceholder bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro\nstoragepower bafk2bzacec4ay4crzo73ypmh7o3fjendhbqrxake46bprabw67fvwjz5q6ixq\nsystem bafk2bzacedakk5nofebyup4m7nvx6djksfwhnxzrfuq4oyemhpl4lllaikr64\ncron bafk2bzacedcbtsifegiu432m5tysjzkxkmoczxscb6hqpmrr6img7xzdbbs2g\n")])])])]),e._v(" "),t("li",[t("p",[e._v("When not debugging, it is "),t("strong",[e._v("not recommended")]),e._v(" is set the rust log level to "),t("code",[e._v("trace")]),e._v(" as too much logs may be printed")])]),e._v(" "),t("li",[t("p",[e._v("After upgrading, you can use the command "),t("code",[e._v("./venus state get-actor t01000")]),e._v(" to confirm whether the upgrade is successful")])]),e._v(" "),t("li",[t("p",[e._v("Actor Migration")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("The pre-migration height is 60 epoch before the upgrade epoch of 2683288\nPre-migration start: STARTING pre-migration end: COMPLETED pre-migration\nmigration started: STARTING migration ended: COMPLETED migration\n")])])])]),e._v(" "),t("li",[t("p",[e._v("Configuration changes")]),e._v(" "),t("div",{staticClass:"language-json extra-class"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[e._v("# Added fevm related configuration"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" where the enableEthRPC field is used to control whether to enable ETH RPC"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" the default is "),t("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("false")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"fevm"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"enableEthRPC"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"ethTxHashMappingLifetimeDays"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("0")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"event"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"enableRealTimeFilterAPI"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"enableHistoricFilterAPI"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"filterTTL"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"24h0m0s"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"maxFilters"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("100")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"maxFilterResults"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("10000")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"maxFilterHeightRange"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("2880")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"databasePath"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('""')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n\n# Added allowableClockDriftSecs field"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" default is "),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("1")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"parameters"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"allowableClockDriftSecs"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("1")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n")])])])])]),e._v(" "),t("h2",{attrs:{id:"venus-auth"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-auth"}},[e._v("#")]),e._v(" venus-auth")]),e._v(" "),t("p",[e._v("Feature:")]),e._v(" "),t("p",[e._v("Dependency: none")]),e._v(" "),t("p",[e._v("Precautions:")]),e._v(" "),t("ol",[t("li",[e._v("Check whether the command line can be used correctly")])]),e._v(" "),t("h2",{attrs:{id:"venus-messager"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-messager"}},[e._v("#")]),e._v(" venus-messager")]),e._v(" "),t("p",[e._v("Function:")]),e._v(" "),t("ol",[t("li",[e._v("Added additional interface authentication")])]),e._v(" "),t("p",[e._v("Dependency:")]),e._v(" "),t("p",[e._v("Precautions:")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Observe if messages can be received normally after upgrading")])]),e._v(" "),t("li",[t("p",[e._v("After upgrading, observe whether the message can be on-chained properly")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("ReplacedMsg")]),e._v(" is renamed to "),t("code",[e._v("NonceConflictMsg")])])])]),e._v(" "),t("h2",{attrs:{id:"venus-miner"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-miner"}},[e._v("#")]),e._v(" venus-miner")]),e._v(" "),t("p",[e._v("Feature:")]),e._v(" "),t("p",[e._v("Dependency:")]),e._v(" "),t("p",[e._v("Precautions:")]),e._v(" "),t("ol",[t("li",[e._v("Check if block be produced properly after upgrading")])]),e._v(" "),t("h2",{attrs:{id:"venus-gateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-gateway"}},[e._v("#")]),e._v(" venus-gateway")]),e._v(" "),t("p",[e._v("Feature:")]),e._v(" "),t("p",[e._v("Precautions:")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Compile: first "),t("code",[e._v("make dist-clean")]),e._v(" and then "),t("code",[e._v("make")])])]),e._v(" "),t("li",[t("p",[e._v("Check remote wallet after upgrading: "),t("code",[e._v("./venus-gateway wallet list")])])]),e._v(" "),t("li",[t("p",[e._v("Check miners after upgrading: "),t("code",[e._v("./venus-gateway miner list")])])])]),e._v(" "),t("h2",{attrs:{id:"venus-market"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-market"}},[e._v("#")]),e._v(" venus-market")]),e._v(" "),t("p",[e._v("Feature:")]),e._v(" "),t("p",[e._v("Precautions:")]),e._v(" "),t("ol",[t("li",[e._v("Compile: first "),t("code",[e._v("make dist-clean")]),e._v(" and then "),t("code",[e._v("make")])])]),e._v(" "),t("h2",{attrs:{id:"venus-wallet"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-wallet"}},[e._v("#")]),e._v(" venus-wallet")]),e._v(" "),t("p",[e._v("Feature:")]),e._v(" "),t("p",[e._v("Precautions:")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Need to unlock the wallet after restart")])]),e._v(" "),t("li",[t("p",[e._v("Check if wallet is properly registered to the gateway")])])]),e._v(" "),t("h2",{attrs:{id:"venus-sector-manager"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-sector-manager"}},[e._v("#")]),e._v(" venus-sector-manager")]),e._v(" "),t("p",[e._v("Compile: first "),t("code",[e._v("make dist-clean")]),e._v(" and then "),t("code",[e._v("make")])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{419:function(e,a,t){"use strict";t.r(a);var s=t(17),r=Object(s.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"nv18-upgrade-guide"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#nv18-upgrade-guide"}},[e._v("#")]),e._v(" nv18 Upgrade Guide")]),e._v(" "),t("p",[e._v("If you are upgrading chain service components from "),t("code",[e._v("v1.8.x")]),e._v(" to "),t("code",[e._v("v1.10.0")]),e._v(", please read "),t("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions/5531",target:"_blank",rel:"noopener noreferrer"}},[e._v("venus chain-service v1.9.* & venus-market v2.5.* upgrade list / 链服务 v1.9.*和订单服务 v2.5.*升级清单"),t("OutboundLink")],1),e._v(" first and pay special attention to the upgrade of "),t("code",[e._v("venus-auth")]),e._v(" and "),t("code",[e._v("venus-market")]),e._v(". Before upgrading "),t("code",[e._v("venus-auth")]),e._v(", a user account needs to be created for each miner. Also startup CLI and configurations of "),t("code",[e._v("venus-market")]),e._v(" major breaking changes made to it.")]),e._v(" "),t("h2",{attrs:{id:"about-nv18-upgrade"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#about-nv18-upgrade"}},[e._v("#")]),e._v(" About nv18 upgrade")]),e._v(" "),t("p",[e._v("We storngly encourage you to test out the upgrade in calibration before mainnet.")]),e._v(" "),t("h3",{attrs:{id:"upgrade-timeline"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-timeline"}},[e._v("#")]),e._v(" Upgrade Timeline")]),e._v(" "),t("p",[e._v("Upgrade UTC time: 2023-03-14T15:14:00Z, which is 2023-03-14 23:14:00 in Beijing time")]),e._v(" "),t("h3",{attrs:{id:"nv18-compatible-versions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#nv18-compatible-versions"}},[e._v("#")]),e._v(" nv18 compatible versions")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions/5649#discussioncomment-4652920",target:"_blank",rel:"noopener noreferrer"}},[e._v("calibrationnet"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions/5649#discussioncomment-4652933",target:"_blank",rel:"noopener noreferrer"}},[e._v("mainnet"),t("OutboundLink")],1)])]),e._v(" "),t("h2",{attrs:{id:"venus"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus"}},[e._v("#")]),e._v(" venus")]),e._v(" "),t("p",[e._v("Feature: support nv18 network")]),e._v(" "),t("p",[e._v("Dependency: None")]),e._v(" "),t("p",[e._v("Precautions:")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Compile: make sure to first "),t("code",[e._v("make dist-clean")]),e._v(" and then "),t("code",[e._v("make")]),e._v(". This can prevent problems caused by failing to upgrade "),t("code",[e._v("filecoin-ffi")]),e._v(" normally")])]),e._v(" "),t("li",[t("p",[e._v("Check whether the vk file is complete after upgrading")])]),e._v(" "),t("li",[t("p",[e._v("After upgrading, check the configuration file. And see whether "),t("code",[e._v("AllowableClockDriftSecs")]),e._v(", "),t("code",[e._v("UpgradeHyggeHeight")]),e._v(" and "),t("code",[e._v("UpgradeHyggeHeight")]),e._v(" are normal in the log:")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("#cali\nAllowableClockDriftSecs: 1\nEip155ChainID:314159\nUpgradeHyggeHeight: 322354\n#mainnet\nAllowableClockDriftSecs: 1\nEip155ChainID:314\nUpgradeHyggeHeight: 2683348\n")])])])]),e._v(" "),t("li",[t("p",[e._v("After upgrading, check the status of block synchronization")])]),e._v(" "),t("li",[t("p",[e._v("Check the mainnet v10 actors CID and make sure it is the same as the output below...")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("./venus state actor-cids --network-version 18\n\n# order may vary\nNetwork Version: 18\nActor Version: 10\nActor CIDs\ndatacap bafk2bzacealj5uk7wixhvk7l5tnredtelralwnceafqq34nb2lbylhtuyo64u\nevm bafk2bzaceahmzdxhqsm7cu2mexusjp6frm7r4kdesvti3etv5evfqboos2j4g\ninit bafk2bzaced2f5rhir3hbpqbz5ght7ohv2kgj42g5ykxrypuo2opxsup3ykwl6\naccount bafk2bzaceampw4romta75hyz5p4cqriypmpbgnkxncgxgqn6zptv5lsp2w2bo\nethaccount bafk2bzaceaqoc5zakbhjxn3jljc4lxnthllzunhdor7sxhwgmskvc6drqc3fa\nmultisig bafk2bzaceduf3hayh63jnl4z2knxv7cnrdenoubni22fxersc4octlwpxpmy4\npaymentchannel bafk2bzaceartlg4mrbwgzcwric6mtvyawpbgx2xclo2vj27nna57nxynf3pgc\nreward bafk2bzacebnhtaejfjtzymyfmbdrfmo7vgj3zsof6zlucbmkhrvcuotw5dxpq\nstoragemarket bafk2bzaceclejwjtpu2dhw3qbx6ow7b4pmhwa7ocrbbiqwp36sq5yeg6jz2bc\nstorageminer bafk2bzaced4h7noksockro7glnssz2jnmo2rpzd7dvnmfs4p24zx3h6gtx47s\nverifiedregistry bafk2bzacedfel6edzqpe5oujno7fog4i526go4dtcs6vwrdtbpy2xq6htvcg6\neam bafk2bzacedrpm5gbleh4xkyo2jvs7p5g6f34soa6dpv7ashcdgy676snsum6g\nplaceholder bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro\nstoragepower bafk2bzacec4ay4crzo73ypmh7o3fjendhbqrxake46bprabw67fvwjz5q6ixq\nsystem bafk2bzacedakk5nofebyup4m7nvx6djksfwhnxzrfuq4oyemhpl4lllaikr64\ncron bafk2bzacedcbtsifegiu432m5tysjzkxkmoczxscb6hqpmrr6img7xzdbbs2g\n")])])])]),e._v(" "),t("li",[t("p",[e._v("When not debugging, it is "),t("strong",[e._v("not recommended")]),e._v(" is set the rust log level to "),t("code",[e._v("trace")]),e._v(" as too much logs may be printed")])]),e._v(" "),t("li",[t("p",[e._v("After upgrading, you can use the command "),t("code",[e._v("./venus state get-actor t01000")]),e._v(" to confirm whether the upgrade is successful")])]),e._v(" "),t("li",[t("p",[e._v("Actor Migration")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("The pre-migration height is 60 epoch before the upgrade epoch of 2683288\nPre-migration start: STARTING pre-migration end: COMPLETED pre-migration\nmigration started: STARTING migration ended: COMPLETED migration\n")])])])]),e._v(" "),t("li",[t("p",[e._v("Configuration changes")]),e._v(" "),t("div",{staticClass:"language-json extra-class"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[e._v("# Added fevm related configuration"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" where the enableEthRPC field is used to control whether to enable ETH RPC"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" the default is "),t("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("false")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"fevm"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"enableEthRPC"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"ethTxHashMappingLifetimeDays"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("0")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"event"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"enableRealTimeFilterAPI"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"enableHistoricFilterAPI"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"filterTTL"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"24h0m0s"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"maxFilters"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("100")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"maxFilterResults"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("10000")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"maxFilterHeightRange"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("2880")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"databasePath"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('""')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n\n# Added allowableClockDriftSecs field"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" default is "),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("1")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"parameters"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"allowableClockDriftSecs"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("1")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n")])])])])]),e._v(" "),t("h2",{attrs:{id:"venus-auth"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-auth"}},[e._v("#")]),e._v(" venus-auth")]),e._v(" "),t("p",[e._v("Feature:")]),e._v(" "),t("p",[e._v("Dependency: none")]),e._v(" "),t("p",[e._v("Precautions:")]),e._v(" "),t("ol",[t("li",[e._v("Check whether the command line can be used correctly")])]),e._v(" "),t("h2",{attrs:{id:"venus-messager"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-messager"}},[e._v("#")]),e._v(" venus-messager")]),e._v(" "),t("p",[e._v("Function:")]),e._v(" "),t("ol",[t("li",[e._v("Added additional interface authentication")])]),e._v(" "),t("p",[e._v("Dependency:")]),e._v(" "),t("p",[e._v("Precautions:")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Observe if messages can be received normally after upgrading")])]),e._v(" "),t("li",[t("p",[e._v("After upgrading, observe whether the message can be on-chained properly")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("ReplacedMsg")]),e._v(" is renamed to "),t("code",[e._v("NonceConflictMsg")])])])]),e._v(" "),t("h2",{attrs:{id:"venus-miner"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-miner"}},[e._v("#")]),e._v(" venus-miner")]),e._v(" "),t("p",[e._v("Feature:")]),e._v(" "),t("p",[e._v("Dependency:")]),e._v(" "),t("p",[e._v("Precautions:")]),e._v(" "),t("ol",[t("li",[e._v("Check if block be produced properly after upgrading")])]),e._v(" "),t("h2",{attrs:{id:"venus-gateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-gateway"}},[e._v("#")]),e._v(" venus-gateway")]),e._v(" "),t("p",[e._v("Feature:")]),e._v(" "),t("p",[e._v("Precautions:")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Compile: first "),t("code",[e._v("make dist-clean")]),e._v(" and then "),t("code",[e._v("make")])])]),e._v(" "),t("li",[t("p",[e._v("Check remote wallet after upgrading: "),t("code",[e._v("./venus-gateway wallet list")])])]),e._v(" "),t("li",[t("p",[e._v("Check miners after upgrading: "),t("code",[e._v("./venus-gateway miner list")])])])]),e._v(" "),t("h2",{attrs:{id:"venus-market"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-market"}},[e._v("#")]),e._v(" venus-market")]),e._v(" "),t("p",[e._v("Feature:")]),e._v(" "),t("p",[e._v("Precautions:")]),e._v(" "),t("ol",[t("li",[e._v("Compile: first "),t("code",[e._v("make dist-clean")]),e._v(" and then "),t("code",[e._v("make")])])]),e._v(" "),t("h2",{attrs:{id:"venus-wallet"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-wallet"}},[e._v("#")]),e._v(" venus-wallet")]),e._v(" "),t("p",[e._v("Feature:")]),e._v(" "),t("p",[e._v("Precautions:")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Need to unlock the wallet after restart")])]),e._v(" "),t("li",[t("p",[e._v("Check if wallet is properly registered to the gateway")])])]),e._v(" "),t("h2",{attrs:{id:"venus-sector-manager"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-sector-manager"}},[e._v("#")]),e._v(" venus-sector-manager")]),e._v(" "),t("p",[e._v("Compile: first "),t("code",[e._v("make dist-clean")]),e._v(" and then "),t("code",[e._v("make")])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/36.84abfa94.js b/assets/js/36.4ec56721.js similarity index 99% rename from assets/js/36.84abfa94.js rename to assets/js/36.4ec56721.js index f6556d853..c16f5ed5f 100644 --- a/assets/js/36.84abfa94.js +++ b/assets/js/36.4ec56721.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[36],{421:function(e,t,a){"use strict";a.r(t);var v=a(17),r=Object(v.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"venus-stack-nv22-upgrade-guide"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-stack-nv22-upgrade-guide"}},[e._v("#")]),e._v(" Venus Stack nv22 Upgrade Guide")]),e._v(" "),a("h2",{attrs:{id:"precautions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#precautions"}},[e._v("#")]),e._v(" Precautions")]),e._v(" "),a("ol",[a("li",[e._v("Upgrade all Venus products / components")]),e._v(" "),a("li",[e._v("Use the "),a("code",[e._v("curl")]),e._v(" command to call the "),a("code",[e._v("Version")]),e._v(" interface to check the version number after upgrading. Refer to the guide "),a("a",{attrs:{href:"https://github.com/filecoin-project/venus/issues/5132",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(" for details.")]),e._v(" "),a("li",[e._v("Check if pre/pro messages are on-chained")]),e._v(" "),a("li",[e._v("Check if windowPost messages are on-chained")]),e._v(" "),a("li",[e._v("Check if block producing is working correctly")]),e._v(" "),a("li",[e._v("Check if the gas fee related settings are in effect")])]),e._v(" "),a("h2",{attrs:{id:"products-components-to-be-upgraded"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#products-components-to-be-upgraded"}},[e._v("#")]),e._v(" Products / Components to be Upgraded")]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Component name")]),e._v(" "),a("th",[e._v("tag")]),e._v(" "),a("th",[e._v("commit")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[e._v("sophon-auth")]),e._v(" "),a("td",[e._v("v1.15.0")]),e._v(" "),a("td",[e._v("a1e964b")])]),e._v(" "),a("tr",[a("td",[e._v("venus")]),e._v(" "),a("td",[e._v("v1.15.1")]),e._v(" "),a("td",[e._v("81c99f3")])]),e._v(" "),a("tr",[a("td",[e._v("sophon-co")]),e._v(" "),a("td",[e._v("v0.8.0")]),e._v(" "),a("td",[e._v("0e48712")])]),e._v(" "),a("tr",[a("td",[e._v("sophon-messager")]),e._v(" "),a("td",[e._v("v1.15.0")]),e._v(" "),a("td",[e._v("1e4f0d5")])]),e._v(" "),a("tr",[a("td",[e._v("soohon-gateway")]),e._v(" "),a("td",[e._v("v1.15.0")]),e._v(" "),a("td",[e._v("541891a")])]),e._v(" "),a("tr",[a("td",[e._v("venus-wallet")]),e._v(" "),a("td",[e._v("v1.15.0")]),e._v(" "),a("td",[e._v("6b3de34")])]),e._v(" "),a("tr",[a("td",[e._v("sophon-miner")]),e._v(" "),a("td",[e._v("v1.15.0")]),e._v(" "),a("td",[e._v("8dd6c68")])]),e._v(" "),a("tr",[a("td",[e._v("droplet")]),e._v(" "),a("td",[e._v("v2.11.0")]),e._v(" "),a("td",[e._v("44481dd")])]),e._v(" "),a("tr",[a("td",[e._v("damocles-manager")]),e._v(" "),a("td",[e._v("v0.10.0-rc1")]),e._v(" "),a("td",[e._v("2f6c5f9")])]),e._v(" "),a("tr",[a("td",[e._v("damocles-worker")]),e._v(" "),a("td",[e._v("v0.10.0-rc1")]),e._v(" "),a("td",[e._v("2f6c5f9")])])])]),e._v(" "),a("h3",{attrs:{id:"upgrade-sequence"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-sequence"}},[e._v("#")]),e._v(" Upgrade Sequence")]),e._v(" "),a("ol",[a("li",[e._v("sophon-auth")]),e._v(" "),a("li",[e._v("venus")]),e._v(" "),a("li",[e._v("soohon-co")]),e._v(" "),a("li",[e._v("soohon-gateway")]),e._v(" "),a("li",[e._v("sophon-messager")]),e._v(" "),a("li",[e._v("sophon-miner")]),e._v(" "),a("li",[e._v("droplet")]),e._v(" "),a("li",[e._v("venus-wallet")]),e._v(" "),a("li",[e._v("damocles-manager")]),e._v(" "),a("li",[e._v("damocles-worker")])]),e._v(" "),a("h3",{attrs:{id:"sophon-auth"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sophon-auth"}},[e._v("#")]),e._v(" sophon-auth")]),e._v(" "),a("p",[e._v("Affected functions:")]),e._v(" "),a("ul",[a("li",[e._v("Aquiring auth services from other components")])]),e._v(" "),a("p",[e._v("Upgrade Dependency:")]),e._v(" "),a("ul",[a("li",[e._v("None")])]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("ul",[a("li",[e._v("Check if authentication working normally after startup.")])]),e._v(" "),a("h3",{attrs:{id:"venus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus"}},[e._v("#")]),e._v(" Venus")]),e._v(" "),a("p",[e._v("Affected functions:")]),e._v(" "),a("ul",[a("li",[e._v("None")])]),e._v(" "),a("p",[e._v("Upgrade Dependency:")]),e._v(" "),a("ul",[a("li",[e._v("sophon-auth")])]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("p",[e._v("Compile: First "),a("code",[e._v("make dist-clean")]),e._v(" and then "),a("code",[e._v("make")]),e._v(", this can prevent problems caused by failure to upgrade "),a("code",[e._v("filecoin-ffi")]),e._v(" properly.")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Check if the vk file is complete after upgrading")])]),e._v(" "),a("li",[a("p",[e._v("After the upgrade, execute the command "),a("code",[e._v("./venus state network-info")]),e._v(", and then check whether the UpgradeDragonHeight is normal through the log:")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("#cali\nUpgradeDragonHeight: 1427974\n#mainnet\nUpgradeDragonHeight: 3855360\n")])])])]),e._v(" "),a("li",[a("p",[e._v("After the upgrade, you need to check if the blocks are synchronized normally.")])]),e._v(" "),a("li",[a("p",[e._v("Check the mainnet v13 actors code and make sure it is the same as the output below")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("./venus state actor-cids --network-version 22\n\n# The order may be different\nNetwork Version: 22\nActor Version: 13\nManifest CID: bafy2bzacecdhvfmtirtojwhw2tyciu4jkbpsbk5g53oe24br27oy62sn4dc4e\nActor CID\naccount bafk2bzacedxnbtlsqdk76fsfmnhyvsblwyfducerwwtp3mqtx2wbrvs5idl52\ncron bafk2bzacebbopddyn5csb3fsuhh2an4ttd23x6qnwixgohlirj5ahtcudphyc\ndatacap bafk2bzaceah42tfnhd7xnztawgf46gbvc3m2gudoxshlba2ucmmo2vy67t7ci\neam bafk2bzaceb23bhvvcjsth7cn7vp3gbaphrutsaz7v6hkls3ogotzs4bnhm4mk\nethaccount bafk2bzaceautge6zhuy6jbj3uldwoxwhpywuon6z3xfvmdbzpbdribc6zzmei\nevm bafk2bzacedq6v2lyuhgywhlllwmudfj2zufzcauxcsvvd34m2ek5xr55mvh2q\ninit bafk2bzacedr4xacm3fts4vilyeiacjr2hpmwzclyzulbdo24lrfxbtau2wbai\nmultisig bafk2bzacecr5zqarfqak42xqcfeulsxlavcltawsx2fvc7zsjtby6ti4b3wqc\npaymentchannel bafk2bzacebntdhfmyc24e7tm52ggx5tnw4i3hrr3jmllsepv3mibez4hywsa2\nplaceholder bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro\nreward bafk2bzacedq4q2kwkruu4xm7rkyygumlbw2yt4nimna2ivea4qarvtkohnuwu\nstoragemarket bafk2bzacebjtoltdviyznpj34hh5qp6u257jnnbjole5rhqfixm7ug3epvrfu\nstorageminer bafk2bzacebf4rrqyk7gcfggggul6nfpzay7f2ordnkwm7z2wcf4mq6r7i77t2\nstoragepower bafk2bzacecjy4dkulvxppg3ocbmeixe2wgg6yxoyjxrm4ko2fm3uhpvfvam6e\nsystem bafk2bzacecyf523quuq2kdjfdvyty446z2ounmamtgtgeqnr3ynlu5cqrlt6e\nverifiedregistry bafk2bzacedkxehp7y7iyukbcje3wbpqcvufisos6exatkanyrbotoecdkrbta\n")])])])]),e._v(" "),a("li",[a("p",[e._v("If you are not troubleshooting the system, it is not recommended to set the rust log level to "),a("code",[e._v("trace")]),e._v(" because more logs will be printed.")])]),e._v(" "),a("li",[a("p",[e._v("After the upgrade, you can use the command "),a("code",[e._v("./venus state get-actor t01000")]),e._v(" to confirm whether the upgrade is successful.")])]),e._v(" "),a("li",[a("p",[e._v("actor migration")]),e._v(" "),a("p",[a("strong",[e._v("After testing, the pre-migration time is about 30 minutes, and the main migration time is about 100 seconds")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("The pre-migration height is 120 heights before the upgrade height:\npre-migration start: STARTING pre-migration end: COMPLETED pre-migration\nmigration starts: STARTING migration ends: COMPLETED migration\n")])])])]),e._v(" "),a("li",[a("p",[e._v("If "),a("code",[e._v("~/.venus")]),e._v(" exists and you need to import a snapshot, you need to delete the "),a("code",[e._v("~/.venus/version")]),e._v(" file first and then import the snapshot.")]),e._v(" "),a("ul",[a("li",[e._v("Mainnet: "),a("code",[e._v("./venus daemon --import-snapshot snapshot.car")])]),e._v(" "),a("li",[e._v("calibnet: "),a("code",[e._v("./venus daemon --import-snapshot snapshot.car --network calibrationnet")])])])])]),e._v(" "),a("h3",{attrs:{id:"sophon-gateway"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sophon-gateway"}},[e._v("#")]),e._v(" sophon-gateway")]),e._v(" "),a("p",[e._v("Affected functions:")]),e._v(" "),a("ul",[a("li",[e._v("None")])]),e._v(" "),a("p",[e._v("Upgrade Dependency:")]),e._v(" "),a("ul",[a("li",[e._v("sophon-auth")])]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("ul",[a("li",[e._v("When compiling, you need to first "),a("code",[e._v("make dist-clean")]),e._v(" and then "),a("code",[e._v("make")])])]),e._v(" "),a("h3",{attrs:{id:"sophon-messager"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sophon-messager"}},[e._v("#")]),e._v(" sophon-messager")]),e._v(" "),a("p",[e._v("Affected functions:")]),e._v(" "),a("ul",[a("li",[e._v("None")])]),e._v(" "),a("p",[e._v("Upgrade Dependency:")]),e._v(" "),a("ul",[a("li",[e._v("venus")]),e._v(" "),a("li",[e._v("sophon-auth")]),e._v(" "),a("li",[e._v("sophon-gateway")])]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("ul",[a("li",[e._v("After the upgrade, you need to observe whether the messages can be received normally and whether the messages can be on-chained normally.")])]),e._v(" "),a("h3",{attrs:{id:"sophon-miner"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sophon-miner"}},[e._v("#")]),e._v(" sophon-miner")]),e._v(" "),a("p",[e._v("Affected functions:")]),e._v(" "),a("ul",[a("li",[e._v("None")])]),e._v(" "),a("p",[e._v("Upgrade Dependency:")]),e._v(" "),a("ul",[a("li",[e._v("auth")]),e._v(" "),a("li",[e._v("venus")]),e._v(" "),a("li",[e._v("gateway")])]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("h3",{attrs:{id:"droplet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#droplet"}},[e._v("#")]),e._v(" droplet")]),e._v(" "),a("p",[e._v("Affected functions:")]),e._v(" "),a("ul",[a("li",[e._v("Direct data onboarding support; Documentation "),a("a",{attrs:{href:"https://github.com/ipfs-force-community/droplet/blob/master/docs/zh/direct-on-boarding.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1)])]),e._v(" "),a("p",[e._v("Upgrade Dependency:")]),e._v(" "),a("ul",[a("li",[e._v("auth")]),e._v(" "),a("li",[e._v("venus")]),e._v(" "),a("li",[e._v("gateway")]),e._v(" "),a("li",[e._v("messager")])]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("ul",[a("li",[e._v("Check if deals and retrieval can be issued normally after the upgrade?")])]),e._v(" "),a("h3",{attrs:{id:"venus-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-wallet"}},[e._v("#")]),e._v(" venus-wallet")]),e._v(" "),a("p",[e._v("Affected functions:")]),e._v(" "),a("ul",[a("li",[e._v("None")])]),e._v(" "),a("p",[e._v("Upgrade Dependency:")]),e._v(" "),a("ul",[a("li",[e._v("gateway")])]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("ul",[a("li",[e._v("After the upgrade, observe whether the signing is normal and whether the message can be on-chained normally.")])]),e._v(" "),a("h3",{attrs:{id:"damocles-manager"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#damocles-manager"}},[e._v("#")]),e._v(" damocles-manager")]),e._v(" "),a("p",[e._v("Upgrade Dependency:")]),e._v(" "),a("ul",[a("li",[e._v("Sophon service")])]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("ul",[a("li",[e._v("When compiling, you need to first "),a("code",[e._v("make dist-clean")]),e._v(" and then "),a("code",[e._v("make")])])]),e._v(" "),a("h3",{attrs:{id:"damocles-worker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#damocles-worker"}},[e._v("#")]),e._v(" damocles-worker")]),e._v(" "),a("p",[e._v("Upgrade Dependency:")]),e._v(" "),a("ul",[a("li",[e._v("damocles-manager")])]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("p",[e._v("Upgrade result verification steps:")]),e._v(" "),a("ol",[a("li",[e._v("Check if the program starts normally")]),e._v(" "),a("li",[e._v("Check if pre / pro messages are uploaded normally")]),e._v(" "),a("li",[e._v("Check if block producing is normal")]),e._v(" "),a("li",[e._v("Check if windowPost is normal")]),e._v(" "),a("li",[e._v("Check if storage power grows normally")]),e._v(" "),a("li",[e._v("Check if verified deal retrieval is normal")]),e._v(" "),a("li",[e._v("Check if various gas, sector life cycle, and aggregation settings in the database are normal.")])]),e._v(" "),a("h3",{attrs:{id:"database-changes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#database-changes"}},[e._v("#")]),e._v(" Database changes")]),e._v(" "),a("ol",[a("li",[e._v("The droplet adds the "),a("code",[e._v("direct_deals")]),e._v(" table to store DDO deals.")])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[36],{422:function(e,t,a){"use strict";a.r(t);var v=a(17),r=Object(v.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"venus-stack-nv22-upgrade-guide"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-stack-nv22-upgrade-guide"}},[e._v("#")]),e._v(" Venus Stack nv22 Upgrade Guide")]),e._v(" "),a("h2",{attrs:{id:"precautions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#precautions"}},[e._v("#")]),e._v(" Precautions")]),e._v(" "),a("ol",[a("li",[e._v("Upgrade all Venus products / components")]),e._v(" "),a("li",[e._v("Use the "),a("code",[e._v("curl")]),e._v(" command to call the "),a("code",[e._v("Version")]),e._v(" interface to check the version number after upgrading. Refer to the guide "),a("a",{attrs:{href:"https://github.com/filecoin-project/venus/issues/5132",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(" for details.")]),e._v(" "),a("li",[e._v("Check if pre/pro messages are on-chained")]),e._v(" "),a("li",[e._v("Check if windowPost messages are on-chained")]),e._v(" "),a("li",[e._v("Check if block producing is working correctly")]),e._v(" "),a("li",[e._v("Check if the gas fee related settings are in effect")])]),e._v(" "),a("h2",{attrs:{id:"products-components-to-be-upgraded"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#products-components-to-be-upgraded"}},[e._v("#")]),e._v(" Products / Components to be Upgraded")]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Component name")]),e._v(" "),a("th",[e._v("tag")]),e._v(" "),a("th",[e._v("commit")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[e._v("sophon-auth")]),e._v(" "),a("td",[e._v("v1.15.0")]),e._v(" "),a("td",[e._v("a1e964b")])]),e._v(" "),a("tr",[a("td",[e._v("venus")]),e._v(" "),a("td",[e._v("v1.15.1")]),e._v(" "),a("td",[e._v("81c99f3")])]),e._v(" "),a("tr",[a("td",[e._v("sophon-co")]),e._v(" "),a("td",[e._v("v0.8.0")]),e._v(" "),a("td",[e._v("0e48712")])]),e._v(" "),a("tr",[a("td",[e._v("sophon-messager")]),e._v(" "),a("td",[e._v("v1.15.0")]),e._v(" "),a("td",[e._v("1e4f0d5")])]),e._v(" "),a("tr",[a("td",[e._v("soohon-gateway")]),e._v(" "),a("td",[e._v("v1.15.0")]),e._v(" "),a("td",[e._v("541891a")])]),e._v(" "),a("tr",[a("td",[e._v("venus-wallet")]),e._v(" "),a("td",[e._v("v1.15.0")]),e._v(" "),a("td",[e._v("6b3de34")])]),e._v(" "),a("tr",[a("td",[e._v("sophon-miner")]),e._v(" "),a("td",[e._v("v1.15.0")]),e._v(" "),a("td",[e._v("8dd6c68")])]),e._v(" "),a("tr",[a("td",[e._v("droplet")]),e._v(" "),a("td",[e._v("v2.11.0")]),e._v(" "),a("td",[e._v("44481dd")])]),e._v(" "),a("tr",[a("td",[e._v("damocles-manager")]),e._v(" "),a("td",[e._v("v0.10.0-rc1")]),e._v(" "),a("td",[e._v("2f6c5f9")])]),e._v(" "),a("tr",[a("td",[e._v("damocles-worker")]),e._v(" "),a("td",[e._v("v0.10.0-rc1")]),e._v(" "),a("td",[e._v("2f6c5f9")])])])]),e._v(" "),a("h3",{attrs:{id:"upgrade-sequence"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-sequence"}},[e._v("#")]),e._v(" Upgrade Sequence")]),e._v(" "),a("ol",[a("li",[e._v("sophon-auth")]),e._v(" "),a("li",[e._v("venus")]),e._v(" "),a("li",[e._v("soohon-co")]),e._v(" "),a("li",[e._v("soohon-gateway")]),e._v(" "),a("li",[e._v("sophon-messager")]),e._v(" "),a("li",[e._v("sophon-miner")]),e._v(" "),a("li",[e._v("droplet")]),e._v(" "),a("li",[e._v("venus-wallet")]),e._v(" "),a("li",[e._v("damocles-manager")]),e._v(" "),a("li",[e._v("damocles-worker")])]),e._v(" "),a("h3",{attrs:{id:"sophon-auth"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sophon-auth"}},[e._v("#")]),e._v(" sophon-auth")]),e._v(" "),a("p",[e._v("Affected functions:")]),e._v(" "),a("ul",[a("li",[e._v("Aquiring auth services from other components")])]),e._v(" "),a("p",[e._v("Upgrade Dependency:")]),e._v(" "),a("ul",[a("li",[e._v("None")])]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("ul",[a("li",[e._v("Check if authentication working normally after startup.")])]),e._v(" "),a("h3",{attrs:{id:"venus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus"}},[e._v("#")]),e._v(" Venus")]),e._v(" "),a("p",[e._v("Affected functions:")]),e._v(" "),a("ul",[a("li",[e._v("None")])]),e._v(" "),a("p",[e._v("Upgrade Dependency:")]),e._v(" "),a("ul",[a("li",[e._v("sophon-auth")])]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("p",[e._v("Compile: First "),a("code",[e._v("make dist-clean")]),e._v(" and then "),a("code",[e._v("make")]),e._v(", this can prevent problems caused by failure to upgrade "),a("code",[e._v("filecoin-ffi")]),e._v(" properly.")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Check if the vk file is complete after upgrading")])]),e._v(" "),a("li",[a("p",[e._v("After the upgrade, execute the command "),a("code",[e._v("./venus state network-info")]),e._v(", and then check whether the UpgradeDragonHeight is normal through the log:")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("#cali\nUpgradeDragonHeight: 1427974\n#mainnet\nUpgradeDragonHeight: 3855360\n")])])])]),e._v(" "),a("li",[a("p",[e._v("After the upgrade, you need to check if the blocks are synchronized normally.")])]),e._v(" "),a("li",[a("p",[e._v("Check the mainnet v13 actors code and make sure it is the same as the output below")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("./venus state actor-cids --network-version 22\n\n# The order may be different\nNetwork Version: 22\nActor Version: 13\nManifest CID: bafy2bzacecdhvfmtirtojwhw2tyciu4jkbpsbk5g53oe24br27oy62sn4dc4e\nActor CID\naccount bafk2bzacedxnbtlsqdk76fsfmnhyvsblwyfducerwwtp3mqtx2wbrvs5idl52\ncron bafk2bzacebbopddyn5csb3fsuhh2an4ttd23x6qnwixgohlirj5ahtcudphyc\ndatacap bafk2bzaceah42tfnhd7xnztawgf46gbvc3m2gudoxshlba2ucmmo2vy67t7ci\neam bafk2bzaceb23bhvvcjsth7cn7vp3gbaphrutsaz7v6hkls3ogotzs4bnhm4mk\nethaccount bafk2bzaceautge6zhuy6jbj3uldwoxwhpywuon6z3xfvmdbzpbdribc6zzmei\nevm bafk2bzacedq6v2lyuhgywhlllwmudfj2zufzcauxcsvvd34m2ek5xr55mvh2q\ninit bafk2bzacedr4xacm3fts4vilyeiacjr2hpmwzclyzulbdo24lrfxbtau2wbai\nmultisig bafk2bzacecr5zqarfqak42xqcfeulsxlavcltawsx2fvc7zsjtby6ti4b3wqc\npaymentchannel bafk2bzacebntdhfmyc24e7tm52ggx5tnw4i3hrr3jmllsepv3mibez4hywsa2\nplaceholder bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro\nreward bafk2bzacedq4q2kwkruu4xm7rkyygumlbw2yt4nimna2ivea4qarvtkohnuwu\nstoragemarket bafk2bzacebjtoltdviyznpj34hh5qp6u257jnnbjole5rhqfixm7ug3epvrfu\nstorageminer bafk2bzacebf4rrqyk7gcfggggul6nfpzay7f2ordnkwm7z2wcf4mq6r7i77t2\nstoragepower bafk2bzacecjy4dkulvxppg3ocbmeixe2wgg6yxoyjxrm4ko2fm3uhpvfvam6e\nsystem bafk2bzacecyf523quuq2kdjfdvyty446z2ounmamtgtgeqnr3ynlu5cqrlt6e\nverifiedregistry bafk2bzacedkxehp7y7iyukbcje3wbpqcvufisos6exatkanyrbotoecdkrbta\n")])])])]),e._v(" "),a("li",[a("p",[e._v("If you are not troubleshooting the system, it is not recommended to set the rust log level to "),a("code",[e._v("trace")]),e._v(" because more logs will be printed.")])]),e._v(" "),a("li",[a("p",[e._v("After the upgrade, you can use the command "),a("code",[e._v("./venus state get-actor t01000")]),e._v(" to confirm whether the upgrade is successful.")])]),e._v(" "),a("li",[a("p",[e._v("actor migration")]),e._v(" "),a("p",[a("strong",[e._v("After testing, the pre-migration time is about 30 minutes, and the main migration time is about 100 seconds")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("The pre-migration height is 120 heights before the upgrade height:\npre-migration start: STARTING pre-migration end: COMPLETED pre-migration\nmigration starts: STARTING migration ends: COMPLETED migration\n")])])])]),e._v(" "),a("li",[a("p",[e._v("If "),a("code",[e._v("~/.venus")]),e._v(" exists and you need to import a snapshot, you need to delete the "),a("code",[e._v("~/.venus/version")]),e._v(" file first and then import the snapshot.")]),e._v(" "),a("ul",[a("li",[e._v("Mainnet: "),a("code",[e._v("./venus daemon --import-snapshot snapshot.car")])]),e._v(" "),a("li",[e._v("calibnet: "),a("code",[e._v("./venus daemon --import-snapshot snapshot.car --network calibrationnet")])])])])]),e._v(" "),a("h3",{attrs:{id:"sophon-gateway"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sophon-gateway"}},[e._v("#")]),e._v(" sophon-gateway")]),e._v(" "),a("p",[e._v("Affected functions:")]),e._v(" "),a("ul",[a("li",[e._v("None")])]),e._v(" "),a("p",[e._v("Upgrade Dependency:")]),e._v(" "),a("ul",[a("li",[e._v("sophon-auth")])]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("ul",[a("li",[e._v("When compiling, you need to first "),a("code",[e._v("make dist-clean")]),e._v(" and then "),a("code",[e._v("make")])])]),e._v(" "),a("h3",{attrs:{id:"sophon-messager"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sophon-messager"}},[e._v("#")]),e._v(" sophon-messager")]),e._v(" "),a("p",[e._v("Affected functions:")]),e._v(" "),a("ul",[a("li",[e._v("None")])]),e._v(" "),a("p",[e._v("Upgrade Dependency:")]),e._v(" "),a("ul",[a("li",[e._v("venus")]),e._v(" "),a("li",[e._v("sophon-auth")]),e._v(" "),a("li",[e._v("sophon-gateway")])]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("ul",[a("li",[e._v("After the upgrade, you need to observe whether the messages can be received normally and whether the messages can be on-chained normally.")])]),e._v(" "),a("h3",{attrs:{id:"sophon-miner"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sophon-miner"}},[e._v("#")]),e._v(" sophon-miner")]),e._v(" "),a("p",[e._v("Affected functions:")]),e._v(" "),a("ul",[a("li",[e._v("None")])]),e._v(" "),a("p",[e._v("Upgrade Dependency:")]),e._v(" "),a("ul",[a("li",[e._v("auth")]),e._v(" "),a("li",[e._v("venus")]),e._v(" "),a("li",[e._v("gateway")])]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("h3",{attrs:{id:"droplet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#droplet"}},[e._v("#")]),e._v(" droplet")]),e._v(" "),a("p",[e._v("Affected functions:")]),e._v(" "),a("ul",[a("li",[e._v("Direct data onboarding support; Documentation "),a("a",{attrs:{href:"https://github.com/ipfs-force-community/droplet/blob/master/docs/zh/direct-on-boarding.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1)])]),e._v(" "),a("p",[e._v("Upgrade Dependency:")]),e._v(" "),a("ul",[a("li",[e._v("auth")]),e._v(" "),a("li",[e._v("venus")]),e._v(" "),a("li",[e._v("gateway")]),e._v(" "),a("li",[e._v("messager")])]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("ul",[a("li",[e._v("Check if deals and retrieval can be issued normally after the upgrade?")])]),e._v(" "),a("h3",{attrs:{id:"venus-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-wallet"}},[e._v("#")]),e._v(" venus-wallet")]),e._v(" "),a("p",[e._v("Affected functions:")]),e._v(" "),a("ul",[a("li",[e._v("None")])]),e._v(" "),a("p",[e._v("Upgrade Dependency:")]),e._v(" "),a("ul",[a("li",[e._v("gateway")])]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("ul",[a("li",[e._v("After the upgrade, observe whether the signing is normal and whether the message can be on-chained normally.")])]),e._v(" "),a("h3",{attrs:{id:"damocles-manager"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#damocles-manager"}},[e._v("#")]),e._v(" damocles-manager")]),e._v(" "),a("p",[e._v("Upgrade Dependency:")]),e._v(" "),a("ul",[a("li",[e._v("Sophon service")])]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("ul",[a("li",[e._v("When compiling, you need to first "),a("code",[e._v("make dist-clean")]),e._v(" and then "),a("code",[e._v("make")])])]),e._v(" "),a("h3",{attrs:{id:"damocles-worker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#damocles-worker"}},[e._v("#")]),e._v(" damocles-worker")]),e._v(" "),a("p",[e._v("Upgrade Dependency:")]),e._v(" "),a("ul",[a("li",[e._v("damocles-manager")])]),e._v(" "),a("p",[e._v("Precautions:")]),e._v(" "),a("p",[e._v("Upgrade result verification steps:")]),e._v(" "),a("ol",[a("li",[e._v("Check if the program starts normally")]),e._v(" "),a("li",[e._v("Check if pre / pro messages are uploaded normally")]),e._v(" "),a("li",[e._v("Check if block producing is normal")]),e._v(" "),a("li",[e._v("Check if windowPost is normal")]),e._v(" "),a("li",[e._v("Check if storage power grows normally")]),e._v(" "),a("li",[e._v("Check if verified deal retrieval is normal")]),e._v(" "),a("li",[e._v("Check if various gas, sector life cycle, and aggregation settings in the database are normal.")])]),e._v(" "),a("h3",{attrs:{id:"database-changes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#database-changes"}},[e._v("#")]),e._v(" Database changes")]),e._v(" "),a("ol",[a("li",[e._v("The droplet adds the "),a("code",[e._v("direct_deals")]),e._v(" table to store DDO deals.")])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/37.6e38a0f3.js b/assets/js/37.04d6c62a.js similarity index 92% rename from assets/js/37.6e38a0f3.js rename to assets/js/37.04d6c62a.js index ba0ef1c24..b171801b3 100644 --- a/assets/js/37.6e38a0f3.js +++ b/assets/js/37.04d6c62a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[37],{422:function(t,e,n){"use strict";n.r(e);var o=n(17),r=Object(o.a)({},(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[n("h3",{attrs:{id:"have-a-question"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#have-a-question"}},[t._v("#")]),t._v(" Have a question?")]),t._v(" "),n("p",[n("a",{attrs:{href:"https://filecoin.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("Filecoin.io"),n("OutboundLink")],1),t._v(" - general information about the Filecoin network")]),t._v(" "),n("p",[n("a",{attrs:{href:"https://filecoin.io/build/#community",target:"_blank",rel:"noopener noreferrer"}},[t._v("Community Channels"),n("OutboundLink")],1),t._v(" - links to Filecoin community chat and forum")])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[37],{421:function(t,e,n){"use strict";n.r(e);var o=n(17),r=Object(o.a)({},(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[n("h3",{attrs:{id:"have-a-question"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#have-a-question"}},[t._v("#")]),t._v(" Have a question?")]),t._v(" "),n("p",[n("a",{attrs:{href:"https://filecoin.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("Filecoin.io"),n("OutboundLink")],1),t._v(" - general information about the Filecoin network")]),t._v(" "),n("p",[n("a",{attrs:{href:"https://filecoin.io/build/#community",target:"_blank",rel:"noopener noreferrer"}},[t._v("Community Channels"),n("OutboundLink")],1),t._v(" - links to Filecoin community chat and forum")])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/39.918ef1f6.js b/assets/js/39.98618ec7.js similarity index 97% rename from assets/js/39.918ef1f6.js rename to assets/js/39.98618ec7.js index c959334dc..4b9c08f5c 100644 --- a/assets/js/39.918ef1f6.js +++ b/assets/js/39.98618ec7.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[39],{424:function(v,_,l){"use strict";l.r(_);var i=l(17),s=Object(i.a)({},(function(){var v=this,_=v.$createElement,l=v._self._c||_;return l("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[l("h2",{attrs:{id:"原则"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#原则"}},[v._v("#")]),v._v(" 原则")]),v._v(" "),l("p",[v._v("  基于目前的需要,先从重构 guide 和 modules 模块,让两块联动,形成比较易读的 venus 集群部署介绍。")]),v._v(" "),l("ul",[l("li",[l("p",[v._v("modules 模块存储各组件的简介,将不相干的文档移到对应位置")])]),v._v(" "),l("li",[l("p",[v._v("guide 和 modules 对于组件介绍存在很多重复的,只保留一份")])]),v._v(" "),l("li",[l("p",[v._v("modules 模块组件介绍老旧,超链接到项目的介绍文档,避免项目内更新后 doc 中不及时及重复劳动")])]),v._v(" "),l("li",[l("p",[v._v("guide 将组件介绍,编译构建,部署文档独立")])]),v._v(" "),l("li",[l("p",[v._v("guide 模块增加 QA 模块,将 venus discussion 的问题以超链接方式统一到 QA 模块")])]),v._v(" "),l("li",[l("p",[v._v("部署模块尽量少一些设计的介绍,简明扼要,每个指定的操作尽量不涉及不相干的,以免造成误解")])])]),v._v(" "),l("h2",{attrs:{id:"todo-list"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#todo-list"}},[v._v("#")]),v._v(" TODO list")]),v._v(" "),l("ul",[l("li",[l("p",[v._v("[ ] modules 模块")]),v._v(" "),l("ul",[l("li",[v._v("[ ] 引导页内容更新")]),v._v(" "),l("li",[v._v("[ ] 不相关文档移走")]),v._v(" "),l("li",[v._v("[ ] 文档命名一致")]),v._v(" "),l("li",[v._v("[ ] 组件介绍匹配项目进度")]),v._v(" "),l("li",[v._v("[x] 编译构建独立到一个文档")]),v._v(" "),l("li",[v._v("[ ] 组件文档移除从项目中搬过来的内容,用超链接")]),v._v(" "),l("li",[v._v("[ ] market 和 cluster 模块的技术文档移到 modules 模块,")])])]),v._v(" "),l("li",[l("p",[v._v("[ ] guide 模块")]),v._v(" "),l("ul",[l("li",[v._v("[ ] 将部署用到的基础知识单独形成文档")]),v._v(" "),l("li",[v._v("[x] 编译构建超链接到对应文档")]),v._v(" "),l("li",[v._v("[x] 增加部分组件的验证:怎么判断部署成功")]),v._v(" "),l("li",[v._v("[ ] 目录结构调整\n"),l("ul",[l("li",[v._v("[ ] market 和 cluster 归属到链服务部署和独立组件部署文档")]),v._v(" "),l("li",[v._v("[ ] .fil_withdraw_and_send.md.swp 文件删除")]),v._v(" "),l("li",[v._v("[ ] sealer 文档放到单独的目录")])])]),v._v(" "),l("li",[v._v("[ ] Troubleshooting-&-FAQ.md 用超链接方式管理 venus discussion")])])]),v._v(" "),l("li",[l("p",[v._v("[ ] 移除没有价值或过时的文档")])]),v._v(" "),l("li",[l("p",[v._v("[ ] 在很多模块中重复的内容整合")])]),v._v(" "),l("li",[l("p",[v._v("[ ] 每个项目搬过来的内容使用超链接")])])])])}),[],!1,null,null,null);_.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[39],{426:function(v,_,l){"use strict";l.r(_);var i=l(17),s=Object(i.a)({},(function(){var v=this,_=v.$createElement,l=v._self._c||_;return l("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[l("h2",{attrs:{id:"原则"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#原则"}},[v._v("#")]),v._v(" 原则")]),v._v(" "),l("p",[v._v("  基于目前的需要,先从重构 guide 和 modules 模块,让两块联动,形成比较易读的 venus 集群部署介绍。")]),v._v(" "),l("ul",[l("li",[l("p",[v._v("modules 模块存储各组件的简介,将不相干的文档移到对应位置")])]),v._v(" "),l("li",[l("p",[v._v("guide 和 modules 对于组件介绍存在很多重复的,只保留一份")])]),v._v(" "),l("li",[l("p",[v._v("modules 模块组件介绍老旧,超链接到项目的介绍文档,避免项目内更新后 doc 中不及时及重复劳动")])]),v._v(" "),l("li",[l("p",[v._v("guide 将组件介绍,编译构建,部署文档独立")])]),v._v(" "),l("li",[l("p",[v._v("guide 模块增加 QA 模块,将 venus discussion 的问题以超链接方式统一到 QA 模块")])]),v._v(" "),l("li",[l("p",[v._v("部署模块尽量少一些设计的介绍,简明扼要,每个指定的操作尽量不涉及不相干的,以免造成误解")])])]),v._v(" "),l("h2",{attrs:{id:"todo-list"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#todo-list"}},[v._v("#")]),v._v(" TODO list")]),v._v(" "),l("ul",[l("li",[l("p",[v._v("[ ] modules 模块")]),v._v(" "),l("ul",[l("li",[v._v("[ ] 引导页内容更新")]),v._v(" "),l("li",[v._v("[ ] 不相关文档移走")]),v._v(" "),l("li",[v._v("[ ] 文档命名一致")]),v._v(" "),l("li",[v._v("[ ] 组件介绍匹配项目进度")]),v._v(" "),l("li",[v._v("[x] 编译构建独立到一个文档")]),v._v(" "),l("li",[v._v("[ ] 组件文档移除从项目中搬过来的内容,用超链接")]),v._v(" "),l("li",[v._v("[ ] market 和 cluster 模块的技术文档移到 modules 模块,")])])]),v._v(" "),l("li",[l("p",[v._v("[ ] guide 模块")]),v._v(" "),l("ul",[l("li",[v._v("[ ] 将部署用到的基础知识单独形成文档")]),v._v(" "),l("li",[v._v("[x] 编译构建超链接到对应文档")]),v._v(" "),l("li",[v._v("[x] 增加部分组件的验证:怎么判断部署成功")]),v._v(" "),l("li",[v._v("[ ] 目录结构调整\n"),l("ul",[l("li",[v._v("[ ] market 和 cluster 归属到链服务部署和独立组件部署文档")]),v._v(" "),l("li",[v._v("[ ] .fil_withdraw_and_send.md.swp 文件删除")]),v._v(" "),l("li",[v._v("[ ] sealer 文档放到单独的目录")])])]),v._v(" "),l("li",[v._v("[ ] Troubleshooting-&-FAQ.md 用超链接方式管理 venus discussion")])])]),v._v(" "),l("li",[l("p",[v._v("[ ] 移除没有价值或过时的文档")])]),v._v(" "),l("li",[l("p",[v._v("[ ] 在很多模块中重复的内容整合")])]),v._v(" "),l("li",[l("p",[v._v("[ ] 每个项目搬过来的内容使用超链接")])])])])}),[],!1,null,null,null);_.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/40.f404f97c.js b/assets/js/40.6e81209f.js similarity index 97% rename from assets/js/40.f404f97c.js rename to assets/js/40.6e81209f.js index c00065bce..544ac2796 100644 --- a/assets/js/40.f404f97c.js +++ b/assets/js/40.6e81209f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{425:function(e,t,r){"use strict";r.r(t);var n=r(17),a=Object(n.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h2",{attrs:{id:"使命-愿景-价值观"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#使命-愿景-价值观"}},[e._v("#")]),e._v(" 使命,愿景,价值观")]),e._v(" "),r("ul",[r("li",[e._v("❗️使命:建设 Filecoin 基础设施和工具,支持生态繁荣发展")]),e._v(" "),r("li",[e._v("🌏 愿景:人人都能参与 Filecoin 生态")]),e._v(" "),r("li",[e._v("☯️ 价值观:开放并且去信任")])]),e._v(" "),r("h2",{attrs:{id:"联系方式"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#联系方式"}},[e._v("#")]),e._v(" 联系方式")]),e._v(" "),r("ul",[r("li",[e._v("Slack:"),r("a",{attrs:{href:"https://filecoinproject.slack.com/archives/CEHHJNJS3",target:"_blank",rel:"noopener noreferrer"}},[e._v("#fil-venus"),r("OutboundLink")],1),e._v(", Slack:"),r("a",{attrs:{href:"https://filecoinproject.slack.com/archives/C028PCH8L31",target:"_blank",rel:"noopener noreferrer"}},[e._v("#fil-venus-cn"),r("OutboundLink")],1),e._v(", "),r("a",{attrs:{href:"mailto:venus@ipfsforce.com"}},[e._v("venus@ipfsforce.com")])])]),e._v(" "),r("h2",{attrs:{id:"其他资源"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#其他资源"}},[e._v("#")]),e._v(" 其他资源")]),e._v(" "),r("ul",[r("li",[e._v("venus-docs: "),r("a",{attrs:{href:"venus.filecoin.io"}},[e._v("venus.filecoin.io")])]),e._v(" "),r("li",[e._v("VenusHub: "),r("a",{attrs:{href:"venushub.io"}},[e._v("venushub.io")])]),e._v(" "),r("li",[e._v("Github: "),r("a",{attrs:{href:"https://github.com/filecoin-project/venus",target:"_blank",rel:"noopener noreferrer"}},[e._v("venus"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Social Media: "),r("a",{attrs:{href:"https://twitter.com/venus_filecoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),r("OutboundLink")],1),e._v(", "),r("a",{attrs:{href:"https://mp.weixin.qq.com/s/p4_ch03QeMMXxPyakr_8XQ",target:"_blank",rel:"noopener noreferrer"}},[e._v("Wechat"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("安全审计报告:"),r("a",{attrs:{href:"https://leastauthority.com/static/publications/LeastAuthority_Filecoin_Foundation_Venus_Final_Audit_Report.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("link"),r("OutboundLink")],1)])])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{424:function(e,t,r){"use strict";r.r(t);var n=r(17),a=Object(n.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h2",{attrs:{id:"使命-愿景-价值观"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#使命-愿景-价值观"}},[e._v("#")]),e._v(" 使命,愿景,价值观")]),e._v(" "),r("ul",[r("li",[e._v("❗️使命:建设 Filecoin 基础设施和工具,支持生态繁荣发展")]),e._v(" "),r("li",[e._v("🌏 愿景:人人都能参与 Filecoin 生态")]),e._v(" "),r("li",[e._v("☯️ 价值观:开放并且去信任")])]),e._v(" "),r("h2",{attrs:{id:"联系方式"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#联系方式"}},[e._v("#")]),e._v(" 联系方式")]),e._v(" "),r("ul",[r("li",[e._v("Slack:"),r("a",{attrs:{href:"https://filecoinproject.slack.com/archives/CEHHJNJS3",target:"_blank",rel:"noopener noreferrer"}},[e._v("#fil-venus"),r("OutboundLink")],1),e._v(", Slack:"),r("a",{attrs:{href:"https://filecoinproject.slack.com/archives/C028PCH8L31",target:"_blank",rel:"noopener noreferrer"}},[e._v("#fil-venus-cn"),r("OutboundLink")],1),e._v(", "),r("a",{attrs:{href:"mailto:venus@ipfsforce.com"}},[e._v("venus@ipfsforce.com")])])]),e._v(" "),r("h2",{attrs:{id:"其他资源"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#其他资源"}},[e._v("#")]),e._v(" 其他资源")]),e._v(" "),r("ul",[r("li",[e._v("venus-docs: "),r("a",{attrs:{href:"venus.filecoin.io"}},[e._v("venus.filecoin.io")])]),e._v(" "),r("li",[e._v("VenusHub: "),r("a",{attrs:{href:"venushub.io"}},[e._v("venushub.io")])]),e._v(" "),r("li",[e._v("Github: "),r("a",{attrs:{href:"https://github.com/filecoin-project/venus",target:"_blank",rel:"noopener noreferrer"}},[e._v("venus"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("Social Media: "),r("a",{attrs:{href:"https://twitter.com/venus_filecoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),r("OutboundLink")],1),e._v(", "),r("a",{attrs:{href:"https://mp.weixin.qq.com/s/p4_ch03QeMMXxPyakr_8XQ",target:"_blank",rel:"noopener noreferrer"}},[e._v("Wechat"),r("OutboundLink")],1)]),e._v(" "),r("li",[e._v("安全审计报告:"),r("a",{attrs:{href:"https://leastauthority.com/static/publications/LeastAuthority_Filecoin_Foundation_Venus_Final_Audit_Report.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("link"),r("OutboundLink")],1)])])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/43.94ac0b71.js b/assets/js/43.5464da8f.js similarity index 99% rename from assets/js/43.94ac0b71.js rename to assets/js/43.5464da8f.js index 45573b1ff..941ffc6cc 100644 --- a/assets/js/43.94ac0b71.js +++ b/assets/js/43.5464da8f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[43],{434:function(t,s,a){"use strict";a.r(s);var e=a(17),r=Object(e.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"venus-集群最大化利用资源增长算力方案"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-集群最大化利用资源增长算力方案"}},[t._v("#")]),t._v(" Venus-集群最大化利用资源增长算力方案")]),t._v(" "),a("p",[t._v("   在 Filecoin 的网络中,算力大小至关重要,与矿工的收入息息相关。算力的增长与维持需要软硬件资源较多,每个扇区的密封需要 P1、P2、C1,C2 等\n诸多过程,并且每个过程所依赖的资源各不相同,如:P1 偏向多核 CPU,P4 可用 GPU 优化等。故如何找出能最大化利用现有资源提升算力的方案是一个复杂的过程。这篇文章为如何找出最优方案提供一些思路。")]),t._v(" "),a("h2",{attrs:{id:"总体思路"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#总体思路"}},[t._v("#")]),t._v(" 总体思路")]),t._v(" "),a("blockquote",[a("p",[t._v("本文方案是通过各个阶段的任务耗时来推算如何均衡的分配各阶段任务的机器数量占比")])]),t._v(" "),a("ul",[a("li",[t._v("根据实际场景,将所有加速配置都打开,做几个 sector,统计每个阶段任务耗时。每个阶段对硬件资源的的依赖如下:\n"),a("ul",[a("li",[t._v("P1:cpu 及磁盘 io")])]),t._v(" "),a("ul",[a("li",[t._v("P2:cpu,gpu,带宽及磁盘 io")]),t._v(" "),a("li",[t._v("C1-C2:cpu,gpu,带宽及磁盘 io")])])])]),t._v(" "),a("blockquote",[a("p",[t._v("这里多做几个是为了统计出较稳定的耗时,此阶段需保持加速设置及软硬件资源始终不变。")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("维持任务数平衡,即每个机器都有任何时刻都有任务可做,理论上每个阶段任务数与耗时成反比;")])]),t._v(" "),a("li",[a("p",[t._v("扇区任务由 pledge 命令控制,配合最大并发密封扇区数(MaxSealingSectors)管理集群中 sector 并发数量;")])]),t._v(" "),a("li",[a("p",[t._v("每个 worker 可以指定可接受的任务类型。")])])]),t._v(" "),a("h2",{attrs:{id:"任务耗时统计"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#任务耗时统计"}},[t._v("#")]),t._v(" 任务耗时统计")]),t._v(" "),a("p",[t._v("   worker 可以领取的任务类型有:")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v('TTAddPiece TaskType = "seal/v0/addpiece"\nTTPreCommit1 TaskType = "seal/v0/precommit/1"\nTTPreCommit2 TaskType = "seal/v0/precommit/2"\nTTCommit1 TaskType = "seal/v0/commit/1" // NOTE: We use this to transfer the sector into miner-local storage for now; Don\'t use on workers!\nTTCommit2 TaskType = "seal/v0/commit/2"\n\nTTFinalize TaskType = "seal/v0/finalize"\n\nTTFetch TaskType = "seal/v0/fetch"\nTTUnseal TaskType = "seal/v0/unseal"\n\n')])])]),a("p",[t._v("   每个任务都分为两个阶段:prepare 阶段和 worker 阶段,在日志中表现为:")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("# seal/v0/fetch\n2021-08-03T14:00:07.925+0800 INFO advmgr sector-storage/sched_worker.go:401 Sector 7 prepare for seal/v0/fetch ...\n2021-08-03T14:05:36.772+0800 INFO advmgr sector-storage/sched_worker.go:403 Sector 7 prepare for seal/v0/fetch end ...\n\n2021-08-03T14:05:36.772+0800 INFO advmgr sector-storage/sched_worker.go:442 Sector 7 work for seal/v0/fetch ...\n2021-08-03T14:05:36.774+0800 INFO advmgr sector-storage/sched_worker.go:444 Sector 7 work for seal/v0/fetch end ...\n\n# seal/v0/addpiece\n2021-08-03T13:38:37.977+0800 INFO advmgr sector-storage/sched_worker.go:401 Sector 8 prepare for seal/v0/addpiece ...\n2021-08-03T13:38:37.978+0800 INFO advmgr sector-storage/sched_worker.go:403 Sector 8 prepare for seal/v0/addpiece end ...\n\n2021-08-03T13:38:37.978+0800 INFO advmgr sector-storage/sched_worker.go:442 Sector 8 work for seal/v0/addpiece ...\n2021-08-03T13:44:26.295+0800 INFO advmgr sector-storage/sched_worker.go:444 Sector 8 work for seal/v0/addpiece end ...\n\n# seal/v0/commit/2\n2021-08-03T13:26:02.119+0800 INFO advmgr sector-storage/sched_worker.go:401 Sector 7 prepare for seal/v0/commit/2 ...\n2021-08-03T13:26:02.119+0800 INFO advmgr sector-storage/sched_worker.go:403 Sector 7 prepare for seal/v0/commit/2 end ...\n\n2021-08-03T13:26:02.119+0800 INFO advmgr sector-storage/sched_worker.go:442 Sector 7 work for seal/v0/commit/2 ...\n2021-08-03T13:49:46.180+0800 INFO advmgr sector-storage/sched_worker.go:444 Sector 7 work for seal/v0/commit/2 end ...\n\n# seal/v0/finalize\n2021-08-03T13:54:17.414+0800 INFO advmgr sector-storage/sched_worker.go:401 Sector 7 prepare for seal/v0/finalize ...\n2021-08-03T13:59:30.471+0800 INFO advmgr sector-storage/sched_worker.go:403 Sector 7 prepare for seal/v0/finalize end ...\n\n2021-08-03T13:59:30.471+0800 INFO advmgr sector-storage/sched_worker.go:442 Sector 7 work for seal/v0/finalize ...\n2021-08-03T14:00:07.915+0800 INFO advmgr sector-storage/sched_worker.go:444 Sector 7 work for seal/v0/finalize end ...\n\n")])])]),a("p",[t._v("   可以看出有些任务在 prepare 阶段比较耗时,有些在 work 阶段比较耗时,一般来说需要网路传输,带宽资源的在 prepare 比较耗时,如 fetch,finalize 等;而需要计算的任务在 work 阶段比较耗时,如 AP,P1,P2,C2 等。")]),t._v(" "),a("p",[t._v("   为了便于计算,这里将任务阶段进行合并,主要分为:AP,P1,P2,C2 阶段,将这四个阶段之前的仍无耗时统一归为相应阶段的耗时,如 T(P1)=P1 耗时+P1 前的 fetch 耗时。这里 waitseed 怎么归类,在后面的时间逻辑中有没有考虑进去")]),t._v(" "),a("h2",{attrs:{id:"速率因子"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#速率因子"}},[t._v("#")]),t._v(" 速率因子")]),t._v(" "),a("h3",{attrs:{id:"临时存储设备"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#临时存储设备"}},[t._v("#")]),t._v(" 临时存储设备")]),t._v(" "),a("p",[t._v("  Filecoin 在封装算力是会产生一些临时文件,在任务的进行中存在很多随机存取,这就要求磁盘吞吐量不能太差,否则会导致磁盘 IO 过高,计算资源等待磁盘读取处于闲置状态。")]),t._v(" "),a("ul",[a("li",[t._v("如何挑选适合的设备")])]),t._v(" "),a("p",[t._v("  如何寻找适合的设备,其实就是需要多少的磁盘吞吐量,可以通过一个简单的计算公式得到它。")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("文件大小 * 线程并行数量 / 运行时间 "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" 平均每秒钟传输速度\n \n因为每个阶段的吞吐不同,拆分计算可以让得到的数据更精准\n \nP1 读取 + P1 写入 "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" P1 阶段所需的吞吐量,其他阶段相同,把所有阶段所需的吞吐加起来就得到了所需的吞吐量,当然需要一些性能上的冗余\n")])])]),a("p",[t._v("  通常情况下绝大多数的矿工都会使用 SSD 或者 NVME,当有多块硬盘时我们可以通过"),a("code",[t._v("venus-worker storage attach --seal ")]),t._v("命令或者启动多个 worker 来设置多个路径,但这并不是一个比较好的方法,路径过于分散会导致后续的维护相对复杂,无法充分利用,通过创建 raid 方式可以获得更好的性能和空间利用率,并且便于后续的维护。")]),t._v(" "),a("ul",[a("li",[t._v("软 raid 创建")])]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mdadm")]),t._v(" -C /dev/md1 -l "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(" -n "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" /dev/sdb1 /dev/sdc1\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mdadm")]),t._v(" -C /dev/md2 -l "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" -n "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" /dev/sd"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("b-g"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n-C $创建软件RAID\n-l $指定RAID级别 "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("表示raid1 其他同理 \n-n $指定磁盘个数\n-x $指定备用设备个数\n-A $重组之前的设备\n")])])]),a("p",[t._v("​\t有关 mdadm 用法、MD 和各种级别的 RAID 的更多信息,请参阅:http://raid.wiki.kernel.org/")]),t._v(" "),a("p",[t._v("​\t获取最新版本的 mdadm 应始终可以从如下链接获取:http://www.kernel.org/pub/linux/utils/raid/mdadm/")]),t._v(" "),a("p",[t._v("​\t硬 raid 创建时请查看您的 raid 卡型号和说明进行操作")]),t._v(" "),a("h3",{attrs:{id:"永久存储设备"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#永久存储设备"}},[t._v("#")]),t._v(" 永久存储设备")]),t._v(" "),a("p",[t._v("   永久存储设备的访问机制和可能遇到的问题:")]),t._v(" "),a("ol",[a("li",[t._v("在每个任务阶段产生的文件有些是要永久存储的,用于 wdPoSt 或 winningPoSt,在每个 sector 完成阶段需要传输到永久存储目录,这个过程需要带宽资源,并且要保证磁盘 io;")]),t._v(" "),a("li",[t._v("wdPoSt 大量的随机读取非常小的文件,这可能会导致读取过慢而影响时空证明导致算力惩罚;")]),t._v(" "),a("li",[t._v("当存储过于集中时,少量的机器损坏会导致所有的数据丢失;")]),t._v(" "),a("li",[t._v("当磁盘过多时,并且盘符没有固定,启动时可能导致盘符移动;")]),t._v(" "),a("li",[t._v("如果是 raid,尽量选择 raid5 或者 raid6,raid10 这种冗余性更高的方式;")]),t._v(" "),a("li",[t._v("需要监控磁盘空间利用率并报警。")])]),t._v(" "),a("h3",{attrs:{id:"网络传输"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#网络传输"}},[t._v("#")]),t._v(" 网络传输")]),t._v(" "),a("p",[t._v("   网络传输会有两个部分:")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("临时数据的网络传输,某个阶段的任务需要上个阶段的数据时会用 http 协议请求所需文件,需要保证传输时间小于计算时间。")]),t._v(" "),a("p",[t._v("举例:\n传输往往和计算是同步进行的")]),t._v(" "),a("p",[t._v("传输时间 > 计算时间 资源闲置,计算资源等待网络资源,拉长整个扇区封装的声明周期,就是降产")]),t._v(" "),a("p",[t._v("传输时间 < 计算时间 计算资源充分利用")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("观察计算资源是否出现闲置")])]),t._v(" "),a("li",[a("p",[t._v("计算网络传输速度能否满足计算时间")]),t._v(" "),a("p",[t._v("Precommit2 如果计算耗时 25 分钟,读取 440G 左右文件,写入 100G 左右文件"),a("br"),t._v("\n(440G * 1024 / 25 / 60) + (100G * 1024 / 25 / 60) = 单个线程所需的吞吐量")])]),t._v(" "),a("li",[a("p",[t._v("多台机器同步阶段的文件传输")]),t._v(" "),a("p",[t._v("我们有 A,B,C 三个机器分别负责 P1,P2,Commit")]),t._v(" "),a("p",[t._v("当 A 机器开始 P1 时会向 B 机器的 P2 传输 32G 左右的 Unsealed")]),t._v(" "),a("p",[t._v("当 B 机器开始 P2 时,A 机器的 P1 生成的 440G 左右所有文件会传输到 B 的机器上")]),t._v(" "),a("p",[t._v("Commit 又分为 C1 和 C2.当 C 机器运行 C1 时需要 P1 和 P2 的所有文件,计算的结果通过内存直接传递给 C2,所以并不会在落盘新的文件")])])])]),t._v(" "),a("li",[a("p",[t._v("最终数据传输,我们要知道当最终的存储也会成为我们的产量瓶颈(貌似和下面的不符合)")]),t._v(" "),a("ol",[a("li",[a("p",[t._v("假设计算资源的产量是每天产出 6T 的算力,但如果存储的网络传输最大每天只能传输 5T,那么这就会导致产量的下降")])]),t._v(" "),a("li",[a("p",[t._v("如果我们使用了 NFS 这样的网络文件系统,当网络断开链接是,NFS 往往是会直接卡死的,所以可能需要设置 NFS 的超时机制")])])])])]),t._v(" "),a("h3",{attrs:{id:"worker-的指令集加速"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#worker-的指令集加速"}},[t._v("#")]),t._v(" worker 的指令集加速")]),t._v(" "),a("p",[t._v("   P1 阶段时,使用 SHA 指令集和不使用指令集会有巨大的差距,目前大多数矿工都采用 AMD 型号的 CPU 原因就是 SHA 指令集的关系,研究发现,使用 SHA 指令集基本可以跑进 250 分钟以内,但不使用 SHA 指令集能够跑进 420 分钟已经非常艰难了")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("确保编译时使用RUSTFLAGS=\"-C target-cpu=native -g\" FFI_BUILD_FROM_SOURCE=\"1\" 源码编译filecoin-ffi库,如果cpu支持则启用SHA扩展,这会大幅提高扇区封装速度,源码编译(make deps)时特征如下:\n\n+ trap '{ rm -f $__build_output_log_tmp; }' EXIT\n+ local '__rust_flags=--print native-static-libs -C target-feature=+sse2'\n+ RUSTFLAGS='--print native-static-libs -C target-feature=+sse2'\n+ cargo +nightly-2021-04-24 build --release --no-default-features --features multicore-sdr --features pairing,gpu\n+ tee /tmp/tmp.IYtnd3xka9\n Compiling autocfg v1.0.1\n Compiling libc v0.2.97\n Compiling cfg-if v1.0.0\n Compiling proc-macro2 v1.0.27\n Compiling unicode-xid v0.2.2\n Compiling syn v1.0.73\n Compiling lazy_static v1.4.0\n Compiling cc v1.0.68\n Compiling typenum v1.13.0\n Compiling serde_derive v1.0.126\n Compiling serde v1.0.126\n")])])]),a("h3",{attrs:{id:"核数限制"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#核数限制"}},[t._v("#")]),t._v(" 核数限制")]),t._v(" "),a("p",[t._v("​\t当想要把 CPU 的资源利用的更高时,需要非常合理的规划 CPU 的使用,比如有一个 64 核的 CPU,我们要想 PreCommit2 和 Commit 分别分到 32 核,这样两种任务相互不受影响,也不会导致某一个占用大量的计算资源导致另一个卡住的情况,此时我们就需要利用到核数限制")]),t._v(" "),a("ul",[a("li",[t._v("通过"),a("code",[t._v("taskset")]),t._v("限核")])]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 当我们想要启动某个进程时,可以通过 taskset -c 0-31 这种方式来进行限核操作")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 例如")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[t._v("TRUST_PARAMS")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("nohup")]),t._v(" taskset -c "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("-32 ./venus-worker run "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--miner-addr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("/ip4/sealer-ip/tcp/sealer-port"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--miner-token"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("token"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v(" \n--listen"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.0")]),t._v(".0.0:345"),a("span",{pre:!0,attrs:{class:"token operator"}},[a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[t._v("8")]),t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("flags"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),t._v(" worker.log "),a("span",{pre:!0,attrs:{class:"token operator"}},[a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[t._v("2")]),t._v(">")]),a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[t._v("&1")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 扩展使用 taskset -c 0-9,19-29,39-49 进行跳跃式限核")]),t._v("\n")])])]),a("p",[t._v("这种方式的弊端就在于不方便在程序运行时对核数进行实时调整")]),t._v(" "),a("ul",[a("li",[t._v("通过 Cgrep 限核")])]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 好的目录划分会帮助对多个进程的管理")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" -p /sys/fs/cgroup/cpuset/Pre1-worker\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 设置能够使用的核数范围")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("echo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("-31 "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" /sys/fs/cgroup/cpuset/Pre1-worker/cpuset.cpus\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 加入进程的PID")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("echo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("PID"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" /sys/fs/cgroup/cpuset/Pre1-worker/cgroup.procs\n")])])]),a("p",[t._v("Cgrep 是在进程启动之后加入到配置文件的,并且支持实时的修改核数限制,当然也可以尝试使用 docker 限核,但 docker 的限核也是通过 Cgrep 来实现,至于 Cgrep 其他的用法我们基本都用不到,就不一一说明了")]),t._v(" "),a("h2",{attrs:{id:"worker-运行方式和资源消耗"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#worker-运行方式和资源消耗"}},[t._v("#")]),t._v(" worker 运行方式和资源消耗")]),t._v(" "),a("h3",{attrs:{id:"p1-阶段"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#p1-阶段"}},[t._v("#")]),t._v(" P1 阶段")]),t._v(" "),a("ul",[a("li",[t._v("P1 阶段的加速因子")])]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("export")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[t._v("FIL_PROOFS_MAXIMIZE_CACHING")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 控制cache文件缓存到内存中,起到加速作用,会占用56G内存")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("export")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[t._v("FIL_PROOFS_USE_MULTICORE_SDR")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 控制P1阶段是否使用多核运行,他会占用单个CPU组,所以每个CPU缓存组只会运行一个任务")]),t._v("\n")])])]),a("p",[a("code",[t._v("P1")]),t._v("阶段有两种选择,可以选择更快的速度或者更少的 CPU,需要根据实际资源决定。")]),t._v(" "),a("ul",[a("li",[t._v("P1 的内存资源消耗")])]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 内存中会存储56G的cache文件")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 加上2层layer文件,32G的矿工每层文件32G,64G每层文件64G")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 以32G矿工为例,如果我们同时运行了10个任务")]),t._v("\n \n56G cahce 文件 + "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("32")]),t._v(" *2 * 并行线程数 "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" 696G Mem\n")])])]),a("ul",[a("li",[t._v("P1 的磁盘资源消耗")])]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 11层layer文件 ")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 64G的tree-d文件")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 32G的unsealed文件")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("11")]),t._v(" * 32G + "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("64")]),t._v(" + "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("32")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" 440G\n")])])]),a("h3",{attrs:{id:"p2-阶段"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#p2-阶段"}},[t._v("#")]),t._v(" P2 阶段")]),t._v(" "),a("ul",[a("li",[t._v("P2 的加速因子有两个")])]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("export")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[t._v("FIL_PROOFS_USE_GPU_COLUMN_BUILDER")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 使用GPU运算tree-r-last阶段")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("export")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[t._v("FIL_PROOFS_USE_GPU_TREE_BUILDER")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 使用GPU运算tree-c阶段")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 任何环境变量都不增加的情况下使用CPU运算")]),t._v("\n")])])]),a("p",[t._v("从实验结果来看使用 GPU 运算要明显比 CPU 快得多,而 CPU 运算时的核数,主频跟时间是成线性比例的,CPU 核数越多速度越快,主频越高越快,反之亦然。")]),t._v(" "),a("ul",[a("li",[t._v("P2 内存资源")])]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("--precommit2 "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" precommit2 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("32G sectors: all cores, 96GiB Memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("default: "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 在命令行中可以看到运行一个需要96GiB的内存,如果并行2个就是2倍")]),t._v("\n")])])]),a("ul",[a("li",[t._v("P2 的磁盘资源消耗")])]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 32G")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 8个tree-c文件,每个 4.6G左右")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 8个tree-r-last,每个9.2M")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# t_aux,4K,p_aux,4K")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 32G的sealed文件")]),t._v("\n \n----------------------\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 64G")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 16个tree-c文件,每个 4.6G左右")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 16个tree-r-last,每个9.2M")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# t_aux,4K,p_aux,4K")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 64G的sealed文件")]),t._v("\n")])])]),a("h3",{attrs:{id:"commit"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#commit"}},[t._v("#")]),t._v(" Commit")]),t._v(" "),a("ul",[a("li",[t._v("Commit 中的 C1 的磁盘资源消耗")])]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# C1需要前面2个阶段产生的所有文件")]),t._v("\n\nP1 440G + P2 79G "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" 519G \n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 每个C1的任务需要消耗487G左右的空间")]),t._v("\n")])])]),a("p",[t._v("C1 并没有太多的 CPU 消耗,并且时间极短")]),t._v(" "),a("ul",[a("li",[t._v("Commit 中的 C2 的运行方式,CPU 和 GPU")])]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[t._v("BELLMAN_NO_GPU")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 禁用GPU")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[t._v("BELLMAN_CUSTOM_GPU")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GeForce RTX 3090:10496"')]),t._v(" \n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 指定GPU的cuda核心数,当GPU型号比较冷门无法识别时可使用")]),t._v("\n")])])]),a("ul",[a("li",[t._v("C2 的内存资源消耗")])]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" commit "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("32G sectors: all cores or GPUs, 128GiB Memory + 64GiB swap"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("default: "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 命令行中指出总共需要 128G + 64 G = 192G的内存")]),t._v("\n")])])]),a("h2",{attrs:{id:"产量优化"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#产量优化"}},[t._v("#")]),t._v(" 产量优化")]),t._v(" "),a("h3",{attrs:{id:"产量的计算公式"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#产量的计算公式"}},[t._v("#")]),t._v(" 产量的计算公式")]),t._v(" "),a("p",[t._v("  每个阶段的效率:")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v(" 产出数量 / 时间 = 效率\n \n # 得到效率之后,我们就可以很轻松的算出产量\n \n 效率/h/个数 * 24h * 32G = 日产量\n")])])]),a("p",[t._v("例如我们有 1 台机器")]),t._v(" "),a("p",[t._v("P1:240 分钟")]),t._v(" "),a("p",[t._v("P2:30 分钟")]),t._v(" "),a("p",[t._v("Commit:35 分钟")]),t._v(" "),a("p",[t._v("此时我们可以简单一个计算公式的表格")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("运行阶段")]),t._v(" "),a("th",[t._v("时间/m")]),t._v(" "),a("th",[t._v("并行线程数")]),t._v(" "),a("th",[t._v("效率/时间h/个数")]),t._v(" "),a("th",[t._v("计算公式")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[t._v("P1")]),t._v(" "),a("td",[t._v("240")]),t._v(" "),a("td",[t._v("1")]),t._v(" "),a("td",[t._v("0.25")]),t._v(" "),a("td",[t._v("= 1 / (240 /60)")])]),t._v(" "),a("tr",[a("td",[t._v("P2")]),t._v(" "),a("td",[t._v("30")]),t._v(" "),a("td",[t._v("1")]),t._v(" "),a("td",[t._v("2")]),t._v(" "),a("td",[t._v("= 1 / (30 /60)")])]),t._v(" "),a("tr",[a("td",[t._v("Commit")]),t._v(" "),a("td",[t._v("35")]),t._v(" "),a("td",[t._v("1")]),t._v(" "),a("td",[t._v("1.7142857143")]),t._v(" "),a("td",[t._v("= 1 / (35 /60)")])])])]),t._v(" "),a("h4",{attrs:{id:"如何找到每个阶段的最佳运行数量和配置"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#如何找到每个阶段的最佳运行数量和配置"}},[t._v("#")]),t._v(" 如何找到每个阶段的最佳运行数量和配置")]),t._v(" "),a("p",[t._v("   从上面的表格中我们明显看出 P1 的效率明显不足,而此时 P2 和 Commit 机器必定会闲置,如何处理呢?产出的时间无法调整,那么我们就可以调整并行的线程数,当然我们可以新增一些计算内存的公式来指导我们对内存的消耗")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("运行阶段")]),t._v(" "),a("th",[t._v("时间/m")]),t._v(" "),a("th",[t._v("并行线程数")]),t._v(" "),a("th",[t._v("效率/时间h/个数")]),t._v(" "),a("th",[t._v("计算公式")]),t._v(" "),a("th",[t._v("日产量/G")]),t._v(" "),a("th",[t._v("公式")]),t._v(" "),a("th",[t._v("mem/G")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[t._v("P1")]),t._v(" "),a("td",[t._v("240")]),t._v(" "),a("td",[t._v("7")]),t._v(" "),a("td",[t._v("1.75")]),t._v(" "),a("td",[t._v("= 7 / (240 /60)")]),t._v(" "),a("td",[t._v("1344")]),t._v(" "),a("td",[t._v("=7*64+56")]),t._v(" "),a("td",[t._v("504")])]),t._v(" "),a("tr",[a("td",[t._v("P2")]),t._v(" "),a("td",[t._v("30")]),t._v(" "),a("td",[t._v("1")]),t._v(" "),a("td",[t._v("2")]),t._v(" "),a("td",[t._v("= 1 / (30 /60)")]),t._v(" "),a("td",[t._v("1536")]),t._v(" "),a("td",[t._v("=1*96")]),t._v(" "),a("td",[t._v("96")])]),t._v(" "),a("tr",[a("td",[t._v("Commit")]),t._v(" "),a("td",[t._v("35")]),t._v(" "),a("td",[t._v("1")]),t._v(" "),a("td",[t._v("1.7142857143")]),t._v(" "),a("td",[t._v("= 1 / (35 /60)")]),t._v(" "),a("td",[t._v("1316.571429")]),t._v(" "),a("td",[t._v("=1*128+64")]),t._v(" "),a("td",[t._v("192")])])])]),t._v(" "),a("p",[t._v("现在三个阶段的效率已经非常接近了,但是此时我们仍然存在一些问题:")]),t._v(" "),a("ol",[a("li",[t._v("Commit 效率低于 P1,这会导致大量的任务阻塞到 Commit 阶段")]),t._v(" "),a("li",[t._v("当某个阶段的效率过高时就会出现闲置")]),t._v(" "),a("li",[t._v("我们需要微调资源的分布来尽可能的保证每个阶段的效率无限相等")])]),t._v(" "),a("h4",{attrs:{id:"集群方案运行的的可能性"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#集群方案运行的的可能性"}},[t._v("#")]),t._v(" 集群方案运行的的可能性")]),t._v(" "),a("p",[t._v("​\t\t当我们有多台机器时,我们就要决定某些机器运行哪些阶段,在这之前我们再来看下不同阶段的特性:")]),t._v(" "),a("ol",[a("li",[t._v("P1 : 极度消耗内存,可以单核,多核,并行运行,临时存储需要伴随着并行数量的增多而增多")]),t._v(" "),a("li",[t._v("P2 : 轻度消耗内存,CPU,GPU 都可以运行,如果拆分,需要传输大量的文件")]),t._v(" "),a("li",[t._v("Commit: 中度消耗内存,CPU,GPU 都可以运行,如果拆分,需要传输所有临时文件")])]),t._v(" "),a("p",[t._v("如果我们此时只考虑这些因素,那么我们的组合方式有多少种呢?而这些不同的组合方式一定会带来不通的产量,虽然每个矿工的机器都有所不同,但我们的目标是一样的:")]),t._v(" "),a("ol",[a("li",[t._v("更高的产量组合运行方式")]),t._v(" "),a("li",[t._v("各个阶段更加均衡的分布")])]),t._v(" "),a("p",[t._v("我们可能无法做到完美,但无限接近也是最好的结果")]),t._v(" "),a("h4",{attrs:{id:"如何寻找最佳的下发任务数-始终保持机器满负荷运行"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#如何寻找最佳的下发任务数-始终保持机器满负荷运行"}},[t._v("#")]),t._v(" 如何寻找最佳的下发任务数,始终保持机器满负荷运行")]),t._v(" "),a("p",[t._v("  当我们找到最佳的组合方式之后我们需要考虑的就是如何才能保证这些机器 24 小时都是不间断运行的呢?我们不希望任何一个阶段的出现闲置")]),t._v(" "),a("p",[t._v("当我们发现 P1 需要并行 7 个时,那么我们如果保证 P1 的任务量是充足的,那么后续的两个阶段在不考虑其他问题的情况下,也一定是充足的,所以我们需要保证始终维持 P1 时刻都有 7 个任务")]),t._v(" "),a("div",{staticClass:"language-toml extra-class"},[a("pre",{pre:!0,attrs:{class:"language-toml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 在 venus-sealer 的配置文件中我们可以设置最大的任务数,这可以帮我我们避免任务数下发过多")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token key property"}},[t._v("DataDir")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"~/.venussealer"')]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token table class-name"}},[t._v("API")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key property"}},[t._v("ListenAddress")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/ip4/0.0.0.0/tcp/2345/http"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key property"}},[t._v("RemoteListenAddress")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"192.168.200.6:2345"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key property"}},[t._v("Timeout")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"30s"')]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token table class-name"}},[t._v("Sealing")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key property"}},[t._v("MaxWaitDealsSectors")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key property"}},[t._v("MaxSealingSectors")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 修改为 7")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key property"}},[t._v("MaxSealingSectorsForDeals")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),a("p",[t._v("此时我们可以通过一个简单的定时脚本就可以做到,始终维持最佳的任务量了")]),t._v(" "),a("h2",{attrs:{id:"损失和止损"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#损失和止损"}},[t._v("#")]),t._v(" 损失和止损")]),t._v(" "),a("p",[t._v("  如果一个任务执行错误之后又被反复的重试,这就像我们有 7 个通道进行算力的封装,但是此时有一通道阻塞或者损坏,这就会降低我们 1 / 7 的产量,所以及时的处理错误也是非常重要的")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("何种情况下应该立刻抛弃任务")]),t._v(" "),a("ol",[a("li",[t._v("ticket 过期")]),t._v(" "),a("li",[t._v("Commit 过期")]),t._v(" "),a("li",[t._v("依赖文件损坏重试多次都未成功时;")])])]),t._v(" "),a("li",[a("p",[t._v("移除无法完成的 sector")])])]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("venus-sealer sectors remove --really-do-it "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("sectorNum"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n")])])]),a("p",[t._v("如遇到无法彻底删除请查询:"),a("a",{attrs:{href:"https://github.com/filguard/lotus-ops/blob/master/documents/questions.md#1-%E9%A1%BD%E5%9B%BA%E6%89%87%E5%8C%BA%E5%A6%82%E4%BD%95%E5%88%A0%E9%99%A4",target:"_blank",rel:"noopener noreferrer"}},[t._v("顽固扇区如何删除"),a("OutboundLink")],1)])])}),[],!1,null,null,null);s.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[43],{433:function(t,s,a){"use strict";a.r(s);var e=a(17),r=Object(e.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"venus-集群最大化利用资源增长算力方案"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-集群最大化利用资源增长算力方案"}},[t._v("#")]),t._v(" Venus-集群最大化利用资源增长算力方案")]),t._v(" "),a("p",[t._v("   在 Filecoin 的网络中,算力大小至关重要,与矿工的收入息息相关。算力的增长与维持需要软硬件资源较多,每个扇区的密封需要 P1、P2、C1,C2 等\n诸多过程,并且每个过程所依赖的资源各不相同,如:P1 偏向多核 CPU,P4 可用 GPU 优化等。故如何找出能最大化利用现有资源提升算力的方案是一个复杂的过程。这篇文章为如何找出最优方案提供一些思路。")]),t._v(" "),a("h2",{attrs:{id:"总体思路"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#总体思路"}},[t._v("#")]),t._v(" 总体思路")]),t._v(" "),a("blockquote",[a("p",[t._v("本文方案是通过各个阶段的任务耗时来推算如何均衡的分配各阶段任务的机器数量占比")])]),t._v(" "),a("ul",[a("li",[t._v("根据实际场景,将所有加速配置都打开,做几个 sector,统计每个阶段任务耗时。每个阶段对硬件资源的的依赖如下:\n"),a("ul",[a("li",[t._v("P1:cpu 及磁盘 io")])]),t._v(" "),a("ul",[a("li",[t._v("P2:cpu,gpu,带宽及磁盘 io")]),t._v(" "),a("li",[t._v("C1-C2:cpu,gpu,带宽及磁盘 io")])])])]),t._v(" "),a("blockquote",[a("p",[t._v("这里多做几个是为了统计出较稳定的耗时,此阶段需保持加速设置及软硬件资源始终不变。")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("维持任务数平衡,即每个机器都有任何时刻都有任务可做,理论上每个阶段任务数与耗时成反比;")])]),t._v(" "),a("li",[a("p",[t._v("扇区任务由 pledge 命令控制,配合最大并发密封扇区数(MaxSealingSectors)管理集群中 sector 并发数量;")])]),t._v(" "),a("li",[a("p",[t._v("每个 worker 可以指定可接受的任务类型。")])])]),t._v(" "),a("h2",{attrs:{id:"任务耗时统计"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#任务耗时统计"}},[t._v("#")]),t._v(" 任务耗时统计")]),t._v(" "),a("p",[t._v("   worker 可以领取的任务类型有:")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v('TTAddPiece TaskType = "seal/v0/addpiece"\nTTPreCommit1 TaskType = "seal/v0/precommit/1"\nTTPreCommit2 TaskType = "seal/v0/precommit/2"\nTTCommit1 TaskType = "seal/v0/commit/1" // NOTE: We use this to transfer the sector into miner-local storage for now; Don\'t use on workers!\nTTCommit2 TaskType = "seal/v0/commit/2"\n\nTTFinalize TaskType = "seal/v0/finalize"\n\nTTFetch TaskType = "seal/v0/fetch"\nTTUnseal TaskType = "seal/v0/unseal"\n\n')])])]),a("p",[t._v("   每个任务都分为两个阶段:prepare 阶段和 worker 阶段,在日志中表现为:")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("# seal/v0/fetch\n2021-08-03T14:00:07.925+0800 INFO advmgr sector-storage/sched_worker.go:401 Sector 7 prepare for seal/v0/fetch ...\n2021-08-03T14:05:36.772+0800 INFO advmgr sector-storage/sched_worker.go:403 Sector 7 prepare for seal/v0/fetch end ...\n\n2021-08-03T14:05:36.772+0800 INFO advmgr sector-storage/sched_worker.go:442 Sector 7 work for seal/v0/fetch ...\n2021-08-03T14:05:36.774+0800 INFO advmgr sector-storage/sched_worker.go:444 Sector 7 work for seal/v0/fetch end ...\n\n# seal/v0/addpiece\n2021-08-03T13:38:37.977+0800 INFO advmgr sector-storage/sched_worker.go:401 Sector 8 prepare for seal/v0/addpiece ...\n2021-08-03T13:38:37.978+0800 INFO advmgr sector-storage/sched_worker.go:403 Sector 8 prepare for seal/v0/addpiece end ...\n\n2021-08-03T13:38:37.978+0800 INFO advmgr sector-storage/sched_worker.go:442 Sector 8 work for seal/v0/addpiece ...\n2021-08-03T13:44:26.295+0800 INFO advmgr sector-storage/sched_worker.go:444 Sector 8 work for seal/v0/addpiece end ...\n\n# seal/v0/commit/2\n2021-08-03T13:26:02.119+0800 INFO advmgr sector-storage/sched_worker.go:401 Sector 7 prepare for seal/v0/commit/2 ...\n2021-08-03T13:26:02.119+0800 INFO advmgr sector-storage/sched_worker.go:403 Sector 7 prepare for seal/v0/commit/2 end ...\n\n2021-08-03T13:26:02.119+0800 INFO advmgr sector-storage/sched_worker.go:442 Sector 7 work for seal/v0/commit/2 ...\n2021-08-03T13:49:46.180+0800 INFO advmgr sector-storage/sched_worker.go:444 Sector 7 work for seal/v0/commit/2 end ...\n\n# seal/v0/finalize\n2021-08-03T13:54:17.414+0800 INFO advmgr sector-storage/sched_worker.go:401 Sector 7 prepare for seal/v0/finalize ...\n2021-08-03T13:59:30.471+0800 INFO advmgr sector-storage/sched_worker.go:403 Sector 7 prepare for seal/v0/finalize end ...\n\n2021-08-03T13:59:30.471+0800 INFO advmgr sector-storage/sched_worker.go:442 Sector 7 work for seal/v0/finalize ...\n2021-08-03T14:00:07.915+0800 INFO advmgr sector-storage/sched_worker.go:444 Sector 7 work for seal/v0/finalize end ...\n\n")])])]),a("p",[t._v("   可以看出有些任务在 prepare 阶段比较耗时,有些在 work 阶段比较耗时,一般来说需要网路传输,带宽资源的在 prepare 比较耗时,如 fetch,finalize 等;而需要计算的任务在 work 阶段比较耗时,如 AP,P1,P2,C2 等。")]),t._v(" "),a("p",[t._v("   为了便于计算,这里将任务阶段进行合并,主要分为:AP,P1,P2,C2 阶段,将这四个阶段之前的仍无耗时统一归为相应阶段的耗时,如 T(P1)=P1 耗时+P1 前的 fetch 耗时。这里 waitseed 怎么归类,在后面的时间逻辑中有没有考虑进去")]),t._v(" "),a("h2",{attrs:{id:"速率因子"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#速率因子"}},[t._v("#")]),t._v(" 速率因子")]),t._v(" "),a("h3",{attrs:{id:"临时存储设备"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#临时存储设备"}},[t._v("#")]),t._v(" 临时存储设备")]),t._v(" "),a("p",[t._v("  Filecoin 在封装算力是会产生一些临时文件,在任务的进行中存在很多随机存取,这就要求磁盘吞吐量不能太差,否则会导致磁盘 IO 过高,计算资源等待磁盘读取处于闲置状态。")]),t._v(" "),a("ul",[a("li",[t._v("如何挑选适合的设备")])]),t._v(" "),a("p",[t._v("  如何寻找适合的设备,其实就是需要多少的磁盘吞吐量,可以通过一个简单的计算公式得到它。")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("文件大小 * 线程并行数量 / 运行时间 "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" 平均每秒钟传输速度\n \n因为每个阶段的吞吐不同,拆分计算可以让得到的数据更精准\n \nP1 读取 + P1 写入 "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" P1 阶段所需的吞吐量,其他阶段相同,把所有阶段所需的吞吐加起来就得到了所需的吞吐量,当然需要一些性能上的冗余\n")])])]),a("p",[t._v("  通常情况下绝大多数的矿工都会使用 SSD 或者 NVME,当有多块硬盘时我们可以通过"),a("code",[t._v("venus-worker storage attach --seal ")]),t._v("命令或者启动多个 worker 来设置多个路径,但这并不是一个比较好的方法,路径过于分散会导致后续的维护相对复杂,无法充分利用,通过创建 raid 方式可以获得更好的性能和空间利用率,并且便于后续的维护。")]),t._v(" "),a("ul",[a("li",[t._v("软 raid 创建")])]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mdadm")]),t._v(" -C /dev/md1 -l "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(" -n "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" /dev/sdb1 /dev/sdc1\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mdadm")]),t._v(" -C /dev/md2 -l "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" -n "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" /dev/sd"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("b-g"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n-C $创建软件RAID\n-l $指定RAID级别 "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("表示raid1 其他同理 \n-n $指定磁盘个数\n-x $指定备用设备个数\n-A $重组之前的设备\n")])])]),a("p",[t._v("​\t有关 mdadm 用法、MD 和各种级别的 RAID 的更多信息,请参阅:http://raid.wiki.kernel.org/")]),t._v(" "),a("p",[t._v("​\t获取最新版本的 mdadm 应始终可以从如下链接获取:http://www.kernel.org/pub/linux/utils/raid/mdadm/")]),t._v(" "),a("p",[t._v("​\t硬 raid 创建时请查看您的 raid 卡型号和说明进行操作")]),t._v(" "),a("h3",{attrs:{id:"永久存储设备"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#永久存储设备"}},[t._v("#")]),t._v(" 永久存储设备")]),t._v(" "),a("p",[t._v("   永久存储设备的访问机制和可能遇到的问题:")]),t._v(" "),a("ol",[a("li",[t._v("在每个任务阶段产生的文件有些是要永久存储的,用于 wdPoSt 或 winningPoSt,在每个 sector 完成阶段需要传输到永久存储目录,这个过程需要带宽资源,并且要保证磁盘 io;")]),t._v(" "),a("li",[t._v("wdPoSt 大量的随机读取非常小的文件,这可能会导致读取过慢而影响时空证明导致算力惩罚;")]),t._v(" "),a("li",[t._v("当存储过于集中时,少量的机器损坏会导致所有的数据丢失;")]),t._v(" "),a("li",[t._v("当磁盘过多时,并且盘符没有固定,启动时可能导致盘符移动;")]),t._v(" "),a("li",[t._v("如果是 raid,尽量选择 raid5 或者 raid6,raid10 这种冗余性更高的方式;")]),t._v(" "),a("li",[t._v("需要监控磁盘空间利用率并报警。")])]),t._v(" "),a("h3",{attrs:{id:"网络传输"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#网络传输"}},[t._v("#")]),t._v(" 网络传输")]),t._v(" "),a("p",[t._v("   网络传输会有两个部分:")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("临时数据的网络传输,某个阶段的任务需要上个阶段的数据时会用 http 协议请求所需文件,需要保证传输时间小于计算时间。")]),t._v(" "),a("p",[t._v("举例:\n传输往往和计算是同步进行的")]),t._v(" "),a("p",[t._v("传输时间 > 计算时间 资源闲置,计算资源等待网络资源,拉长整个扇区封装的声明周期,就是降产")]),t._v(" "),a("p",[t._v("传输时间 < 计算时间 计算资源充分利用")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("观察计算资源是否出现闲置")])]),t._v(" "),a("li",[a("p",[t._v("计算网络传输速度能否满足计算时间")]),t._v(" "),a("p",[t._v("Precommit2 如果计算耗时 25 分钟,读取 440G 左右文件,写入 100G 左右文件"),a("br"),t._v("\n(440G * 1024 / 25 / 60) + (100G * 1024 / 25 / 60) = 单个线程所需的吞吐量")])]),t._v(" "),a("li",[a("p",[t._v("多台机器同步阶段的文件传输")]),t._v(" "),a("p",[t._v("我们有 A,B,C 三个机器分别负责 P1,P2,Commit")]),t._v(" "),a("p",[t._v("当 A 机器开始 P1 时会向 B 机器的 P2 传输 32G 左右的 Unsealed")]),t._v(" "),a("p",[t._v("当 B 机器开始 P2 时,A 机器的 P1 生成的 440G 左右所有文件会传输到 B 的机器上")]),t._v(" "),a("p",[t._v("Commit 又分为 C1 和 C2.当 C 机器运行 C1 时需要 P1 和 P2 的所有文件,计算的结果通过内存直接传递给 C2,所以并不会在落盘新的文件")])])])]),t._v(" "),a("li",[a("p",[t._v("最终数据传输,我们要知道当最终的存储也会成为我们的产量瓶颈(貌似和下面的不符合)")]),t._v(" "),a("ol",[a("li",[a("p",[t._v("假设计算资源的产量是每天产出 6T 的算力,但如果存储的网络传输最大每天只能传输 5T,那么这就会导致产量的下降")])]),t._v(" "),a("li",[a("p",[t._v("如果我们使用了 NFS 这样的网络文件系统,当网络断开链接是,NFS 往往是会直接卡死的,所以可能需要设置 NFS 的超时机制")])])])])]),t._v(" "),a("h3",{attrs:{id:"worker-的指令集加速"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#worker-的指令集加速"}},[t._v("#")]),t._v(" worker 的指令集加速")]),t._v(" "),a("p",[t._v("   P1 阶段时,使用 SHA 指令集和不使用指令集会有巨大的差距,目前大多数矿工都采用 AMD 型号的 CPU 原因就是 SHA 指令集的关系,研究发现,使用 SHA 指令集基本可以跑进 250 分钟以内,但不使用 SHA 指令集能够跑进 420 分钟已经非常艰难了")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("确保编译时使用RUSTFLAGS=\"-C target-cpu=native -g\" FFI_BUILD_FROM_SOURCE=\"1\" 源码编译filecoin-ffi库,如果cpu支持则启用SHA扩展,这会大幅提高扇区封装速度,源码编译(make deps)时特征如下:\n\n+ trap '{ rm -f $__build_output_log_tmp; }' EXIT\n+ local '__rust_flags=--print native-static-libs -C target-feature=+sse2'\n+ RUSTFLAGS='--print native-static-libs -C target-feature=+sse2'\n+ cargo +nightly-2021-04-24 build --release --no-default-features --features multicore-sdr --features pairing,gpu\n+ tee /tmp/tmp.IYtnd3xka9\n Compiling autocfg v1.0.1\n Compiling libc v0.2.97\n Compiling cfg-if v1.0.0\n Compiling proc-macro2 v1.0.27\n Compiling unicode-xid v0.2.2\n Compiling syn v1.0.73\n Compiling lazy_static v1.4.0\n Compiling cc v1.0.68\n Compiling typenum v1.13.0\n Compiling serde_derive v1.0.126\n Compiling serde v1.0.126\n")])])]),a("h3",{attrs:{id:"核数限制"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#核数限制"}},[t._v("#")]),t._v(" 核数限制")]),t._v(" "),a("p",[t._v("​\t当想要把 CPU 的资源利用的更高时,需要非常合理的规划 CPU 的使用,比如有一个 64 核的 CPU,我们要想 PreCommit2 和 Commit 分别分到 32 核,这样两种任务相互不受影响,也不会导致某一个占用大量的计算资源导致另一个卡住的情况,此时我们就需要利用到核数限制")]),t._v(" "),a("ul",[a("li",[t._v("通过"),a("code",[t._v("taskset")]),t._v("限核")])]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 当我们想要启动某个进程时,可以通过 taskset -c 0-31 这种方式来进行限核操作")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 例如")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[t._v("TRUST_PARAMS")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("nohup")]),t._v(" taskset -c "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("-32 ./venus-worker run "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--miner-addr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("/ip4/sealer-ip/tcp/sealer-port"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--miner-token"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("token"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v(" \n--listen"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.0")]),t._v(".0.0:345"),a("span",{pre:!0,attrs:{class:"token operator"}},[a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[t._v("8")]),t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("flags"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">>")]),t._v(" worker.log "),a("span",{pre:!0,attrs:{class:"token operator"}},[a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[t._v("2")]),t._v(">")]),a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[t._v("&1")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 扩展使用 taskset -c 0-9,19-29,39-49 进行跳跃式限核")]),t._v("\n")])])]),a("p",[t._v("这种方式的弊端就在于不方便在程序运行时对核数进行实时调整")]),t._v(" "),a("ul",[a("li",[t._v("通过 Cgrep 限核")])]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 好的目录划分会帮助对多个进程的管理")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" -p /sys/fs/cgroup/cpuset/Pre1-worker\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 设置能够使用的核数范围")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("echo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("-31 "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" /sys/fs/cgroup/cpuset/Pre1-worker/cpuset.cpus\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 加入进程的PID")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("echo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("PID"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" /sys/fs/cgroup/cpuset/Pre1-worker/cgroup.procs\n")])])]),a("p",[t._v("Cgrep 是在进程启动之后加入到配置文件的,并且支持实时的修改核数限制,当然也可以尝试使用 docker 限核,但 docker 的限核也是通过 Cgrep 来实现,至于 Cgrep 其他的用法我们基本都用不到,就不一一说明了")]),t._v(" "),a("h2",{attrs:{id:"worker-运行方式和资源消耗"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#worker-运行方式和资源消耗"}},[t._v("#")]),t._v(" worker 运行方式和资源消耗")]),t._v(" "),a("h3",{attrs:{id:"p1-阶段"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#p1-阶段"}},[t._v("#")]),t._v(" P1 阶段")]),t._v(" "),a("ul",[a("li",[t._v("P1 阶段的加速因子")])]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("export")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[t._v("FIL_PROOFS_MAXIMIZE_CACHING")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 控制cache文件缓存到内存中,起到加速作用,会占用56G内存")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("export")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[t._v("FIL_PROOFS_USE_MULTICORE_SDR")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 控制P1阶段是否使用多核运行,他会占用单个CPU组,所以每个CPU缓存组只会运行一个任务")]),t._v("\n")])])]),a("p",[a("code",[t._v("P1")]),t._v("阶段有两种选择,可以选择更快的速度或者更少的 CPU,需要根据实际资源决定。")]),t._v(" "),a("ul",[a("li",[t._v("P1 的内存资源消耗")])]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 内存中会存储56G的cache文件")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 加上2层layer文件,32G的矿工每层文件32G,64G每层文件64G")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 以32G矿工为例,如果我们同时运行了10个任务")]),t._v("\n \n56G cahce 文件 + "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("32")]),t._v(" *2 * 并行线程数 "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" 696G Mem\n")])])]),a("ul",[a("li",[t._v("P1 的磁盘资源消耗")])]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 11层layer文件 ")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 64G的tree-d文件")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 32G的unsealed文件")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("11")]),t._v(" * 32G + "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("64")]),t._v(" + "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("32")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" 440G\n")])])]),a("h3",{attrs:{id:"p2-阶段"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#p2-阶段"}},[t._v("#")]),t._v(" P2 阶段")]),t._v(" "),a("ul",[a("li",[t._v("P2 的加速因子有两个")])]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("export")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[t._v("FIL_PROOFS_USE_GPU_COLUMN_BUILDER")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 使用GPU运算tree-r-last阶段")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("export")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[t._v("FIL_PROOFS_USE_GPU_TREE_BUILDER")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 使用GPU运算tree-c阶段")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 任何环境变量都不增加的情况下使用CPU运算")]),t._v("\n")])])]),a("p",[t._v("从实验结果来看使用 GPU 运算要明显比 CPU 快得多,而 CPU 运算时的核数,主频跟时间是成线性比例的,CPU 核数越多速度越快,主频越高越快,反之亦然。")]),t._v(" "),a("ul",[a("li",[t._v("P2 内存资源")])]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("--precommit2 "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" precommit2 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("32G sectors: all cores, 96GiB Memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("default: "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 在命令行中可以看到运行一个需要96GiB的内存,如果并行2个就是2倍")]),t._v("\n")])])]),a("ul",[a("li",[t._v("P2 的磁盘资源消耗")])]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 32G")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 8个tree-c文件,每个 4.6G左右")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 8个tree-r-last,每个9.2M")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# t_aux,4K,p_aux,4K")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 32G的sealed文件")]),t._v("\n \n----------------------\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 64G")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 16个tree-c文件,每个 4.6G左右")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 16个tree-r-last,每个9.2M")]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# t_aux,4K,p_aux,4K")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 64G的sealed文件")]),t._v("\n")])])]),a("h3",{attrs:{id:"commit"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#commit"}},[t._v("#")]),t._v(" Commit")]),t._v(" "),a("ul",[a("li",[t._v("Commit 中的 C1 的磁盘资源消耗")])]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# C1需要前面2个阶段产生的所有文件")]),t._v("\n\nP1 440G + P2 79G "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" 519G \n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 每个C1的任务需要消耗487G左右的空间")]),t._v("\n")])])]),a("p",[t._v("C1 并没有太多的 CPU 消耗,并且时间极短")]),t._v(" "),a("ul",[a("li",[t._v("Commit 中的 C2 的运行方式,CPU 和 GPU")])]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[t._v("BELLMAN_NO_GPU")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 禁用GPU")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[t._v("BELLMAN_CUSTOM_GPU")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"GeForce RTX 3090:10496"')]),t._v(" \n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 指定GPU的cuda核心数,当GPU型号比较冷门无法识别时可使用")]),t._v("\n")])])]),a("ul",[a("li",[t._v("C2 的内存资源消耗")])]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" commit "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("32G sectors: all cores or GPUs, 128GiB Memory + 64GiB swap"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("default: "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 命令行中指出总共需要 128G + 64 G = 192G的内存")]),t._v("\n")])])]),a("h2",{attrs:{id:"产量优化"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#产量优化"}},[t._v("#")]),t._v(" 产量优化")]),t._v(" "),a("h3",{attrs:{id:"产量的计算公式"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#产量的计算公式"}},[t._v("#")]),t._v(" 产量的计算公式")]),t._v(" "),a("p",[t._v("  每个阶段的效率:")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v(" 产出数量 / 时间 = 效率\n \n # 得到效率之后,我们就可以很轻松的算出产量\n \n 效率/h/个数 * 24h * 32G = 日产量\n")])])]),a("p",[t._v("例如我们有 1 台机器")]),t._v(" "),a("p",[t._v("P1:240 分钟")]),t._v(" "),a("p",[t._v("P2:30 分钟")]),t._v(" "),a("p",[t._v("Commit:35 分钟")]),t._v(" "),a("p",[t._v("此时我们可以简单一个计算公式的表格")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("运行阶段")]),t._v(" "),a("th",[t._v("时间/m")]),t._v(" "),a("th",[t._v("并行线程数")]),t._v(" "),a("th",[t._v("效率/时间h/个数")]),t._v(" "),a("th",[t._v("计算公式")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[t._v("P1")]),t._v(" "),a("td",[t._v("240")]),t._v(" "),a("td",[t._v("1")]),t._v(" "),a("td",[t._v("0.25")]),t._v(" "),a("td",[t._v("= 1 / (240 /60)")])]),t._v(" "),a("tr",[a("td",[t._v("P2")]),t._v(" "),a("td",[t._v("30")]),t._v(" "),a("td",[t._v("1")]),t._v(" "),a("td",[t._v("2")]),t._v(" "),a("td",[t._v("= 1 / (30 /60)")])]),t._v(" "),a("tr",[a("td",[t._v("Commit")]),t._v(" "),a("td",[t._v("35")]),t._v(" "),a("td",[t._v("1")]),t._v(" "),a("td",[t._v("1.7142857143")]),t._v(" "),a("td",[t._v("= 1 / (35 /60)")])])])]),t._v(" "),a("h4",{attrs:{id:"如何找到每个阶段的最佳运行数量和配置"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#如何找到每个阶段的最佳运行数量和配置"}},[t._v("#")]),t._v(" 如何找到每个阶段的最佳运行数量和配置")]),t._v(" "),a("p",[t._v("   从上面的表格中我们明显看出 P1 的效率明显不足,而此时 P2 和 Commit 机器必定会闲置,如何处理呢?产出的时间无法调整,那么我们就可以调整并行的线程数,当然我们可以新增一些计算内存的公式来指导我们对内存的消耗")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("运行阶段")]),t._v(" "),a("th",[t._v("时间/m")]),t._v(" "),a("th",[t._v("并行线程数")]),t._v(" "),a("th",[t._v("效率/时间h/个数")]),t._v(" "),a("th",[t._v("计算公式")]),t._v(" "),a("th",[t._v("日产量/G")]),t._v(" "),a("th",[t._v("公式")]),t._v(" "),a("th",[t._v("mem/G")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[t._v("P1")]),t._v(" "),a("td",[t._v("240")]),t._v(" "),a("td",[t._v("7")]),t._v(" "),a("td",[t._v("1.75")]),t._v(" "),a("td",[t._v("= 7 / (240 /60)")]),t._v(" "),a("td",[t._v("1344")]),t._v(" "),a("td",[t._v("=7*64+56")]),t._v(" "),a("td",[t._v("504")])]),t._v(" "),a("tr",[a("td",[t._v("P2")]),t._v(" "),a("td",[t._v("30")]),t._v(" "),a("td",[t._v("1")]),t._v(" "),a("td",[t._v("2")]),t._v(" "),a("td",[t._v("= 1 / (30 /60)")]),t._v(" "),a("td",[t._v("1536")]),t._v(" "),a("td",[t._v("=1*96")]),t._v(" "),a("td",[t._v("96")])]),t._v(" "),a("tr",[a("td",[t._v("Commit")]),t._v(" "),a("td",[t._v("35")]),t._v(" "),a("td",[t._v("1")]),t._v(" "),a("td",[t._v("1.7142857143")]),t._v(" "),a("td",[t._v("= 1 / (35 /60)")]),t._v(" "),a("td",[t._v("1316.571429")]),t._v(" "),a("td",[t._v("=1*128+64")]),t._v(" "),a("td",[t._v("192")])])])]),t._v(" "),a("p",[t._v("现在三个阶段的效率已经非常接近了,但是此时我们仍然存在一些问题:")]),t._v(" "),a("ol",[a("li",[t._v("Commit 效率低于 P1,这会导致大量的任务阻塞到 Commit 阶段")]),t._v(" "),a("li",[t._v("当某个阶段的效率过高时就会出现闲置")]),t._v(" "),a("li",[t._v("我们需要微调资源的分布来尽可能的保证每个阶段的效率无限相等")])]),t._v(" "),a("h4",{attrs:{id:"集群方案运行的的可能性"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#集群方案运行的的可能性"}},[t._v("#")]),t._v(" 集群方案运行的的可能性")]),t._v(" "),a("p",[t._v("​\t\t当我们有多台机器时,我们就要决定某些机器运行哪些阶段,在这之前我们再来看下不同阶段的特性:")]),t._v(" "),a("ol",[a("li",[t._v("P1 : 极度消耗内存,可以单核,多核,并行运行,临时存储需要伴随着并行数量的增多而增多")]),t._v(" "),a("li",[t._v("P2 : 轻度消耗内存,CPU,GPU 都可以运行,如果拆分,需要传输大量的文件")]),t._v(" "),a("li",[t._v("Commit: 中度消耗内存,CPU,GPU 都可以运行,如果拆分,需要传输所有临时文件")])]),t._v(" "),a("p",[t._v("如果我们此时只考虑这些因素,那么我们的组合方式有多少种呢?而这些不同的组合方式一定会带来不通的产量,虽然每个矿工的机器都有所不同,但我们的目标是一样的:")]),t._v(" "),a("ol",[a("li",[t._v("更高的产量组合运行方式")]),t._v(" "),a("li",[t._v("各个阶段更加均衡的分布")])]),t._v(" "),a("p",[t._v("我们可能无法做到完美,但无限接近也是最好的结果")]),t._v(" "),a("h4",{attrs:{id:"如何寻找最佳的下发任务数-始终保持机器满负荷运行"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#如何寻找最佳的下发任务数-始终保持机器满负荷运行"}},[t._v("#")]),t._v(" 如何寻找最佳的下发任务数,始终保持机器满负荷运行")]),t._v(" "),a("p",[t._v("  当我们找到最佳的组合方式之后我们需要考虑的就是如何才能保证这些机器 24 小时都是不间断运行的呢?我们不希望任何一个阶段的出现闲置")]),t._v(" "),a("p",[t._v("当我们发现 P1 需要并行 7 个时,那么我们如果保证 P1 的任务量是充足的,那么后续的两个阶段在不考虑其他问题的情况下,也一定是充足的,所以我们需要保证始终维持 P1 时刻都有 7 个任务")]),t._v(" "),a("div",{staticClass:"language-toml extra-class"},[a("pre",{pre:!0,attrs:{class:"language-toml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 在 venus-sealer 的配置文件中我们可以设置最大的任务数,这可以帮我我们避免任务数下发过多")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token key property"}},[t._v("DataDir")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"~/.venussealer"')]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token table class-name"}},[t._v("API")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key property"}},[t._v("ListenAddress")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/ip4/0.0.0.0/tcp/2345/http"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key property"}},[t._v("RemoteListenAddress")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"192.168.200.6:2345"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key property"}},[t._v("Timeout")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"30s"')]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token table class-name"}},[t._v("Sealing")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key property"}},[t._v("MaxWaitDealsSectors")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key property"}},[t._v("MaxSealingSectors")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 修改为 7")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key property"}},[t._v("MaxSealingSectorsForDeals")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n")])])]),a("p",[t._v("此时我们可以通过一个简单的定时脚本就可以做到,始终维持最佳的任务量了")]),t._v(" "),a("h2",{attrs:{id:"损失和止损"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#损失和止损"}},[t._v("#")]),t._v(" 损失和止损")]),t._v(" "),a("p",[t._v("  如果一个任务执行错误之后又被反复的重试,这就像我们有 7 个通道进行算力的封装,但是此时有一通道阻塞或者损坏,这就会降低我们 1 / 7 的产量,所以及时的处理错误也是非常重要的")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("何种情况下应该立刻抛弃任务")]),t._v(" "),a("ol",[a("li",[t._v("ticket 过期")]),t._v(" "),a("li",[t._v("Commit 过期")]),t._v(" "),a("li",[t._v("依赖文件损坏重试多次都未成功时;")])])]),t._v(" "),a("li",[a("p",[t._v("移除无法完成的 sector")])])]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("venus-sealer sectors remove --really-do-it "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("sectorNum"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n")])])]),a("p",[t._v("如遇到无法彻底删除请查询:"),a("a",{attrs:{href:"https://github.com/filguard/lotus-ops/blob/master/documents/questions.md#1-%E9%A1%BD%E5%9B%BA%E6%89%87%E5%8C%BA%E5%A6%82%E4%BD%95%E5%88%A0%E9%99%A4",target:"_blank",rel:"noopener noreferrer"}},[t._v("顽固扇区如何删除"),a("OutboundLink")],1)])])}),[],!1,null,null,null);s.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/44.11b92f49.js b/assets/js/44.6010d4b3.js similarity index 97% rename from assets/js/44.11b92f49.js rename to assets/js/44.6010d4b3.js index bd42183b1..3d2099466 100644 --- a/assets/js/44.11b92f49.js +++ b/assets/js/44.6010d4b3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[44],{433:function(e,t,r){"use strict";r.r(t);var n=r(17),s=Object(n.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h2",{attrs:{id:"部署venus解决方案"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#部署venus解决方案"}},[e._v("#")]),e._v(" 部署"),r("code",[e._v("Venus")]),e._v("解决方案")]),e._v(" "),r("p",[r("code",[e._v("Venus")]),e._v("泛指一系列与"),r("code",[e._v("filecoin")]),e._v("协议稳定/高效互动的软件产品。"),r("code",[e._v("Venus")]),e._v("的,目标群体大致分为"),r("code",[e._v("4")]),e._v("类。"),r("code",[e._v("SP")]),e._v("存储提供者,"),r("code",[e._v("SC")]),e._v("存储客户,生态合作伙伴,以及去中心化应用"),r("code",[e._v("Dapp")]),e._v("。"),r("code",[e._v("Venus")]),e._v("解决方案当前被广泛应用于"),r("code",[e._v("SP")]),e._v("和"),r("code",[e._v("SC")]),e._v("的场景中。")]),e._v(" "),r("h3",{attrs:{id:"部署"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#部署"}},[e._v("#")]),e._v(" 部署")]),e._v(" "),r("p",[e._v("经过"),r("code",[e._v("Venus")]),e._v("在 2022 年底的"),r("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions/5420",target:"_blank",rel:"noopener noreferrer"}},[e._v("品牌重塑"),r("OutboundLink")],1),e._v("之后,"),r("code",[e._v("Venus")]),e._v("拆分出 3 个产品,分别是"),r("a",{attrs:{href:"https://sophon.venus-fil.io/zh/",target:"_blank",rel:"noopener noreferrer"}},[e._v("智子"),r("OutboundLink")],1),e._v(","),r("a",{attrs:{href:"https://damocles.venus-fil.io/zh/",target:"_blank",rel:"noopener noreferrer"}},[e._v("执剑人"),r("OutboundLink")],1),e._v("以及"),r("a",{attrs:{href:"https://droplet.venus-fil.io/zh/",target:"_blank",rel:"noopener noreferrer"}},[e._v("水滴"),r("OutboundLink")],1),e._v("。关于各产品的具体部署流程,请参见各产品的文档。")]),e._v(" "),r("h3",{attrs:{id:"架构"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#架构"}},[e._v("#")]),e._v(" 架构")]),e._v(" "),r("img",{attrs:{src:"https://user-images.githubusercontent.com/1591330/227900001-a572c81d-607c-48ed-832e-54298ce87259.png",width:"800"}})])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[44],{435:function(e,t,r){"use strict";r.r(t);var n=r(17),s=Object(n.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h2",{attrs:{id:"部署venus解决方案"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#部署venus解决方案"}},[e._v("#")]),e._v(" 部署"),r("code",[e._v("Venus")]),e._v("解决方案")]),e._v(" "),r("p",[r("code",[e._v("Venus")]),e._v("泛指一系列与"),r("code",[e._v("filecoin")]),e._v("协议稳定/高效互动的软件产品。"),r("code",[e._v("Venus")]),e._v("的,目标群体大致分为"),r("code",[e._v("4")]),e._v("类。"),r("code",[e._v("SP")]),e._v("存储提供者,"),r("code",[e._v("SC")]),e._v("存储客户,生态合作伙伴,以及去中心化应用"),r("code",[e._v("Dapp")]),e._v("。"),r("code",[e._v("Venus")]),e._v("解决方案当前被广泛应用于"),r("code",[e._v("SP")]),e._v("和"),r("code",[e._v("SC")]),e._v("的场景中。")]),e._v(" "),r("h3",{attrs:{id:"部署"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#部署"}},[e._v("#")]),e._v(" 部署")]),e._v(" "),r("p",[e._v("经过"),r("code",[e._v("Venus")]),e._v("在 2022 年底的"),r("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions/5420",target:"_blank",rel:"noopener noreferrer"}},[e._v("品牌重塑"),r("OutboundLink")],1),e._v("之后,"),r("code",[e._v("Venus")]),e._v("拆分出 3 个产品,分别是"),r("a",{attrs:{href:"https://sophon.venus-fil.io/zh/",target:"_blank",rel:"noopener noreferrer"}},[e._v("智子"),r("OutboundLink")],1),e._v(","),r("a",{attrs:{href:"https://damocles.venus-fil.io/zh/",target:"_blank",rel:"noopener noreferrer"}},[e._v("执剑人"),r("OutboundLink")],1),e._v("以及"),r("a",{attrs:{href:"https://droplet.venus-fil.io/zh/",target:"_blank",rel:"noopener noreferrer"}},[e._v("水滴"),r("OutboundLink")],1),e._v("。关于各产品的具体部署流程,请参见各产品的文档。")]),e._v(" "),r("h3",{attrs:{id:"架构"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#架构"}},[e._v("#")]),e._v(" 架构")]),e._v(" "),r("img",{attrs:{src:"https://user-images.githubusercontent.com/1591330/227900001-a572c81d-607c-48ed-832e-54298ce87259.png",width:"800"}})])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/45.3927d2d7.js b/assets/js/45.808e74b1.js similarity index 99% rename from assets/js/45.3927d2d7.js rename to assets/js/45.808e74b1.js index cfc54cf0f..fbb15338f 100644 --- a/assets/js/45.3927d2d7.js +++ b/assets/js/45.808e74b1.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[45],{436:function(s,a,t){"use strict";t.r(a);var e=t(17),r=Object(e.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"算力增加与维持部署参考方案-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#算力增加与维持部署参考方案-1"}},[s._v("#")]),s._v(" 算力增加与维持部署参考方案 1")]),s._v(" "),t("h2",{attrs:{id:"集群规模"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#集群规模"}},[s._v("#")]),s._v(" 集群规模:")]),s._v(" "),t("ul",[t("li",[s._v("机器:两台")]),s._v(" "),t("li",[s._v("配置:128 核,1T 内存,双 3060Ti(GPU)")])]),s._v(" "),t("h2",{attrs:{id:"方案"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#方案"}},[s._v("#")]),s._v(" 方案")]),s._v(" "),t("ul",[t("li",[t("p",[s._v("建议每台机器各去掉一块 GPU,因为目前程序只能访问一块 GPU;")])]),s._v(" "),t("li",[t("p",[s._v("安装 zabbix 监控")])]),s._v(" "),t("li",[t("p",[s._v("因为单个机器上运行不同的任务,需要给每个 worker 限核,需关闭超线程以确保限核的精准")]),s._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 绝大多数的主板都可以设置关闭超线程,但需要重新启动。我们通过一种方式关闭一半 CPU 的映射关系来做到相同的效果,这种方式不需要重启,但是每次重启都会失效。")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#!/bin/bash")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("for")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token for-or-select variable"}},[s._v("cpunum")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("in")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token variable"}},[t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$(")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("cat")]),s._v(" /sys/devices/system/cpu/cpu*/topology/thread_siblings_list "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("cut")]),s._v(" -s -d, -f2- "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("tr")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v("','")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v("'"),t("span",{pre:!0,attrs:{class:"token entity",title:"\\n"}},[s._v("\\n")]),s._v("'")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sort")]),s._v(" -un"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v(")")])]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("do")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" /sys/devices/system/cpu/cpu"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$cpunum")]),s._v("/online\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("done")]),s._v("\n")])])])]),s._v(" "),t("li",[t("p",[s._v("部署方案:")])])]),s._v(" "),t("ul",[t("li",[s._v("A 机器:venus-sealer 只做 wdpost 和 winningpost 的计算;跑一个 venus-worker 只做 AP,P1,P2(用 cpu 做);")])]),s._v(" "),t("div",{staticClass:"language-sh extra-class"},[t("pre",{pre:!0,attrs:{class:"language-sh"}},[t("code",[s._v("./venus-sealer --network"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("mainnet init --actor"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("MINER_ID"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" --node-url"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/ip4/"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("IP_ADDRESS_OF_VENUS/tcp/3453 --messager-url"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/ip4/"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("IP_ADDRESS_OF_VENUS_MESSAGER"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("/tcp/"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("PORT_OF_VENUS_MESSAGER"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" --gateway-url"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/ip4/"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("IP_ADDRESS_OF_VENUS_GATEWAY"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("/tcp/"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("PORT_OF_VENUS_GATEWAY"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" --auth-token "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("AUTH_TOKEN_FOR_ACCOUNT_NAME"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" --no-local-storage\n \n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 修改配置文件只允许sealer做wdpost")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("Storage"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n ParallelFetchLimit "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("10")]),s._v("\n AllowAddPiece "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),s._v("\n AllowPreCommit1 "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),s._v("\n AllowPreCommit2 "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),s._v("\n AllowCommit "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),s._v("\n AllowUnseal "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),s._v("\n \n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 启动venus-sealer")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("BELLMAN_CPU_UTILIZATION")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0.2")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("FIL_PROOFS_USE_MULTICORE_SDR")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("nohup")]),s._v(" ./venus-sealer run "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" sealer.log "),t("span",{pre:!0,attrs:{class:"token operator"}},[t("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[s._v("2")]),s._v(">")]),t("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[s._v("&1")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# FIL_PROOFS_MAXIMIZE_CACHING=1 表示做P1的时候把部分临时文件缓存到内存")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 设置store目录,因为sealer我们不做任务,故只需设置store目录")]),s._v("\n ./venus-sealer storage attach --init --seal "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("ABSOLUTE_PATH_OF_YOUR_PERMANENT_STORAGE"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("\n\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 启动一个worker,只做AP,P1,P2,unseal(不允许用GPU)")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("FIL_PROOFS_MAXIMIZE_CACHING")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("BELLMAN_CPU_UTILIZATION")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0.2")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("FIL_PROOFS_USE_MULTICORE_SDR")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" ./venus-worker run --miner-addr"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/ip4/127.0.0.1/tcp/2345 --miner-token"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("sealer token"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" --commit"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("false --no-local-storage \n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 指定worker的seal路径")]),s._v("\n./venus-worker storage attach --init --seal "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("ABSOLUTE_LOCAL_PATH"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("\n")])])]),t("blockquote",[t("p",[s._v("venus-sealer 不做任务,故只需指定 store 目录,不需要 seal 目录。")])]),s._v(" "),t("blockquote",[t("p",[s._v("这里 worker 为什么只用 cpu 而不用 GPU 做呢?因为 wdpost 需要 gpu 做,并且是具有时效性的任务,如果 worker 竞争 gpu,wdpost 没法及时完成,存在惩罚算力的隐患。")])]),s._v(" "),t("blockquote",[t("p",[s._v("venus-sealer 默认只监听 127.0.0.1,要想别的机器连接 sealer 需要修改配置文件:")])]),s._v(" "),t("div",{staticClass:"language-sh extra-class"},[t("pre",{pre:!0,attrs:{class:"language-sh"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("API"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n ListenAddress "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/ip4/0.0.0.0/tcp/2345/http"')]),s._v("\n RemoteListenAddress "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"内网ip:2345"')]),s._v("\n")])])]),t("blockquote",[t("p",[s._v("设置 p2,C2,wdPost 等消息的 from,即发送消息消耗 fil 的 address")])]),s._v(" "),t("div",{staticClass:"language-sh extra-class"},[t("pre",{pre:!0,attrs:{class:"language-sh"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("Addresses"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n PreCommitControl "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# P2")]),s._v("\n CommitControl "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# C2")]),s._v("\n DisableOwnerFallback "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 禁用owner发消息")]),s._v("\n DisableWorkerFallback "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),s._v("\n")])])]),t("blockquote",[t("p",[s._v("设置 sealer 可接受任务类型")])]),s._v(" "),t("div",{staticClass:"language-sh extra-class"},[t("pre",{pre:!0,attrs:{class:"language-sh"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("Storage"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n ParallelFetchLimit "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("10")]),s._v("\n AllowAddPiece "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),s._v("\n AllowPreCommit1 "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),s._v("\n AllowPreCommit2 "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),s._v("\n AllowCommit "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),s._v("\n AllowUnseal "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),s._v("\n")])])]),t("ul",[t("li",[s._v("B 机器:启动两个 worker,一个做 P2,一个做 Commit。p2 阶段使用 CPU,commit 阶段使用 GPU 运行。\n"),t("ul",[t("li",[s._v("限核:这台机器我们运行 2 个 worker 为了避免一个 worker 占满 cpu 资源,故需要对每个 worker 进程进行限核。这里我们将 75% 的核数分配给 worker01,将 25% 的核数分配给 worker02.参考文档:https://venus.filecoin.io/zh/operation/Efficiency_of_sealing.html")])])])]),s._v(" "),t("div",{staticClass:"language-sh extra-class"},[t("pre",{pre:!0,attrs:{class:"language-sh"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# worker01")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("BELLMAN_CPU_UTILIZATION")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0.2")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("FIL_PROOFS_USE_MULTICORE_SDR")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("FIL_PROOFS_MAXIMIZE_CACHING")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" ./venus-worker run --miner-addr"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/ip4/127.0.0.1/tcp/2345 --miner-token"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("sealer token"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" --unseal"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("false --addpiece"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("false --commit"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("false --no-local-storage\n \n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 指定worker01的seal路径")]),s._v("\n./venus-worker storage attach --init --seal "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("ABSOLUTE_LOCAL_PATH"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# worker02")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("VENUS_WORKER_PATH")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("worker_path"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("BELLMAN_CPU_UTILIZATION")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0.2")]),s._v(" ./venus-worker run --miner-addr"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/ip4/127.0.0.1/tcp/2345 --miner-token"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("sealer token"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" --precommit1"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("false --precommit2"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("false --addpiece"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("false --unseal"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("false --no-local-storage\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 指定worker02的seal路径与worker01相同,这样做的好处是不需要文件的拷贝。")]),s._v("\n./venus-worker storage attach --seal "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("ABSOLUTE_LOCAL_PATH"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("\n")])])]),t("blockquote",[t("p",[s._v("TRUST_PARAMS=1 环境变量可以跳过校验证明参数文件,如果你确定参数文件都在且是正确的可以用此环境变量用加快 venus-sealer 或 venus-worker 的启动的速度;")])]),s._v(" "),t("blockquote",[t("p",[s._v("seal 要求较高的磁盘吞吐量,建议 ssd 盘。")])]),s._v(" "),t("ul",[t("li",[t("p",[s._v("磁盘空间及并发数计算:")]),s._v(" "),t("ul",[t("li",[t("p",[s._v("32G 内存消耗:56G cache + 64G * 运行数量")])]),s._v(" "),t("li",[t("p",[s._v("32G 磁盘消耗:520G 左右 * 运行数量")])]),s._v(" "),t("li",[t("p",[s._v("64G 内存消耗:112G cache + 128G")])]),s._v(" "),t("li",[t("p",[s._v("64G 磁盘消耗:1T 左右 * 运行数量")])]),s._v(" "),t("li",[t("p",[s._v("故这两台机器 1t 的内存大约能做 64G sector 的数量为:")])])])])]),s._v(" "),t("p",[s._v("   (1024G-112G)/128G=7.125,保险起见我们可以先并发 6 个观察一段时间资源使用率。")]),s._v(" "),t("p",[s._v("   确定了并发密封扇区个数后,就可以确定 seal 需要的磁盘空间= 6*1t=6t.")]),s._v(" "),t("blockquote",[t("p",[s._v("做策略的思路:先考虑内存,确定并发数,在补充其他资源,如临时磁盘空间,至于 cpu,如果不足,可以限额,这样做的好处是系统可以持续运行,而不被 oom。")])]),s._v(" "),t("blockquote",[t("p",[s._v("可以利用 gpu 加速的任务时 P2,C2 和 windowPoSt,分配 gpu 的顺序是:wdPoSt>C2>P2")])]),s._v(" "),t("ul",[t("li",[s._v("并发数控制\n   ./venus-sealer sectors pledge 发送一个密封任务,通常写一个定时脚本或系统事务,每隔一段时间发送一个 sector 任务;配置文件 MaxSealingSectors 控制同时进行的 sector 上限数。")])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[45],{438:function(s,a,t){"use strict";t.r(a);var e=t(17),r=Object(e.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"算力增加与维持部署参考方案-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#算力增加与维持部署参考方案-1"}},[s._v("#")]),s._v(" 算力增加与维持部署参考方案 1")]),s._v(" "),t("h2",{attrs:{id:"集群规模"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#集群规模"}},[s._v("#")]),s._v(" 集群规模:")]),s._v(" "),t("ul",[t("li",[s._v("机器:两台")]),s._v(" "),t("li",[s._v("配置:128 核,1T 内存,双 3060Ti(GPU)")])]),s._v(" "),t("h2",{attrs:{id:"方案"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#方案"}},[s._v("#")]),s._v(" 方案")]),s._v(" "),t("ul",[t("li",[t("p",[s._v("建议每台机器各去掉一块 GPU,因为目前程序只能访问一块 GPU;")])]),s._v(" "),t("li",[t("p",[s._v("安装 zabbix 监控")])]),s._v(" "),t("li",[t("p",[s._v("因为单个机器上运行不同的任务,需要给每个 worker 限核,需关闭超线程以确保限核的精准")]),s._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 绝大多数的主板都可以设置关闭超线程,但需要重新启动。我们通过一种方式关闭一半 CPU 的映射关系来做到相同的效果,这种方式不需要重启,但是每次重启都会失效。")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#!/bin/bash")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("for")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token for-or-select variable"}},[s._v("cpunum")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("in")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token variable"}},[t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$(")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("cat")]),s._v(" /sys/devices/system/cpu/cpu*/topology/thread_siblings_list "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("cut")]),s._v(" -s -d, -f2- "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("tr")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v("','")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v("'"),t("span",{pre:!0,attrs:{class:"token entity",title:"\\n"}},[s._v("\\n")]),s._v("'")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sort")]),s._v(" -un"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v(")")])]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("do")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" /sys/devices/system/cpu/cpu"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$cpunum")]),s._v("/online\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("done")]),s._v("\n")])])])]),s._v(" "),t("li",[t("p",[s._v("部署方案:")])])]),s._v(" "),t("ul",[t("li",[s._v("A 机器:venus-sealer 只做 wdpost 和 winningpost 的计算;跑一个 venus-worker 只做 AP,P1,P2(用 cpu 做);")])]),s._v(" "),t("div",{staticClass:"language-sh extra-class"},[t("pre",{pre:!0,attrs:{class:"language-sh"}},[t("code",[s._v("./venus-sealer --network"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("mainnet init --actor"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("MINER_ID"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" --node-url"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/ip4/"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("IP_ADDRESS_OF_VENUS/tcp/3453 --messager-url"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/ip4/"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("IP_ADDRESS_OF_VENUS_MESSAGER"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("/tcp/"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("PORT_OF_VENUS_MESSAGER"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" --gateway-url"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/ip4/"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("IP_ADDRESS_OF_VENUS_GATEWAY"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("/tcp/"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("PORT_OF_VENUS_GATEWAY"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" --auth-token "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("AUTH_TOKEN_FOR_ACCOUNT_NAME"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" --no-local-storage\n \n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 修改配置文件只允许sealer做wdpost")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("Storage"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n ParallelFetchLimit "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("10")]),s._v("\n AllowAddPiece "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),s._v("\n AllowPreCommit1 "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),s._v("\n AllowPreCommit2 "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),s._v("\n AllowCommit "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),s._v("\n AllowUnseal "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),s._v("\n \n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 启动venus-sealer")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("BELLMAN_CPU_UTILIZATION")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0.2")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("FIL_PROOFS_USE_MULTICORE_SDR")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("nohup")]),s._v(" ./venus-sealer run "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" sealer.log "),t("span",{pre:!0,attrs:{class:"token operator"}},[t("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[s._v("2")]),s._v(">")]),t("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[s._v("&1")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# FIL_PROOFS_MAXIMIZE_CACHING=1 表示做P1的时候把部分临时文件缓存到内存")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 设置store目录,因为sealer我们不做任务,故只需设置store目录")]),s._v("\n ./venus-sealer storage attach --init --seal "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("ABSOLUTE_PATH_OF_YOUR_PERMANENT_STORAGE"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("\n\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 启动一个worker,只做AP,P1,P2,unseal(不允许用GPU)")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("FIL_PROOFS_MAXIMIZE_CACHING")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("BELLMAN_CPU_UTILIZATION")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0.2")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("FIL_PROOFS_USE_MULTICORE_SDR")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" ./venus-worker run --miner-addr"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/ip4/127.0.0.1/tcp/2345 --miner-token"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("sealer token"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" --commit"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("false --no-local-storage \n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 指定worker的seal路径")]),s._v("\n./venus-worker storage attach --init --seal "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("ABSOLUTE_LOCAL_PATH"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("\n")])])]),t("blockquote",[t("p",[s._v("venus-sealer 不做任务,故只需指定 store 目录,不需要 seal 目录。")])]),s._v(" "),t("blockquote",[t("p",[s._v("这里 worker 为什么只用 cpu 而不用 GPU 做呢?因为 wdpost 需要 gpu 做,并且是具有时效性的任务,如果 worker 竞争 gpu,wdpost 没法及时完成,存在惩罚算力的隐患。")])]),s._v(" "),t("blockquote",[t("p",[s._v("venus-sealer 默认只监听 127.0.0.1,要想别的机器连接 sealer 需要修改配置文件:")])]),s._v(" "),t("div",{staticClass:"language-sh extra-class"},[t("pre",{pre:!0,attrs:{class:"language-sh"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("API"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n ListenAddress "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/ip4/0.0.0.0/tcp/2345/http"')]),s._v("\n RemoteListenAddress "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"内网ip:2345"')]),s._v("\n")])])]),t("blockquote",[t("p",[s._v("设置 p2,C2,wdPost 等消息的 from,即发送消息消耗 fil 的 address")])]),s._v(" "),t("div",{staticClass:"language-sh extra-class"},[t("pre",{pre:!0,attrs:{class:"language-sh"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("Addresses"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n PreCommitControl "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# P2")]),s._v("\n CommitControl "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# C2")]),s._v("\n DisableOwnerFallback "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 禁用owner发消息")]),s._v("\n DisableWorkerFallback "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),s._v("\n")])])]),t("blockquote",[t("p",[s._v("设置 sealer 可接受任务类型")])]),s._v(" "),t("div",{staticClass:"language-sh extra-class"},[t("pre",{pre:!0,attrs:{class:"language-sh"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("Storage"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n ParallelFetchLimit "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("10")]),s._v("\n AllowAddPiece "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),s._v("\n AllowPreCommit1 "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),s._v("\n AllowPreCommit2 "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),s._v("\n AllowCommit "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),s._v("\n AllowUnseal "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),s._v("\n")])])]),t("ul",[t("li",[s._v("B 机器:启动两个 worker,一个做 P2,一个做 Commit。p2 阶段使用 CPU,commit 阶段使用 GPU 运行。\n"),t("ul",[t("li",[s._v("限核:这台机器我们运行 2 个 worker 为了避免一个 worker 占满 cpu 资源,故需要对每个 worker 进程进行限核。这里我们将 75% 的核数分配给 worker01,将 25% 的核数分配给 worker02.参考文档:https://venus.filecoin.io/zh/operation/Efficiency_of_sealing.html")])])])]),s._v(" "),t("div",{staticClass:"language-sh extra-class"},[t("pre",{pre:!0,attrs:{class:"language-sh"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# worker01")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("BELLMAN_CPU_UTILIZATION")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0.2")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("FIL_PROOFS_USE_MULTICORE_SDR")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("FIL_PROOFS_MAXIMIZE_CACHING")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" ./venus-worker run --miner-addr"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/ip4/127.0.0.1/tcp/2345 --miner-token"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("sealer token"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" --unseal"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("false --addpiece"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("false --commit"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("false --no-local-storage\n \n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 指定worker01的seal路径")]),s._v("\n./venus-worker storage attach --init --seal "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("ABSOLUTE_LOCAL_PATH"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# worker02")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("VENUS_WORKER_PATH")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("worker_path"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("BELLMAN_CPU_UTILIZATION")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0.2")]),s._v(" ./venus-worker run --miner-addr"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/ip4/127.0.0.1/tcp/2345 --miner-token"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("sealer token"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" --precommit1"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("false --precommit2"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("false --addpiece"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("false --unseal"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("false --no-local-storage\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 指定worker02的seal路径与worker01相同,这样做的好处是不需要文件的拷贝。")]),s._v("\n./venus-worker storage attach --seal "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("ABSOLUTE_LOCAL_PATH"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("\n")])])]),t("blockquote",[t("p",[s._v("TRUST_PARAMS=1 环境变量可以跳过校验证明参数文件,如果你确定参数文件都在且是正确的可以用此环境变量用加快 venus-sealer 或 venus-worker 的启动的速度;")])]),s._v(" "),t("blockquote",[t("p",[s._v("seal 要求较高的磁盘吞吐量,建议 ssd 盘。")])]),s._v(" "),t("ul",[t("li",[t("p",[s._v("磁盘空间及并发数计算:")]),s._v(" "),t("ul",[t("li",[t("p",[s._v("32G 内存消耗:56G cache + 64G * 运行数量")])]),s._v(" "),t("li",[t("p",[s._v("32G 磁盘消耗:520G 左右 * 运行数量")])]),s._v(" "),t("li",[t("p",[s._v("64G 内存消耗:112G cache + 128G")])]),s._v(" "),t("li",[t("p",[s._v("64G 磁盘消耗:1T 左右 * 运行数量")])]),s._v(" "),t("li",[t("p",[s._v("故这两台机器 1t 的内存大约能做 64G sector 的数量为:")])])])])]),s._v(" "),t("p",[s._v("   (1024G-112G)/128G=7.125,保险起见我们可以先并发 6 个观察一段时间资源使用率。")]),s._v(" "),t("p",[s._v("   确定了并发密封扇区个数后,就可以确定 seal 需要的磁盘空间= 6*1t=6t.")]),s._v(" "),t("blockquote",[t("p",[s._v("做策略的思路:先考虑内存,确定并发数,在补充其他资源,如临时磁盘空间,至于 cpu,如果不足,可以限额,这样做的好处是系统可以持续运行,而不被 oom。")])]),s._v(" "),t("blockquote",[t("p",[s._v("可以利用 gpu 加速的任务时 P2,C2 和 windowPoSt,分配 gpu 的顺序是:wdPoSt>C2>P2")])]),s._v(" "),t("ul",[t("li",[s._v("并发数控制\n   ./venus-sealer sectors pledge 发送一个密封任务,通常写一个定时脚本或系统事务,每隔一段时间发送一个 sector 任务;配置文件 MaxSealingSectors 控制同时进行的 sector 上限数。")])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/46.1ee199a8.js b/assets/js/46.43f529a7.js similarity index 99% rename from assets/js/46.1ee199a8.js rename to assets/js/46.43f529a7.js index 0ee5f9f69..c83462515 100644 --- a/assets/js/46.1ee199a8.js +++ b/assets/js/46.43f529a7.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[46],{437:function(s,t,a){"use strict";a.r(t);var r=a(17),e=Object(r.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"算力增加与维持部署参考方案-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#算力增加与维持部署参考方案-2"}},[s._v("#")]),s._v(" 算力增加与维持部署参考方案 2")]),s._v(" "),a("h2",{attrs:{id:"机器配置"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#机器配置"}},[s._v("#")]),s._v(" 机器配置")]),s._v(" "),a("table",[a("thead",[a("tr",[a("th",[s._v("资源")]),s._v(" "),a("th",[s._v("配置")])])]),s._v(" "),a("tbody",[a("tr",[a("td",[s._v("CPU")]),s._v(" "),a("td",[s._v("AMD EPYC 7282 *1 (32c) 单路")])]),s._v(" "),a("tr",[a("td",[s._v("内存")]),s._v(" "),a("td",[s._v("32GB ECC/Reg, DDR4-3200 *8")])]),s._v(" "),a("tr",[a("td",[s._v("硬盘")]),s._v(" "),a("td",[s._v("M.2 NVME PCIe Gen3 x4 2TB SSD *2")])]),s._v(" "),a("tr",[a("td",[s._v("网卡")]),s._v(" "),a("td",[s._v("10G")])]),s._v(" "),a("tr",[a("td",[s._v("系统盘")]),s._v(" "),a("td",[s._v("500G")])]),s._v(" "),a("tr",[a("td",[s._v("显卡")]),s._v(" "),a("td",[s._v("3090 * 1")])]),s._v(" "),a("tr",[a("td",[s._v("存储")]),s._v(" "),a("td",[s._v("4TB SSD *25 RAID 5")])])])]),s._v(" "),a("p",[s._v("台数:1 台")]),s._v(" "),a("h2",{attrs:{id:"任务配比"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#任务配比"}},[s._v("#")]),s._v(" 任务配比")]),s._v(" "),a("p",[s._v("任务分为 AP,P1,P2,Commit 阶段")]),s._v(" "),a("table",[a("thead",[a("tr",[a("th",[s._v("运行方式")]),s._v(" "),a("th",[s._v("核数限制")]),s._v(" "),a("th",[s._v("耗时 (分钟)")]),s._v(" "),a("th",[s._v("内存消耗 (G)")]),s._v(" "),a("th",[s._v("效率 (个/小时)")]),s._v(" "),a("th",[s._v("日产量 (T)")])])]),s._v(" "),a("tbody",[a("tr",[a("td",[s._v("P1 * 5")]),s._v(" "),a("td",[s._v("20")]),s._v(" "),a("td",[s._v("220")]),s._v(" "),a("td",[s._v("376")]),s._v(" "),a("td",[s._v("1.3636")]),s._v(" "),a("td",[s._v("1.0227")])]),s._v(" "),a("tr",[a("td",[s._v("P2,AP,Commit")]),s._v(" "),a("td",[s._v("12")]),s._v(" "),a("td",[s._v("10")]),s._v(" "),a("td",[s._v("120")]),s._v(" "),a("td",[s._v("3")]),s._v(" "),a("td",[s._v("1.125")])])])]),s._v(" "),a("p",[s._v("资源说明:")]),s._v(" "),a("ul",[a("li",[s._v("内存加到 512G;")])]),s._v(" "),a("h2",{attrs:{id:"部署"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#部署"}},[s._v("#")]),s._v(" 部署")]),s._v(" "),a("ul",[a("li",[s._v("关闭超线程")])]),s._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 绝大多数的主板都可以设置关闭超线程,但需要重新启动。我们通过一种方式关闭一半CPU的映射关系来做到相同的效果,这种方式不需要重启,但是每次重启都会失效。")]),s._v("\n \n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#!/bin/bash")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("for")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token for-or-select variable"}},[s._v("cpunum")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("in")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token variable"}},[a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$(")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("cat")]),s._v(" /sys/devices/system/cpu/cpu*/topology/thread_siblings_list "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("cut")]),s._v(" -s -d, -f2- "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("tr")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("','")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'"),a("span",{pre:!0,attrs:{class:"token entity",title:"\\n"}},[s._v("\\n")]),s._v("'")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sort")]),s._v(" -un"),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v(")")])]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("do")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" /sys/devices/system/cpu/cpu"),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$cpunum")]),s._v("/online\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("done")]),s._v("\n")])])]),a("ul",[a("li",[a("p",[s._v("确保证明参数文件已下载,参数文件默认目录:/var/tmp/filecoin-proof-parameters")])]),s._v(" "),a("li",[a("p",[s._v("启动 venus-sealer: sealer 只做 windowPoSt.")])])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[s._v("./venus-sealer --network"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("mainnet init --actor"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("MINER_ID"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" --node-url"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/ip4/"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("IP_ADDRESS_OF_VENUS/tcp/3453 --messager-url"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/ip4/"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("IP_ADDRESS_OF_VENUS_MESSAGER"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("/tcp/"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("PORT_OF_VENUS_MESSAGER"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" --gateway-url"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/ip4/"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("IP_ADDRESS_OF_VENUS_GATEWAY"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("/tcp/"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("PORT_OF_VENUS_GATEWAY"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" --auth-token "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("AUTH_TOKEN_FOR_ACCOUNT_NAME"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" --no-local-storage\n \n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 修改配置文件只允许sealer做wdpost")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("Storage"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n ParallelFetchLimit "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("10")]),s._v("\n AllowAddPiece "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),s._v("\n AllowPreCommit1 "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),s._v("\n AllowPreCommit2 "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),s._v("\n AllowCommit "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),s._v("\n AllowUnseal "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),s._v("\n \n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 启动venus-sealer")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("BELLMAN_CPU_UTILIZATION")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0.2")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("FIL_PROOFS_USE_MULTICORE_SDR")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("nohup")]),s._v(" ./venus-sealer run "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" sealer.log "),a("span",{pre:!0,attrs:{class:"token operator"}},[a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[s._v("2")]),s._v(">")]),a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[s._v("&1")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 设置store目录,因为sealer我们不做任务,故只需设置store目录")]),s._v("\n./venus-sealer storage attach --init --store "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("ABSOLUTE_PATH_OF_YOUR_PERMANENT_STORAGE"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("\n")])])]),a("blockquote",[a("p",[s._v("init 时加"),a("code",[s._v("--no-local-storage")]),s._v("不回创建默认的store/seal目录;")])]),s._v(" "),a("ul",[a("li",[s._v("启动 venus-worker-01: 只做 P1")])]),s._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("FIL_PROOFS_MAXIMIZE_CACHING")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("BELLMAN_CPU_UTILIZATION")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0.2")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("FIL_PROOFS_USE_MULTICORE_SDR")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("nohup")]),s._v(" ./venus-worker --repo"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("ABSOLUTE_PATH_OF_WORKER_0"),a("span",{pre:!0,attrs:{class:"token operator"}},[a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[s._v("1")]),s._v(">")]),s._v(" run --miner-addr"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/ip4/127.0.0.1/tcp/2345 --miner-token"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("sealer token"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--addpiece"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("false --unseal"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("false --precommit2"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("false --commit"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("false --no-local-storage "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" worker-01.log "),a("span",{pre:!0,attrs:{class:"token operator"}},[a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[s._v("2")]),s._v(">")]),a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[s._v("&1")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 指定seal路径")]),s._v("\n./venus-worker --repo"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("ABSOLUTE_PATH_OF_WORKER_0"),a("span",{pre:!0,attrs:{class:"token operator"}},[a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[s._v("1")]),s._v(">")]),s._v(" storage attach --init --seal "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("ABSOLUTE_LOCAL_PATH"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("\n")])])]),a("blockquote",[a("p",[s._v("FIL_PROOFS_MAXIMIZE_CACHING=1 表示做 P1 的时候把部分临时文件缓存到内存")])]),s._v(" "),a("ul",[a("li",[s._v("启动 venus-worker-02: 做 AP,P2,Commit 等任务")])]),s._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("BELLMAN_CPU_UTILIZATION")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0.2")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("FIL_PROOFS_USE_MULTICORE_SDR")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("TMP_DIR")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("OTHER_PATH"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("nohup")]),s._v(" ./venus-worker --repo"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("ABSOLUTE_PATH_OF_WORKER_0"),a("span",{pre:!0,attrs:{class:"token operator"}},[a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[s._v("2")]),s._v(">")]),s._v(" run --miner-addr"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/ip4/127.0.0.1/tcp/2345 --miner-token"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("sealer token"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--precommit1"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("false --no-local-storage "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" worker-02.log "),a("span",{pre:!0,attrs:{class:"token operator"}},[a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[s._v("2")]),s._v(">")]),a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[s._v("&1")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 指定seal路径")]),s._v("\n./venus-worker --repo"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("ABSOLUTE_PATH_OF_WORKER_0"),a("span",{pre:!0,attrs:{class:"token operator"}},[a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[s._v("2")]),s._v(">")]),s._v(" storage attach --init --seal "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("ABSOLUTE_LOCAL_PATH"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("\n")])])]),a("blockquote",[a("p",[s._v("设置 worker01 和 worker02 的 seal 路径相同,可以避免不必要的拷贝;")])]),s._v(" "),a("blockquote",[a("p",[s._v("P2 没有设置用 GPU;")])]),s._v(" "),a("blockquote",[a("p",[s._v("TMP_DIR 目的是为了避免和 venus-sealer 竞争 bellman.gpu.lock,C2 阶段会自动搜索用 GPU,如果和 wdPost 竞争 gpu 锁会报错")])]),s._v(" "),a("ul",[a("li",[s._v("设置发送消息的 wallet")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("Addresses"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n PreCommitControl "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# P2")]),s._v("\n CommitControl "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# C2")]),s._v("\n DisableOwnerFallback "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 禁用owner发消息")]),s._v("\n DisableWorkerFallback "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),s._v("\n")])])]),a("blockquote",[a("p",[s._v("根据上面字段的含义自己配置想要的结果")])]),s._v(" "),a("ul",[a("li",[s._v("限核:Cgrep 限核")])]),s._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 设置进程管理目录")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("mkdir")]),s._v(" -p /sys/fs/cgroup/cpuset/worker\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 设置能够使用的核数范围")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),s._v("-20 "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" /sys/fs/cgroup/cpuset/worker/cpuset.cpus\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 设置使用内存")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" cpuset.mems\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 加入进程的PID")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("PID"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" /sys/fs/cgroup/cpuset/worker/cgroup.procs\n\n")])])]),a("blockquote",[a("p",[s._v("PID: 进程 ID 号;")])]),s._v(" "),a("blockquote",[a("p",[s._v("每次 worker 重启后 PID 会变化,需要更新文件。")])]),s._v(" "),a("blockquote",[a("p",[s._v("/sys/fs/cgroup/cpuset是系统目录,worker是自己创建的.")])])])}),[],!1,null,null,null);t.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[46],{436:function(s,t,a){"use strict";a.r(t);var r=a(17),e=Object(r.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"算力增加与维持部署参考方案-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#算力增加与维持部署参考方案-2"}},[s._v("#")]),s._v(" 算力增加与维持部署参考方案 2")]),s._v(" "),a("h2",{attrs:{id:"机器配置"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#机器配置"}},[s._v("#")]),s._v(" 机器配置")]),s._v(" "),a("table",[a("thead",[a("tr",[a("th",[s._v("资源")]),s._v(" "),a("th",[s._v("配置")])])]),s._v(" "),a("tbody",[a("tr",[a("td",[s._v("CPU")]),s._v(" "),a("td",[s._v("AMD EPYC 7282 *1 (32c) 单路")])]),s._v(" "),a("tr",[a("td",[s._v("内存")]),s._v(" "),a("td",[s._v("32GB ECC/Reg, DDR4-3200 *8")])]),s._v(" "),a("tr",[a("td",[s._v("硬盘")]),s._v(" "),a("td",[s._v("M.2 NVME PCIe Gen3 x4 2TB SSD *2")])]),s._v(" "),a("tr",[a("td",[s._v("网卡")]),s._v(" "),a("td",[s._v("10G")])]),s._v(" "),a("tr",[a("td",[s._v("系统盘")]),s._v(" "),a("td",[s._v("500G")])]),s._v(" "),a("tr",[a("td",[s._v("显卡")]),s._v(" "),a("td",[s._v("3090 * 1")])]),s._v(" "),a("tr",[a("td",[s._v("存储")]),s._v(" "),a("td",[s._v("4TB SSD *25 RAID 5")])])])]),s._v(" "),a("p",[s._v("台数:1 台")]),s._v(" "),a("h2",{attrs:{id:"任务配比"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#任务配比"}},[s._v("#")]),s._v(" 任务配比")]),s._v(" "),a("p",[s._v("任务分为 AP,P1,P2,Commit 阶段")]),s._v(" "),a("table",[a("thead",[a("tr",[a("th",[s._v("运行方式")]),s._v(" "),a("th",[s._v("核数限制")]),s._v(" "),a("th",[s._v("耗时 (分钟)")]),s._v(" "),a("th",[s._v("内存消耗 (G)")]),s._v(" "),a("th",[s._v("效率 (个/小时)")]),s._v(" "),a("th",[s._v("日产量 (T)")])])]),s._v(" "),a("tbody",[a("tr",[a("td",[s._v("P1 * 5")]),s._v(" "),a("td",[s._v("20")]),s._v(" "),a("td",[s._v("220")]),s._v(" "),a("td",[s._v("376")]),s._v(" "),a("td",[s._v("1.3636")]),s._v(" "),a("td",[s._v("1.0227")])]),s._v(" "),a("tr",[a("td",[s._v("P2,AP,Commit")]),s._v(" "),a("td",[s._v("12")]),s._v(" "),a("td",[s._v("10")]),s._v(" "),a("td",[s._v("120")]),s._v(" "),a("td",[s._v("3")]),s._v(" "),a("td",[s._v("1.125")])])])]),s._v(" "),a("p",[s._v("资源说明:")]),s._v(" "),a("ul",[a("li",[s._v("内存加到 512G;")])]),s._v(" "),a("h2",{attrs:{id:"部署"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#部署"}},[s._v("#")]),s._v(" 部署")]),s._v(" "),a("ul",[a("li",[s._v("关闭超线程")])]),s._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 绝大多数的主板都可以设置关闭超线程,但需要重新启动。我们通过一种方式关闭一半CPU的映射关系来做到相同的效果,这种方式不需要重启,但是每次重启都会失效。")]),s._v("\n \n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#!/bin/bash")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("for")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token for-or-select variable"}},[s._v("cpunum")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("in")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token variable"}},[a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$(")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("cat")]),s._v(" /sys/devices/system/cpu/cpu*/topology/thread_siblings_list "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("cut")]),s._v(" -s -d, -f2- "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("tr")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("','")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'"),a("span",{pre:!0,attrs:{class:"token entity",title:"\\n"}},[s._v("\\n")]),s._v("'")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sort")]),s._v(" -un"),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v(")")])]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("do")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" /sys/devices/system/cpu/cpu"),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$cpunum")]),s._v("/online\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("done")]),s._v("\n")])])]),a("ul",[a("li",[a("p",[s._v("确保证明参数文件已下载,参数文件默认目录:/var/tmp/filecoin-proof-parameters")])]),s._v(" "),a("li",[a("p",[s._v("启动 venus-sealer: sealer 只做 windowPoSt.")])])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[s._v("./venus-sealer --network"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("mainnet init --actor"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("MINER_ID"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" --node-url"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/ip4/"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("IP_ADDRESS_OF_VENUS/tcp/3453 --messager-url"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/ip4/"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("IP_ADDRESS_OF_VENUS_MESSAGER"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("/tcp/"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("PORT_OF_VENUS_MESSAGER"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" --gateway-url"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/ip4/"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("IP_ADDRESS_OF_VENUS_GATEWAY"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("/tcp/"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("PORT_OF_VENUS_GATEWAY"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" --auth-token "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("AUTH_TOKEN_FOR_ACCOUNT_NAME"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" --no-local-storage\n \n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 修改配置文件只允许sealer做wdpost")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("Storage"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n ParallelFetchLimit "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("10")]),s._v("\n AllowAddPiece "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),s._v("\n AllowPreCommit1 "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),s._v("\n AllowPreCommit2 "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),s._v("\n AllowCommit "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),s._v("\n AllowUnseal "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),s._v("\n \n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 启动venus-sealer")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("BELLMAN_CPU_UTILIZATION")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0.2")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("FIL_PROOFS_USE_MULTICORE_SDR")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("nohup")]),s._v(" ./venus-sealer run "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" sealer.log "),a("span",{pre:!0,attrs:{class:"token operator"}},[a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[s._v("2")]),s._v(">")]),a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[s._v("&1")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 设置store目录,因为sealer我们不做任务,故只需设置store目录")]),s._v("\n./venus-sealer storage attach --init --store "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("ABSOLUTE_PATH_OF_YOUR_PERMANENT_STORAGE"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("\n")])])]),a("blockquote",[a("p",[s._v("init 时加"),a("code",[s._v("--no-local-storage")]),s._v("不回创建默认的store/seal目录;")])]),s._v(" "),a("ul",[a("li",[s._v("启动 venus-worker-01: 只做 P1")])]),s._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("FIL_PROOFS_MAXIMIZE_CACHING")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("BELLMAN_CPU_UTILIZATION")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0.2")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("FIL_PROOFS_USE_MULTICORE_SDR")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("nohup")]),s._v(" ./venus-worker --repo"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("ABSOLUTE_PATH_OF_WORKER_0"),a("span",{pre:!0,attrs:{class:"token operator"}},[a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[s._v("1")]),s._v(">")]),s._v(" run --miner-addr"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/ip4/127.0.0.1/tcp/2345 --miner-token"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("sealer token"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--addpiece"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("false --unseal"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("false --precommit2"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("false --commit"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("false --no-local-storage "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" worker-01.log "),a("span",{pre:!0,attrs:{class:"token operator"}},[a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[s._v("2")]),s._v(">")]),a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[s._v("&1")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 指定seal路径")]),s._v("\n./venus-worker --repo"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("ABSOLUTE_PATH_OF_WORKER_0"),a("span",{pre:!0,attrs:{class:"token operator"}},[a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[s._v("1")]),s._v(">")]),s._v(" storage attach --init --seal "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("ABSOLUTE_LOCAL_PATH"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("\n")])])]),a("blockquote",[a("p",[s._v("FIL_PROOFS_MAXIMIZE_CACHING=1 表示做 P1 的时候把部分临时文件缓存到内存")])]),s._v(" "),a("ul",[a("li",[s._v("启动 venus-worker-02: 做 AP,P2,Commit 等任务")])]),s._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("BELLMAN_CPU_UTILIZATION")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0.2")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("FIL_PROOFS_USE_MULTICORE_SDR")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("TMP_DIR")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("OTHER_PATH"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("nohup")]),s._v(" ./venus-worker --repo"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("ABSOLUTE_PATH_OF_WORKER_0"),a("span",{pre:!0,attrs:{class:"token operator"}},[a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[s._v("2")]),s._v(">")]),s._v(" run --miner-addr"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/ip4/127.0.0.1/tcp/2345 --miner-token"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("sealer token"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--precommit1"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("false --no-local-storage "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" worker-02.log "),a("span",{pre:!0,attrs:{class:"token operator"}},[a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[s._v("2")]),s._v(">")]),a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[s._v("&1")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 指定seal路径")]),s._v("\n./venus-worker --repo"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("ABSOLUTE_PATH_OF_WORKER_0"),a("span",{pre:!0,attrs:{class:"token operator"}},[a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[s._v("2")]),s._v(">")]),s._v(" storage attach --init --seal "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("ABSOLUTE_LOCAL_PATH"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("\n")])])]),a("blockquote",[a("p",[s._v("设置 worker01 和 worker02 的 seal 路径相同,可以避免不必要的拷贝;")])]),s._v(" "),a("blockquote",[a("p",[s._v("P2 没有设置用 GPU;")])]),s._v(" "),a("blockquote",[a("p",[s._v("TMP_DIR 目的是为了避免和 venus-sealer 竞争 bellman.gpu.lock,C2 阶段会自动搜索用 GPU,如果和 wdPost 竞争 gpu 锁会报错")])]),s._v(" "),a("ul",[a("li",[s._v("设置发送消息的 wallet")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("Addresses"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n PreCommitControl "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# P2")]),s._v("\n CommitControl "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# C2")]),s._v("\n DisableOwnerFallback "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 禁用owner发消息")]),s._v("\n DisableWorkerFallback "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),s._v("\n")])])]),a("blockquote",[a("p",[s._v("根据上面字段的含义自己配置想要的结果")])]),s._v(" "),a("ul",[a("li",[s._v("限核:Cgrep 限核")])]),s._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 设置进程管理目录")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("mkdir")]),s._v(" -p /sys/fs/cgroup/cpuset/worker\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 设置能够使用的核数范围")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),s._v("-20 "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" /sys/fs/cgroup/cpuset/worker/cpuset.cpus\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 设置使用内存")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" cpuset.mems\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 加入进程的PID")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("PID"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" /sys/fs/cgroup/cpuset/worker/cgroup.procs\n\n")])])]),a("blockquote",[a("p",[s._v("PID: 进程 ID 号;")])]),s._v(" "),a("blockquote",[a("p",[s._v("每次 worker 重启后 PID 会变化,需要更新文件。")])]),s._v(" "),a("blockquote",[a("p",[s._v("/sys/fs/cgroup/cpuset是系统目录,worker是自己创建的.")])])])}),[],!1,null,null,null);t.default=e.exports}}]); \ No newline at end of file diff --git a/assets/js/47.004c48b8.js b/assets/js/47.556dbed6.js similarity index 99% rename from assets/js/47.004c48b8.js rename to assets/js/47.556dbed6.js index 1ba155524..ac06d4794 100644 --- a/assets/js/47.004c48b8.js +++ b/assets/js/47.556dbed6.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[47],{438:function(a,s,t){"use strict";t.r(s);var e=t(17),n=Object(e.a)({},(function(){var a=this,s=a.$createElement,t=a._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h4",{attrs:{id:"一、服务器基础配置"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#一、服务器基础配置"}},[a._v("#")]),a._v(" 一、服务器基础配置:")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[a._v("systemctl stop firewalld \nsystemctl disbale firewalld\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("vim")]),a._v(" /etc/selinux/config\n\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("SELINUX")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("disabled //修改selinux为disabled\nsetenforce "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),a._v(" //临时修改selinux状态\ngetenforce //查看selinux状态\n")])])]),t("h4",{attrs:{id:"二、安装相关软件包"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#二、安装相关软件包"}},[a._v("#")]),a._v(" 二、安装相关软件包")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# yum clean all && yum makecache")]),a._v("\n\n// server端安装zabbix-server和zabbix-agent\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# yum install zabbix-server-mysql zabbix-agent -y")]),a._v("\n\n//安装zabbix默认的nginx\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# yum install centos-release-scl -y")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# yum install rh-php72-php-mysqlnd zabbix-nginx-conf-scl -y")]),a._v("\n")])])]),t("p",[a._v("修改 zabbix 的安装源配置文件,启用前端的源")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# vim /etc/yum.repos.d/zabbix.repo ")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),a._v("zabbix-frontend"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("name")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("Zabbix Official Repository frontend - "),t("span",{pre:!0,attrs:{class:"token variable"}},[a._v("$basearch")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("baseurl")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("http://repo.zabbix.com/zabbix/5.0/rhel/7/"),t("span",{pre:!0,attrs:{class:"token variable"}},[a._v("$basearch")]),a._v("/frontend\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("enabled")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),a._v(" //此处改为1\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("gpgcheck")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("gpgkey")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591\n")])])]),t("h4",{attrs:{id:"三、安装-mysql"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#三、安装-mysql"}},[a._v("#")]),a._v(" 三、安装 MySQL")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[a._v("mkdir")]),a._v(" mysql-dir\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("cd")]),a._v(" mysql-dir\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("wget")]),a._v(" https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.30-1.el7.x86_64.rpm-bundle.tar\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("tar")]),a._v(" -zxvf mysql-5.7.32-1.el7.x86_64.rpm-bundle.tar\nyum "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("install")]),a._v(" *.rpm -y\n")])])]),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[a._v("systemctl start mysqld\n")])])]),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[a._v("cat")]),a._v(" /var/log/mysqld.log "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("|")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("grep")]),a._v(" root\n")])])]),t("p",[a._v("2021-07-26T10:50:49.538494Z 1 [Note] A temporary password is generated for root@localhost: "),t("strong",[a._v("20yyk:Ar67S;")])]),a._v(" "),t("p",[a._v("登录数据库:")]),a._v(" "),t("div",{staticClass:"language-mysql extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("# mysql -uroot -p\nEnter password: 20yyk:Ar67S;\n")])])]),t("p",[a._v("配置数据库:")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("set")]),a._v(" global "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("validate_password_policy")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("set")]),a._v(" global "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("validate_password_length")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\nalter user "),t("span",{pre:!0,attrs:{class:"token string"}},[a._v("'root'")]),a._v("@"),t("span",{pre:!0,attrs:{class:"token string"}},[a._v("'localhost'")]),a._v(" identified by "),t("span",{pre:!0,attrs:{class:"token string"}},[a._v("'venus'")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("#修改root登录密码为venus")]),a._v("\n\nuse mysql"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\nupdate user "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("set")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("host")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[a._v("'%'")]),a._v(" where user "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[a._v("'root'")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\ncreate user "),t("span",{pre:!0,attrs:{class:"token string"}},[a._v("'zabbix'")]),a._v("@"),t("span",{pre:!0,attrs:{class:"token string"}},[a._v("'%'")]),a._v(" identified by "),t("span",{pre:!0,attrs:{class:"token string"}},[a._v("'123456'")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\ngrant all privileges on zabbix.* to "),t("span",{pre:!0,attrs:{class:"token string"}},[a._v("'zabbix'")]),a._v("@"),t("span",{pre:!0,attrs:{class:"token string"}},[a._v("'%'")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\nflush privileges"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# 创建zabbix所需的数据库")]),a._v("\ncreate database zabbix character "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("set")]),a._v(" utf8 collate utf8_bin"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\n")])])]),t("p",[a._v("导入 zabbix 模版文件:")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[a._v("zcat /usr/share/doc/zabbix-server-mysql-5.0.14/create.sql.gz "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("|")]),a._v(" mysql -uzabbix -p123456 zabbix\n")])])]),t("h4",{attrs:{id:"四、修改-zabbix-默认配置文件"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#四、修改-zabbix-默认配置文件"}},[a._v("#")]),a._v(" 四、修改 zabbix 默认配置文件")]),a._v(" "),t("p",[a._v("1、修改连接数据库的密码:")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# vim /etc/zabbix/zabbix_server.conf")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("DBPassword")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("123456")]),a._v("\n")])])]),t("p",[a._v("2、修改 nginx 和所属地域")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# 在第6行后边加上一个nginx")]),a._v("\nlisten.acl_users "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" apache,nginx\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# 在第24行修改zabbix所属的地域")]),a._v("\nphp_value"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),a._v("date.timezone"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" Asia/shanghai\n")])])]),t("p",[a._v("3、配置监听端口和访问方式")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[a._v("vim")]),a._v(" /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf\nserver "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n listen "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("80")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("//取消注释\n server_name test.zabbix.com"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("//取消注释修改成IP或自己的域名\n")])])]),t("p",[a._v("4、如果是伪装域名则修改本地的 hosts 文件")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[a._v("vim")]),a._v(" /etc/hosts\n"),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("192.168")]),a._v(".xx.xx test.zabbix.com\n\nwindow hosts文件也需要添加一下\nC:"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("Windows"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("System32"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("drivers"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("etc"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("hosts\n"),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("192.168")]),a._v(".xxx.xxx test.zabbix.com \n")])])]),t("p",[a._v("5、启动服务并设为开机自启")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# 启动服务")]),a._v("\nsystemctl restart zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm\nsystemctl "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("enable")]),a._v(" zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm\n")])])]),t("p",[a._v("6、修改 zabbix-agent 的配置文件")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[a._v("cat")]),a._v(" /etc/zabbix/zabbix_agentd.conf "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("|")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("egrep")]),a._v(" -v "),t("span",{pre:!0,attrs:{class:"token string"}},[a._v('"^$|^#"')]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("PidFile")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("/var/run/zabbix/zabbix_agentd.pid\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("LogFile")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("/var/log/zabbix/zabbix_agentd.log\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("LogFileSize")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("Server")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("192.168")]),a._v(".88.11 //指定zabbix-server的ip地址\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("Hostname")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("venus-sealer\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("Include")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("/etc/zabbix/zabbix_agentd.d/*.conf\n")])])]),t("h4",{attrs:{id:"四、配置-zabbix-监控主机"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#四、配置-zabbix-监控主机"}},[a._v("#")]),a._v(" 四、配置 zabbix 监控主机")]),a._v(" "),t("p",[a._v("1、在浏览器输入 zabbix-server 的 ip 地址或者主机名\n"),t("img",{attrs:{src:"/01-zabbix-install.jpg",alt:""}}),a._v(" "),t("img",{attrs:{src:"/02-zabbix-install.jpg",alt:""}})]),a._v(" "),t("p",[a._v("2、配置数据库连接地址信息\n"),t("img",{attrs:{src:"/03-zabbix-config.jpg",alt:""}}),a._v(" "),t("img",{attrs:{src:"/04-zabbix-hostname.jpg",alt:""}}),a._v(" "),t("img",{attrs:{src:"/05-zabbix-all.jpg",alt:""}}),a._v(" "),t("img",{attrs:{src:"/06-zabbix-finished.jpg",alt:""}})]),a._v(" "),t("p",[a._v("3、登录到 zabbix 系统,默认的用户为 Admin,密码为 zabbix;注意 Admin 的 A 是大写字母\n"),t("img",{attrs:{src:"/07-zabbix-login.jpg",alt:""}}),a._v(" "),t("img",{attrs:{src:"/08-zabbix-dashboard.jpg",alt:""}})]),a._v(" "),t("p",[a._v("4、添加 zabbix-agent 主机\n"),t("img",{attrs:{src:"/09-zabbix-agent.jpg",alt:""}}),a._v(" "),t("img",{attrs:{src:"/10-zabbix-agent-add.jpg",alt:""}})]),a._v(" "),t("p",[a._v("5、查看 zabbix 监控机器的内存图\n"),t("img",{attrs:{src:"/11-zabbix-graphs.jpg",alt:""}}),a._v(" "),t("img",{attrs:{src:"/12-zabbix-memory.jpg",alt:""}})]),a._v(" "),t("p",[a._v("6、异常报警,需要处理的机器\n"),t("img",{attrs:{src:"/13-Alarm-information.jpg",alt:""}})])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[47],{437:function(a,s,t){"use strict";t.r(s);var e=t(17),n=Object(e.a)({},(function(){var a=this,s=a.$createElement,t=a._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h4",{attrs:{id:"一、服务器基础配置"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#一、服务器基础配置"}},[a._v("#")]),a._v(" 一、服务器基础配置:")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[a._v("systemctl stop firewalld \nsystemctl disbale firewalld\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("vim")]),a._v(" /etc/selinux/config\n\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("SELINUX")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("disabled //修改selinux为disabled\nsetenforce "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),a._v(" //临时修改selinux状态\ngetenforce //查看selinux状态\n")])])]),t("h4",{attrs:{id:"二、安装相关软件包"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#二、安装相关软件包"}},[a._v("#")]),a._v(" 二、安装相关软件包")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# yum clean all && yum makecache")]),a._v("\n\n// server端安装zabbix-server和zabbix-agent\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# yum install zabbix-server-mysql zabbix-agent -y")]),a._v("\n\n//安装zabbix默认的nginx\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# yum install centos-release-scl -y")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# yum install rh-php72-php-mysqlnd zabbix-nginx-conf-scl -y")]),a._v("\n")])])]),t("p",[a._v("修改 zabbix 的安装源配置文件,启用前端的源")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# vim /etc/yum.repos.d/zabbix.repo ")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),a._v("zabbix-frontend"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("name")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("Zabbix Official Repository frontend - "),t("span",{pre:!0,attrs:{class:"token variable"}},[a._v("$basearch")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("baseurl")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("http://repo.zabbix.com/zabbix/5.0/rhel/7/"),t("span",{pre:!0,attrs:{class:"token variable"}},[a._v("$basearch")]),a._v("/frontend\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("enabled")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),a._v(" //此处改为1\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("gpgcheck")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("gpgkey")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591\n")])])]),t("h4",{attrs:{id:"三、安装-mysql"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#三、安装-mysql"}},[a._v("#")]),a._v(" 三、安装 MySQL")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[a._v("mkdir")]),a._v(" mysql-dir\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("cd")]),a._v(" mysql-dir\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("wget")]),a._v(" https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.30-1.el7.x86_64.rpm-bundle.tar\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("tar")]),a._v(" -zxvf mysql-5.7.32-1.el7.x86_64.rpm-bundle.tar\nyum "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("install")]),a._v(" *.rpm -y\n")])])]),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[a._v("systemctl start mysqld\n")])])]),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[a._v("cat")]),a._v(" /var/log/mysqld.log "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("|")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("grep")]),a._v(" root\n")])])]),t("p",[a._v("2021-07-26T10:50:49.538494Z 1 [Note] A temporary password is generated for root@localhost: "),t("strong",[a._v("20yyk:Ar67S;")])]),a._v(" "),t("p",[a._v("登录数据库:")]),a._v(" "),t("div",{staticClass:"language-mysql extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("# mysql -uroot -p\nEnter password: 20yyk:Ar67S;\n")])])]),t("p",[a._v("配置数据库:")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("set")]),a._v(" global "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("validate_password_policy")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("set")]),a._v(" global "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("validate_password_length")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\nalter user "),t("span",{pre:!0,attrs:{class:"token string"}},[a._v("'root'")]),a._v("@"),t("span",{pre:!0,attrs:{class:"token string"}},[a._v("'localhost'")]),a._v(" identified by "),t("span",{pre:!0,attrs:{class:"token string"}},[a._v("'venus'")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("#修改root登录密码为venus")]),a._v("\n\nuse mysql"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\nupdate user "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("set")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("host")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[a._v("'%'")]),a._v(" where user "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[a._v("'root'")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\ncreate user "),t("span",{pre:!0,attrs:{class:"token string"}},[a._v("'zabbix'")]),a._v("@"),t("span",{pre:!0,attrs:{class:"token string"}},[a._v("'%'")]),a._v(" identified by "),t("span",{pre:!0,attrs:{class:"token string"}},[a._v("'123456'")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\ngrant all privileges on zabbix.* to "),t("span",{pre:!0,attrs:{class:"token string"}},[a._v("'zabbix'")]),a._v("@"),t("span",{pre:!0,attrs:{class:"token string"}},[a._v("'%'")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\nflush privileges"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# 创建zabbix所需的数据库")]),a._v("\ncreate database zabbix character "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("set")]),a._v(" utf8 collate utf8_bin"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\n")])])]),t("p",[a._v("导入 zabbix 模版文件:")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[a._v("zcat /usr/share/doc/zabbix-server-mysql-5.0.14/create.sql.gz "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("|")]),a._v(" mysql -uzabbix -p123456 zabbix\n")])])]),t("h4",{attrs:{id:"四、修改-zabbix-默认配置文件"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#四、修改-zabbix-默认配置文件"}},[a._v("#")]),a._v(" 四、修改 zabbix 默认配置文件")]),a._v(" "),t("p",[a._v("1、修改连接数据库的密码:")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# vim /etc/zabbix/zabbix_server.conf")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("DBPassword")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("123456")]),a._v("\n")])])]),t("p",[a._v("2、修改 nginx 和所属地域")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# 在第6行后边加上一个nginx")]),a._v("\nlisten.acl_users "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" apache,nginx\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# 在第24行修改zabbix所属的地域")]),a._v("\nphp_value"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),a._v("date.timezone"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" Asia/shanghai\n")])])]),t("p",[a._v("3、配置监听端口和访问方式")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[a._v("vim")]),a._v(" /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf\nserver "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n listen "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("80")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("//取消注释\n server_name test.zabbix.com"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("//取消注释修改成IP或自己的域名\n")])])]),t("p",[a._v("4、如果是伪装域名则修改本地的 hosts 文件")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[a._v("vim")]),a._v(" /etc/hosts\n"),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("192.168")]),a._v(".xx.xx test.zabbix.com\n\nwindow hosts文件也需要添加一下\nC:"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("Windows"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("System32"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("drivers"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("etc"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("hosts\n"),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("192.168")]),a._v(".xxx.xxx test.zabbix.com \n")])])]),t("p",[a._v("5、启动服务并设为开机自启")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# 启动服务")]),a._v("\nsystemctl restart zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm\nsystemctl "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("enable")]),a._v(" zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm\n")])])]),t("p",[a._v("6、修改 zabbix-agent 的配置文件")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[a._v("cat")]),a._v(" /etc/zabbix/zabbix_agentd.conf "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("|")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("egrep")]),a._v(" -v "),t("span",{pre:!0,attrs:{class:"token string"}},[a._v('"^$|^#"')]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("PidFile")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("/var/run/zabbix/zabbix_agentd.pid\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("LogFile")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("/var/log/zabbix/zabbix_agentd.log\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("LogFileSize")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("Server")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("192.168")]),a._v(".88.11 //指定zabbix-server的ip地址\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("Hostname")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("venus-sealer\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("Include")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("/etc/zabbix/zabbix_agentd.d/*.conf\n")])])]),t("h4",{attrs:{id:"四、配置-zabbix-监控主机"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#四、配置-zabbix-监控主机"}},[a._v("#")]),a._v(" 四、配置 zabbix 监控主机")]),a._v(" "),t("p",[a._v("1、在浏览器输入 zabbix-server 的 ip 地址或者主机名\n"),t("img",{attrs:{src:"/01-zabbix-install.jpg",alt:""}}),a._v(" "),t("img",{attrs:{src:"/02-zabbix-install.jpg",alt:""}})]),a._v(" "),t("p",[a._v("2、配置数据库连接地址信息\n"),t("img",{attrs:{src:"/03-zabbix-config.jpg",alt:""}}),a._v(" "),t("img",{attrs:{src:"/04-zabbix-hostname.jpg",alt:""}}),a._v(" "),t("img",{attrs:{src:"/05-zabbix-all.jpg",alt:""}}),a._v(" "),t("img",{attrs:{src:"/06-zabbix-finished.jpg",alt:""}})]),a._v(" "),t("p",[a._v("3、登录到 zabbix 系统,默认的用户为 Admin,密码为 zabbix;注意 Admin 的 A 是大写字母\n"),t("img",{attrs:{src:"/07-zabbix-login.jpg",alt:""}}),a._v(" "),t("img",{attrs:{src:"/08-zabbix-dashboard.jpg",alt:""}})]),a._v(" "),t("p",[a._v("4、添加 zabbix-agent 主机\n"),t("img",{attrs:{src:"/09-zabbix-agent.jpg",alt:""}}),a._v(" "),t("img",{attrs:{src:"/10-zabbix-agent-add.jpg",alt:""}})]),a._v(" "),t("p",[a._v("5、查看 zabbix 监控机器的内存图\n"),t("img",{attrs:{src:"/11-zabbix-graphs.jpg",alt:""}}),a._v(" "),t("img",{attrs:{src:"/12-zabbix-memory.jpg",alt:""}})]),a._v(" "),t("p",[a._v("6、异常报警,需要处理的机器\n"),t("img",{attrs:{src:"/13-Alarm-information.jpg",alt:""}})])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/50.0a01cb6b.js b/assets/js/50.70978d8c.js similarity index 95% rename from assets/js/50.0a01cb6b.js rename to assets/js/50.70978d8c.js index 5f8759c14..dd3c28819 100644 --- a/assets/js/50.0a01cb6b.js +++ b/assets/js/50.70978d8c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[50],{443:function(e,r,t){"use strict";t.r(r);var o=t(17),n=Object(o.a)({},(function(){var e=this,r=e.$createElement,t=e._self._c||r;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h2",{attrs:{id:"从-lotus-来的命令"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#从-lotus-来的命令"}},[e._v("#")]),e._v(" 从 Lotus 来的命令")]),e._v(" "),t("p",[e._v("很多日常的命令包括但不限于"),t("a",{attrs:{href:"https://lotus.filecoin.io/docs/storage-providers/addresses/",target:"_blank",rel:"noopener noreferrer"}},[e._v("创建worker/controler地址"),t("OutboundLink")],1),e._v(",设置不同的"),t("a",{attrs:{href:"https://lotus.filecoin.io/docs/storage-providers/config/",target:"_blank",rel:"noopener noreferrer"}},[e._v("配置"),t("OutboundLink")],1),e._v(",或者修改"),t("a",{attrs:{href:"https://lotus.filecoin.io/docs/storage-providers/lifecycle/#changing-storage-locations",target:"_blank",rel:"noopener noreferrer"}},[e._v("存储路径"),t("OutboundLink")],1),e._v("等等,都同时适用于"),t("code",[e._v("Lotus")]),e._v("和"),t("code",[e._v("Venus")]),e._v("。节点运维工程师可以按照 Lotus 文档中的步骤来操作。如果遇到任何问题,欢迎到"),t("a",{attrs:{href:"https://filecoinproject.slack.com/archives/C028PCH8L31",target:"_blank",rel:"noopener noreferrer"}},[e._v("#fil-venus-cn"),t("OutboundLink")],1),e._v("来提出问题。")])])}),[],!1,null,null,null);r.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[50],{441:function(e,r,t){"use strict";t.r(r);var o=t(17),n=Object(o.a)({},(function(){var e=this,r=e.$createElement,t=e._self._c||r;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h2",{attrs:{id:"从-lotus-来的命令"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#从-lotus-来的命令"}},[e._v("#")]),e._v(" 从 Lotus 来的命令")]),e._v(" "),t("p",[e._v("很多日常的命令包括但不限于"),t("a",{attrs:{href:"https://lotus.filecoin.io/docs/storage-providers/addresses/",target:"_blank",rel:"noopener noreferrer"}},[e._v("创建worker/controler地址"),t("OutboundLink")],1),e._v(",设置不同的"),t("a",{attrs:{href:"https://lotus.filecoin.io/docs/storage-providers/config/",target:"_blank",rel:"noopener noreferrer"}},[e._v("配置"),t("OutboundLink")],1),e._v(",或者修改"),t("a",{attrs:{href:"https://lotus.filecoin.io/docs/storage-providers/lifecycle/#changing-storage-locations",target:"_blank",rel:"noopener noreferrer"}},[e._v("存储路径"),t("OutboundLink")],1),e._v("等等,都同时适用于"),t("code",[e._v("Lotus")]),e._v("和"),t("code",[e._v("Venus")]),e._v("。节点运维工程师可以按照 Lotus 文档中的步骤来操作。如果遇到任何问题,欢迎到"),t("a",{attrs:{href:"https://filecoinproject.slack.com/archives/C028PCH8L31",target:"_blank",rel:"noopener noreferrer"}},[e._v("#fil-venus-cn"),t("OutboundLink")],1),e._v("来提出问题。")])])}),[],!1,null,null,null);r.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/51.df87beeb.js b/assets/js/51.1b9d3267.js similarity index 98% rename from assets/js/51.df87beeb.js rename to assets/js/51.1b9d3267.js index 225f30466..e67661b8c 100644 --- a/assets/js/51.df87beeb.js +++ b/assets/js/51.1b9d3267.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[51],{441:function(t,a,e){"use strict";e.r(a);var s=e(17),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"market-v1-v2-升级指南"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#market-v1-v2-升级指南"}},[t._v("#")]),t._v(" market v1-v2 升级指南")]),t._v(" "),e("p",[t._v("market v1 升级到 v2 的过程中数据结构发生了变化,如果需要现有的数据请按照现有的步骤进行升级数据")]),t._v(" "),e("h2",{attrs:{id:"编译升级工具"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#编译升级工具"}},[t._v("#")]),t._v(" 编译升级工具")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("git clone https://github.com/filecoin-project/venus-market.git\ngit checkout feat/export_v1_data\n\nmake deps\ncd cli/market_export\ngo build\n")])])]),e("p",[t._v("执行上述步骤后会生成一个工具,这个工具用于导出 v1 版本的数据")]),t._v(" "),e("h2",{attrs:{id:"升级步骤"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#升级步骤"}},[t._v("#")]),t._v(" 升级步骤")]),t._v(" "),e("ol",[e("li",[e("p",[t._v("停止 venus-market 程序")])]),t._v(" "),e("li",[e("p",[t._v("备份 venus-market 数据目录,这个目录默认保存在 ~/.venusmarket.")])]),t._v(" "),e("li",[e("p",[t._v("导出 v1 版本的数据")]),t._v(" "),e("div",{staticClass:"language-sh extra-class"},[e("pre",{pre:!0,attrs:{class:"language-sh"}},[e("code",[t._v(" ./market_export --repo "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("venus-market repo"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("export")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("path of "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("export")]),t._v(" data file"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" \n")])])])]),t._v(" "),e("li",[e("p",[t._v("重新初始化 v2 版本的 venus-market(版本号必须高于 2.0.0 rc2)")])]),t._v(" "),e("li",[e("p",[t._v("执行 v2 版本的升级命令,这个命令用于导入步骤 3 中导出的数据。")]),t._v(" "),e("div",{staticClass:"language-sh extra-class"},[e("pre",{pre:!0,attrs:{class:"language-sh"}},[e("code",[t._v("./market_export --repo "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("venus-market repo"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" migrate import_v1 "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("path of "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("export")]),t._v(" data file"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n")])])])])]),t._v(" "),e("p",[e("em",[e("strong",[t._v("稳妥起见,做升级之前请确保没有处于 (Publish/Publishing/StorageDealAwaitingPreCommit) 状态的订单")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[51],{442:function(t,a,e){"use strict";e.r(a);var s=e(17),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"market-v1-v2-升级指南"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#market-v1-v2-升级指南"}},[t._v("#")]),t._v(" market v1-v2 升级指南")]),t._v(" "),e("p",[t._v("market v1 升级到 v2 的过程中数据结构发生了变化,如果需要现有的数据请按照现有的步骤进行升级数据")]),t._v(" "),e("h2",{attrs:{id:"编译升级工具"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#编译升级工具"}},[t._v("#")]),t._v(" 编译升级工具")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("git clone https://github.com/filecoin-project/venus-market.git\ngit checkout feat/export_v1_data\n\nmake deps\ncd cli/market_export\ngo build\n")])])]),e("p",[t._v("执行上述步骤后会生成一个工具,这个工具用于导出 v1 版本的数据")]),t._v(" "),e("h2",{attrs:{id:"升级步骤"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#升级步骤"}},[t._v("#")]),t._v(" 升级步骤")]),t._v(" "),e("ol",[e("li",[e("p",[t._v("停止 venus-market 程序")])]),t._v(" "),e("li",[e("p",[t._v("备份 venus-market 数据目录,这个目录默认保存在 ~/.venusmarket.")])]),t._v(" "),e("li",[e("p",[t._v("导出 v1 版本的数据")]),t._v(" "),e("div",{staticClass:"language-sh extra-class"},[e("pre",{pre:!0,attrs:{class:"language-sh"}},[e("code",[t._v(" ./market_export --repo "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("venus-market repo"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("export")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("path of "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("export")]),t._v(" data file"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" \n")])])])]),t._v(" "),e("li",[e("p",[t._v("重新初始化 v2 版本的 venus-market(版本号必须高于 2.0.0 rc2)")])]),t._v(" "),e("li",[e("p",[t._v("执行 v2 版本的升级命令,这个命令用于导入步骤 3 中导出的数据。")]),t._v(" "),e("div",{staticClass:"language-sh extra-class"},[e("pre",{pre:!0,attrs:{class:"language-sh"}},[e("code",[t._v("./market_export --repo "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("venus-market repo"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" migrate import_v1 "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("path of "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("export")]),t._v(" data file"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n")])])])])]),t._v(" "),e("p",[e("em",[e("strong",[t._v("稳妥起见,做升级之前请确保没有处于 (Publish/Publishing/StorageDealAwaitingPreCommit) 状态的订单")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/52.2ade40cb.js b/assets/js/52.6a2c654e.js similarity index 98% rename from assets/js/52.2ade40cb.js rename to assets/js/52.6a2c654e.js index 53d2e44e7..70c3bd76d 100644 --- a/assets/js/52.2ade40cb.js +++ b/assets/js/52.6a2c654e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[52],{444:function(v,e,a){"use strict";a.r(e);var n=a(17),s=Object(n.a)({},(function(){var v=this,e=v.$createElement,a=v._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[a("h1",{attrs:{id:"nv15-升级指南"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#nv15-升级指南"}},[v._v("#")]),v._v(" nv15 升级指南")]),v._v(" "),a("h2",{attrs:{id:"版本信息"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#版本信息"}},[v._v("#")]),v._v(" 版本信息")]),v._v(" "),a("ol",[a("li",[v._v("venus-wallet")]),v._v(" "),a("li",[v._v("venus")]),v._v(" "),a("li",[v._v("lotus 兼容版本")]),v._v(" "),a("li",[v._v("chain-co")]),v._v(" "),a("li",[v._v("messager")]),v._v(" "),a("li",[v._v("venus-gateway")]),v._v(" "),a("li",[v._v("venus-miner")]),v._v(" "),a("li",[v._v("venus-market")]),v._v(" "),a("li",[v._v("venus-sealer")])]),v._v(" "),a("h2",{attrs:{id:"升级细节"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#升级细节"}},[v._v("#")]),v._v(" 升级细节")]),v._v(" "),a("ol",[a("li",[a("p",[v._v("venus-auth: 可选择升级\n分支:v1.3.2\n影响功能:无")])]),v._v(" "),a("li",[a("p",[v._v("venus:升级\n分支:v1.2.1\n影响功能:支持新网络版本\n注意事项:")]),v._v(" "),a("ol",[a("li",[v._v("升级后检查 vk 文件是否完整")]),v._v(" "),a("li",[v._v("升级后检查配置文件,升级高度是否正常设置:")])]),v._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[v._v('# cali\n"upgradeOhSnapHeight": 682006\n# mainnet\n"upgradeOhSnapHeight": 1594680\n')])])]),a("ol",{attrs:{start:"3"}},[a("li",[v._v("升级后检查 mpool 下 maxfee 配置是否由数字转换成 xxFil 形式")])]),v._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[v._v('"mpool": {\n "maxNonceGap": 100,\n "maxFee": "10 FIL"\n},\n')])])]),a("ol",{attrs:{start:"4"}},[a("li",[v._v("升级后需检查是否正常同步区块")]),v._v(" "),a("li",[v._v("api 版本发生变化,影响 sealer 的连接,升级方式需要按照大升级的方式来处理")])])]),v._v(" "),a("li",[a("p",[v._v("lotus 兼容版本:升级\n分支:venus/v1.14.0\n影响功能:支持新网络版本\n注意事项:")]),v._v(" "),a("ol",[a("li",[v._v("检查是否正常同步")]),v._v(" "),a("li",[v._v("检查和 venus-auth 的连接是否完好(curl 命令验证)")])])]),v._v(" "),a("li",[a("p",[v._v("chain-co:升级\n分支:v0.1.0\n注意事项:\n影响功能:")]),v._v(" "),a("ol",[a("li",[v._v("暴露新的接口MpoolPending/MpoolGetNonce")]),v._v(" "),a("li",[v._v("升级后检查两个接口是否存在,且能正常工作")])])]),v._v(" "),a("li",[a("p",[v._v("venus-messager:升级\n分支:v1.4.0\n影响功能:仅支持新的网络版本\n注意事项:无")])]),v._v(" "),a("li",[a("p",[v._v("venus-miner:升级\nTag: v1.4.0\n影响功能:\n1. 计算证明的接口 (ComputeProof) 参数发生变化\n注意事项:无")])]),v._v(" "),a("li",[a("p",[v._v("venus-gateway:升级\n分支:v1.2.0\n影响功能:\n1. ComputeProof 接口参数发生变化,\n2. 需同时支持新老两组接口\n注意事项:\n1. 升级后需检查是否v0/v1两组接口都在正常工作")])]),v._v(" "),a("li",[a("p",[v._v("venus-wallet:可选择升级\nTag:v1.4.0\n影响功能:无")])]),v._v(" "),a("li",[a("p",[v._v("venus-market:可选择升级\n分支:v2.0.0\n影响功能 新版本")])])]),v._v(" "),a("h2",{attrs:{id:"升级顺序"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#升级顺序"}},[v._v("#")]),v._v(" 升级顺序")]),v._v(" "),a("ol",[a("li",[v._v("venus-wallet Tag:v1.4.0")]),v._v(" "),a("li",[v._v("venus v1.2.0")]),v._v(" "),a("li",[v._v("lotus for venuspool venus/v1.14.0")]),v._v(" "),a("li",[v._v("chain-co v0.1.0")]),v._v(" "),a("li",[v._v("venus-messager v1.4.0")]),v._v(" "),a("li",[v._v("venus-gateway v1.2.0")]),v._v(" "),a("li",[v._v("venus-miner Tag:v1.4.0")]),v._v(" "),a("li",[v._v("venus-market v2.0.0")]),v._v(" "),a("li",[v._v("venus-sealer v1.4.0")])]),v._v(" "),a("h2",{attrs:{id:"升级建议"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#升级建议"}},[v._v("#")]),v._v(" 升级建议")]),v._v(" "),a("ol",[a("li",[v._v("对于还有证明空窗期的用户,选择一个安全的时间来升级。")]),v._v(" "),a("li",[v._v("对于已经不具备空窗期的用户,最好的办法是在建立一个环境来进行过度。")]),v._v(" "),a("li",[v._v("建议运行一个备用的兼容版本 lotus 用于备份。")])]),v._v(" "),a("p",[v._v("有任何关于升级的问题可以到 disscusion 讨论:https://github.com/filecoin-project/venus/discussions/4688")])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[52],{446:function(v,e,a){"use strict";a.r(e);var n=a(17),s=Object(n.a)({},(function(){var v=this,e=v.$createElement,a=v._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[a("h1",{attrs:{id:"nv15-升级指南"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#nv15-升级指南"}},[v._v("#")]),v._v(" nv15 升级指南")]),v._v(" "),a("h2",{attrs:{id:"版本信息"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#版本信息"}},[v._v("#")]),v._v(" 版本信息")]),v._v(" "),a("ol",[a("li",[v._v("venus-wallet")]),v._v(" "),a("li",[v._v("venus")]),v._v(" "),a("li",[v._v("lotus 兼容版本")]),v._v(" "),a("li",[v._v("chain-co")]),v._v(" "),a("li",[v._v("messager")]),v._v(" "),a("li",[v._v("venus-gateway")]),v._v(" "),a("li",[v._v("venus-miner")]),v._v(" "),a("li",[v._v("venus-market")]),v._v(" "),a("li",[v._v("venus-sealer")])]),v._v(" "),a("h2",{attrs:{id:"升级细节"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#升级细节"}},[v._v("#")]),v._v(" 升级细节")]),v._v(" "),a("ol",[a("li",[a("p",[v._v("venus-auth: 可选择升级\n分支:v1.3.2\n影响功能:无")])]),v._v(" "),a("li",[a("p",[v._v("venus:升级\n分支:v1.2.1\n影响功能:支持新网络版本\n注意事项:")]),v._v(" "),a("ol",[a("li",[v._v("升级后检查 vk 文件是否完整")]),v._v(" "),a("li",[v._v("升级后检查配置文件,升级高度是否正常设置:")])]),v._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[v._v('# cali\n"upgradeOhSnapHeight": 682006\n# mainnet\n"upgradeOhSnapHeight": 1594680\n')])])]),a("ol",{attrs:{start:"3"}},[a("li",[v._v("升级后检查 mpool 下 maxfee 配置是否由数字转换成 xxFil 形式")])]),v._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[v._v('"mpool": {\n "maxNonceGap": 100,\n "maxFee": "10 FIL"\n},\n')])])]),a("ol",{attrs:{start:"4"}},[a("li",[v._v("升级后需检查是否正常同步区块")]),v._v(" "),a("li",[v._v("api 版本发生变化,影响 sealer 的连接,升级方式需要按照大升级的方式来处理")])])]),v._v(" "),a("li",[a("p",[v._v("lotus 兼容版本:升级\n分支:venus/v1.14.0\n影响功能:支持新网络版本\n注意事项:")]),v._v(" "),a("ol",[a("li",[v._v("检查是否正常同步")]),v._v(" "),a("li",[v._v("检查和 venus-auth 的连接是否完好(curl 命令验证)")])])]),v._v(" "),a("li",[a("p",[v._v("chain-co:升级\n分支:v0.1.0\n注意事项:\n影响功能:")]),v._v(" "),a("ol",[a("li",[v._v("暴露新的接口MpoolPending/MpoolGetNonce")]),v._v(" "),a("li",[v._v("升级后检查两个接口是否存在,且能正常工作")])])]),v._v(" "),a("li",[a("p",[v._v("venus-messager:升级\n分支:v1.4.0\n影响功能:仅支持新的网络版本\n注意事项:无")])]),v._v(" "),a("li",[a("p",[v._v("venus-miner:升级\nTag: v1.4.0\n影响功能:\n1. 计算证明的接口 (ComputeProof) 参数发生变化\n注意事项:无")])]),v._v(" "),a("li",[a("p",[v._v("venus-gateway:升级\n分支:v1.2.0\n影响功能:\n1. ComputeProof 接口参数发生变化,\n2. 需同时支持新老两组接口\n注意事项:\n1. 升级后需检查是否v0/v1两组接口都在正常工作")])]),v._v(" "),a("li",[a("p",[v._v("venus-wallet:可选择升级\nTag:v1.4.0\n影响功能:无")])]),v._v(" "),a("li",[a("p",[v._v("venus-market:可选择升级\n分支:v2.0.0\n影响功能 新版本")])])]),v._v(" "),a("h2",{attrs:{id:"升级顺序"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#升级顺序"}},[v._v("#")]),v._v(" 升级顺序")]),v._v(" "),a("ol",[a("li",[v._v("venus-wallet Tag:v1.4.0")]),v._v(" "),a("li",[v._v("venus v1.2.0")]),v._v(" "),a("li",[v._v("lotus for venuspool venus/v1.14.0")]),v._v(" "),a("li",[v._v("chain-co v0.1.0")]),v._v(" "),a("li",[v._v("venus-messager v1.4.0")]),v._v(" "),a("li",[v._v("venus-gateway v1.2.0")]),v._v(" "),a("li",[v._v("venus-miner Tag:v1.4.0")]),v._v(" "),a("li",[v._v("venus-market v2.0.0")]),v._v(" "),a("li",[v._v("venus-sealer v1.4.0")])]),v._v(" "),a("h2",{attrs:{id:"升级建议"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#升级建议"}},[v._v("#")]),v._v(" 升级建议")]),v._v(" "),a("ol",[a("li",[v._v("对于还有证明空窗期的用户,选择一个安全的时间来升级。")]),v._v(" "),a("li",[v._v("对于已经不具备空窗期的用户,最好的办法是在建立一个环境来进行过度。")]),v._v(" "),a("li",[v._v("建议运行一个备用的兼容版本 lotus 用于备份。")])]),v._v(" "),a("p",[v._v("有任何关于升级的问题可以到 disscusion 讨论:https://github.com/filecoin-project/venus/discussions/4688")])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/53.d2664268.js b/assets/js/53.531553ec.js similarity index 99% rename from assets/js/53.d2664268.js rename to assets/js/53.531553ec.js index 7c040697d..e220511dc 100644 --- a/assets/js/53.d2664268.js +++ b/assets/js/53.531553ec.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[53],{442:function(e,v,a){"use strict";a.r(v);var t=a(17),s=Object(t.a)({},(function(){var e=this,v=e.$createElement,a=e._self._c||v;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h2",{attrs:{id:"nv16-各组件升级文档"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#nv16-各组件升级文档"}},[e._v("#")]),e._v(" nv16 各组件升级文档")]),e._v(" "),a("h3",{attrs:{id:"时间线"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#时间线"}},[e._v("#")]),e._v(" 时间线")]),e._v(" "),a("p",[e._v("升级时间:2022-07-06T14:00:00Z,北京时间是 2022-07-06 22:00:00(周三)")]),e._v(" "),a("h3",{attrs:{id:"venus-auth"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-auth"}},[e._v("#")]),e._v(" venus-auth")]),e._v(" "),a("p",[e._v("tag: v1.6.0")]),e._v(" "),a("p",[e._v("影响功能:支持多个 miner 共享同一个 token 的功能")]),e._v(" "),a("p",[e._v("依赖升级组件:无")]),e._v(" "),a("p",[e._v("注意事项:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("新增加一张 "),a("code",[e._v("miners")]),e._v(" 表,用于保存 "),a("code",[e._v("user")]),e._v(" 和 "),a("code",[e._v("miner")]),e._v(" 的对应关系")])]),e._v(" "),a("li",[a("p",[e._v("会把 "),a("code",[e._v("users")]),e._v(" 表每行数据的 "),a("code",[e._v("name")]),e._v(" 和 "),a("code",[e._v("miner")]),e._v(" 字段的值写入到 "),a("code",[e._v("miners")]),e._v(" 表中的 "),a("code",[e._v("user")]),e._v(" 和 "),a("code",[e._v("miner")]),e._v("字段,检查写入是否有问题,成功日志:migrate from:0, to:1 success;失败日志:migrate from store version:0 failed")])]),e._v(" "),a("li",[a("p",[a("code",[e._v("./venus-auth user miner list ")]),e._v(" 可以查看每个用户绑定的 miner")])]),e._v(" "),a("li",[a("p",[e._v("使用命令 "),a("code",[e._v("./venus-auth user list")]),e._v("列出所有 user,"),a("strong",[e._v("确保被使用的 user 状态都为 enabled 状态")])])])]),e._v(" "),a("h3",{attrs:{id:"venus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus"}},[e._v("#")]),e._v(" venus")]),e._v(" "),a("p",[e._v("tag: v1.6.0")]),e._v(" "),a("p",[e._v("影响功能:支持 nv16 网络")]),e._v(" "),a("p",[e._v("依赖升级组件:无")]),e._v(" "),a("p",[e._v("注意事项:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("升级后检查 vk 文件是否完整")])]),e._v(" "),a("li",[a("p",[e._v("升级后检查配置文件,升级高度是否正常设置,配置文件默认在 "),a("code",[e._v("~/.venus/config.json")]),e._v(" :")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('# cali\n"upgradeSkyrHeight": 1044660\n# mainnet\n"upgradeSkyrHeight": 1960320\n')])])])]),e._v(" "),a("li",[a("p",[e._v("升级后需检查是否正常同步区块")])]),e._v(" "),a("li",[a("p",[e._v("api 版本发生变化,影响 miner 的连接")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('# 用 curl 命令测试接口 StateGetBeaconEntry、BeaconGetEntry,下面三个 curl 命令返回结果应该一样\ncurl http://127.0.0.1:3453/rpc/v0 -X POST -H "Content-Type: application/json" -H "Authorization: Bearer token" -d \'{"method": "Filecoin.BeaconGetEntry","params":[1933610], "id": 0}\'\ncurl http://127.0.0.1:3453/rpc/v1 -X POST -H "Content-Type: application/json" -H "Authorization: Bearer token" -d \'{"method": "Filecoin.BeaconGetEntry","params":[1933610], "id": 0}\' \ncurl http://127.0.0.1:3453/rpc/v1 -X POST -H "Content-Type: application/json" -H "Authorization: Bearer token" -d \'{"method": "Filecoin.StateGetBeaconEntry","params":[1933610], "id": 0}\'\n')])])])]),e._v(" "),a("li",[a("p",[e._v("检查主网 v8 actors cid,确保与下面输出一样")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("./venus state actor-cids\n\n# 顺序可能会不一样\n_manifest bafy2bzacebogjbpiemi7npzxchgcjjki3tfxon4ims55obfyfleqntteljsea \naccount bafk2bzacedudbf7fc5va57t3tmo63snmt3en4iaidv4vo3qlyacbxaa6hlx6y \nstoragemarket bafk2bzacediohrxkp2fbsl4yj4jlupjdkgsiwqb4zuezvinhdo2j5hrxco62q \nstorageminer bafk2bzacecgnynvd3tene3bvqoknuspit56canij5bpra6wl4mrq2mxxwriyu \nmultisig bafk2bzacebhldfjuy4o5v7amrhp5p2gzv2qo5275jut4adnbyp56fxkwy5fag \npaymentchannel bafk2bzacebalad3f72wyk7qyilvfjijcwubdspytnyzlrhvn73254gqis44rq \nreward bafk2bzacecwzzxlgjiavnc3545cqqil3cmq4hgpvfp2crguxy2pl5ybusfsbe \nsystem bafk2bzacedwq5uppsw7vp55zpj7jdieizirmldceehu6wvombw3ixq2tcq57w \ncron bafk2bzacecqb3eolfurehny6yp7tgmapib4ocazo5ilkopjce2c7wc2bcec62 \ninit bafk2bzaceaipvjhoxmtofsnv3aj6gj5ida4afdrxa4ewku2hfipdlxpaektlw \nstoragepower bafk2bzacebjvqva6ppvysn5xpmiqcdfelwbbcxmghx5ww6hr37cgred6dyrpm \nverifiedregistry bafk2bzaceb3zbkjz3auizmoln2unmxep7dyfcmsre64vnqfhdyh7rkqfoxlw4\n")])])])]),e._v(" "),a("li",[a("p",[e._v("主网可以通过设置环境变量 "),a("code",[e._v("export VENUS_USE_FVM_TO_SYNC_MAINNET_V15=1")]),e._v(" 在 nv15 网络使用 fvm")])]),e._v(" "),a("li",[a("p",[e._v("若不排查问题,rust 日志级别"),a("strong",[e._v("不建议")]),e._v("设置为 "),a("code",[e._v("trace")]),e._v(",因为会打印较多日志")])]),e._v(" "),a("li",[a("p",[e._v("升级后可以通过命令来 "),a("code",[e._v("./venus state get-actor t01000")]),e._v(" 来确认是否升级成功")])])]),e._v(" "),a("h3",{attrs:{id:"venus-messager"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-messager"}},[e._v("#")]),e._v(" venus-messager")]),e._v(" "),a("p",[e._v("tag:v1.6.0")]),e._v(" "),a("p",[e._v("影响功能:支持新的网络版本,新增主目录,默认在 "),a("code",[e._v("~/.venus-messager")])]),e._v(" "),a("p",[e._v("依赖升级组件:")]),e._v(" "),a("p",[e._v("注意事项:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("升级后是否生成主目录 "),a("code",[e._v("~/.venus-messager")])])]),e._v(" "),a("li",[a("p",[e._v("升级后主目录应包含 "),a("code",[e._v("config.toml")]),e._v(" 和 "),a("code",[e._v("tipset.json")]),e._v(","),a("code",[e._v("config.toml")]),e._v(" 应与启动 "),a("code",[e._v("messager")]),e._v(" 使用的配置文件内容一致,"),a("code",[e._v("~/.venus-messager/tipset.json")]),e._v(" 是由当前目录中的 "),a("code",[e._v("tipset.json")]),e._v(" 拷贝而来")])]),e._v(" "),a("li",[a("p",[e._v("升级成功后再次重启是读取的配置是"),a("code",[e._v("~/.venus-messager/config.toml")])])]),e._v(" "),a("li",[a("p",[e._v("能否正常收到消息和推送消息到节点")])])]),e._v(" "),a("h3",{attrs:{id:"venus-miner"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-miner"}},[e._v("#")]),e._v(" venus-miner")]),e._v(" "),a("p",[e._v("tag: v1.6.0")]),e._v(" "),a("p",[e._v("影响功能:")]),e._v(" "),a("ol",[a("li",[e._v("获取 beacon 的接口名字 由 "),a("code",[e._v("BeaconGetEntry")]),e._v(" 改为 "),a("code",[e._v("StateGetBeaconEntry")])])]),e._v(" "),a("p",[e._v("依赖升级组件:venus,venus-auth,venus-gateway")]),e._v(" "),a("p",[e._v("注意事项:")]),e._v(" "),a("ol",[a("li",[e._v("升级后常用命令 address state/list/update验证一遍.")]),e._v(" "),a("li",[e._v("如果用 mysql 数据库,检查下 miner_blocks 表中 parent_key 字段是 varchar(1000)")])]),e._v(" "),a("h3",{attrs:{id:"venus-gateway"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-gateway"}},[e._v("#")]),e._v(" venus-gateway")]),e._v(" "),a("p",[e._v("tag: v1.6.0")]),e._v(" "),a("p",[e._v("影响功能:修复没有自动清理超时的请求")]),e._v(" "),a("p",[e._v("注意事项:")]),e._v(" "),a("ol",[a("li",[e._v("升级后 "),a("code",[e._v("wallet")]),e._v(" 是否重新注册上来")])]),e._v(" "),a("h3",{attrs:{id:"venus-market"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-market"}},[e._v("#")]),e._v(" venus-market")]),e._v(" "),a("p",[e._v("tag: v2.2.0")]),e._v(" "),a("p",[e._v("影响功能:")]),e._v(" "),a("p",[e._v("注意事项:")]),e._v(" "),a("h3",{attrs:{id:"venus-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-wallet"}},[e._v("#")]),e._v(" venus-wallet")]),e._v(" "),a("h4",{attrs:{id:"社区"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#社区"}},[e._v("#")]),e._v(" 社区")]),e._v(" "),a("p",[e._v("tag: v1.6.0")]),e._v(" "),a("p",[e._v("影响功能:")]),e._v(" "),a("p",[e._v("注意事项:")]),e._v(" "),a("ol",[a("li",[e._v("需要解锁钱包")]),e._v(" "),a("li",[e._v("是否注册到 gateway")])])])}),[],!1,null,null,null);v.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[53],{443:function(e,v,a){"use strict";a.r(v);var t=a(17),s=Object(t.a)({},(function(){var e=this,v=e.$createElement,a=e._self._c||v;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h2",{attrs:{id:"nv16-各组件升级文档"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#nv16-各组件升级文档"}},[e._v("#")]),e._v(" nv16 各组件升级文档")]),e._v(" "),a("h3",{attrs:{id:"时间线"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#时间线"}},[e._v("#")]),e._v(" 时间线")]),e._v(" "),a("p",[e._v("升级时间:2022-07-06T14:00:00Z,北京时间是 2022-07-06 22:00:00(周三)")]),e._v(" "),a("h3",{attrs:{id:"venus-auth"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-auth"}},[e._v("#")]),e._v(" venus-auth")]),e._v(" "),a("p",[e._v("tag: v1.6.0")]),e._v(" "),a("p",[e._v("影响功能:支持多个 miner 共享同一个 token 的功能")]),e._v(" "),a("p",[e._v("依赖升级组件:无")]),e._v(" "),a("p",[e._v("注意事项:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("新增加一张 "),a("code",[e._v("miners")]),e._v(" 表,用于保存 "),a("code",[e._v("user")]),e._v(" 和 "),a("code",[e._v("miner")]),e._v(" 的对应关系")])]),e._v(" "),a("li",[a("p",[e._v("会把 "),a("code",[e._v("users")]),e._v(" 表每行数据的 "),a("code",[e._v("name")]),e._v(" 和 "),a("code",[e._v("miner")]),e._v(" 字段的值写入到 "),a("code",[e._v("miners")]),e._v(" 表中的 "),a("code",[e._v("user")]),e._v(" 和 "),a("code",[e._v("miner")]),e._v("字段,检查写入是否有问题,成功日志:migrate from:0, to:1 success;失败日志:migrate from store version:0 failed")])]),e._v(" "),a("li",[a("p",[a("code",[e._v("./venus-auth user miner list ")]),e._v(" 可以查看每个用户绑定的 miner")])]),e._v(" "),a("li",[a("p",[e._v("使用命令 "),a("code",[e._v("./venus-auth user list")]),e._v("列出所有 user,"),a("strong",[e._v("确保被使用的 user 状态都为 enabled 状态")])])])]),e._v(" "),a("h3",{attrs:{id:"venus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus"}},[e._v("#")]),e._v(" venus")]),e._v(" "),a("p",[e._v("tag: v1.6.0")]),e._v(" "),a("p",[e._v("影响功能:支持 nv16 网络")]),e._v(" "),a("p",[e._v("依赖升级组件:无")]),e._v(" "),a("p",[e._v("注意事项:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("升级后检查 vk 文件是否完整")])]),e._v(" "),a("li",[a("p",[e._v("升级后检查配置文件,升级高度是否正常设置,配置文件默认在 "),a("code",[e._v("~/.venus/config.json")]),e._v(" :")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('# cali\n"upgradeSkyrHeight": 1044660\n# mainnet\n"upgradeSkyrHeight": 1960320\n')])])])]),e._v(" "),a("li",[a("p",[e._v("升级后需检查是否正常同步区块")])]),e._v(" "),a("li",[a("p",[e._v("api 版本发生变化,影响 miner 的连接")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('# 用 curl 命令测试接口 StateGetBeaconEntry、BeaconGetEntry,下面三个 curl 命令返回结果应该一样\ncurl http://127.0.0.1:3453/rpc/v0 -X POST -H "Content-Type: application/json" -H "Authorization: Bearer token" -d \'{"method": "Filecoin.BeaconGetEntry","params":[1933610], "id": 0}\'\ncurl http://127.0.0.1:3453/rpc/v1 -X POST -H "Content-Type: application/json" -H "Authorization: Bearer token" -d \'{"method": "Filecoin.BeaconGetEntry","params":[1933610], "id": 0}\' \ncurl http://127.0.0.1:3453/rpc/v1 -X POST -H "Content-Type: application/json" -H "Authorization: Bearer token" -d \'{"method": "Filecoin.StateGetBeaconEntry","params":[1933610], "id": 0}\'\n')])])])]),e._v(" "),a("li",[a("p",[e._v("检查主网 v8 actors cid,确保与下面输出一样")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("./venus state actor-cids\n\n# 顺序可能会不一样\n_manifest bafy2bzacebogjbpiemi7npzxchgcjjki3tfxon4ims55obfyfleqntteljsea \naccount bafk2bzacedudbf7fc5va57t3tmo63snmt3en4iaidv4vo3qlyacbxaa6hlx6y \nstoragemarket bafk2bzacediohrxkp2fbsl4yj4jlupjdkgsiwqb4zuezvinhdo2j5hrxco62q \nstorageminer bafk2bzacecgnynvd3tene3bvqoknuspit56canij5bpra6wl4mrq2mxxwriyu \nmultisig bafk2bzacebhldfjuy4o5v7amrhp5p2gzv2qo5275jut4adnbyp56fxkwy5fag \npaymentchannel bafk2bzacebalad3f72wyk7qyilvfjijcwubdspytnyzlrhvn73254gqis44rq \nreward bafk2bzacecwzzxlgjiavnc3545cqqil3cmq4hgpvfp2crguxy2pl5ybusfsbe \nsystem bafk2bzacedwq5uppsw7vp55zpj7jdieizirmldceehu6wvombw3ixq2tcq57w \ncron bafk2bzacecqb3eolfurehny6yp7tgmapib4ocazo5ilkopjce2c7wc2bcec62 \ninit bafk2bzaceaipvjhoxmtofsnv3aj6gj5ida4afdrxa4ewku2hfipdlxpaektlw \nstoragepower bafk2bzacebjvqva6ppvysn5xpmiqcdfelwbbcxmghx5ww6hr37cgred6dyrpm \nverifiedregistry bafk2bzaceb3zbkjz3auizmoln2unmxep7dyfcmsre64vnqfhdyh7rkqfoxlw4\n")])])])]),e._v(" "),a("li",[a("p",[e._v("主网可以通过设置环境变量 "),a("code",[e._v("export VENUS_USE_FVM_TO_SYNC_MAINNET_V15=1")]),e._v(" 在 nv15 网络使用 fvm")])]),e._v(" "),a("li",[a("p",[e._v("若不排查问题,rust 日志级别"),a("strong",[e._v("不建议")]),e._v("设置为 "),a("code",[e._v("trace")]),e._v(",因为会打印较多日志")])]),e._v(" "),a("li",[a("p",[e._v("升级后可以通过命令来 "),a("code",[e._v("./venus state get-actor t01000")]),e._v(" 来确认是否升级成功")])])]),e._v(" "),a("h3",{attrs:{id:"venus-messager"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-messager"}},[e._v("#")]),e._v(" venus-messager")]),e._v(" "),a("p",[e._v("tag:v1.6.0")]),e._v(" "),a("p",[e._v("影响功能:支持新的网络版本,新增主目录,默认在 "),a("code",[e._v("~/.venus-messager")])]),e._v(" "),a("p",[e._v("依赖升级组件:")]),e._v(" "),a("p",[e._v("注意事项:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("升级后是否生成主目录 "),a("code",[e._v("~/.venus-messager")])])]),e._v(" "),a("li",[a("p",[e._v("升级后主目录应包含 "),a("code",[e._v("config.toml")]),e._v(" 和 "),a("code",[e._v("tipset.json")]),e._v(","),a("code",[e._v("config.toml")]),e._v(" 应与启动 "),a("code",[e._v("messager")]),e._v(" 使用的配置文件内容一致,"),a("code",[e._v("~/.venus-messager/tipset.json")]),e._v(" 是由当前目录中的 "),a("code",[e._v("tipset.json")]),e._v(" 拷贝而来")])]),e._v(" "),a("li",[a("p",[e._v("升级成功后再次重启是读取的配置是"),a("code",[e._v("~/.venus-messager/config.toml")])])]),e._v(" "),a("li",[a("p",[e._v("能否正常收到消息和推送消息到节点")])])]),e._v(" "),a("h3",{attrs:{id:"venus-miner"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-miner"}},[e._v("#")]),e._v(" venus-miner")]),e._v(" "),a("p",[e._v("tag: v1.6.0")]),e._v(" "),a("p",[e._v("影响功能:")]),e._v(" "),a("ol",[a("li",[e._v("获取 beacon 的接口名字 由 "),a("code",[e._v("BeaconGetEntry")]),e._v(" 改为 "),a("code",[e._v("StateGetBeaconEntry")])])]),e._v(" "),a("p",[e._v("依赖升级组件:venus,venus-auth,venus-gateway")]),e._v(" "),a("p",[e._v("注意事项:")]),e._v(" "),a("ol",[a("li",[e._v("升级后常用命令 address state/list/update验证一遍.")]),e._v(" "),a("li",[e._v("如果用 mysql 数据库,检查下 miner_blocks 表中 parent_key 字段是 varchar(1000)")])]),e._v(" "),a("h3",{attrs:{id:"venus-gateway"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-gateway"}},[e._v("#")]),e._v(" venus-gateway")]),e._v(" "),a("p",[e._v("tag: v1.6.0")]),e._v(" "),a("p",[e._v("影响功能:修复没有自动清理超时的请求")]),e._v(" "),a("p",[e._v("注意事项:")]),e._v(" "),a("ol",[a("li",[e._v("升级后 "),a("code",[e._v("wallet")]),e._v(" 是否重新注册上来")])]),e._v(" "),a("h3",{attrs:{id:"venus-market"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-market"}},[e._v("#")]),e._v(" venus-market")]),e._v(" "),a("p",[e._v("tag: v2.2.0")]),e._v(" "),a("p",[e._v("影响功能:")]),e._v(" "),a("p",[e._v("注意事项:")]),e._v(" "),a("h3",{attrs:{id:"venus-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-wallet"}},[e._v("#")]),e._v(" venus-wallet")]),e._v(" "),a("h4",{attrs:{id:"社区"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#社区"}},[e._v("#")]),e._v(" 社区")]),e._v(" "),a("p",[e._v("tag: v1.6.0")]),e._v(" "),a("p",[e._v("影响功能:")]),e._v(" "),a("p",[e._v("注意事项:")]),e._v(" "),a("ol",[a("li",[e._v("需要解锁钱包")]),e._v(" "),a("li",[e._v("是否注册到 gateway")])])])}),[],!1,null,null,null);v.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/54.b614f89a.js b/assets/js/54.9225c42f.js similarity index 99% rename from assets/js/54.b614f89a.js rename to assets/js/54.9225c42f.js index f3a784b4b..8729a9df1 100644 --- a/assets/js/54.b614f89a.js +++ b/assets/js/54.9225c42f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[54],{445:function(e,a,v){"use strict";v.r(a);var t=v(17),s=Object(t.a)({},(function(){var e=this,a=e.$createElement,v=e._self._c||a;return v("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[v("h1",{attrs:{id:"nv17-各组件升级文档"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#nv17-各组件升级文档"}},[e._v("#")]),e._v(" nv17 各组件升级文档")]),e._v(" "),v("p",[e._v("如果 "),v("code",[e._v("venus-wallet")]),e._v(" 或者 "),v("code",[e._v("venus-gateway")]),e._v(" 的版本从 "),v("code",[e._v("v1.6.x")]),e._v(" 升级到 "),v("code",[e._v("v1.8.0")]),e._v(",请先阅读 "),v("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions/5265",target:"_blank",rel:"noopener noreferrer"}},[e._v("Venus 组件 v1.7.0 使用注意事项 "),v("OutboundLink")],1),e._v(",注意 "),v("code",[e._v("venus-gateway")]),e._v(" 和 "),v("code",[e._v("venus-wallet")]),e._v("的升级顺序。")]),e._v(" "),v("h3",{attrs:{id:"时间线"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#时间线"}},[e._v("#")]),e._v(" 时间线")]),e._v(" "),v("p",[e._v("升级时间:2022-11-30T14:00:00Z,北京时间是 2022-11-30 22:00:00")]),e._v(" "),v("h3",{attrs:{id:"各组件版本"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#各组件版本"}},[e._v("#")]),e._v(" 各组件版本")]),e._v(" "),v("ul",[v("li",[v("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions/5386#discussioncomment-3893446",target:"_blank",rel:"noopener noreferrer"}},[e._v("calibrationnet"),v("OutboundLink")],1)]),e._v(" "),v("li",[v("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions/5386#discussioncomment-3893449",target:"_blank",rel:"noopener noreferrer"}},[e._v("mainnet"),v("OutboundLink")],1)])]),e._v(" "),v("h3",{attrs:{id:"venus-auth"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#venus-auth"}},[e._v("#")]),e._v(" venus-auth")]),e._v(" "),v("p",[e._v("影响功能:")]),e._v(" "),v("p",[e._v("依赖升级组件:无")]),e._v(" "),v("p",[e._v("注意事项:")]),e._v(" "),v("ol",[v("li",[v("code",[e._v("miners")]),e._v(" 表增加字段 "),v("code",[e._v("open_mining")]),e._v(",0 表示不出块,1 表示出块,默认是 1")])]),e._v(" "),v("h3",{attrs:{id:"venus"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#venus"}},[e._v("#")]),e._v(" venus")]),e._v(" "),v("p",[e._v("影响功能:支持 nv17 网络")]),e._v(" "),v("p",[e._v("依赖升级组件:无")]),e._v(" "),v("p",[e._v("注意事项:")]),e._v(" "),v("p",[e._v("编译:先 "),v("code",[e._v("make dist-clean")]),e._v(" 再 "),v("code",[e._v("make")]),e._v(",这样可以防止未能正常升级 "),v("code",[e._v("filecoin-ffi")]),e._v(" 而带来的问题")]),e._v(" "),v("ol",[v("li",[v("p",[e._v("升级后检查 vk 文件是否完整")])]),e._v(" "),v("li",[v("p",[e._v("升级后检查配置文件,升级高度是否正常设置,配置文件默认在 "),v("code",[e._v("~/.venus/config.json")]),e._v(" :")]),e._v(" "),v("div",{staticClass:"language- extra-class"},[v("pre",{pre:!0,attrs:{class:"language-text"}},[v("code",[e._v('# cali\n"upgradeSkyrHeight": 16800\n# mainnet\n"upgradeSkyrHeight": 2383680\n')])])])]),e._v(" "),v("li",[v("p",[e._v("升级后需检查是否正常同步区块")])]),e._v(" "),v("li",[v("p",[e._v("检查主网 v9 actors code,确保与下面输出一样")]),e._v(" "),v("div",{staticClass:"language- extra-class"},[v("pre",{pre:!0,attrs:{class:"language-text"}},[v("code",[e._v("./venus state actor-cids --network-version 17\n\n# 顺序可能会不一样\nNetwork Version: 17\nActor Version: 9\nActor CID\nreward bafk2bzacebezgbbmcm2gbcqwisus5fjvpj7hhmu5ubd37phuku3hmkfulxm2o\nsystem bafk2bzaceagvlo2jtahj7dloshrmwfulrd6e2izqev32qm46eumf754weec6c\n_manifest bafy2bzaceb6j6666h36xnhksu3ww4kxb6e25niayfgkdnifaqi6m6ooc66i6i\nstoragemarket bafk2bzacec3j7p6gklk64stax5px3xxd7hdtejaepnd4nw7s2adihde6emkcu\nmultisig bafk2bzacec4va3nmugyqjqrs3lqyr2ij67jhjia5frvx7omnh2isha6abxzya\npaymentchannel bafk2bzacebhdvjbjcgupklddfavzef4e4gnkt3xk3rbmgfmk7xhecszhfxeds\nstoragepower bafk2bzacedsetphfajgne4qy3vdrpyd6ekcmtfs2zkjut4r34cvnuoqemdrtw\nverifiedregistry bafk2bzacecf3yodlyudzukumehbuabgqljyhjt5ifiv4vetcfohnvsxzynwga\ndatacap bafk2bzacebb6uy2ys7tapekmtj7apnjg7oyj4ia5t7tlkvbmwtxwv74lb2pug\naccount bafk2bzacect2p7urje3pylrrrjy3tngn6yaih4gtzauuatf2jllk3ksgfiw2y\ncron bafk2bzacebcec3lffmos3nawm5cvwehssxeqwxixoyyfvejy7viszzsxzyu26\ninit bafk2bzacebtdq4zyuxk2fzbdkva6kc4mx75mkbfmldplfntayhbl5wkqou33i\nstorageminer bafk2bzacedyux5hlrildwutvvjdcsvjtwsoc5xnqdjl73ouiukgklekeuyfl4\n")])])])]),e._v(" "),v("li",[v("p",[e._v("若不排查问题,rust 日志级别"),v("strong",[e._v("不建议")]),e._v("设置为 "),v("code",[e._v("trace")]),e._v(",因为会打印较多日志")])]),e._v(" "),v("li",[v("p",[e._v("升级后可以通过命令来 "),v("code",[e._v("./venus state get-actor t01000")]),e._v(" 来确认是否升级成功")])])]),e._v(" "),v("h3",{attrs:{id:"venus-messager"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#venus-messager"}},[e._v("#")]),e._v(" venus-messager")]),e._v(" "),v("p",[e._v("功能:")]),e._v(" "),v("ol",[v("li",[e._v("增加对 basefee 的控制,可以对某个地址单独设置 basefee,当链上 basefee 高于限制的 basefee,消息将不会被推送出去")])]),e._v(" "),v("p",[e._v("依赖升级组件:")]),e._v(" "),v("p",[e._v("注意事项:")]),e._v(" "),v("ol",[v("li",[e._v("升级后观察消息能否正常上链")])]),e._v(" "),v("h3",{attrs:{id:"venus-miner"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#venus-miner"}},[e._v("#")]),e._v(" venus-miner")]),e._v(" "),v("p",[e._v("影响功能:")]),e._v(" "),v("p",[e._v("依赖升级组件:")]),e._v(" "),v("p",[e._v("注意事项:")]),e._v(" "),v("ol",[v("li",[e._v("从 "),v("code",[e._v("1.7.*")]),e._v("升级到"),v("code",[e._v("v1.8.0")]),e._v("会自动迁移配置文件,从 "),v("code",[e._v("1.6.*")]),e._v(" 升级到"),v("code",[e._v("v1.8.0")]),e._v("需重新初始化"),v("code",[e._v("repo")]),e._v("(init),"),v("a",{attrs:{href:"https://github.com/filecoin-project/venus-miner/blob/master/docs/zh/CHANGELOG.md#%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9-2",target:"_blank",rel:"noopener noreferrer"}},[e._v("参考"),v("OutboundLink")],1)]),e._v(" "),v("li",[e._v("升级后能否正常出块")])]),e._v(" "),v("h3",{attrs:{id:"venus-gateway"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#venus-gateway"}},[e._v("#")]),e._v(" venus-gateway")]),e._v(" "),v("p",[e._v("影响功能:")]),e._v(" "),v("p",[e._v("注意事项:")]),e._v(" "),v("p",[e._v("编译:先 "),v("code",[e._v("make dist-clean")]),e._v(" 再 "),v("code",[e._v("make")])]),e._v(" "),v("ol",[v("li",[e._v("升级后检查钱包:"),v("code",[e._v("./venus-gateway wallet list")])]),e._v(" "),v("li",[e._v("升级后检查矿工:"),v("code",[e._v("./venus-gateway miner list")])])]),e._v(" "),v("h3",{attrs:{id:"venus-market"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#venus-market"}},[e._v("#")]),e._v(" venus-market")]),e._v(" "),v("p",[e._v("影响功能:")]),e._v(" "),v("p",[e._v("注意事项:")]),e._v(" "),v("p",[e._v("编译:先 "),v("code",[e._v("make dist-clean")]),e._v(" 再 "),v("code",[e._v("make")])]),e._v(" "),v("h3",{attrs:{id:"venus-wallet"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#venus-wallet"}},[e._v("#")]),e._v(" venus-wallet")]),e._v(" "),v("p",[e._v("影响功能:")]),e._v(" "),v("p",[e._v("注意事项:")]),e._v(" "),v("ol",[v("li",[e._v("启动后需要解锁钱包")]),e._v(" "),v("li",[e._v("是否注册到 gateway")])])])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[54],{444:function(e,a,v){"use strict";v.r(a);var t=v(17),s=Object(t.a)({},(function(){var e=this,a=e.$createElement,v=e._self._c||a;return v("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[v("h1",{attrs:{id:"nv17-各组件升级文档"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#nv17-各组件升级文档"}},[e._v("#")]),e._v(" nv17 各组件升级文档")]),e._v(" "),v("p",[e._v("如果 "),v("code",[e._v("venus-wallet")]),e._v(" 或者 "),v("code",[e._v("venus-gateway")]),e._v(" 的版本从 "),v("code",[e._v("v1.6.x")]),e._v(" 升级到 "),v("code",[e._v("v1.8.0")]),e._v(",请先阅读 "),v("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions/5265",target:"_blank",rel:"noopener noreferrer"}},[e._v("Venus 组件 v1.7.0 使用注意事项 "),v("OutboundLink")],1),e._v(",注意 "),v("code",[e._v("venus-gateway")]),e._v(" 和 "),v("code",[e._v("venus-wallet")]),e._v("的升级顺序。")]),e._v(" "),v("h3",{attrs:{id:"时间线"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#时间线"}},[e._v("#")]),e._v(" 时间线")]),e._v(" "),v("p",[e._v("升级时间:2022-11-30T14:00:00Z,北京时间是 2022-11-30 22:00:00")]),e._v(" "),v("h3",{attrs:{id:"各组件版本"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#各组件版本"}},[e._v("#")]),e._v(" 各组件版本")]),e._v(" "),v("ul",[v("li",[v("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions/5386#discussioncomment-3893446",target:"_blank",rel:"noopener noreferrer"}},[e._v("calibrationnet"),v("OutboundLink")],1)]),e._v(" "),v("li",[v("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions/5386#discussioncomment-3893449",target:"_blank",rel:"noopener noreferrer"}},[e._v("mainnet"),v("OutboundLink")],1)])]),e._v(" "),v("h3",{attrs:{id:"venus-auth"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#venus-auth"}},[e._v("#")]),e._v(" venus-auth")]),e._v(" "),v("p",[e._v("影响功能:")]),e._v(" "),v("p",[e._v("依赖升级组件:无")]),e._v(" "),v("p",[e._v("注意事项:")]),e._v(" "),v("ol",[v("li",[v("code",[e._v("miners")]),e._v(" 表增加字段 "),v("code",[e._v("open_mining")]),e._v(",0 表示不出块,1 表示出块,默认是 1")])]),e._v(" "),v("h3",{attrs:{id:"venus"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#venus"}},[e._v("#")]),e._v(" venus")]),e._v(" "),v("p",[e._v("影响功能:支持 nv17 网络")]),e._v(" "),v("p",[e._v("依赖升级组件:无")]),e._v(" "),v("p",[e._v("注意事项:")]),e._v(" "),v("p",[e._v("编译:先 "),v("code",[e._v("make dist-clean")]),e._v(" 再 "),v("code",[e._v("make")]),e._v(",这样可以防止未能正常升级 "),v("code",[e._v("filecoin-ffi")]),e._v(" 而带来的问题")]),e._v(" "),v("ol",[v("li",[v("p",[e._v("升级后检查 vk 文件是否完整")])]),e._v(" "),v("li",[v("p",[e._v("升级后检查配置文件,升级高度是否正常设置,配置文件默认在 "),v("code",[e._v("~/.venus/config.json")]),e._v(" :")]),e._v(" "),v("div",{staticClass:"language- extra-class"},[v("pre",{pre:!0,attrs:{class:"language-text"}},[v("code",[e._v('# cali\n"upgradeSkyrHeight": 16800\n# mainnet\n"upgradeSkyrHeight": 2383680\n')])])])]),e._v(" "),v("li",[v("p",[e._v("升级后需检查是否正常同步区块")])]),e._v(" "),v("li",[v("p",[e._v("检查主网 v9 actors code,确保与下面输出一样")]),e._v(" "),v("div",{staticClass:"language- extra-class"},[v("pre",{pre:!0,attrs:{class:"language-text"}},[v("code",[e._v("./venus state actor-cids --network-version 17\n\n# 顺序可能会不一样\nNetwork Version: 17\nActor Version: 9\nActor CID\nreward bafk2bzacebezgbbmcm2gbcqwisus5fjvpj7hhmu5ubd37phuku3hmkfulxm2o\nsystem bafk2bzaceagvlo2jtahj7dloshrmwfulrd6e2izqev32qm46eumf754weec6c\n_manifest bafy2bzaceb6j6666h36xnhksu3ww4kxb6e25niayfgkdnifaqi6m6ooc66i6i\nstoragemarket bafk2bzacec3j7p6gklk64stax5px3xxd7hdtejaepnd4nw7s2adihde6emkcu\nmultisig bafk2bzacec4va3nmugyqjqrs3lqyr2ij67jhjia5frvx7omnh2isha6abxzya\npaymentchannel bafk2bzacebhdvjbjcgupklddfavzef4e4gnkt3xk3rbmgfmk7xhecszhfxeds\nstoragepower bafk2bzacedsetphfajgne4qy3vdrpyd6ekcmtfs2zkjut4r34cvnuoqemdrtw\nverifiedregistry bafk2bzacecf3yodlyudzukumehbuabgqljyhjt5ifiv4vetcfohnvsxzynwga\ndatacap bafk2bzacebb6uy2ys7tapekmtj7apnjg7oyj4ia5t7tlkvbmwtxwv74lb2pug\naccount bafk2bzacect2p7urje3pylrrrjy3tngn6yaih4gtzauuatf2jllk3ksgfiw2y\ncron bafk2bzacebcec3lffmos3nawm5cvwehssxeqwxixoyyfvejy7viszzsxzyu26\ninit bafk2bzacebtdq4zyuxk2fzbdkva6kc4mx75mkbfmldplfntayhbl5wkqou33i\nstorageminer bafk2bzacedyux5hlrildwutvvjdcsvjtwsoc5xnqdjl73ouiukgklekeuyfl4\n")])])])]),e._v(" "),v("li",[v("p",[e._v("若不排查问题,rust 日志级别"),v("strong",[e._v("不建议")]),e._v("设置为 "),v("code",[e._v("trace")]),e._v(",因为会打印较多日志")])]),e._v(" "),v("li",[v("p",[e._v("升级后可以通过命令来 "),v("code",[e._v("./venus state get-actor t01000")]),e._v(" 来确认是否升级成功")])])]),e._v(" "),v("h3",{attrs:{id:"venus-messager"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#venus-messager"}},[e._v("#")]),e._v(" venus-messager")]),e._v(" "),v("p",[e._v("功能:")]),e._v(" "),v("ol",[v("li",[e._v("增加对 basefee 的控制,可以对某个地址单独设置 basefee,当链上 basefee 高于限制的 basefee,消息将不会被推送出去")])]),e._v(" "),v("p",[e._v("依赖升级组件:")]),e._v(" "),v("p",[e._v("注意事项:")]),e._v(" "),v("ol",[v("li",[e._v("升级后观察消息能否正常上链")])]),e._v(" "),v("h3",{attrs:{id:"venus-miner"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#venus-miner"}},[e._v("#")]),e._v(" venus-miner")]),e._v(" "),v("p",[e._v("影响功能:")]),e._v(" "),v("p",[e._v("依赖升级组件:")]),e._v(" "),v("p",[e._v("注意事项:")]),e._v(" "),v("ol",[v("li",[e._v("从 "),v("code",[e._v("1.7.*")]),e._v("升级到"),v("code",[e._v("v1.8.0")]),e._v("会自动迁移配置文件,从 "),v("code",[e._v("1.6.*")]),e._v(" 升级到"),v("code",[e._v("v1.8.0")]),e._v("需重新初始化"),v("code",[e._v("repo")]),e._v("(init),"),v("a",{attrs:{href:"https://github.com/filecoin-project/venus-miner/blob/master/docs/zh/CHANGELOG.md#%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9-2",target:"_blank",rel:"noopener noreferrer"}},[e._v("参考"),v("OutboundLink")],1)]),e._v(" "),v("li",[e._v("升级后能否正常出块")])]),e._v(" "),v("h3",{attrs:{id:"venus-gateway"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#venus-gateway"}},[e._v("#")]),e._v(" venus-gateway")]),e._v(" "),v("p",[e._v("影响功能:")]),e._v(" "),v("p",[e._v("注意事项:")]),e._v(" "),v("p",[e._v("编译:先 "),v("code",[e._v("make dist-clean")]),e._v(" 再 "),v("code",[e._v("make")])]),e._v(" "),v("ol",[v("li",[e._v("升级后检查钱包:"),v("code",[e._v("./venus-gateway wallet list")])]),e._v(" "),v("li",[e._v("升级后检查矿工:"),v("code",[e._v("./venus-gateway miner list")])])]),e._v(" "),v("h3",{attrs:{id:"venus-market"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#venus-market"}},[e._v("#")]),e._v(" venus-market")]),e._v(" "),v("p",[e._v("影响功能:")]),e._v(" "),v("p",[e._v("注意事项:")]),e._v(" "),v("p",[e._v("编译:先 "),v("code",[e._v("make dist-clean")]),e._v(" 再 "),v("code",[e._v("make")])]),e._v(" "),v("h3",{attrs:{id:"venus-wallet"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#venus-wallet"}},[e._v("#")]),e._v(" venus-wallet")]),e._v(" "),v("p",[e._v("影响功能:")]),e._v(" "),v("p",[e._v("注意事项:")]),e._v(" "),v("ol",[v("li",[e._v("启动后需要解锁钱包")]),e._v(" "),v("li",[e._v("是否注册到 gateway")])])])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/55.b5e70209.js b/assets/js/55.9c95d352.js similarity index 99% rename from assets/js/55.b5e70209.js rename to assets/js/55.9c95d352.js index fd98ba166..9b625a07e 100644 --- a/assets/js/55.b5e70209.js +++ b/assets/js/55.9c95d352.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[55],{446:function(a,e,t){"use strict";t.r(e);var s=t(17),r=Object(s.a)({},(function(){var a=this,e=a.$createElement,t=a._self._c||e;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h2",{attrs:{id:"nv18-各组件升级文档"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#nv18-各组件升级文档"}},[a._v("#")]),a._v(" nv18 各组件升级文档")]),a._v(" "),t("p",[a._v("如果 venus 各组件的版本从 "),t("code",[a._v("v1.8.x")]),a._v(" 升级到 "),t("code",[a._v("v1.10.0")]),a._v(",请先阅读 "),t("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions/5531",target:"_blank",rel:"noopener noreferrer"}},[a._v("venus chain-service v1.9.* & venus-market v2.5.* upgrade list / 链服务 v1.9.*和订单服务 v2.5.*升级清单"),t("OutboundLink")],1),a._v(",尤其注意 "),t("code",[a._v("venus-auth")]),a._v(" 和 "),t("code",[a._v("venus-market")]),a._v(" 的升级,"),t("code",[a._v("venus-auth")]),a._v(" 升级前需要为每一个矿工都创建一个用户,"),t("code",[a._v("venus-market")]),a._v(" 的启动方式和配置有较大变动。")]),a._v(" "),t("h3",{attrs:{id:"时间线"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#时间线"}},[a._v("#")]),a._v(" 时间线")]),a._v(" "),t("p",[a._v("升级时间:2023-03-14T15:14:00Z,北京时间是 2023-03-14 23:14:00")]),a._v(" "),t("h3",{attrs:{id:"各组件版本"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#各组件版本"}},[a._v("#")]),a._v(" 各组件版本")]),a._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions/5649#discussioncomment-4652920",target:"_blank",rel:"noopener noreferrer"}},[a._v("calibrationnet"),t("OutboundLink")],1)]),a._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions/5649#discussioncomment-4652933",target:"_blank",rel:"noopener noreferrer"}},[a._v("mainnet"),t("OutboundLink")],1)])]),a._v(" "),t("h3",{attrs:{id:"venus"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus"}},[a._v("#")]),a._v(" venus")]),a._v(" "),t("p",[a._v("影响功能:支持 nv18 网络")]),a._v(" "),t("p",[a._v("依赖升级组件:无")]),a._v(" "),t("p",[a._v("注意事项:")]),a._v(" "),t("ol",[t("li",[t("p",[a._v("编译:先 "),t("code",[a._v("make dist-clean")]),a._v(" 再 "),t("code",[a._v("make")]),a._v(",这样可以防止未能正常升级 "),t("code",[a._v("filecoin-ffi")]),a._v(" 而带来的问题")])]),a._v(" "),t("li",[t("p",[a._v("升级后检查 vk 文件是否完整")])]),a._v(" "),t("li",[t("p",[a._v("升级后检查配置文件,通过日志检查 "),t("code",[a._v("AllowableClockDriftSecs")]),a._v(" "),t("code",[a._v("UpgradeHyggeHeight")]),a._v(" 和 "),t("code",[a._v("UpgradeHyggeHeight")]),a._v(" 是否正常 :")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("# cali\nAllowableClockDriftSecs:1\nEip155ChainID:314159\nUpgradeHyggeHeight:322354\n# mainnet\nAllowableClockDriftSecs:1\nEip155ChainID:314\nUpgradeHyggeHeight:2683348\n")])])])]),a._v(" "),t("li",[t("p",[a._v("升级后需检查是否正常同步区块")])]),a._v(" "),t("li",[t("p",[a._v("检查主网 v10 actors code,确保与下面输出一样")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("./venus state actor-cids --network-version 18\n\n# 顺序可能会不一样\nNetwork Version: 18\nActor Version: 10\nActor CID \ndatacap bafk2bzacealj5uk7wixhvk7l5tnredtelralwnceafqq34nb2lbylhtuyo64u \nevm bafk2bzaceahmzdxhqsm7cu2mexusjp6frm7r4kdesvti3etv5evfqboos2j4g \ninit bafk2bzaced2f5rhir3hbpqbz5ght7ohv2kgj42g5ykxrypuo2opxsup3ykwl6 \naccount bafk2bzaceampw4romta75hyz5p4cqriypmpbgnkxncgxgqn6zptv5lsp2w2bo \nethaccount bafk2bzaceaqoc5zakbhjxn3jljc4lxnthllzunhdor7sxhwgmskvc6drqc3fa \nmultisig bafk2bzaceduf3hayh63jnl4z2knxv7cnrdenoubni22fxersc4octlwpxpmy4 \npaymentchannel bafk2bzaceartlg4mrbwgzcwric6mtvyawpbgx2xclo2vj27nna57nxynf3pgc \nreward bafk2bzacebnhtaejfjtzymyfmbdrfmo7vgj3zsof6zlucbmkhrvcuotw5dxpq \nstoragemarket bafk2bzaceclejwjtpu2dhw3qbx6ow7b4pmhwa7ocrbbiqwp36sq5yeg6jz2bc \nstorageminer bafk2bzaced4h7noksockro7glnssz2jnmo2rpzd7dvnmfs4p24zx3h6gtx47s \nverifiedregistry bafk2bzacedfel6edzqpe5oujno7fog4i526go4dtcs6vwrdtbpy2xq6htvcg6 \neam bafk2bzacedrpm5gbleh4xkyo2jvs7p5g6f34soa6dpv7ashcdgy676snsum6g \nplaceholder bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro \nstoragepower bafk2bzacec4ay4crzo73ypmh7o3fjendhbqrxake46bprabw67fvwjz5q6ixq \nsystem bafk2bzacedakk5nofebyup4m7nvx6djksfwhnxzrfuq4oyemhpl4lllaikr64 \ncron bafk2bzacedcbtsifegiu432m5tysjzkxkmoczxscb6hqpmrr6img7xzdbbs2g\n")])])])]),a._v(" "),t("li",[t("p",[a._v("若不排查问题,rust 日志级别"),t("strong",[a._v("不建议")]),a._v("设置为 "),t("code",[a._v("trace")]),a._v(",因为会打印较多日志")])]),a._v(" "),t("li",[t("p",[a._v("升级后可以通过命令来 "),t("code",[a._v("./venus state get-actor t01000")]),a._v(" 来确认是否升级成功")])]),a._v(" "),t("li",[t("p",[a._v("actor 迁移")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("预迁移高度是升级高度前 60 个高度:2683288\npre-migration 开始:STARTING pre-migration 结束:COMPLETED pre-migration\nmigration 开始:STARTING migration 结束:COMPLETED migration\n")])])])]),a._v(" "),t("li",[t("p",[a._v("配置变更")]),a._v(" "),t("div",{staticClass:"language-json extra-class"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[a._v("# 增加 fevm 相关配置,其中 enableEthRPC 字段用来控制是否启用 ETH RPC,默认是 "),t("span",{pre:!0,attrs:{class:"token boolean"}},[a._v("false")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token property"}},[a._v('"fevm"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[a._v('"enableEthRPC"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[a._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[a._v('"ethTxHashMappingLifetimeDays"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[a._v('"event"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[a._v('"enableRealTimeFilterAPI"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[a._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[a._v('"enableHistoricFilterAPI"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[a._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[a._v('"filterTTL"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[a._v('"24h0m0s"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[a._v('"maxFilters"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("100")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[a._v('"maxFilterResults"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("10000")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[a._v('"maxFilterHeightRange"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("2880")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[a._v('"databasePath"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[a._v('""')]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n\n# 增加 allowableClockDriftSecs 字段,默认是 "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token property"}},[a._v('"parameters"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[a._v('"allowableClockDriftSecs"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n")])])])])]),a._v(" "),t("h3",{attrs:{id:"venus-auth"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-auth"}},[a._v("#")]),a._v(" venus-auth")]),a._v(" "),t("p",[a._v("影响功能:")]),a._v(" "),t("p",[a._v("依赖升级组件:无")]),a._v(" "),t("p",[a._v("注意事项:")]),a._v(" "),t("ol",[t("li",[a._v("命令行能否正常使用")])]),a._v(" "),t("h3",{attrs:{id:"venus-messager"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-messager"}},[a._v("#")]),a._v(" venus-messager")]),a._v(" "),t("p",[a._v("功能:")]),a._v(" "),t("ol",[t("li",[a._v("补充对接口权限的验证")])]),a._v(" "),t("p",[a._v("依赖升级组件:")]),a._v(" "),t("p",[a._v("注意事项:")]),a._v(" "),t("ol",[t("li",[t("p",[a._v("升级后观察能够正常收消息")])]),a._v(" "),t("li",[t("p",[a._v("升级后观察消息能否正常上链")])]),a._v(" "),t("li",[t("p",[t("code",[a._v("ReplacedMsg")]),a._v(" 更名为 "),t("code",[a._v("NonceConflictMsg")])])])]),a._v(" "),t("h3",{attrs:{id:"venus-miner"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-miner"}},[a._v("#")]),a._v(" venus-miner")]),a._v(" "),t("p",[a._v("影响功能:")]),a._v(" "),t("p",[a._v("依赖升级组件:")]),a._v(" "),t("p",[a._v("注意事项:")]),a._v(" "),t("ol",[t("li",[a._v("升级后能否正常出块")])]),a._v(" "),t("h3",{attrs:{id:"venus-gateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-gateway"}},[a._v("#")]),a._v(" venus-gateway")]),a._v(" "),t("p",[a._v("影响功能:")]),a._v(" "),t("p",[a._v("注意事项:")]),a._v(" "),t("p",[a._v("编译:先 "),t("code",[a._v("make dist-clean")]),a._v(" 再 "),t("code",[a._v("make")])]),a._v(" "),t("ol",[t("li",[a._v("升级后检查钱包:"),t("code",[a._v("./venus-gateway wallet list")])]),a._v(" "),t("li",[a._v("升级后检查矿工:"),t("code",[a._v("./venus-gateway miner list")])])]),a._v(" "),t("h3",{attrs:{id:"venus-market"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-market"}},[a._v("#")]),a._v(" venus-market")]),a._v(" "),t("p",[a._v("影响功能:")]),a._v(" "),t("p",[a._v("注意事项:")]),a._v(" "),t("p",[a._v("编译:先 "),t("code",[a._v("make dist-clean")]),a._v(" 再 "),t("code",[a._v("make")])]),a._v(" "),t("h3",{attrs:{id:"venus-wallet"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-wallet"}},[a._v("#")]),a._v(" venus-wallet")]),a._v(" "),t("p",[a._v("影响功能:")]),a._v(" "),t("p",[a._v("注意事项:")]),a._v(" "),t("ol",[t("li",[a._v("启动后需要解锁钱包")]),a._v(" "),t("li",[a._v("是否注册到 gateway")])]),a._v(" "),t("h3",{attrs:{id:"venus-sector-manager"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-sector-manager"}},[a._v("#")]),a._v(" venus-sector-manager")]),a._v(" "),t("p",[a._v("编译:先 "),t("code",[a._v("make dist-clean")]),a._v(" 再 "),t("code",[a._v("make")])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[55],{445:function(a,e,t){"use strict";t.r(e);var s=t(17),r=Object(s.a)({},(function(){var a=this,e=a.$createElement,t=a._self._c||e;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h2",{attrs:{id:"nv18-各组件升级文档"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#nv18-各组件升级文档"}},[a._v("#")]),a._v(" nv18 各组件升级文档")]),a._v(" "),t("p",[a._v("如果 venus 各组件的版本从 "),t("code",[a._v("v1.8.x")]),a._v(" 升级到 "),t("code",[a._v("v1.10.0")]),a._v(",请先阅读 "),t("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions/5531",target:"_blank",rel:"noopener noreferrer"}},[a._v("venus chain-service v1.9.* & venus-market v2.5.* upgrade list / 链服务 v1.9.*和订单服务 v2.5.*升级清单"),t("OutboundLink")],1),a._v(",尤其注意 "),t("code",[a._v("venus-auth")]),a._v(" 和 "),t("code",[a._v("venus-market")]),a._v(" 的升级,"),t("code",[a._v("venus-auth")]),a._v(" 升级前需要为每一个矿工都创建一个用户,"),t("code",[a._v("venus-market")]),a._v(" 的启动方式和配置有较大变动。")]),a._v(" "),t("h3",{attrs:{id:"时间线"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#时间线"}},[a._v("#")]),a._v(" 时间线")]),a._v(" "),t("p",[a._v("升级时间:2023-03-14T15:14:00Z,北京时间是 2023-03-14 23:14:00")]),a._v(" "),t("h3",{attrs:{id:"各组件版本"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#各组件版本"}},[a._v("#")]),a._v(" 各组件版本")]),a._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions/5649#discussioncomment-4652920",target:"_blank",rel:"noopener noreferrer"}},[a._v("calibrationnet"),t("OutboundLink")],1)]),a._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions/5649#discussioncomment-4652933",target:"_blank",rel:"noopener noreferrer"}},[a._v("mainnet"),t("OutboundLink")],1)])]),a._v(" "),t("h3",{attrs:{id:"venus"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus"}},[a._v("#")]),a._v(" venus")]),a._v(" "),t("p",[a._v("影响功能:支持 nv18 网络")]),a._v(" "),t("p",[a._v("依赖升级组件:无")]),a._v(" "),t("p",[a._v("注意事项:")]),a._v(" "),t("ol",[t("li",[t("p",[a._v("编译:先 "),t("code",[a._v("make dist-clean")]),a._v(" 再 "),t("code",[a._v("make")]),a._v(",这样可以防止未能正常升级 "),t("code",[a._v("filecoin-ffi")]),a._v(" 而带来的问题")])]),a._v(" "),t("li",[t("p",[a._v("升级后检查 vk 文件是否完整")])]),a._v(" "),t("li",[t("p",[a._v("升级后检查配置文件,通过日志检查 "),t("code",[a._v("AllowableClockDriftSecs")]),a._v(" "),t("code",[a._v("UpgradeHyggeHeight")]),a._v(" 和 "),t("code",[a._v("UpgradeHyggeHeight")]),a._v(" 是否正常 :")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("# cali\nAllowableClockDriftSecs:1\nEip155ChainID:314159\nUpgradeHyggeHeight:322354\n# mainnet\nAllowableClockDriftSecs:1\nEip155ChainID:314\nUpgradeHyggeHeight:2683348\n")])])])]),a._v(" "),t("li",[t("p",[a._v("升级后需检查是否正常同步区块")])]),a._v(" "),t("li",[t("p",[a._v("检查主网 v10 actors code,确保与下面输出一样")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("./venus state actor-cids --network-version 18\n\n# 顺序可能会不一样\nNetwork Version: 18\nActor Version: 10\nActor CID \ndatacap bafk2bzacealj5uk7wixhvk7l5tnredtelralwnceafqq34nb2lbylhtuyo64u \nevm bafk2bzaceahmzdxhqsm7cu2mexusjp6frm7r4kdesvti3etv5evfqboos2j4g \ninit bafk2bzaced2f5rhir3hbpqbz5ght7ohv2kgj42g5ykxrypuo2opxsup3ykwl6 \naccount bafk2bzaceampw4romta75hyz5p4cqriypmpbgnkxncgxgqn6zptv5lsp2w2bo \nethaccount bafk2bzaceaqoc5zakbhjxn3jljc4lxnthllzunhdor7sxhwgmskvc6drqc3fa \nmultisig bafk2bzaceduf3hayh63jnl4z2knxv7cnrdenoubni22fxersc4octlwpxpmy4 \npaymentchannel bafk2bzaceartlg4mrbwgzcwric6mtvyawpbgx2xclo2vj27nna57nxynf3pgc \nreward bafk2bzacebnhtaejfjtzymyfmbdrfmo7vgj3zsof6zlucbmkhrvcuotw5dxpq \nstoragemarket bafk2bzaceclejwjtpu2dhw3qbx6ow7b4pmhwa7ocrbbiqwp36sq5yeg6jz2bc \nstorageminer bafk2bzaced4h7noksockro7glnssz2jnmo2rpzd7dvnmfs4p24zx3h6gtx47s \nverifiedregistry bafk2bzacedfel6edzqpe5oujno7fog4i526go4dtcs6vwrdtbpy2xq6htvcg6 \neam bafk2bzacedrpm5gbleh4xkyo2jvs7p5g6f34soa6dpv7ashcdgy676snsum6g \nplaceholder bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro \nstoragepower bafk2bzacec4ay4crzo73ypmh7o3fjendhbqrxake46bprabw67fvwjz5q6ixq \nsystem bafk2bzacedakk5nofebyup4m7nvx6djksfwhnxzrfuq4oyemhpl4lllaikr64 \ncron bafk2bzacedcbtsifegiu432m5tysjzkxkmoczxscb6hqpmrr6img7xzdbbs2g\n")])])])]),a._v(" "),t("li",[t("p",[a._v("若不排查问题,rust 日志级别"),t("strong",[a._v("不建议")]),a._v("设置为 "),t("code",[a._v("trace")]),a._v(",因为会打印较多日志")])]),a._v(" "),t("li",[t("p",[a._v("升级后可以通过命令来 "),t("code",[a._v("./venus state get-actor t01000")]),a._v(" 来确认是否升级成功")])]),a._v(" "),t("li",[t("p",[a._v("actor 迁移")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("预迁移高度是升级高度前 60 个高度:2683288\npre-migration 开始:STARTING pre-migration 结束:COMPLETED pre-migration\nmigration 开始:STARTING migration 结束:COMPLETED migration\n")])])])]),a._v(" "),t("li",[t("p",[a._v("配置变更")]),a._v(" "),t("div",{staticClass:"language-json extra-class"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[a._v("# 增加 fevm 相关配置,其中 enableEthRPC 字段用来控制是否启用 ETH RPC,默认是 "),t("span",{pre:!0,attrs:{class:"token boolean"}},[a._v("false")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token property"}},[a._v('"fevm"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[a._v('"enableEthRPC"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[a._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[a._v('"ethTxHashMappingLifetimeDays"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[a._v('"event"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[a._v('"enableRealTimeFilterAPI"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[a._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[a._v('"enableHistoricFilterAPI"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[a._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[a._v('"filterTTL"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[a._v('"24h0m0s"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[a._v('"maxFilters"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("100")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[a._v('"maxFilterResults"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("10000")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[a._v('"maxFilterHeightRange"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("2880")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[a._v('"databasePath"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[a._v('""')]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n\n# 增加 allowableClockDriftSecs 字段,默认是 "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token property"}},[a._v('"parameters"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[a._v('"allowableClockDriftSecs"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n")])])])])]),a._v(" "),t("h3",{attrs:{id:"venus-auth"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-auth"}},[a._v("#")]),a._v(" venus-auth")]),a._v(" "),t("p",[a._v("影响功能:")]),a._v(" "),t("p",[a._v("依赖升级组件:无")]),a._v(" "),t("p",[a._v("注意事项:")]),a._v(" "),t("ol",[t("li",[a._v("命令行能否正常使用")])]),a._v(" "),t("h3",{attrs:{id:"venus-messager"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-messager"}},[a._v("#")]),a._v(" venus-messager")]),a._v(" "),t("p",[a._v("功能:")]),a._v(" "),t("ol",[t("li",[a._v("补充对接口权限的验证")])]),a._v(" "),t("p",[a._v("依赖升级组件:")]),a._v(" "),t("p",[a._v("注意事项:")]),a._v(" "),t("ol",[t("li",[t("p",[a._v("升级后观察能够正常收消息")])]),a._v(" "),t("li",[t("p",[a._v("升级后观察消息能否正常上链")])]),a._v(" "),t("li",[t("p",[t("code",[a._v("ReplacedMsg")]),a._v(" 更名为 "),t("code",[a._v("NonceConflictMsg")])])])]),a._v(" "),t("h3",{attrs:{id:"venus-miner"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-miner"}},[a._v("#")]),a._v(" venus-miner")]),a._v(" "),t("p",[a._v("影响功能:")]),a._v(" "),t("p",[a._v("依赖升级组件:")]),a._v(" "),t("p",[a._v("注意事项:")]),a._v(" "),t("ol",[t("li",[a._v("升级后能否正常出块")])]),a._v(" "),t("h3",{attrs:{id:"venus-gateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-gateway"}},[a._v("#")]),a._v(" venus-gateway")]),a._v(" "),t("p",[a._v("影响功能:")]),a._v(" "),t("p",[a._v("注意事项:")]),a._v(" "),t("p",[a._v("编译:先 "),t("code",[a._v("make dist-clean")]),a._v(" 再 "),t("code",[a._v("make")])]),a._v(" "),t("ol",[t("li",[a._v("升级后检查钱包:"),t("code",[a._v("./venus-gateway wallet list")])]),a._v(" "),t("li",[a._v("升级后检查矿工:"),t("code",[a._v("./venus-gateway miner list")])])]),a._v(" "),t("h3",{attrs:{id:"venus-market"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-market"}},[a._v("#")]),a._v(" venus-market")]),a._v(" "),t("p",[a._v("影响功能:")]),a._v(" "),t("p",[a._v("注意事项:")]),a._v(" "),t("p",[a._v("编译:先 "),t("code",[a._v("make dist-clean")]),a._v(" 再 "),t("code",[a._v("make")])]),a._v(" "),t("h3",{attrs:{id:"venus-wallet"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-wallet"}},[a._v("#")]),a._v(" venus-wallet")]),a._v(" "),t("p",[a._v("影响功能:")]),a._v(" "),t("p",[a._v("注意事项:")]),a._v(" "),t("ol",[t("li",[a._v("启动后需要解锁钱包")]),a._v(" "),t("li",[a._v("是否注册到 gateway")])]),a._v(" "),t("h3",{attrs:{id:"venus-sector-manager"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-sector-manager"}},[a._v("#")]),a._v(" venus-sector-manager")]),a._v(" "),t("p",[a._v("编译:先 "),t("code",[a._v("make dist-clean")]),a._v(" 再 "),t("code",[a._v("make")])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/57.9f3cefcd.js b/assets/js/57.b4fdfbab.js similarity index 99% rename from assets/js/57.9f3cefcd.js rename to assets/js/57.b4fdfbab.js index b30657a8c..b60e8e1c1 100644 --- a/assets/js/57.9f3cefcd.js +++ b/assets/js/57.b4fdfbab.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[57],{448:function(v,a,e){"use strict";e.r(a);var _=e(17),t=Object(_.a)({},(function(){var v=this,a=v.$createElement,e=v._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[e("h1",{attrs:{id:"venus-各组件升级文档"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#venus-各组件升级文档"}},[v._v("#")]),v._v(" Venus 各组件升级文档")]),v._v(" "),e("h2",{attrs:{id:"注意事项"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#注意事项"}},[v._v("#")]),v._v(" 注意事项")]),v._v(" "),e("ol",[e("li",[v._v("所有组件全部更换")]),v._v(" "),e("li",[v._v("更新完通过 curl 命令调用 "),e("code",[v._v("Version")]),v._v(" 接口检查版本号,各组件接口调用方式:https://github.com/filecoin-project/venus/issues/5132")]),v._v(" "),e("li",[v._v("pre/pro消息上链的情况")]),v._v(" "),e("li",[v._v("WD消息上链的情况")]),v._v(" "),e("li",[v._v("出块情况是否正常")]),v._v(" "),e("li",[v._v("gas fee 相关设置是否生效")])]),v._v(" "),e("h2",{attrs:{id:"需要升级的组件"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#需要升级的组件"}},[v._v("#")]),v._v(" 需要升级的组件")]),v._v(" "),e("table",[e("thead",[e("tr",[e("th",[v._v("组件名")]),v._v(" "),e("th",[v._v("tag")]),v._v(" "),e("th",[v._v("commit")])])]),v._v(" "),e("tbody",[e("tr",[e("td",[v._v("sophon-auth")]),v._v(" "),e("td",[v._v("v1.14.0")]),v._v(" "),e("td",[v._v("7caadbc")])]),v._v(" "),e("tr",[e("td",[v._v("venus")]),v._v(" "),e("td",[v._v("v1.14.2")]),v._v(" "),e("td",[v._v("9204048")])]),v._v(" "),e("tr",[e("td",[v._v("sophon-messager")]),v._v(" "),e("td",[v._v("v1.14.0")]),v._v(" "),e("td",[v._v("e5f8371")])]),v._v(" "),e("tr",[e("td",[v._v("soohon-gateway")]),v._v(" "),e("td",[v._v("v1.14.0")]),v._v(" "),e("td",[v._v("1adf038")])]),v._v(" "),e("tr",[e("td",[v._v("venus-wallet")]),v._v(" "),e("td",[v._v("v1.14.0")]),v._v(" "),e("td",[v._v("b478cd0")])]),v._v(" "),e("tr",[e("td",[v._v("sophon-miner")]),v._v(" "),e("td",[v._v("v1.14.0")]),v._v(" "),e("td",[v._v("9ca976c")])]),v._v(" "),e("tr",[e("td",[v._v("droplet")]),v._v(" "),e("td",[v._v("v2.10.0")]),v._v(" "),e("td",[v._v("6daf168")])]),v._v(" "),e("tr",[e("td",[v._v("damocles-manager")]),v._v(" "),e("td",[v._v("v0.9.2")]),v._v(" "),e("td",[v._v("f3c5400")])]),v._v(" "),e("tr",[e("td",[v._v("damocles-worker")]),v._v(" "),e("td",[v._v("v0.9.2")]),v._v(" "),e("td",[v._v("f3c5400")])])])]),v._v(" "),e("h3",{attrs:{id:"升级顺序"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#升级顺序"}},[v._v("#")]),v._v(" 升级顺序")]),v._v(" "),e("ol",[e("li",[v._v("sophon-auth")]),v._v(" "),e("li",[v._v("venus")]),v._v(" "),e("li",[v._v("soohon-gateway")]),v._v(" "),e("li",[v._v("sophon-messager")]),v._v(" "),e("li",[v._v("sophon-miner")]),v._v(" "),e("li",[v._v("droplet")]),v._v(" "),e("li",[v._v("venus-wallet")]),v._v(" "),e("li",[v._v("damocles-manager")]),v._v(" "),e("li",[v._v("damocles-worker")])]),v._v(" "),e("h3",{attrs:{id:"sophon-auth"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sophon-auth"}},[v._v("#")]),v._v(" sophon-auth")]),v._v(" "),e("p",[v._v("影响功能:")]),v._v(" "),e("ul",[e("li",[v._v("其他组件对获取 auth 的服务")])]),v._v(" "),e("p",[v._v("依赖升级组件: 无")]),v._v(" "),e("p",[v._v("注意事项:")]),v._v(" "),e("ul",[e("li",[v._v("启动后能否正常鉴权")])]),v._v(" "),e("h3",{attrs:{id:"venus"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#venus"}},[v._v("#")]),v._v(" venus")]),v._v(" "),e("p",[v._v("影响功能:无")]),v._v(" "),e("p",[v._v("依赖升级组件: sophon-auth")]),v._v(" "),e("p",[v._v("注意事项:")]),v._v(" "),e("p",[v._v("编译:先 "),e("code",[v._v("make dist-clean")]),v._v(" 再 "),e("code",[v._v("make")]),v._v(",这样可以防止未能正常升级 "),e("code",[v._v("filecoin-ffi")]),v._v(" 而带来的问题\n"),e("strong",[v._v("如果 "),e("code",[v._v("~/.venus")]),v._v(" 存在且需要导入快照,需要先删除 "),e("code",[v._v("~/.venus/version")]),v._v(" 文件再导入快照")])]),v._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[v._v("本次升级 migration(actor迁移)使用的CPU越多,消耗的内存也越多,所以需要限制CPU使用的数量。\n在 venus 中可以通过环境变量(VENUS_MIGRATION_MAX_WORKER_COUN)来控制 migration 使用的CPU数量,\n例子:export VENUS_MIGRATION_MAX_WORKER_COUNT=13。以下是对于不同机器内存时,建议设置 VENUS_MIGRATION_MAX_WORKER_COUNT 的数量:\n\n48G VENUS_MIGRATION_MAX_WORKER_COUNT=13\n64G VENUS_MIGRATION_MAX_WORKER_COUNT=18\n96G VENUS_MIGRATION_MAX_WORKER_COUNT=24\n")])])]),e("ol",[e("li",[e("p",[v._v("升级后检查vk文件是否完整")])]),v._v(" "),e("li",[e("p",[v._v("升级后执行命令 "),e("code",[v._v("./venus state network-info")]),v._v(",然后检查通过日志检查 UpgradeWatermelonHeight 是否正常:")]),v._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[v._v("# cali\nUpgradeWatermelonHeight: 1013134\n# mainnet\nUpgradeWatermelonHeight: 3469380\n")])])])]),v._v(" "),e("li",[e("p",[v._v("升级后需检查是否正常同步区块")])]),v._v(" "),e("li",[e("p",[v._v("检查主网 v12 actors code,确保与下面输出一样")]),v._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[v._v("./venus state actor-cids --network-version 21\n\n# 顺序可能会不一样\nNetwork Version: 21\nActor Version: 12\nActor CID\ndatacap bafk2bzacebpiwb2ml4qbnnaayxumtk43ryhc63exdgnhivy3hwgmzemawsmpq\nethaccount bafk2bzaceb4gkau2vgsijcxpfuq33bd7w3efr2rrhxrwiacjmns2ntdiamswq\nreward bafk2bzacealqnxn5lwzwexd6reav4dppypquklx2ujlnvaxiqk2tzstyvkp5u\nverifiedregistry bafk2bzacedudgflxc75c77c6zkmfyq4u2xuk7k6xw6dfdccarjrvxx453b77q\neam bafk2bzaceb3elj4hfbbjp7g5bptc7su7mptszl4nlqfedilxvstjo5ungm6oe\nmultisig bafk2bzacecw5lyp3n3t67xdwrmo36h4z7afc3lobmmr6wg55w6yjzg5jhmh42\nstoragemarket bafk2bzacedylkg5am446lcuih4voyzdn4yjeqfsxfzh5b6mcuhx4mok5ph5c4\nsystem bafk2bzacebfqrja2hip7esf4eafxjmu6xcogoqu5xxtgdg7xa5szgvvdguchu\naccount bafk2bzaceboftg75mdiba7xbo2i3uvgtca4brhnr3u5ptihonixgpnrvhpxoa\ncron bafk2bzacechxjkfe2cehx4s7skj3wzfpzf7zolds64khrrrs66bhazsemktls\nplaceholder bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro\nstoragepower bafk2bzacecsij5tpfzjpfuckxvccv2p3bdqjklkrfyyoei6lx5dyj5j4fvjm6\nevm bafk2bzacecmnyfiwb52tkbwmm2dsd7ysi3nvuxl3lmspy7pl26wxj4zj7w4wi\ninit bafk2bzacebllyegx5r6lggf6ymyetbp7amacwpuxakhtjvjtvoy2bfkzk3vms\npaymentchannel bafk2bzacectv4cm47bnhga5febf3lo3fq47g72kmmp2xd5s6tcxz7hiqdywa4\nstorageminer bafk2bzacedo75pabe4i2l3hvhtsjmijrcytd2y76xwe573uku25fi7sugqld6\n")])])])]),v._v(" "),e("li",[e("p",[v._v("若不排查问题,rust日志级别"),e("strong",[v._v("不建议")]),v._v("设置为 "),e("code",[v._v("trace")]),v._v(",因为会打印较多日志")])]),v._v(" "),e("li",[e("p",[v._v("升级后可以通过命令来 "),e("code",[v._v("./venus state get-actor t01000")]),v._v(" 来确认是否升级成功")])]),v._v(" "),e("li",[e("p",[v._v("actor 迁移")]),v._v(" "),e("p",[e("strong",[v._v("经测试本次预迁移时间在 20-30 分钟,正式迁移时间在 70 秒左右")])]),v._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[v._v("预迁移高度是升级高度前 180 个高度:\npre-migration 开始:STARTING pre-migration 结束:COMPLETED pre-migration\nmigration 开始:STARTING migration 结束:COMPLETED migration\n")])])])])]),v._v(" "),e("h3",{attrs:{id:"sophon-gateway"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sophon-gateway"}},[v._v("#")]),v._v(" sophon-gateway")]),v._v(" "),e("p",[v._v("影响功能:无")]),v._v(" "),e("p",[v._v("依赖升级组件: sophon-auth")]),v._v(" "),e("p",[v._v("注意事项:")]),v._v(" "),e("ul",[e("li",[v._v("编译时,需要先 "),e("code",[v._v("make dist-clean")]),v._v(" 再 "),e("code",[v._v("make")])])]),v._v(" "),e("h3",{attrs:{id:"sophon-messager"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sophon-messager"}},[v._v("#")]),v._v(" sophon-messager")]),v._v(" "),e("p",[v._v("影响功能:")]),v._v(" "),e("p",[v._v("依赖升级组件: venus, sophon-auth, soohon-gateway")]),v._v(" "),e("p",[v._v("注意事项:")]),v._v(" "),e("ul",[e("li",[v._v("升级之后需要观察能否正常接收消息, 消息能否正常上链")])]),v._v(" "),e("h3",{attrs:{id:"sophon-miner"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sophon-miner"}},[v._v("#")]),v._v(" sophon-miner")]),v._v(" "),e("p",[v._v("影响功能:")]),v._v(" "),e("p",[v._v("依赖升级组件:auth, venus, gateway")]),v._v(" "),e("p",[v._v("注意事项:")]),v._v(" "),e("ul",[e("li",[v._v("配置文件中 [Auth].[Token] 必须配置,且在sophon-auth中具有admin权限,不要使用"),e("code",[v._v("defaultLocalToken")]),v._v("对应的token,应手动创建一个.")])]),v._v(" "),e("h3",{attrs:{id:"droplet"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#droplet"}},[v._v("#")]),v._v(" droplet")]),v._v(" "),e("p",[v._v("影响功能:")]),v._v(" "),e("ul",[e("li",[v._v("支持 v2 版本发单协议")]),v._v(" "),e("li",[v._v("支持离线计算 commP")])]),v._v(" "),e("p",[v._v("依赖升级组件: auth, venus, gateway, messager")]),v._v(" "),e("p",[v._v("注意事项:")]),v._v(" "),e("ul",[e("li",[v._v("升级后能否正常发单和检索")])]),v._v(" "),e("h3",{attrs:{id:"venus-wallet"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#venus-wallet"}},[v._v("#")]),v._v(" venus-wallet")]),v._v(" "),e("p",[v._v("影响功能: 无")]),v._v(" "),e("p",[v._v("依赖升级组件: gateway")]),v._v(" "),e("p",[v._v("注意事项:")]),v._v(" "),e("ul",[e("li",[v._v("升级后观察是否正常签名,消息能否正常上链")])]),v._v(" "),e("h3",{attrs:{id:"damocles-manager"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#damocles-manager"}},[v._v("#")]),v._v(" damocles-manager")]),v._v(" "),e("p",[v._v("依赖升级组件: 链服务组件")]),v._v(" "),e("p",[v._v("注意事项:")]),v._v(" "),e("ul",[e("li",[v._v("编译时,需要先 "),e("code",[v._v("make dist-clean")]),v._v(" 再 "),e("code",[v._v("make")])])]),v._v(" "),e("h3",{attrs:{id:"damocles-worker"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#damocles-worker"}},[v._v("#")]),v._v(" damocles-worker")]),v._v(" "),e("p",[v._v("依赖升级组件: damocles-manager")]),v._v(" "),e("p",[v._v("注意事项:")]),v._v(" "),e("ul",[e("li",[v._v("建议等封装完所有的任务之后, 没有正在进行的的封装任务时, 进行程序更新。如果需要再封装进行的过程中进行更新的话,封装线程可能会卡在 "),e("code",[v._v("SyntheticPoRepNeeded")]),v._v(" 状态。这个时候重置任务的状态为 "),e("code",[v._v("PCSubmitted")]),v._v(" 即可:"),e("code",[v._v("damocles-manager util worker resume PCSubmitted")])]),v._v(" "),e("li",[v._v("新的证明类型 SyntheticPoRep 会使用新的证明参数文件。 如果启用 SyntheticPoRep 最好提前准备好新的证明参数,"),e("strong",[v._v("证明参数有问题可能会导致 SyntheticPoRep 死锁")]),v._v("。")])]),v._v(" "),e("hr"),v._v(" "),e("p",[v._v("更新结果验证步骤:")]),v._v(" "),e("ol",[e("li",[v._v("程序启动正常")]),v._v(" "),e("li",[v._v("pre/pro消息正常上链")]),v._v(" "),e("li",[v._v("出块正常")]),v._v(" "),e("li",[v._v("WD上链正常")]),v._v(" "),e("li",[v._v("算力增长正常")]),v._v(" "),e("li",[v._v("真实订单检索正常")]),v._v(" "),e("li",[v._v("数据库各种gas,生命周期,聚合设置正常")])]),v._v(" "),e("h3",{attrs:{id:"数据库变更"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#数据库变更"}},[v._v("#")]),v._v(" 数据库变更")]),v._v(" "),e("ol",[e("li",[v._v("droplet "),e("code",[v._v("storage_deals")]),v._v(" 表增加 "),e("code",[v._v("id")]),v._v(" 字段 ==> "),e("code",[v._v("ALTER TABLE storage_deals ADD id varchar(128)")])])])])}),[],!1,null,null,null);a.default=t.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[57],{450:function(v,a,e){"use strict";e.r(a);var _=e(17),t=Object(_.a)({},(function(){var v=this,a=v.$createElement,e=v._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[e("h1",{attrs:{id:"venus-各组件升级文档"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#venus-各组件升级文档"}},[v._v("#")]),v._v(" Venus 各组件升级文档")]),v._v(" "),e("h2",{attrs:{id:"注意事项"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#注意事项"}},[v._v("#")]),v._v(" 注意事项")]),v._v(" "),e("ol",[e("li",[v._v("所有组件全部更换")]),v._v(" "),e("li",[v._v("更新完通过 curl 命令调用 "),e("code",[v._v("Version")]),v._v(" 接口检查版本号,各组件接口调用方式:https://github.com/filecoin-project/venus/issues/5132")]),v._v(" "),e("li",[v._v("pre/pro消息上链的情况")]),v._v(" "),e("li",[v._v("WD消息上链的情况")]),v._v(" "),e("li",[v._v("出块情况是否正常")]),v._v(" "),e("li",[v._v("gas fee 相关设置是否生效")])]),v._v(" "),e("h2",{attrs:{id:"需要升级的组件"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#需要升级的组件"}},[v._v("#")]),v._v(" 需要升级的组件")]),v._v(" "),e("table",[e("thead",[e("tr",[e("th",[v._v("组件名")]),v._v(" "),e("th",[v._v("tag")]),v._v(" "),e("th",[v._v("commit")])])]),v._v(" "),e("tbody",[e("tr",[e("td",[v._v("sophon-auth")]),v._v(" "),e("td",[v._v("v1.14.0")]),v._v(" "),e("td",[v._v("7caadbc")])]),v._v(" "),e("tr",[e("td",[v._v("venus")]),v._v(" "),e("td",[v._v("v1.14.2")]),v._v(" "),e("td",[v._v("9204048")])]),v._v(" "),e("tr",[e("td",[v._v("sophon-messager")]),v._v(" "),e("td",[v._v("v1.14.0")]),v._v(" "),e("td",[v._v("e5f8371")])]),v._v(" "),e("tr",[e("td",[v._v("soohon-gateway")]),v._v(" "),e("td",[v._v("v1.14.0")]),v._v(" "),e("td",[v._v("1adf038")])]),v._v(" "),e("tr",[e("td",[v._v("venus-wallet")]),v._v(" "),e("td",[v._v("v1.14.0")]),v._v(" "),e("td",[v._v("b478cd0")])]),v._v(" "),e("tr",[e("td",[v._v("sophon-miner")]),v._v(" "),e("td",[v._v("v1.14.0")]),v._v(" "),e("td",[v._v("9ca976c")])]),v._v(" "),e("tr",[e("td",[v._v("droplet")]),v._v(" "),e("td",[v._v("v2.10.0")]),v._v(" "),e("td",[v._v("6daf168")])]),v._v(" "),e("tr",[e("td",[v._v("damocles-manager")]),v._v(" "),e("td",[v._v("v0.9.2")]),v._v(" "),e("td",[v._v("f3c5400")])]),v._v(" "),e("tr",[e("td",[v._v("damocles-worker")]),v._v(" "),e("td",[v._v("v0.9.2")]),v._v(" "),e("td",[v._v("f3c5400")])])])]),v._v(" "),e("h3",{attrs:{id:"升级顺序"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#升级顺序"}},[v._v("#")]),v._v(" 升级顺序")]),v._v(" "),e("ol",[e("li",[v._v("sophon-auth")]),v._v(" "),e("li",[v._v("venus")]),v._v(" "),e("li",[v._v("soohon-gateway")]),v._v(" "),e("li",[v._v("sophon-messager")]),v._v(" "),e("li",[v._v("sophon-miner")]),v._v(" "),e("li",[v._v("droplet")]),v._v(" "),e("li",[v._v("venus-wallet")]),v._v(" "),e("li",[v._v("damocles-manager")]),v._v(" "),e("li",[v._v("damocles-worker")])]),v._v(" "),e("h3",{attrs:{id:"sophon-auth"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sophon-auth"}},[v._v("#")]),v._v(" sophon-auth")]),v._v(" "),e("p",[v._v("影响功能:")]),v._v(" "),e("ul",[e("li",[v._v("其他组件对获取 auth 的服务")])]),v._v(" "),e("p",[v._v("依赖升级组件: 无")]),v._v(" "),e("p",[v._v("注意事项:")]),v._v(" "),e("ul",[e("li",[v._v("启动后能否正常鉴权")])]),v._v(" "),e("h3",{attrs:{id:"venus"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#venus"}},[v._v("#")]),v._v(" venus")]),v._v(" "),e("p",[v._v("影响功能:无")]),v._v(" "),e("p",[v._v("依赖升级组件: sophon-auth")]),v._v(" "),e("p",[v._v("注意事项:")]),v._v(" "),e("p",[v._v("编译:先 "),e("code",[v._v("make dist-clean")]),v._v(" 再 "),e("code",[v._v("make")]),v._v(",这样可以防止未能正常升级 "),e("code",[v._v("filecoin-ffi")]),v._v(" 而带来的问题\n"),e("strong",[v._v("如果 "),e("code",[v._v("~/.venus")]),v._v(" 存在且需要导入快照,需要先删除 "),e("code",[v._v("~/.venus/version")]),v._v(" 文件再导入快照")])]),v._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[v._v("本次升级 migration(actor迁移)使用的CPU越多,消耗的内存也越多,所以需要限制CPU使用的数量。\n在 venus 中可以通过环境变量(VENUS_MIGRATION_MAX_WORKER_COUN)来控制 migration 使用的CPU数量,\n例子:export VENUS_MIGRATION_MAX_WORKER_COUNT=13。以下是对于不同机器内存时,建议设置 VENUS_MIGRATION_MAX_WORKER_COUNT 的数量:\n\n48G VENUS_MIGRATION_MAX_WORKER_COUNT=13\n64G VENUS_MIGRATION_MAX_WORKER_COUNT=18\n96G VENUS_MIGRATION_MAX_WORKER_COUNT=24\n")])])]),e("ol",[e("li",[e("p",[v._v("升级后检查vk文件是否完整")])]),v._v(" "),e("li",[e("p",[v._v("升级后执行命令 "),e("code",[v._v("./venus state network-info")]),v._v(",然后检查通过日志检查 UpgradeWatermelonHeight 是否正常:")]),v._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[v._v("# cali\nUpgradeWatermelonHeight: 1013134\n# mainnet\nUpgradeWatermelonHeight: 3469380\n")])])])]),v._v(" "),e("li",[e("p",[v._v("升级后需检查是否正常同步区块")])]),v._v(" "),e("li",[e("p",[v._v("检查主网 v12 actors code,确保与下面输出一样")]),v._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[v._v("./venus state actor-cids --network-version 21\n\n# 顺序可能会不一样\nNetwork Version: 21\nActor Version: 12\nActor CID\ndatacap bafk2bzacebpiwb2ml4qbnnaayxumtk43ryhc63exdgnhivy3hwgmzemawsmpq\nethaccount bafk2bzaceb4gkau2vgsijcxpfuq33bd7w3efr2rrhxrwiacjmns2ntdiamswq\nreward bafk2bzacealqnxn5lwzwexd6reav4dppypquklx2ujlnvaxiqk2tzstyvkp5u\nverifiedregistry bafk2bzacedudgflxc75c77c6zkmfyq4u2xuk7k6xw6dfdccarjrvxx453b77q\neam bafk2bzaceb3elj4hfbbjp7g5bptc7su7mptszl4nlqfedilxvstjo5ungm6oe\nmultisig bafk2bzacecw5lyp3n3t67xdwrmo36h4z7afc3lobmmr6wg55w6yjzg5jhmh42\nstoragemarket bafk2bzacedylkg5am446lcuih4voyzdn4yjeqfsxfzh5b6mcuhx4mok5ph5c4\nsystem bafk2bzacebfqrja2hip7esf4eafxjmu6xcogoqu5xxtgdg7xa5szgvvdguchu\naccount bafk2bzaceboftg75mdiba7xbo2i3uvgtca4brhnr3u5ptihonixgpnrvhpxoa\ncron bafk2bzacechxjkfe2cehx4s7skj3wzfpzf7zolds64khrrrs66bhazsemktls\nplaceholder bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro\nstoragepower bafk2bzacecsij5tpfzjpfuckxvccv2p3bdqjklkrfyyoei6lx5dyj5j4fvjm6\nevm bafk2bzacecmnyfiwb52tkbwmm2dsd7ysi3nvuxl3lmspy7pl26wxj4zj7w4wi\ninit bafk2bzacebllyegx5r6lggf6ymyetbp7amacwpuxakhtjvjtvoy2bfkzk3vms\npaymentchannel bafk2bzacectv4cm47bnhga5febf3lo3fq47g72kmmp2xd5s6tcxz7hiqdywa4\nstorageminer bafk2bzacedo75pabe4i2l3hvhtsjmijrcytd2y76xwe573uku25fi7sugqld6\n")])])])]),v._v(" "),e("li",[e("p",[v._v("若不排查问题,rust日志级别"),e("strong",[v._v("不建议")]),v._v("设置为 "),e("code",[v._v("trace")]),v._v(",因为会打印较多日志")])]),v._v(" "),e("li",[e("p",[v._v("升级后可以通过命令来 "),e("code",[v._v("./venus state get-actor t01000")]),v._v(" 来确认是否升级成功")])]),v._v(" "),e("li",[e("p",[v._v("actor 迁移")]),v._v(" "),e("p",[e("strong",[v._v("经测试本次预迁移时间在 20-30 分钟,正式迁移时间在 70 秒左右")])]),v._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[v._v("预迁移高度是升级高度前 180 个高度:\npre-migration 开始:STARTING pre-migration 结束:COMPLETED pre-migration\nmigration 开始:STARTING migration 结束:COMPLETED migration\n")])])])])]),v._v(" "),e("h3",{attrs:{id:"sophon-gateway"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sophon-gateway"}},[v._v("#")]),v._v(" sophon-gateway")]),v._v(" "),e("p",[v._v("影响功能:无")]),v._v(" "),e("p",[v._v("依赖升级组件: sophon-auth")]),v._v(" "),e("p",[v._v("注意事项:")]),v._v(" "),e("ul",[e("li",[v._v("编译时,需要先 "),e("code",[v._v("make dist-clean")]),v._v(" 再 "),e("code",[v._v("make")])])]),v._v(" "),e("h3",{attrs:{id:"sophon-messager"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sophon-messager"}},[v._v("#")]),v._v(" sophon-messager")]),v._v(" "),e("p",[v._v("影响功能:")]),v._v(" "),e("p",[v._v("依赖升级组件: venus, sophon-auth, soohon-gateway")]),v._v(" "),e("p",[v._v("注意事项:")]),v._v(" "),e("ul",[e("li",[v._v("升级之后需要观察能否正常接收消息, 消息能否正常上链")])]),v._v(" "),e("h3",{attrs:{id:"sophon-miner"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sophon-miner"}},[v._v("#")]),v._v(" sophon-miner")]),v._v(" "),e("p",[v._v("影响功能:")]),v._v(" "),e("p",[v._v("依赖升级组件:auth, venus, gateway")]),v._v(" "),e("p",[v._v("注意事项:")]),v._v(" "),e("ul",[e("li",[v._v("配置文件中 [Auth].[Token] 必须配置,且在sophon-auth中具有admin权限,不要使用"),e("code",[v._v("defaultLocalToken")]),v._v("对应的token,应手动创建一个.")])]),v._v(" "),e("h3",{attrs:{id:"droplet"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#droplet"}},[v._v("#")]),v._v(" droplet")]),v._v(" "),e("p",[v._v("影响功能:")]),v._v(" "),e("ul",[e("li",[v._v("支持 v2 版本发单协议")]),v._v(" "),e("li",[v._v("支持离线计算 commP")])]),v._v(" "),e("p",[v._v("依赖升级组件: auth, venus, gateway, messager")]),v._v(" "),e("p",[v._v("注意事项:")]),v._v(" "),e("ul",[e("li",[v._v("升级后能否正常发单和检索")])]),v._v(" "),e("h3",{attrs:{id:"venus-wallet"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#venus-wallet"}},[v._v("#")]),v._v(" venus-wallet")]),v._v(" "),e("p",[v._v("影响功能: 无")]),v._v(" "),e("p",[v._v("依赖升级组件: gateway")]),v._v(" "),e("p",[v._v("注意事项:")]),v._v(" "),e("ul",[e("li",[v._v("升级后观察是否正常签名,消息能否正常上链")])]),v._v(" "),e("h3",{attrs:{id:"damocles-manager"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#damocles-manager"}},[v._v("#")]),v._v(" damocles-manager")]),v._v(" "),e("p",[v._v("依赖升级组件: 链服务组件")]),v._v(" "),e("p",[v._v("注意事项:")]),v._v(" "),e("ul",[e("li",[v._v("编译时,需要先 "),e("code",[v._v("make dist-clean")]),v._v(" 再 "),e("code",[v._v("make")])])]),v._v(" "),e("h3",{attrs:{id:"damocles-worker"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#damocles-worker"}},[v._v("#")]),v._v(" damocles-worker")]),v._v(" "),e("p",[v._v("依赖升级组件: damocles-manager")]),v._v(" "),e("p",[v._v("注意事项:")]),v._v(" "),e("ul",[e("li",[v._v("建议等封装完所有的任务之后, 没有正在进行的的封装任务时, 进行程序更新。如果需要再封装进行的过程中进行更新的话,封装线程可能会卡在 "),e("code",[v._v("SyntheticPoRepNeeded")]),v._v(" 状态。这个时候重置任务的状态为 "),e("code",[v._v("PCSubmitted")]),v._v(" 即可:"),e("code",[v._v("damocles-manager util worker resume PCSubmitted")])]),v._v(" "),e("li",[v._v("新的证明类型 SyntheticPoRep 会使用新的证明参数文件。 如果启用 SyntheticPoRep 最好提前准备好新的证明参数,"),e("strong",[v._v("证明参数有问题可能会导致 SyntheticPoRep 死锁")]),v._v("。")])]),v._v(" "),e("hr"),v._v(" "),e("p",[v._v("更新结果验证步骤:")]),v._v(" "),e("ol",[e("li",[v._v("程序启动正常")]),v._v(" "),e("li",[v._v("pre/pro消息正常上链")]),v._v(" "),e("li",[v._v("出块正常")]),v._v(" "),e("li",[v._v("WD上链正常")]),v._v(" "),e("li",[v._v("算力增长正常")]),v._v(" "),e("li",[v._v("真实订单检索正常")]),v._v(" "),e("li",[v._v("数据库各种gas,生命周期,聚合设置正常")])]),v._v(" "),e("h3",{attrs:{id:"数据库变更"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#数据库变更"}},[v._v("#")]),v._v(" 数据库变更")]),v._v(" "),e("ol",[e("li",[v._v("droplet "),e("code",[v._v("storage_deals")]),v._v(" 表增加 "),e("code",[v._v("id")]),v._v(" 字段 ==> "),e("code",[v._v("ALTER TABLE storage_deals ADD id varchar(128)")])])])])}),[],!1,null,null,null);a.default=t.exports}}]); \ No newline at end of file diff --git a/assets/js/58.bdfb0b74.js b/assets/js/58.b3d4d1e1.js similarity index 99% rename from assets/js/58.bdfb0b74.js rename to assets/js/58.b3d4d1e1.js index ce1d03bab..9d9d2b82a 100644 --- a/assets/js/58.bdfb0b74.js +++ b/assets/js/58.b3d4d1e1.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[58],{449:function(v,a,t){"use strict";t.r(a);var e=t(17),_=Object(e.a)({},(function(){var v=this,a=v.$createElement,t=v._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[t("h1",{attrs:{id:"venus-各组件升级文档-持续更新中"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-各组件升级文档-持续更新中"}},[v._v("#")]),v._v(" Venus 各组件升级文档 (持续更新中)")]),v._v(" "),t("h2",{attrs:{id:"注意事项"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#注意事项"}},[v._v("#")]),v._v(" 注意事项")]),v._v(" "),t("ol",[t("li",[v._v("所有组件全部更换")]),v._v(" "),t("li",[v._v("更新完通过 curl 命令调用 "),t("code",[v._v("Version")]),v._v(" 接口检查版本号,各组件接口调用方式:https://github.com/filecoin-project/venus/issues/5132")]),v._v(" "),t("li",[v._v("pre/pro消息上链的情况")]),v._v(" "),t("li",[v._v("WD消息上链的情况")]),v._v(" "),t("li",[v._v("出块情况是否正常")]),v._v(" "),t("li",[v._v("gas fee 相关设置是否生效")])]),v._v(" "),t("h2",{attrs:{id:"需要升级的组件"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#需要升级的组件"}},[v._v("#")]),v._v(" 需要升级的组件")]),v._v(" "),t("table",[t("thead",[t("tr",[t("th",[v._v("组件名")]),v._v(" "),t("th",[v._v("tag")]),v._v(" "),t("th",[v._v("commit")])])]),v._v(" "),t("tbody",[t("tr",[t("td",[v._v("sophon-auth")]),v._v(" "),t("td",[v._v("v1.15.0")]),v._v(" "),t("td",[v._v("a1e964b")])]),v._v(" "),t("tr",[t("td",[v._v("venus")]),v._v(" "),t("td",[v._v("v1.15.1")]),v._v(" "),t("td",[v._v("81c99f3")])]),v._v(" "),t("tr",[t("td",[v._v("sophon-co")]),v._v(" "),t("td",[v._v("v0.8.0")]),v._v(" "),t("td",[v._v("0e48712")])]),v._v(" "),t("tr",[t("td",[v._v("sophon-messager")]),v._v(" "),t("td",[v._v("v1.15.0")]),v._v(" "),t("td",[v._v("1e4f0d5")])]),v._v(" "),t("tr",[t("td",[v._v("soohon-gateway")]),v._v(" "),t("td",[v._v("v1.15.0")]),v._v(" "),t("td",[v._v("541891a")])]),v._v(" "),t("tr",[t("td",[v._v("venus-wallet")]),v._v(" "),t("td",[v._v("v1.15.0")]),v._v(" "),t("td",[v._v("6b3de34")])]),v._v(" "),t("tr",[t("td",[v._v("sophon-miner")]),v._v(" "),t("td",[v._v("v1.15.0")]),v._v(" "),t("td",[v._v("8dd6c68")])]),v._v(" "),t("tr",[t("td",[v._v("droplet")]),v._v(" "),t("td",[v._v("v2.11.0")]),v._v(" "),t("td",[v._v("44481dd")])]),v._v(" "),t("tr",[t("td",[v._v("damocles-manager")]),v._v(" "),t("td",[v._v("v0.10.0-rc1")]),v._v(" "),t("td",[v._v("2f6c5f9")])]),v._v(" "),t("tr",[t("td",[v._v("damocles-worker")]),v._v(" "),t("td",[v._v("v0.10.0-rc1")]),v._v(" "),t("td",[v._v("2f6c5f9")])])])]),v._v(" "),t("h3",{attrs:{id:"升级顺序"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#升级顺序"}},[v._v("#")]),v._v(" 升级顺序")]),v._v(" "),t("ol",[t("li",[v._v("sophon-auth")]),v._v(" "),t("li",[v._v("venus")]),v._v(" "),t("li",[v._v("soohon-co")]),v._v(" "),t("li",[v._v("soohon-gateway")]),v._v(" "),t("li",[v._v("sophon-messager")]),v._v(" "),t("li",[v._v("sophon-miner")]),v._v(" "),t("li",[v._v("droplet")]),v._v(" "),t("li",[v._v("venus-wallet")]),v._v(" "),t("li",[v._v("damocles-manager")]),v._v(" "),t("li",[v._v("damocles-worker")])]),v._v(" "),t("h3",{attrs:{id:"sophon-auth"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sophon-auth"}},[v._v("#")]),v._v(" sophon-auth")]),v._v(" "),t("p",[v._v("影响功能:")]),v._v(" "),t("ul",[t("li",[v._v("其他组件对获取 auth 的服务")])]),v._v(" "),t("p",[v._v("依赖升级组件: 无")]),v._v(" "),t("p",[v._v("注意事项:")]),v._v(" "),t("ul",[t("li",[v._v("启动后能否正常鉴权")])]),v._v(" "),t("h3",{attrs:{id:"venus"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus"}},[v._v("#")]),v._v(" venus")]),v._v(" "),t("p",[v._v("影响功能:无")]),v._v(" "),t("p",[v._v("依赖升级组件: sophon-auth")]),v._v(" "),t("p",[v._v("注意事项:")]),v._v(" "),t("p",[v._v("编译:先 "),t("code",[v._v("make dist-clean")]),v._v(" 再 "),t("code",[v._v("make")]),v._v(",这样可以防止未能正常升级 "),t("code",[v._v("filecoin-ffi")]),v._v(" 而带来的问题")]),v._v(" "),t("ol",[t("li",[t("p",[v._v("升级后检查vk文件是否完整")])]),v._v(" "),t("li",[t("p",[v._v("升级后执行命令 "),t("code",[v._v("./venus state network-info")]),v._v(",然后检查通过日志检查 UpgradeDragonHeight 是否正常:")]),v._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[v._v("# cali\nUpgradeDragonHeight: 1427974\n# mainnet\nUpgradeDragonHeight: 3855360\n")])])])]),v._v(" "),t("li",[t("p",[v._v("升级后需检查是否正常同步区块")])]),v._v(" "),t("li",[t("p",[v._v("检查主网 v13 actors code,确保与下面输出一样")]),v._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[v._v("./venus state actor-cids --network-version 22\n\n# 顺序可能会不一样\nNetwork Version: 22\nActor Version: 13\nManifest CID: bafy2bzacecdhvfmtirtojwhw2tyciu4jkbpsbk5g53oe24br27oy62sn4dc4e\nActor CID\naccount bafk2bzacedxnbtlsqdk76fsfmnhyvsblwyfducerwwtp3mqtx2wbrvs5idl52\ncron bafk2bzacebbopddyn5csb3fsuhh2an4ttd23x6qnwixgohlirj5ahtcudphyc\ndatacap bafk2bzaceah42tfnhd7xnztawgf46gbvc3m2gudoxshlba2ucmmo2vy67t7ci\neam bafk2bzaceb23bhvvcjsth7cn7vp3gbaphrutsaz7v6hkls3ogotzs4bnhm4mk\nethaccount bafk2bzaceautge6zhuy6jbj3uldwoxwhpywuon6z3xfvmdbzpbdribc6zzmei\nevm bafk2bzacedq6v2lyuhgywhlllwmudfj2zufzcauxcsvvd34m2ek5xr55mvh2q\ninit bafk2bzacedr4xacm3fts4vilyeiacjr2hpmwzclyzulbdo24lrfxbtau2wbai\nmultisig bafk2bzacecr5zqarfqak42xqcfeulsxlavcltawsx2fvc7zsjtby6ti4b3wqc\npaymentchannel bafk2bzacebntdhfmyc24e7tm52ggx5tnw4i3hrr3jmllsepv3mibez4hywsa2\nplaceholder bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro\nreward bafk2bzacedq4q2kwkruu4xm7rkyygumlbw2yt4nimna2ivea4qarvtkohnuwu\nstoragemarket bafk2bzacebjtoltdviyznpj34hh5qp6u257jnnbjole5rhqfixm7ug3epvrfu\nstorageminer bafk2bzacebf4rrqyk7gcfggggul6nfpzay7f2ordnkwm7z2wcf4mq6r7i77t2\nstoragepower bafk2bzacecjy4dkulvxppg3ocbmeixe2wgg6yxoyjxrm4ko2fm3uhpvfvam6e\nsystem bafk2bzacecyf523quuq2kdjfdvyty446z2ounmamtgtgeqnr3ynlu5cqrlt6e\nverifiedregistry bafk2bzacedkxehp7y7iyukbcje3wbpqcvufisos6exatkanyrbotoecdkrbta\n")])])])]),v._v(" "),t("li",[t("p",[v._v("若不排查问题,rust日志级别"),t("strong",[v._v("不建议")]),v._v("设置为 "),t("code",[v._v("trace")]),v._v(",因为会打印较多日志")])]),v._v(" "),t("li",[t("p",[v._v("升级后可以通过命令来 "),t("code",[v._v("./venus state get-actor t01000")]),v._v(" 来确认是否升级成功")])]),v._v(" "),t("li",[t("p",[v._v("actor 迁移")]),v._v(" "),t("p",[t("strong",[v._v("经测试本次预迁移时间在 30 分钟左右,正式迁移时间在 100 秒左右")])]),v._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[v._v("预迁移高度是升级高度前 120 个高度:\npre-migration 开始:STARTING pre-migration 结束:COMPLETED pre-migration\nmigration 开始:STARTING migration 结束:COMPLETED migration\n")])])])]),v._v(" "),t("li",[t("p",[v._v("如果 "),t("code",[v._v("~/.venus")]),v._v(" 存在且需要导入快照,需要先删除 "),t("code",[v._v("~/.venus/version")]),v._v(" 文件再导入快照")]),v._v(" "),t("ul",[t("li",[v._v("主网: "),t("code",[v._v("./venus daemon --import-snapshot snapshot.car")])]),v._v(" "),t("li",[v._v("calibnet: "),t("code",[v._v("./venus daemon --import-snapshot snapshot.car --network calibrationnet")])])])])]),v._v(" "),t("h3",{attrs:{id:"sophon-gateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sophon-gateway"}},[v._v("#")]),v._v(" sophon-gateway")]),v._v(" "),t("p",[v._v("影响功能:无")]),v._v(" "),t("p",[v._v("依赖升级组件: sophon-auth")]),v._v(" "),t("p",[v._v("注意事项:")]),v._v(" "),t("ul",[t("li",[v._v("编译时,需要先 "),t("code",[v._v("make dist-clean")]),v._v(" 再 "),t("code",[v._v("make")])])]),v._v(" "),t("h3",{attrs:{id:"sophon-messager"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sophon-messager"}},[v._v("#")]),v._v(" sophon-messager")]),v._v(" "),t("p",[v._v("影响功能:")]),v._v(" "),t("p",[v._v("依赖升级组件: venus, sophon-auth, soohon-gateway")]),v._v(" "),t("p",[v._v("注意事项:")]),v._v(" "),t("ul",[t("li",[v._v("升级之后需要观察能否正常接收消息, 消息能否正常上链")])]),v._v(" "),t("h3",{attrs:{id:"sophon-miner"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sophon-miner"}},[v._v("#")]),v._v(" sophon-miner")]),v._v(" "),t("p",[v._v("影响功能:")]),v._v(" "),t("p",[v._v("依赖升级组件:auth, venus, gateway")]),v._v(" "),t("p",[v._v("注意事项:")]),v._v(" "),t("h3",{attrs:{id:"droplet"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#droplet"}},[v._v("#")]),v._v(" droplet")]),v._v(" "),t("p",[v._v("影响功能:")]),v._v(" "),t("ul",[t("li",[v._v("支持 direct data onboarding,使用文档:https://github.com/ipfs-force-community/droplet/blob/master/docs/zh/direct-on-boarding.md")])]),v._v(" "),t("p",[v._v("依赖升级组件: auth, venus, gateway, messager")]),v._v(" "),t("p",[v._v("注意事项:")]),v._v(" "),t("ul",[t("li",[v._v("升级后能否正常发单和检索")])]),v._v(" "),t("h3",{attrs:{id:"venus-wallet"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-wallet"}},[v._v("#")]),v._v(" venus-wallet")]),v._v(" "),t("p",[v._v("影响功能: 无")]),v._v(" "),t("p",[v._v("依赖升级组件: gateway")]),v._v(" "),t("p",[v._v("注意事项:")]),v._v(" "),t("ul",[t("li",[v._v("升级后观察是否正常签名,消息能否正常上链")])]),v._v(" "),t("h3",{attrs:{id:"damocles-manager"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#damocles-manager"}},[v._v("#")]),v._v(" damocles-manager")]),v._v(" "),t("p",[v._v("依赖升级组件: 链服务组件")]),v._v(" "),t("p",[v._v("注意事项:")]),v._v(" "),t("ul",[t("li",[v._v("编译时,需要先 "),t("code",[v._v("make dist-clean")]),v._v(" 再 "),t("code",[v._v("make")])])]),v._v(" "),t("h3",{attrs:{id:"damocles-worker"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#damocles-worker"}},[v._v("#")]),v._v(" damocles-worker")]),v._v(" "),t("p",[v._v("依赖升级组件: damocles-manager")]),v._v(" "),t("p",[v._v("注意事项:")]),v._v(" "),t("hr"),v._v(" "),t("p",[v._v("更新结果验证步骤:")]),v._v(" "),t("ol",[t("li",[v._v("程序启动正常")]),v._v(" "),t("li",[v._v("pre/pro消息正常上链")]),v._v(" "),t("li",[v._v("出块正常")]),v._v(" "),t("li",[v._v("WD上链正常")]),v._v(" "),t("li",[v._v("算力增长正常")]),v._v(" "),t("li",[v._v("真实订单检索正常")]),v._v(" "),t("li",[v._v("数据库各种gas,生命周期,聚合设置正常")])]),v._v(" "),t("h3",{attrs:{id:"数据库变更"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#数据库变更"}},[v._v("#")]),v._v(" 数据库变更")]),v._v(" "),t("ol",[t("li",[v._v("droplet 增加 direct_deals 表,用于存储 direct 订单。")])])])}),[],!1,null,null,null);a.default=_.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[58],{448:function(v,a,t){"use strict";t.r(a);var e=t(17),_=Object(e.a)({},(function(){var v=this,a=v.$createElement,t=v._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[t("h1",{attrs:{id:"venus-各组件升级文档-持续更新中"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-各组件升级文档-持续更新中"}},[v._v("#")]),v._v(" Venus 各组件升级文档 (持续更新中)")]),v._v(" "),t("h2",{attrs:{id:"注意事项"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#注意事项"}},[v._v("#")]),v._v(" 注意事项")]),v._v(" "),t("ol",[t("li",[v._v("所有组件全部更换")]),v._v(" "),t("li",[v._v("更新完通过 curl 命令调用 "),t("code",[v._v("Version")]),v._v(" 接口检查版本号,各组件接口调用方式:https://github.com/filecoin-project/venus/issues/5132")]),v._v(" "),t("li",[v._v("pre/pro消息上链的情况")]),v._v(" "),t("li",[v._v("WD消息上链的情况")]),v._v(" "),t("li",[v._v("出块情况是否正常")]),v._v(" "),t("li",[v._v("gas fee 相关设置是否生效")])]),v._v(" "),t("h2",{attrs:{id:"需要升级的组件"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#需要升级的组件"}},[v._v("#")]),v._v(" 需要升级的组件")]),v._v(" "),t("table",[t("thead",[t("tr",[t("th",[v._v("组件名")]),v._v(" "),t("th",[v._v("tag")]),v._v(" "),t("th",[v._v("commit")])])]),v._v(" "),t("tbody",[t("tr",[t("td",[v._v("sophon-auth")]),v._v(" "),t("td",[v._v("v1.15.0")]),v._v(" "),t("td",[v._v("a1e964b")])]),v._v(" "),t("tr",[t("td",[v._v("venus")]),v._v(" "),t("td",[v._v("v1.15.1")]),v._v(" "),t("td",[v._v("81c99f3")])]),v._v(" "),t("tr",[t("td",[v._v("sophon-co")]),v._v(" "),t("td",[v._v("v0.8.0")]),v._v(" "),t("td",[v._v("0e48712")])]),v._v(" "),t("tr",[t("td",[v._v("sophon-messager")]),v._v(" "),t("td",[v._v("v1.15.0")]),v._v(" "),t("td",[v._v("1e4f0d5")])]),v._v(" "),t("tr",[t("td",[v._v("soohon-gateway")]),v._v(" "),t("td",[v._v("v1.15.0")]),v._v(" "),t("td",[v._v("541891a")])]),v._v(" "),t("tr",[t("td",[v._v("venus-wallet")]),v._v(" "),t("td",[v._v("v1.15.0")]),v._v(" "),t("td",[v._v("6b3de34")])]),v._v(" "),t("tr",[t("td",[v._v("sophon-miner")]),v._v(" "),t("td",[v._v("v1.15.0")]),v._v(" "),t("td",[v._v("8dd6c68")])]),v._v(" "),t("tr",[t("td",[v._v("droplet")]),v._v(" "),t("td",[v._v("v2.11.0")]),v._v(" "),t("td",[v._v("44481dd")])]),v._v(" "),t("tr",[t("td",[v._v("damocles-manager")]),v._v(" "),t("td",[v._v("v0.10.0-rc1")]),v._v(" "),t("td",[v._v("2f6c5f9")])]),v._v(" "),t("tr",[t("td",[v._v("damocles-worker")]),v._v(" "),t("td",[v._v("v0.10.0-rc1")]),v._v(" "),t("td",[v._v("2f6c5f9")])])])]),v._v(" "),t("h3",{attrs:{id:"升级顺序"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#升级顺序"}},[v._v("#")]),v._v(" 升级顺序")]),v._v(" "),t("ol",[t("li",[v._v("sophon-auth")]),v._v(" "),t("li",[v._v("venus")]),v._v(" "),t("li",[v._v("soohon-co")]),v._v(" "),t("li",[v._v("soohon-gateway")]),v._v(" "),t("li",[v._v("sophon-messager")]),v._v(" "),t("li",[v._v("sophon-miner")]),v._v(" "),t("li",[v._v("droplet")]),v._v(" "),t("li",[v._v("venus-wallet")]),v._v(" "),t("li",[v._v("damocles-manager")]),v._v(" "),t("li",[v._v("damocles-worker")])]),v._v(" "),t("h3",{attrs:{id:"sophon-auth"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sophon-auth"}},[v._v("#")]),v._v(" sophon-auth")]),v._v(" "),t("p",[v._v("影响功能:")]),v._v(" "),t("ul",[t("li",[v._v("其他组件对获取 auth 的服务")])]),v._v(" "),t("p",[v._v("依赖升级组件: 无")]),v._v(" "),t("p",[v._v("注意事项:")]),v._v(" "),t("ul",[t("li",[v._v("启动后能否正常鉴权")])]),v._v(" "),t("h3",{attrs:{id:"venus"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus"}},[v._v("#")]),v._v(" venus")]),v._v(" "),t("p",[v._v("影响功能:无")]),v._v(" "),t("p",[v._v("依赖升级组件: sophon-auth")]),v._v(" "),t("p",[v._v("注意事项:")]),v._v(" "),t("p",[v._v("编译:先 "),t("code",[v._v("make dist-clean")]),v._v(" 再 "),t("code",[v._v("make")]),v._v(",这样可以防止未能正常升级 "),t("code",[v._v("filecoin-ffi")]),v._v(" 而带来的问题")]),v._v(" "),t("ol",[t("li",[t("p",[v._v("升级后检查vk文件是否完整")])]),v._v(" "),t("li",[t("p",[v._v("升级后执行命令 "),t("code",[v._v("./venus state network-info")]),v._v(",然后检查通过日志检查 UpgradeDragonHeight 是否正常:")]),v._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[v._v("# cali\nUpgradeDragonHeight: 1427974\n# mainnet\nUpgradeDragonHeight: 3855360\n")])])])]),v._v(" "),t("li",[t("p",[v._v("升级后需检查是否正常同步区块")])]),v._v(" "),t("li",[t("p",[v._v("检查主网 v13 actors code,确保与下面输出一样")]),v._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[v._v("./venus state actor-cids --network-version 22\n\n# 顺序可能会不一样\nNetwork Version: 22\nActor Version: 13\nManifest CID: bafy2bzacecdhvfmtirtojwhw2tyciu4jkbpsbk5g53oe24br27oy62sn4dc4e\nActor CID\naccount bafk2bzacedxnbtlsqdk76fsfmnhyvsblwyfducerwwtp3mqtx2wbrvs5idl52\ncron bafk2bzacebbopddyn5csb3fsuhh2an4ttd23x6qnwixgohlirj5ahtcudphyc\ndatacap bafk2bzaceah42tfnhd7xnztawgf46gbvc3m2gudoxshlba2ucmmo2vy67t7ci\neam bafk2bzaceb23bhvvcjsth7cn7vp3gbaphrutsaz7v6hkls3ogotzs4bnhm4mk\nethaccount bafk2bzaceautge6zhuy6jbj3uldwoxwhpywuon6z3xfvmdbzpbdribc6zzmei\nevm bafk2bzacedq6v2lyuhgywhlllwmudfj2zufzcauxcsvvd34m2ek5xr55mvh2q\ninit bafk2bzacedr4xacm3fts4vilyeiacjr2hpmwzclyzulbdo24lrfxbtau2wbai\nmultisig bafk2bzacecr5zqarfqak42xqcfeulsxlavcltawsx2fvc7zsjtby6ti4b3wqc\npaymentchannel bafk2bzacebntdhfmyc24e7tm52ggx5tnw4i3hrr3jmllsepv3mibez4hywsa2\nplaceholder bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro\nreward bafk2bzacedq4q2kwkruu4xm7rkyygumlbw2yt4nimna2ivea4qarvtkohnuwu\nstoragemarket bafk2bzacebjtoltdviyznpj34hh5qp6u257jnnbjole5rhqfixm7ug3epvrfu\nstorageminer bafk2bzacebf4rrqyk7gcfggggul6nfpzay7f2ordnkwm7z2wcf4mq6r7i77t2\nstoragepower bafk2bzacecjy4dkulvxppg3ocbmeixe2wgg6yxoyjxrm4ko2fm3uhpvfvam6e\nsystem bafk2bzacecyf523quuq2kdjfdvyty446z2ounmamtgtgeqnr3ynlu5cqrlt6e\nverifiedregistry bafk2bzacedkxehp7y7iyukbcje3wbpqcvufisos6exatkanyrbotoecdkrbta\n")])])])]),v._v(" "),t("li",[t("p",[v._v("若不排查问题,rust日志级别"),t("strong",[v._v("不建议")]),v._v("设置为 "),t("code",[v._v("trace")]),v._v(",因为会打印较多日志")])]),v._v(" "),t("li",[t("p",[v._v("升级后可以通过命令来 "),t("code",[v._v("./venus state get-actor t01000")]),v._v(" 来确认是否升级成功")])]),v._v(" "),t("li",[t("p",[v._v("actor 迁移")]),v._v(" "),t("p",[t("strong",[v._v("经测试本次预迁移时间在 30 分钟左右,正式迁移时间在 100 秒左右")])]),v._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[v._v("预迁移高度是升级高度前 120 个高度:\npre-migration 开始:STARTING pre-migration 结束:COMPLETED pre-migration\nmigration 开始:STARTING migration 结束:COMPLETED migration\n")])])])]),v._v(" "),t("li",[t("p",[v._v("如果 "),t("code",[v._v("~/.venus")]),v._v(" 存在且需要导入快照,需要先删除 "),t("code",[v._v("~/.venus/version")]),v._v(" 文件再导入快照")]),v._v(" "),t("ul",[t("li",[v._v("主网: "),t("code",[v._v("./venus daemon --import-snapshot snapshot.car")])]),v._v(" "),t("li",[v._v("calibnet: "),t("code",[v._v("./venus daemon --import-snapshot snapshot.car --network calibrationnet")])])])])]),v._v(" "),t("h3",{attrs:{id:"sophon-gateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sophon-gateway"}},[v._v("#")]),v._v(" sophon-gateway")]),v._v(" "),t("p",[v._v("影响功能:无")]),v._v(" "),t("p",[v._v("依赖升级组件: sophon-auth")]),v._v(" "),t("p",[v._v("注意事项:")]),v._v(" "),t("ul",[t("li",[v._v("编译时,需要先 "),t("code",[v._v("make dist-clean")]),v._v(" 再 "),t("code",[v._v("make")])])]),v._v(" "),t("h3",{attrs:{id:"sophon-messager"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sophon-messager"}},[v._v("#")]),v._v(" sophon-messager")]),v._v(" "),t("p",[v._v("影响功能:")]),v._v(" "),t("p",[v._v("依赖升级组件: venus, sophon-auth, soohon-gateway")]),v._v(" "),t("p",[v._v("注意事项:")]),v._v(" "),t("ul",[t("li",[v._v("升级之后需要观察能否正常接收消息, 消息能否正常上链")])]),v._v(" "),t("h3",{attrs:{id:"sophon-miner"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sophon-miner"}},[v._v("#")]),v._v(" sophon-miner")]),v._v(" "),t("p",[v._v("影响功能:")]),v._v(" "),t("p",[v._v("依赖升级组件:auth, venus, gateway")]),v._v(" "),t("p",[v._v("注意事项:")]),v._v(" "),t("h3",{attrs:{id:"droplet"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#droplet"}},[v._v("#")]),v._v(" droplet")]),v._v(" "),t("p",[v._v("影响功能:")]),v._v(" "),t("ul",[t("li",[v._v("支持 direct data onboarding,使用文档:https://github.com/ipfs-force-community/droplet/blob/master/docs/zh/direct-on-boarding.md")])]),v._v(" "),t("p",[v._v("依赖升级组件: auth, venus, gateway, messager")]),v._v(" "),t("p",[v._v("注意事项:")]),v._v(" "),t("ul",[t("li",[v._v("升级后能否正常发单和检索")])]),v._v(" "),t("h3",{attrs:{id:"venus-wallet"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#venus-wallet"}},[v._v("#")]),v._v(" venus-wallet")]),v._v(" "),t("p",[v._v("影响功能: 无")]),v._v(" "),t("p",[v._v("依赖升级组件: gateway")]),v._v(" "),t("p",[v._v("注意事项:")]),v._v(" "),t("ul",[t("li",[v._v("升级后观察是否正常签名,消息能否正常上链")])]),v._v(" "),t("h3",{attrs:{id:"damocles-manager"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#damocles-manager"}},[v._v("#")]),v._v(" damocles-manager")]),v._v(" "),t("p",[v._v("依赖升级组件: 链服务组件")]),v._v(" "),t("p",[v._v("注意事项:")]),v._v(" "),t("ul",[t("li",[v._v("编译时,需要先 "),t("code",[v._v("make dist-clean")]),v._v(" 再 "),t("code",[v._v("make")])])]),v._v(" "),t("h3",{attrs:{id:"damocles-worker"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#damocles-worker"}},[v._v("#")]),v._v(" damocles-worker")]),v._v(" "),t("p",[v._v("依赖升级组件: damocles-manager")]),v._v(" "),t("p",[v._v("注意事项:")]),v._v(" "),t("hr"),v._v(" "),t("p",[v._v("更新结果验证步骤:")]),v._v(" "),t("ol",[t("li",[v._v("程序启动正常")]),v._v(" "),t("li",[v._v("pre/pro消息正常上链")]),v._v(" "),t("li",[v._v("出块正常")]),v._v(" "),t("li",[v._v("WD上链正常")]),v._v(" "),t("li",[v._v("算力增长正常")]),v._v(" "),t("li",[v._v("真实订单检索正常")]),v._v(" "),t("li",[v._v("数据库各种gas,生命周期,聚合设置正常")])]),v._v(" "),t("h3",{attrs:{id:"数据库变更"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#数据库变更"}},[v._v("#")]),v._v(" 数据库变更")]),v._v(" "),t("ol",[t("li",[v._v("droplet 增加 direct_deals 表,用于存储 direct 订单。")])])])}),[],!1,null,null,null);a.default=_.exports}}]); \ No newline at end of file diff --git a/assets/js/59.8e04ca73.js b/assets/js/59.20b6ebd0.js similarity index 99% rename from assets/js/59.8e04ca73.js rename to assets/js/59.20b6ebd0.js index 80470dcb2..b8c949292 100644 --- a/assets/js/59.8e04ca73.js +++ b/assets/js/59.20b6ebd0.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[59],{451:function(t,s,a){"use strict";a.r(s);var n=a(17),e=Object(n.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"prometheus-使用说明"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#prometheus-使用说明"}},[t._v("#")]),t._v(" prometheus 使用说明")]),t._v(" "),a("p",[t._v("本文主要介绍 "),a("code",[t._v("prometheus")]),t._v(" 的基本部署,及用其监控 "),a("code",[t._v("venus")]),t._v(" 系统指标的基本方案。")]),t._v(" "),a("h2",{attrs:{id:"配置解析"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#配置解析"}},[t._v("#")]),t._v(" 配置解析")]),t._v(" "),a("p",[t._v("默认的配置文件为 "),a("code",[t._v("prometheus.yml")])]),t._v(" "),a("div",{staticClass:"language-yaml extra-class"},[a("pre",{pre:!0,attrs:{class:"language-yaml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# my global config")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("global")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("scrape_interval")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 15s "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set the scrape interval to every 15 seconds. Default is every 1 minute.")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("evaluation_interval")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 15s "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Evaluate rules every 15 seconds. The default is every 1 minute.")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# scrape_timeout is set to the global default (10s).")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Alertmanager configuration")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("alerting")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("alertmanagers")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("static_configs")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("targets")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# - alertmanager:9093")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("rule_files")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v('# - "first_rules.yml"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v('# - "second_rules.yml"')]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# A scrape configuration containing exactly one endpoint to scrape:")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Here it's Prometheus itself.")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("scrape_configs")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# The job name is added as a label `job=` to any timeseries scraped from this config.")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("job_name")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"prometheus"')]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# metrics_path defaults to '/metrics'")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# scheme defaults to 'http'.")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("static_configs")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("targets")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"localhost:9090"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n \n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 配置采集点,一个 job 可对应一个或多个采集点")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("job_name")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"venus"')]),t._v("\n \n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("metrics_path")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/metrics"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("scheme")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http"')]),t._v("\n \n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("static_configs")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("targets")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"localhost:4567"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"localhost:5678"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),a("h3",{attrs:{id:"服务发现"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#服务发现"}},[t._v("#")]),t._v(" 服务发现")]),t._v(" "),a("p",[t._v("可以通过额外的文件来配置采集点,支持热加载,相当于基于文件的服务发现。")]),t._v(" "),a("p",[a("code",[t._v("prometheus.yml")])]),t._v(" "),a("div",{staticClass:"language-yaml extra-class"},[a("pre",{pre:!0,attrs:{class:"language-yaml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("scrape_configs")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# The job name is added as a label `job=` to any timeseries scraped from this config.")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("job_name")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"prometheus"')]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# metrics_path defaults to '/metrics'")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# scheme defaults to 'http'.")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("static_configs")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("targets")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"localhost:9090"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n \n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 热加载")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("job_name")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"venus"')]),t._v("\n \n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("file_sd_configs")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("files")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"./venus.yml"')]),t._v("\n \n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 多久重新加载")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("refresh_interval")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 10m\n")])])]),a("p",[a("code",[t._v("venus")]),t._v(" 每个实现指标监控的服务可以认为是单独的采集点。下面配置采集 "),a("code",[t._v("venus-miner")]),t._v(" 和 "),a("code",[t._v("venus-messager")]),t._v(" 的监控指标。文件名为 "),a("code",[t._v("venus.yml")]),t._v("。")]),t._v(" "),a("div",{staticClass:"language-yaml extra-class"},[a("pre",{pre:!0,attrs:{class:"language-yaml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 该文件中的每一个 targets 都是一个采集点")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("targets")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# venus-miner 指标监控服务地址")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('":"')]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("labels")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("__metrics_path__")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/debug/metrics"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("instance")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"miner"')]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("targets")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# venus-messager 指标监控服务地址")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('":"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("labels")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("__metrics_path__")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/debug/metrics"')]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("instance")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"messager"')]),t._v("\n")])])]),a("h2",{attrs:{id:"启动"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#启动"}},[t._v("#")]),t._v(" 启动")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("$ ./prometheus --config.file"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("prometheus.yml\n")])])]),a("p",[t._v("使用"),a("code",[t._v("http://localhost:9090/targets")]),t._v(", 可查询组件的指标。")])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[59],{449:function(t,s,a){"use strict";a.r(s);var n=a(17),e=Object(n.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"prometheus-使用说明"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#prometheus-使用说明"}},[t._v("#")]),t._v(" prometheus 使用说明")]),t._v(" "),a("p",[t._v("本文主要介绍 "),a("code",[t._v("prometheus")]),t._v(" 的基本部署,及用其监控 "),a("code",[t._v("venus")]),t._v(" 系统指标的基本方案。")]),t._v(" "),a("h2",{attrs:{id:"配置解析"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#配置解析"}},[t._v("#")]),t._v(" 配置解析")]),t._v(" "),a("p",[t._v("默认的配置文件为 "),a("code",[t._v("prometheus.yml")])]),t._v(" "),a("div",{staticClass:"language-yaml extra-class"},[a("pre",{pre:!0,attrs:{class:"language-yaml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# my global config")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("global")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("scrape_interval")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 15s "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set the scrape interval to every 15 seconds. Default is every 1 minute.")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("evaluation_interval")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 15s "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Evaluate rules every 15 seconds. The default is every 1 minute.")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# scrape_timeout is set to the global default (10s).")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Alertmanager configuration")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("alerting")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("alertmanagers")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("static_configs")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("targets")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# - alertmanager:9093")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("rule_files")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v('# - "first_rules.yml"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v('# - "second_rules.yml"')]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# A scrape configuration containing exactly one endpoint to scrape:")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Here it's Prometheus itself.")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("scrape_configs")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# The job name is added as a label `job=` to any timeseries scraped from this config.")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("job_name")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"prometheus"')]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# metrics_path defaults to '/metrics'")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# scheme defaults to 'http'.")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("static_configs")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("targets")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"localhost:9090"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n \n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 配置采集点,一个 job 可对应一个或多个采集点")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("job_name")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"venus"')]),t._v("\n \n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("metrics_path")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/metrics"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("scheme")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http"')]),t._v("\n \n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("static_configs")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("targets")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"localhost:4567"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"localhost:5678"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),a("h3",{attrs:{id:"服务发现"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#服务发现"}},[t._v("#")]),t._v(" 服务发现")]),t._v(" "),a("p",[t._v("可以通过额外的文件来配置采集点,支持热加载,相当于基于文件的服务发现。")]),t._v(" "),a("p",[a("code",[t._v("prometheus.yml")])]),t._v(" "),a("div",{staticClass:"language-yaml extra-class"},[a("pre",{pre:!0,attrs:{class:"language-yaml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("scrape_configs")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# The job name is added as a label `job=` to any timeseries scraped from this config.")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("job_name")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"prometheus"')]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# metrics_path defaults to '/metrics'")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# scheme defaults to 'http'.")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("static_configs")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("targets")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"localhost:9090"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n \n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 热加载")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("job_name")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"venus"')]),t._v("\n \n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("file_sd_configs")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("files")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"./venus.yml"')]),t._v("\n \n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 多久重新加载")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("refresh_interval")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 10m\n")])])]),a("p",[a("code",[t._v("venus")]),t._v(" 每个实现指标监控的服务可以认为是单独的采集点。下面配置采集 "),a("code",[t._v("venus-miner")]),t._v(" 和 "),a("code",[t._v("venus-messager")]),t._v(" 的监控指标。文件名为 "),a("code",[t._v("venus.yml")]),t._v("。")]),t._v(" "),a("div",{staticClass:"language-yaml extra-class"},[a("pre",{pre:!0,attrs:{class:"language-yaml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 该文件中的每一个 targets 都是一个采集点")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("targets")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# venus-miner 指标监控服务地址")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('":"')]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("labels")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("__metrics_path__")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/debug/metrics"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("instance")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"miner"')]),t._v("\n \n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("targets")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# venus-messager 指标监控服务地址")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('":"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("labels")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("__metrics_path__")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/debug/metrics"')]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("instance")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"messager"')]),t._v("\n")])])]),a("h2",{attrs:{id:"启动"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#启动"}},[t._v("#")]),t._v(" 启动")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("$ ./prometheus --config.file"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("prometheus.yml\n")])])]),a("p",[t._v("使用"),a("code",[t._v("http://localhost:9090/targets")]),t._v(", 可查询组件的指标。")])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/assets/js/6.14585a82.js b/assets/js/6.86a8750a.js similarity index 99% rename from assets/js/6.14585a82.js rename to assets/js/6.86a8750a.js index f29eba2f6..0632aee5c 100644 --- a/assets/js/6.14585a82.js +++ b/assets/js/6.86a8750a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{328:function(e,t,o){e.exports=o.p+"assets/img/venus-gateway-system-design.993fdfcd.png"},388:function(e,t,o){e.exports=o.p+"assets/img/venus-cluster.39d38e43.png"},402:function(e,t,o){"use strict";o.r(t);var a=o(17),s=Object(a.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h2",{attrs:{id:"preface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#preface"}},[e._v("#")]),e._v(" Preface")]),e._v(" "),a("p",[e._v("Multiple interoperable implementations are required on the same public blockchain. Each implementation may has its own set of security issues, but they are not all the same . Therefore, launching cryptocurrency networks with multiple implementations can reduce the catastrophic errors. Venus is one of the four implementations in Filecoin network.")]),e._v(" "),a("p",[e._v("Venus (Capital V) refers to one of the general implementations of Filecoin, while venus (v in lowercase) refers to one of the components of Venus. Venus is committed to helping small and medium-sized storage providers to join the Filecoin ecosystem network with a lower barrier.")]),e._v(" "),a("p",[e._v("Now Venus has lead the way to the distributed storage pool of Filecoin through components like venus、damocles, sophon-miner, venus-wallet, sophon-messager, sophon-auth, sophon-gateway. In the future, Venus will continue its evolvement and jointly promote the open source development of Filecoin ecosystem.")]),e._v(" "),a("h2",{attrs:{id:"why-are-we-doing-this"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#why-are-we-doing-this"}},[e._v("#")]),e._v(" Why are we doing this")]),e._v(" "),a("p",[e._v("On June 2020, Protocol Labs launched an RFP to handover the maintenance of go-filecoin to another community member, and IPFSForce applied for it and successfully obtain the project. In October, We renamed go-filecoin as Venus, and take over the maintenance of Venus Implementation.")]),e._v(" "),a("p",[e._v("Before IPFSForce’s application, maintenance effort is seriously lacking in Venus project. In terms of protocols and components, vm,mpool, chain, rpc are all available, but all have different kind of issue. It takes Venus team more than 3 months to gradually fix protocol layer, code layer, and problematic functions, making Venus complete the interoperability with Lotus, so that the nodes using Venus can run smoothly in the Filecoin network. And then we let Venus support calibration and 2K networks.")]),e._v(" "),a("p",[e._v("After completing the above work, we start to set the roadmap of Venus development.")]),e._v(" "),a("p",[e._v("We plan to let Venus support the development of storage pool. At the beginning, we decide to achieve the best of expansion from a single storage provider. It is technically feasible, but the biggest problem was caused by the mechanism of Filecoin proofs. Storage providers in the Filecoin network have to submit the PoSt periodically, and in order to generate the proof, they need to read the data of a whole Partition. If all sectors are distributed in different places, to read the data through the public network will be heavy time-consuming.")]),e._v(" "),a("p",[e._v("After that, through several times of re-design and modification, we finally decide to build it as a distributed storage pool. Distributed storage pool will not completely in charge with any single storage provider, but managed by multiple storage providers, which is more like a storage provider group/union.")]),e._v(" "),a("p",[e._v("The external features of Venus distributed storage pool are similar to other pools. Storage Providers can store their resources in distributed geographic nodes. As long as there is a stable connection to the network, the storage provider can create a node accessible to Venus storage pool; The probability of earning the block reward is proportional to the amount of storage the storage provider contributes to the Filecoin network, and the final result of separate calculation and overall calculation should be the same: "),a("em",[a("strong",[e._v("n1/p+ n2/p+n3/p......= (n1+n2+n3+.....)/p")])]),e._v(", which provides a theoretical basis on the algorithm.")]),e._v(" "),a("p",[e._v("For the storage and retrieval, storage providers can access the network through the venus unified entrance or by themselves. In the design and with the permission from storage providers, venus will select the appropriate node to store data according to specific requirements, so that the data is closer to the real scenario.")]),e._v(" "),a("ol",[a("li",[a("p",[a("em",[a("strong",[e._v("Data storage")])]),e._v(": component sharing is supported, and the storage will be gradually migrated to MySQL to ensure the metadata security of Venus through some highly available solutions.")])]),e._v(" "),a("li",[a("p",[a("em",[a("strong",[e._v("Shared Modules")])]),e._v(": support high availability, ensure the quality of service, reduce the time cost and maintenance cost of storage providers, which make it easier for storage providers to join the storage pool. Nowadays, mining is a high-tech activity, but to achieve Filecoin's goal to get the utmost out of storage resources, it is inevitable to lower the threshold to attract more participants.")])]),e._v(" "),a("li",[a("p",[a("em",[a("strong",[e._v("Combine the right for more block rewards")])]),e._v(": storage providers can integrate resources together and help each other pack messages, so as to avoid the situation of small storage providers that no one can pack messages.")])]),e._v(" "),a("li",[a("p",[a("em",[a("strong",[e._v("Improve the TPS of Filecoin network")])]),e._v(": if there are multiple blocks at the same height, sophon-miner can ensure that the messages in each block are different, as the avoidance of highly-repeated messages when blocks are separated.")])]),e._v(" "),a("li",[a("p",[a("em",[a("strong",[e._v("Improve the stability of messages")])]),e._v(": messages in storing activities can be separated from nodes and managed by sophon-messager, which can track the latest state of the chain to set a relatively reasonable estimated gas parameter, and also supports users to set a message parameter themselves.")])]),e._v(" "),a("li",[a("p",[a("em",[a("strong",[e._v("Improve the speed of data access")])]),e._v(": the current Filecoin network is more like a pool which is merely for data storage, but as a complete data service, it also needs data retrieval to realize its real value. With sufficient miner users, Venus has more chances to promote the real data application. For example, for data distribution, Venus can distribute the data to some storage providers' nodes nearest to the customers, which can improve the access speed; some public data can distribute these data to more nodes as much as possible to ensure that access at any location is effective, which can greatly improve the performance of IPFS network and further realize the goal of IPFS, as one of the Web3.0 solutions.")])])]),e._v(" "),a("h2",{attrs:{id:"how-venus-works"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-venus-works"}},[e._v("#")]),e._v(" How Venus works")]),e._v(" "),a("h3",{attrs:{id:"architecture"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#architecture"}},[e._v("#")]),e._v(" Architecture")]),e._v(" "),a("p",[e._v("Venus architecture includes venus, sophon-miner, damocles, sophon-messager, venus-wallet, sophon-auth, and droplet. In the classic architecture, venus, sophon-miner, sophon-auth, sophon-messager and droplet are "),a("strong",[e._v("public components")]),e._v(", and damocles and venus-wallet are "),a("strong",[e._v("local components")]),e._v(".")]),e._v(" "),a("p",[e._v("Public components can be established by service providers or by multiple storage providers, and they only need to run damocles and venus-wallet locally. In fact, all components of Venus are protocol oriented. If storage providers have sufficient skills, "),a("strong",[e._v("they can also deploy all or part of the public components locally, so the deployment can be more flexible")]),e._v(".")]),e._v(" "),a("p",[e._v("The following figure is a typical application scenario in our design.")]),e._v(" "),a("p",[a("img",{attrs:{src:o(388),alt:""}})]),e._v(" "),a("p",[e._v("The following contents show the relationship between components, which are similar in function, but with more powerful expanded functions in details and uses.")]),e._v(" "),a("ul",[a("li",[e._v("sophon-auth --\x3e token authentication service extend lotus jwt")]),e._v(" "),a("li",[e._v("sophon-miner --\x3e lotus-miner block produce part")]),e._v(" "),a("li",[e._v("damocles --\x3e lotus-miner sealer scheduler part/wd")]),e._v(" "),a("li",[e._v("venus daemon --\x3e lotus daemon")]),e._v(" "),a("li",[e._v("venus-wallet -> lotus wallet part")]),e._v(" "),a("li",[e._v("sophon-messager --\x3e lotus mpool")])]),e._v(" "),a("h3",{attrs:{id:"venus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus"}},[e._v("#")]),e._v(" venus")]),e._v(" "),a("p",[e._v("venus is similar to lotus-daemon, which is used to support all nodes. venus is connected to the Filecoin blockchain network to provide data support for Venus. venus can be used as an ordinary node. It has all the necessary functions of blockchain nodes, such as chain, mpool and wallet. The APIs of venus are almost compatible with those of lotus (you can mention the issue of incompatible APIs). On venus, you can create private keys, query assets, transfer funds, etc. In a typical deployment environment, venus only provides data query service on the basic chain without private key restoration. The block data needed by slashfilter is stored in the database, and the node itself is stateless. In this case, venus node can realize its high availability through nginx reverse proxy.")]),e._v(" "),a("h4",{attrs:{id:"venus-and-lotus-the-difference"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-and-lotus-the-difference"}},[e._v("#")]),e._v(" Venus and Lotus,The Difference")]),e._v(" "),a("ol",[a("li",[e._v("External signature is supported in the API of creating block (request will be proposed to lotus too).")]),e._v(" "),a("li",[e._v("The API of message selection supports the selection of multiple batches of messages at the same time, which is used to select messages when multiple storage providers get the block rewards.")]),e._v(" "),a("li",[e._v("Support the centralized authorization access to sophon-auth.")])]),e._v(" "),a("p",[e._v("Therefore, if you are interested in the mixed deployment of venus / lotus, you need to use "),a("a",{attrs:{href:"https://github.com/ipfs-force-community/lotus/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("Venus project which is compatible to Lotus"),a("OutboundLink")],1),e._v(" or pick your own CCS.")]),e._v(" "),a("h3",{attrs:{id:"sophon-auth"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sophon-auth"}},[e._v("#")]),e._v(" sophon-auth")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/ipfs-force-community/sophon-auth",target:"_blank",rel:"noopener noreferrer"}},[e._v("sophon-auth"),a("OutboundLink")],1),e._v(" (formerly venus-auth) is a component used for authorization. In a typical deployment environment, sophon-auth is used to provide authorization services to venus, sophon-miner and sophon-messager. Local nodes need to be authorized to have access to the shared components. Based on the authorization, sophon-auth will expand its functions, such as security control, including access restriction and blacklist.")]),e._v(" "),a("h3",{attrs:{id:"sophon-miner"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sophon-miner"}},[e._v("#")]),e._v(" sophon-miner")]),e._v(" "),a("p",[e._v("The function of "),a("a",{attrs:{href:"https://github.com/ipfs-force-community/sophon-miner",target:"_blank",rel:"noopener noreferrer"}},[e._v("sophon-miner"),a("OutboundLink")],1),e._v(" (formerly venus-miner) is to combine the rights to earn block rewards. The program can configure the location of multiple storage providers and their sealers and wallets, and generate blocks for these storage providers at the same time. sophon-miner has the following features:")]),e._v(" "),a("ol",[a("li",[e._v("Separate data: because the process of generating blocks needs to access data, and storage provider's sealer may be heterogeneous, but now most storage providers will use their own codes, so there is a problem about how to access these data to realize joint mining. By sophon-miner’s independence on the storage organization mode and completing the proofs by storage providers, no matter how the miner's sealer organizes the storage, as long as the Computeproof API is implemented, sophon-miner can generate the proof through it.")]),e._v(" "),a("li",[e._v("Separate private key: when calculating random numbers and signature blocks, all operations about private key are accessed through remote wallet, which can improve the security of mining activities.")]),e._v(" "),a("li",[e._v("Improve storage providers' wincount and TPS: when the miner who uses sophon-miner rto get multiple (> 1) rights of block rewards in a period, sophon-miner will try to select different messages from the message pool for packaging, which can somehow improve the speed of these messages on the chain, and make the block get more gas premium.")])]),e._v(" "),a("h3",{attrs:{id:"sophon-messenger"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sophon-messenger"}},[e._v("#")]),e._v(" sophon-messenger")]),e._v(" "),a("p",[e._v("The goal of "),a("a",{attrs:{href:"https://github.com/ipfs-force-community/sophon-messager",target:"_blank",rel:"noopener noreferrer"}},[e._v("sophon-messager"),a("OutboundLink")],1),e._v(" (formerly venus-messager) is to help messages on chain more efficiently, and to flexibly control the timing of messages on chain to reduce gas consumption and control the data traffic, etc. It includes remote wallet management, address management and message management.")]),e._v(" "),a("ol",[a("li",[e._v("Wallet management: sophon-messager connects multiple wallets and scans these addresses into the list.")]),e._v(" "),a("li",[e._v("Address management: the major purpose is to manage the nonce value to ensure that the value can be assigned in the correct order.")]),e._v(" "),a("li",[e._v('Message management: it is divided into three parts, namely "message receiving and saving", "message selection and pushing" and "tracking the status of message on the chain".')])]),e._v(" "),a("p",[e._v("In terms of functions:")]),e._v(" "),a("ol",[a("li",[e._v("Support remote wallet: one messenger supports multiple wallets to manage their message separately.")]),e._v(" "),a("li",[e._v("Support local storage of SQLite and remote storage of MySQL for more secure and stable storage.")]),e._v(" "),a("li",[e._v("Dynamic Fill: gas related parameters and nonce are to be filled out when sending a message on chain according to gas and push policy, to make sure the gas-estimation and other setting are valid.")]),e._v(" "),a("li",[e._v("Maintain message status, including whether the message is chained and replaced and save the results of the execution.")]),e._v(" "),a("li",[e._v("Multi-point message delivery (directly to the blockchain network with libp2p, push to the node by Mpool API), to make sure that messages are propagated over the network.")]),e._v(" "),a("li",[e._v("Flexible config includes gas estimate, msg push strategy, etc.")])]),e._v(" "),a("h3",{attrs:{id:"venus-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-wallet"}},[e._v("#")]),e._v(" venus-wallet")]),e._v(" "),a("p",[e._v("venus-wallet is a remote wallet, which can support both Lotus and Venus in terms of protocols. In a typical deployment environment, this module is deployed locally by storage providers, and the security of assets is guaranteed by certain policy configuration. venus-wallet has the following features:")]),e._v(" "),a("ol",[a("li",[e._v("Private key management function: currently it supports the private key management of asymmetric algorithms BLS and SECP, and it can generate random private key, and uses aes128 to encrypt and store the private key symmetrically whilst supports the private key to sign the data.")]),e._v(" "),a("li",[e._v("Signature verification: each signature type has its verification policy, which ensures that the signer won't do deceits the wallet through non-credible signature type.")]),e._v(" "),a("li",[e._v("Signature tactics module: for the Lotus and Venus implementation of Filecoin, the module is created to manage 10 existing data structures and more than 60 signature types in message data structure, and configure various combination methods on demand to bind private key signature rules, and then integrate several different private key signature rules and authorize them to external components for further usage.")])]),e._v(" "),a("h3",{attrs:{id:"droplet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#droplet"}},[e._v("#")]),e._v(" droplet")]),e._v(" "),a("p",[e._v("Droplet (formerly venus-market) is the market component in the Venus system. Its vision is to create a distributed storage and retrieval market in the Filecoin network. Currently, it has realized order storage and retrieval compatible with the Lotus protocol, and is gradually moving towards receiving orders from multiple clusters of droplet services and providing unified retrieval services to the outside world. You can refer to "),a("a",{attrs:{href:"https://github.com/filecoin-project/venus/blob/master/documentation/en/venus-market-design-roadmap.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("droplet design and roadmap"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"sophon-gateway"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sophon-gateway"}},[e._v("#")]),e._v(" sophon-gateway")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/ipfs-force-community/sophon-gateway",target:"_blank",rel:"noopener noreferrer"}},[e._v("sophon-gateway"),a("OutboundLink")],1),e._v(" (formerly venus-gateway) is a bridge between independent components and the chain service layer. It is used to simplify deployment and reduce the complexity of storage provider access, and increase the security of storage provider access. When the independent component is started, its service interface is registered with sophon-gateway. The chain service component needs to request the corresponding cluster’s service API through sophon-gateway.")]),e._v(" "),a("ul",[a("li",[e._v("Storage providers do not need external IP and exposed wallet service;")]),e._v(" "),a("li",[e._v("After the storage pool is configured with an SSL certificate, the connection between the cluster and the storage pool is secure;")]),e._v(" "),a("li",[e._v("Storage providers can simply register multiple clients (wallets/proofs) with the storage pool to achieve high availability.")])]),e._v(" "),a("p",[a("img",{attrs:{src:o(328),alt:"sophon-gateway"}})]),e._v(" "),a("h3",{attrs:{id:"damocles"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#damocles"}},[e._v("#")]),e._v(" damocles")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/ipfs-force-community/damocles",target:"_blank",rel:"noopener noreferrer"}},[e._v("damocles"),a("OutboundLink")],1),e._v(" (formerly venus-cluster) is a new version of sector sealing and computing power maintenance components launched by Venus. Compared with the original venus-sealer, it has certain advantages in task scheduling and maximizing system resources, and its target users will also be different")]),e._v(" "),a("h2",{attrs:{id:"learn-more-about-venus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#learn-more-about-venus"}},[e._v("#")]),e._v(" Learn more about Venus")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://venus.filecoin.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Docs"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discussion"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://app.slack.com/client/TEHTVS1L6/C028PCH8L31",target:"_blank",rel:"noopener noreferrer"}},[e._v("Slack"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"github.com/filecoin-project/venus"}},[e._v("GitHub")])]),e._v(" "),a("li",[e._v("Chain explorer: "),a("a",{attrs:{href:"filscan.io"}},[e._v("filscan.io")])]),e._v(" "),a("li",[e._v("Store on the MainNet: "),a("a",{attrs:{href:"https://docs.filecoin.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("docs.filecoin.io"),a("OutboundLink")],1)])])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{328:function(e,t,o){e.exports=o.p+"assets/img/venus-gateway-system-design.993fdfcd.png"},388:function(e,t,o){e.exports=o.p+"assets/img/venus-cluster.39d38e43.png"},401:function(e,t,o){"use strict";o.r(t);var a=o(17),s=Object(a.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h2",{attrs:{id:"preface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#preface"}},[e._v("#")]),e._v(" Preface")]),e._v(" "),a("p",[e._v("Multiple interoperable implementations are required on the same public blockchain. Each implementation may has its own set of security issues, but they are not all the same . Therefore, launching cryptocurrency networks with multiple implementations can reduce the catastrophic errors. Venus is one of the four implementations in Filecoin network.")]),e._v(" "),a("p",[e._v("Venus (Capital V) refers to one of the general implementations of Filecoin, while venus (v in lowercase) refers to one of the components of Venus. Venus is committed to helping small and medium-sized storage providers to join the Filecoin ecosystem network with a lower barrier.")]),e._v(" "),a("p",[e._v("Now Venus has lead the way to the distributed storage pool of Filecoin through components like venus、damocles, sophon-miner, venus-wallet, sophon-messager, sophon-auth, sophon-gateway. In the future, Venus will continue its evolvement and jointly promote the open source development of Filecoin ecosystem.")]),e._v(" "),a("h2",{attrs:{id:"why-are-we-doing-this"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#why-are-we-doing-this"}},[e._v("#")]),e._v(" Why are we doing this")]),e._v(" "),a("p",[e._v("On June 2020, Protocol Labs launched an RFP to handover the maintenance of go-filecoin to another community member, and IPFSForce applied for it and successfully obtain the project. In October, We renamed go-filecoin as Venus, and take over the maintenance of Venus Implementation.")]),e._v(" "),a("p",[e._v("Before IPFSForce’s application, maintenance effort is seriously lacking in Venus project. In terms of protocols and components, vm,mpool, chain, rpc are all available, but all have different kind of issue. It takes Venus team more than 3 months to gradually fix protocol layer, code layer, and problematic functions, making Venus complete the interoperability with Lotus, so that the nodes using Venus can run smoothly in the Filecoin network. And then we let Venus support calibration and 2K networks.")]),e._v(" "),a("p",[e._v("After completing the above work, we start to set the roadmap of Venus development.")]),e._v(" "),a("p",[e._v("We plan to let Venus support the development of storage pool. At the beginning, we decide to achieve the best of expansion from a single storage provider. It is technically feasible, but the biggest problem was caused by the mechanism of Filecoin proofs. Storage providers in the Filecoin network have to submit the PoSt periodically, and in order to generate the proof, they need to read the data of a whole Partition. If all sectors are distributed in different places, to read the data through the public network will be heavy time-consuming.")]),e._v(" "),a("p",[e._v("After that, through several times of re-design and modification, we finally decide to build it as a distributed storage pool. Distributed storage pool will not completely in charge with any single storage provider, but managed by multiple storage providers, which is more like a storage provider group/union.")]),e._v(" "),a("p",[e._v("The external features of Venus distributed storage pool are similar to other pools. Storage Providers can store their resources in distributed geographic nodes. As long as there is a stable connection to the network, the storage provider can create a node accessible to Venus storage pool; The probability of earning the block reward is proportional to the amount of storage the storage provider contributes to the Filecoin network, and the final result of separate calculation and overall calculation should be the same: "),a("em",[a("strong",[e._v("n1/p+ n2/p+n3/p......= (n1+n2+n3+.....)/p")])]),e._v(", which provides a theoretical basis on the algorithm.")]),e._v(" "),a("p",[e._v("For the storage and retrieval, storage providers can access the network through the venus unified entrance or by themselves. In the design and with the permission from storage providers, venus will select the appropriate node to store data according to specific requirements, so that the data is closer to the real scenario.")]),e._v(" "),a("ol",[a("li",[a("p",[a("em",[a("strong",[e._v("Data storage")])]),e._v(": component sharing is supported, and the storage will be gradually migrated to MySQL to ensure the metadata security of Venus through some highly available solutions.")])]),e._v(" "),a("li",[a("p",[a("em",[a("strong",[e._v("Shared Modules")])]),e._v(": support high availability, ensure the quality of service, reduce the time cost and maintenance cost of storage providers, which make it easier for storage providers to join the storage pool. Nowadays, mining is a high-tech activity, but to achieve Filecoin's goal to get the utmost out of storage resources, it is inevitable to lower the threshold to attract more participants.")])]),e._v(" "),a("li",[a("p",[a("em",[a("strong",[e._v("Combine the right for more block rewards")])]),e._v(": storage providers can integrate resources together and help each other pack messages, so as to avoid the situation of small storage providers that no one can pack messages.")])]),e._v(" "),a("li",[a("p",[a("em",[a("strong",[e._v("Improve the TPS of Filecoin network")])]),e._v(": if there are multiple blocks at the same height, sophon-miner can ensure that the messages in each block are different, as the avoidance of highly-repeated messages when blocks are separated.")])]),e._v(" "),a("li",[a("p",[a("em",[a("strong",[e._v("Improve the stability of messages")])]),e._v(": messages in storing activities can be separated from nodes and managed by sophon-messager, which can track the latest state of the chain to set a relatively reasonable estimated gas parameter, and also supports users to set a message parameter themselves.")])]),e._v(" "),a("li",[a("p",[a("em",[a("strong",[e._v("Improve the speed of data access")])]),e._v(": the current Filecoin network is more like a pool which is merely for data storage, but as a complete data service, it also needs data retrieval to realize its real value. With sufficient miner users, Venus has more chances to promote the real data application. For example, for data distribution, Venus can distribute the data to some storage providers' nodes nearest to the customers, which can improve the access speed; some public data can distribute these data to more nodes as much as possible to ensure that access at any location is effective, which can greatly improve the performance of IPFS network and further realize the goal of IPFS, as one of the Web3.0 solutions.")])])]),e._v(" "),a("h2",{attrs:{id:"how-venus-works"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-venus-works"}},[e._v("#")]),e._v(" How Venus works")]),e._v(" "),a("h3",{attrs:{id:"architecture"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#architecture"}},[e._v("#")]),e._v(" Architecture")]),e._v(" "),a("p",[e._v("Venus architecture includes venus, sophon-miner, damocles, sophon-messager, venus-wallet, sophon-auth, and droplet. In the classic architecture, venus, sophon-miner, sophon-auth, sophon-messager and droplet are "),a("strong",[e._v("public components")]),e._v(", and damocles and venus-wallet are "),a("strong",[e._v("local components")]),e._v(".")]),e._v(" "),a("p",[e._v("Public components can be established by service providers or by multiple storage providers, and they only need to run damocles and venus-wallet locally. In fact, all components of Venus are protocol oriented. If storage providers have sufficient skills, "),a("strong",[e._v("they can also deploy all or part of the public components locally, so the deployment can be more flexible")]),e._v(".")]),e._v(" "),a("p",[e._v("The following figure is a typical application scenario in our design.")]),e._v(" "),a("p",[a("img",{attrs:{src:o(388),alt:""}})]),e._v(" "),a("p",[e._v("The following contents show the relationship between components, which are similar in function, but with more powerful expanded functions in details and uses.")]),e._v(" "),a("ul",[a("li",[e._v("sophon-auth --\x3e token authentication service extend lotus jwt")]),e._v(" "),a("li",[e._v("sophon-miner --\x3e lotus-miner block produce part")]),e._v(" "),a("li",[e._v("damocles --\x3e lotus-miner sealer scheduler part/wd")]),e._v(" "),a("li",[e._v("venus daemon --\x3e lotus daemon")]),e._v(" "),a("li",[e._v("venus-wallet -> lotus wallet part")]),e._v(" "),a("li",[e._v("sophon-messager --\x3e lotus mpool")])]),e._v(" "),a("h3",{attrs:{id:"venus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus"}},[e._v("#")]),e._v(" venus")]),e._v(" "),a("p",[e._v("venus is similar to lotus-daemon, which is used to support all nodes. venus is connected to the Filecoin blockchain network to provide data support for Venus. venus can be used as an ordinary node. It has all the necessary functions of blockchain nodes, such as chain, mpool and wallet. The APIs of venus are almost compatible with those of lotus (you can mention the issue of incompatible APIs). On venus, you can create private keys, query assets, transfer funds, etc. In a typical deployment environment, venus only provides data query service on the basic chain without private key restoration. The block data needed by slashfilter is stored in the database, and the node itself is stateless. In this case, venus node can realize its high availability through nginx reverse proxy.")]),e._v(" "),a("h4",{attrs:{id:"venus-and-lotus-the-difference"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-and-lotus-the-difference"}},[e._v("#")]),e._v(" Venus and Lotus,The Difference")]),e._v(" "),a("ol",[a("li",[e._v("External signature is supported in the API of creating block (request will be proposed to lotus too).")]),e._v(" "),a("li",[e._v("The API of message selection supports the selection of multiple batches of messages at the same time, which is used to select messages when multiple storage providers get the block rewards.")]),e._v(" "),a("li",[e._v("Support the centralized authorization access to sophon-auth.")])]),e._v(" "),a("p",[e._v("Therefore, if you are interested in the mixed deployment of venus / lotus, you need to use "),a("a",{attrs:{href:"https://github.com/ipfs-force-community/lotus/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("Venus project which is compatible to Lotus"),a("OutboundLink")],1),e._v(" or pick your own CCS.")]),e._v(" "),a("h3",{attrs:{id:"sophon-auth"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sophon-auth"}},[e._v("#")]),e._v(" sophon-auth")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/ipfs-force-community/sophon-auth",target:"_blank",rel:"noopener noreferrer"}},[e._v("sophon-auth"),a("OutboundLink")],1),e._v(" (formerly venus-auth) is a component used for authorization. In a typical deployment environment, sophon-auth is used to provide authorization services to venus, sophon-miner and sophon-messager. Local nodes need to be authorized to have access to the shared components. Based on the authorization, sophon-auth will expand its functions, such as security control, including access restriction and blacklist.")]),e._v(" "),a("h3",{attrs:{id:"sophon-miner"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sophon-miner"}},[e._v("#")]),e._v(" sophon-miner")]),e._v(" "),a("p",[e._v("The function of "),a("a",{attrs:{href:"https://github.com/ipfs-force-community/sophon-miner",target:"_blank",rel:"noopener noreferrer"}},[e._v("sophon-miner"),a("OutboundLink")],1),e._v(" (formerly venus-miner) is to combine the rights to earn block rewards. The program can configure the location of multiple storage providers and their sealers and wallets, and generate blocks for these storage providers at the same time. sophon-miner has the following features:")]),e._v(" "),a("ol",[a("li",[e._v("Separate data: because the process of generating blocks needs to access data, and storage provider's sealer may be heterogeneous, but now most storage providers will use their own codes, so there is a problem about how to access these data to realize joint mining. By sophon-miner’s independence on the storage organization mode and completing the proofs by storage providers, no matter how the miner's sealer organizes the storage, as long as the Computeproof API is implemented, sophon-miner can generate the proof through it.")]),e._v(" "),a("li",[e._v("Separate private key: when calculating random numbers and signature blocks, all operations about private key are accessed through remote wallet, which can improve the security of mining activities.")]),e._v(" "),a("li",[e._v("Improve storage providers' wincount and TPS: when the miner who uses sophon-miner rto get multiple (> 1) rights of block rewards in a period, sophon-miner will try to select different messages from the message pool for packaging, which can somehow improve the speed of these messages on the chain, and make the block get more gas premium.")])]),e._v(" "),a("h3",{attrs:{id:"sophon-messenger"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sophon-messenger"}},[e._v("#")]),e._v(" sophon-messenger")]),e._v(" "),a("p",[e._v("The goal of "),a("a",{attrs:{href:"https://github.com/ipfs-force-community/sophon-messager",target:"_blank",rel:"noopener noreferrer"}},[e._v("sophon-messager"),a("OutboundLink")],1),e._v(" (formerly venus-messager) is to help messages on chain more efficiently, and to flexibly control the timing of messages on chain to reduce gas consumption and control the data traffic, etc. It includes remote wallet management, address management and message management.")]),e._v(" "),a("ol",[a("li",[e._v("Wallet management: sophon-messager connects multiple wallets and scans these addresses into the list.")]),e._v(" "),a("li",[e._v("Address management: the major purpose is to manage the nonce value to ensure that the value can be assigned in the correct order.")]),e._v(" "),a("li",[e._v('Message management: it is divided into three parts, namely "message receiving and saving", "message selection and pushing" and "tracking the status of message on the chain".')])]),e._v(" "),a("p",[e._v("In terms of functions:")]),e._v(" "),a("ol",[a("li",[e._v("Support remote wallet: one messenger supports multiple wallets to manage their message separately.")]),e._v(" "),a("li",[e._v("Support local storage of SQLite and remote storage of MySQL for more secure and stable storage.")]),e._v(" "),a("li",[e._v("Dynamic Fill: gas related parameters and nonce are to be filled out when sending a message on chain according to gas and push policy, to make sure the gas-estimation and other setting are valid.")]),e._v(" "),a("li",[e._v("Maintain message status, including whether the message is chained and replaced and save the results of the execution.")]),e._v(" "),a("li",[e._v("Multi-point message delivery (directly to the blockchain network with libp2p, push to the node by Mpool API), to make sure that messages are propagated over the network.")]),e._v(" "),a("li",[e._v("Flexible config includes gas estimate, msg push strategy, etc.")])]),e._v(" "),a("h3",{attrs:{id:"venus-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-wallet"}},[e._v("#")]),e._v(" venus-wallet")]),e._v(" "),a("p",[e._v("venus-wallet is a remote wallet, which can support both Lotus and Venus in terms of protocols. In a typical deployment environment, this module is deployed locally by storage providers, and the security of assets is guaranteed by certain policy configuration. venus-wallet has the following features:")]),e._v(" "),a("ol",[a("li",[e._v("Private key management function: currently it supports the private key management of asymmetric algorithms BLS and SECP, and it can generate random private key, and uses aes128 to encrypt and store the private key symmetrically whilst supports the private key to sign the data.")]),e._v(" "),a("li",[e._v("Signature verification: each signature type has its verification policy, which ensures that the signer won't do deceits the wallet through non-credible signature type.")]),e._v(" "),a("li",[e._v("Signature tactics module: for the Lotus and Venus implementation of Filecoin, the module is created to manage 10 existing data structures and more than 60 signature types in message data structure, and configure various combination methods on demand to bind private key signature rules, and then integrate several different private key signature rules and authorize them to external components for further usage.")])]),e._v(" "),a("h3",{attrs:{id:"droplet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#droplet"}},[e._v("#")]),e._v(" droplet")]),e._v(" "),a("p",[e._v("Droplet (formerly venus-market) is the market component in the Venus system. Its vision is to create a distributed storage and retrieval market in the Filecoin network. Currently, it has realized order storage and retrieval compatible with the Lotus protocol, and is gradually moving towards receiving orders from multiple clusters of droplet services and providing unified retrieval services to the outside world. You can refer to "),a("a",{attrs:{href:"https://github.com/filecoin-project/venus/blob/master/documentation/en/venus-market-design-roadmap.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("droplet design and roadmap"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"sophon-gateway"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sophon-gateway"}},[e._v("#")]),e._v(" sophon-gateway")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/ipfs-force-community/sophon-gateway",target:"_blank",rel:"noopener noreferrer"}},[e._v("sophon-gateway"),a("OutboundLink")],1),e._v(" (formerly venus-gateway) is a bridge between independent components and the chain service layer. It is used to simplify deployment and reduce the complexity of storage provider access, and increase the security of storage provider access. When the independent component is started, its service interface is registered with sophon-gateway. The chain service component needs to request the corresponding cluster’s service API through sophon-gateway.")]),e._v(" "),a("ul",[a("li",[e._v("Storage providers do not need external IP and exposed wallet service;")]),e._v(" "),a("li",[e._v("After the storage pool is configured with an SSL certificate, the connection between the cluster and the storage pool is secure;")]),e._v(" "),a("li",[e._v("Storage providers can simply register multiple clients (wallets/proofs) with the storage pool to achieve high availability.")])]),e._v(" "),a("p",[a("img",{attrs:{src:o(328),alt:"sophon-gateway"}})]),e._v(" "),a("h3",{attrs:{id:"damocles"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#damocles"}},[e._v("#")]),e._v(" damocles")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/ipfs-force-community/damocles",target:"_blank",rel:"noopener noreferrer"}},[e._v("damocles"),a("OutboundLink")],1),e._v(" (formerly venus-cluster) is a new version of sector sealing and computing power maintenance components launched by Venus. Compared with the original venus-sealer, it has certain advantages in task scheduling and maximizing system resources, and its target users will also be different")]),e._v(" "),a("h2",{attrs:{id:"learn-more-about-venus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#learn-more-about-venus"}},[e._v("#")]),e._v(" Learn more about Venus")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://venus.filecoin.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Docs"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/filecoin-project/venus/discussions",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discussion"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://app.slack.com/client/TEHTVS1L6/C028PCH8L31",target:"_blank",rel:"noopener noreferrer"}},[e._v("Slack"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"github.com/filecoin-project/venus"}},[e._v("GitHub")])]),e._v(" "),a("li",[e._v("Chain explorer: "),a("a",{attrs:{href:"filscan.io"}},[e._v("filscan.io")])]),e._v(" "),a("li",[e._v("Store on the MainNet: "),a("a",{attrs:{href:"https://docs.filecoin.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("docs.filecoin.io"),a("OutboundLink")],1)])])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/60.bddee4dc.js b/assets/js/60.8135b1c5.js similarity index 99% rename from assets/js/60.bddee4dc.js rename to assets/js/60.8135b1c5.js index 6b67760d9..b6cb91317 100644 --- a/assets/js/60.bddee4dc.js +++ b/assets/js/60.8135b1c5.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[60],{450:function(t,s,a){"use strict";a.r(s);var n=a(17),e=Object(n.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h2",{attrs:{id:"venus-tipset-execution-trace-比较工具使用说明"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-tipset-execution-trace-比较工具使用说明"}},[t._v("#")]),t._v(" Venus Tipset Execution trace 比较工具使用说明")]),t._v(" "),a("p",[t._v("execution-trace 比较工具是用于当 venus 链同步发生共识错误导致同步异常时,\n用于快速定位不一致的消息及其执行细节,帮助精准定位问题。")]),t._v(" "),a("h3",{attrs:{id:"原理"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#原理"}},[t._v("#")]),t._v(" 原理")]),t._v(" "),a("p",[t._v("此工具通过 API 接口在 lotus 和 venus 上执行整个 tipset 中的消息,并获取所有的 execution-trace 进行比较,\n通常共识错误发生时,execution-traced 的细节也是不一致的。")]),t._v(" "),a("h3",{attrs:{id:"操作步骤"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#操作步骤"}},[t._v("#")]),t._v(" 操作步骤:")]),t._v(" "),a("h4",{attrs:{id:"编译-lotus-并启动"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#编译-lotus-并启动"}},[t._v("#")]),t._v(" 编译 lotus,并启动")]),t._v(" "),a("p",[t._v("在原力区维护的 lotus, v1.12.0/incubation 分支上,支持了相关接口,\n编译时添加"),a("code",[t._v("ENABLE_GAS_TARCE=1")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("git")]),t._v(" clone https://github.com/ipfs-force-community/lotus.git \n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("git")]),t._v(" checkout -b v1.12.0/incubation oriign/v1.12.0/incubation\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("make")]),t._v(" lotus "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[t._v("ENABLE_GAS_TRACE")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n")])])]),a("h4",{attrs:{id:"获取-execution-trace-分析工具"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#获取-execution-trace-分析工具"}},[t._v("#")]),t._v(" 获取 execution-trace 分析工具")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("git")]),t._v(" clone https://github.com/zl03jsj/filecoin-head-comparer.git\n")])])]),a("h4",{attrs:{id:"配置-execution-trace-分析工具"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#配置-execution-trace-分析工具"}},[t._v("#")]),t._v(" 配置 execution-trace 分析工具")]),t._v(" "),a("p",[t._v("在项目的跟目录下打开配置文件"),a("code",[t._v("./cfg_exec_trace.json")]),t._v("\n编辑配置 venus 和 lotus 的节点信息:")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"lotus"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"url"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://192.168.200.21:1234/rpc/v0"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"token"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"venus"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"url"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://192.168.1.125:3453/rpc/v0"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"token"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBbGxvdyI6WyJyZWFkIiwid3JpdGUiLCJzaWduIiwiYWRtaW4iXX0.oLkKAMWEiUA6oK-stwd3Spiwrx9TlGOuVFgrgn7JPwU"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"启动-execution-trace-工具开始问题检测"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#启动-execution-trace-工具开始问题检测"}},[t._v("#")]),t._v(" 启动 execution-trace 工具开始问题检测")]),t._v(" "),a("p",[t._v("由于共识问题,导致链同步时问题时,通过日志,很容易就可以定位有问题的 tipset epoch,\n在根目录执行命令,在参数中指定高度,就可以对指定的 tipset 进行分析比较了。")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("python3 ./exec_trace_cmp.py "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1288233")]),t._v("\nvenus url:http://192.168.1.125:3453/rpc/v0\nlotus url:http://192.168.200.21:1234/rpc/v0\n\n Venus and lotus got the same state root"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzacebhpihnow4fwuebtxenpl27kvl4k7aeozlsruwcdj3berrposkfgs"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" after apply tipset"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1288233")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n start compile tipset"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1288233")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" traces\n venus total message count"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("contain implicit"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("481")]),t._v("\n lotus total message count"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("contain implicit"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("481")]),t._v("\n \nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzacebo67zpnnaqb4jzz3peflh6mu3hczu7isd4yxkymvlao5li6lrqwi"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzaceaijdjyg263zawvczt3alkciu2ptrzv3pftu434gvxjujqmam2nxe execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzaceavrkj7coojud5amhn2ukrhrkntaxk6r7esnilldbjocia7ut7jzw"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacedus5agquqptf3o3yy3cylg7j2jb2sil24clvtyff4vcoedzxdaha execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzaceaadqo5lv75q7qvsbgx3prm5oh7nqfz6volerwleyt65jizhcyxqa"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacebkdqv25av4bjabifpe2vye74j73ou62le3hztyx33pxy254cul5u execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzacebrmjo2ahojpjj5rvdd6fxqvtgntoovvb722o25dmwmlub4u6icdw"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacebzez4rvo4yteqjtsdmwmaqpz7vadepdoikbaqcvnzqnhkuhkzt5y execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzaceapwk7p5c7gy35buhy6mqs42rv36kxvczca3siwl6h2evufsld5b6"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzaceahpmfeq46nagmbzpvjnabrsem2zjrvcy77cxldaf43aniclduqik execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzacecdl2zt4bd4nwhxnehlqejtlikvqwztnk3leil54dsmnx6koz42zu"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacec7uk7o6rbnxdwyluvlm3fsposlvangkqdaj5fargbwlbwws4ezuo execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzaceakhot2tzgn4zt3nr6aokq2brcity2eh2d67gc2iqrpswlgch5ng6"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacea3n7ku4epbmqq2ecebmgifpb26etb2hrww4ryqmhiumzwpsvf7es execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzacecc5zqh2fm55hno66f56pqji5245huk45xqpxzt7b5hz63o7nh622"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzaceb223qjyqk53zic5th7npzik3redyvy723egt47dsgwlshmaksqr6 execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("8")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzacedoohork3gnnzfvv5kme3gqfxrygw4otcwh5lklfbdz3mxy2evinq"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacea6ks7weiqy65m6m426dvihljvapmbts6cdlu6ytirrpveupvoj2y execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzacecivu4pfhvvdiwfk23ntidy2aein2y646uzrt4hotve46mejtgjsa"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzaceaqjbks2bjmdal6tu7yoxrecygrcn2s2pmwxwkukzj23p5lsjms2s execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzacecn6mfxfspglrrwu26uvj3fcirbz2femaeyv7f63vh7ochrwt76ay"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacec5rnu4a6xunucqpvks5eujn5t3cywpqwieoirex25mgycucbesky execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("11")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzacebvxwcnorwmplriluvus6jjvqvfcknkn44lzf37ptbe5oeiwpt3vu"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzaceaobqsuortebd4nujtqinnwnc7dgs44majmnnkdtt4dqow3wyxah2 execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("12")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzacear7yqpsjwvz5cofocunlyesh3q43ppvqgcs5pcnbsjmxqd4gbmtm"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacecxjuehhuu2hadecr4avab4qwyy5nenyilbftuuppdoxmohj7emjs execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("13")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzacedqliipes5nh74aeyy3wbn4md6t33kkgqx7m2ukke7qvajp2lrbkw"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzaceb37mvzapylc67d3vtz5fcbusziz2bofdicwny6zehonlkd3zwhus execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("14")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzaceas2brzrd3qhto26hfdi7diouff3yzemsvje5yyv66st3vgqzbjcg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacec27fdotcosdnj423naofdqczrykexqblhvu3iey4eptaublp4aeq execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("15")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzacebuyl637qzpqzw46jossgq4tef6j7bh62ec237mghrx4yj4ltu6h6"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacec3hijr5nvasludlrpa37muy4o64326tofzii7hop4zxynao3oquc execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("16")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzaceagr3ucrm3exnpnm62sq6qrpnyjb74u257by2i52axnqjtvsy5t5m"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacecbhtzedpwlpdr7imuv7j47rsbj3vsilibcp5j6ocrtqr4qiekp7s execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("17")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzacedqpta5vr5ha4wvezsenbu7qczhctnwndu2yiclgp52ienbk6oljk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacedblssnkunnlr2zl3rji5457mlgtc2oxunc6q37swqygtopu47eck execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("18")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzaceduw75wrsj6fdokywn4mm72hzvsfk74i2bu7zjmvmvntmupztsa62"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzaceapkogzfoym2n4q6mwnjfvkiqp2ff5ueampjxa2o3htjy2sknq4hm execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("19")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzacea4eoihdgbaui4rchhz66pk5ybeeyyv63qtnb3zbednp5p6m7prtq"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacebqhutaiusljv4cgwh235cyvd3mrwbruypz7utk7tmwjf5esxekjq execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("20")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzaceatyz5v6cxbnb7lw4zrw574aogec4aaeaxy2rwzs3fvr2qnvvoc6g"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzaceczfrg57g4fhmxugaf53s3h7a3hgqyziv5h6ztq7jdsinuaickr6c execution-traces: ok\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n")])])]),a("p",[t._v("当执行一致时,会看到下面的输出。")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("Venus and lotus got the same state root(bafy2bzacebhpihnow4fwuebtxenpl27kvl4k7aeozlsruwcdj3berrposkfgs) after apply tipset(1288233)\n")])])]),a("p",[t._v("当执行不一致是,会看到如下的输出")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v("\nidx:477, Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzaceclyunwu6ig3pvwurm34vxengjc33igcax3rxmmazo4ypevkcc4xg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacebmfzfvdp7x6fg7yk7i7p7gbvu56afosgbxyju6236b4ytpllv2tg execution-traces: ok\nidx:478, Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzaceaftdrisbrnb2yppgx37dahsp4ko23l47wsfg7g6gczx6czmtdvoa"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzaceaj3jyduelozrbaggwu2v5mokmbds67ouh5s6gdajneqrp6pdbxem execution-traces: ok\n-"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" this is a "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("cron")]),t._v(" message: "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("-\nimplicit message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("f00 -"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" f03, method "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(", nonce:1288233"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nidx:479, Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'/'")]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'bafy2bzacedqbx4tfp7qwpe7oylrwueiye4ipfx6ii7f2p4r5w55thwayci44q'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacea2o5ylrpovsg6f3bvufgolcd6z46kxgfohzp3c27gendhpirug5i execution-traces: ok\n-"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" this is a "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("cron")]),t._v(" message: "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("-\n\n message trace"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("283")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" not equals:\n message details "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" cid:"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'/'")]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'bafy2bzacebka5xwpzelt4cl5pa452k3oi45mbcy7pyrlc3om7sfnul4cz7dcu'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(", from:f00, to:f03, nonce:1288233\n-----"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" lotus_trace:---------------\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"OnMethodInvocation"')]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"loc"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"File"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/root/theduan/lotus-src/chain/vm/vm.go"')]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Line"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("333")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Function"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"github.com/filecoin-project/lotus/chain/vm.(*VM).send.func3"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"File"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/root/theduan/lotus-src/chain/vm/vm.go"')]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Line"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("354")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Function"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"github.com/filecoin-project/lotus/chain/vm.(*VM).send"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"File"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/root/theduan/lotus-src/chain/vm/runtime.go"')]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Line"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("445")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Function"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"github.com/filecoin-project/lotus/chain/vm.(*Runtime).internalSend"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"File"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/root/theduan/lotus-src/chain/vm/runtime.go"')]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Line"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("402")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Function"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"github.com/filecoin-project/lotus/chain/vm.(*Runtime).Send"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"File"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/root/go/pkg/mod/github.com/filecoin-project/specs-actors/v6@v6.0.0/actors/builtin/power/power_actor.go"')]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Line"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("450")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Function"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"github.com/filecoin-project/specs-actors/v6/actors/builtin/power.Actor.processBatchProofVerifies"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"File"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/root/go/pkg/mod/github.com/filecoin-project/specs-actors/v6@v6.0.0/actors/builtin/power/power_actor.go"')]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Line"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("222")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Function"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"github.com/filecoin-project/specs-actors/v6/actors/builtin/power.Actor.OnEpochTickEnd"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"File"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/usr/lib/go/src/reflect/value.go"')]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Line"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("543")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Function"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"reflect.Value.call"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"File"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/usr/lib/go/src/reflect/value.go"')]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Line"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("339")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Function"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"reflect.Value.Call"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"File"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/root/theduan/lotus-src/chain/vm/invoker.go"')]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Line"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("247")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Function"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"github.com/filecoin-project/lotus/chain/vm.(*ActorRegistry).transform.func2.1"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"File"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/root/theduan/lotus-src/chain/vm/runtime.go"')]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Line"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("171")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Function"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"github.com/filecoin-project/lotus/chain/vm.(*Runtime).shimCall"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"tg"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("23856")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"cg"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("23856")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"sg"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"vtg"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("23856")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"vcg"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("23856")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"vsg"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"tt"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2830")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ex"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"i"')]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" \n-----"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" venus_trace:---------------\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"OnVerifySeal"')]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"loc"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"File"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/home/zl/venus-src/pkg/vm/vmcontext/syscalls.go"')]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Line"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("106")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Function"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"github.com/filecoin-project/venus/pkg/vm/vmcontext.syscalls.BatchVerifySeals.func1"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"File"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/root/go/src/runtime/asm_amd64.s"')]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Line"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1371")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Function"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"runtime.goexit"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"tg"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2000")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"cg"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2000")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"sg"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"vtg"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"vcg"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2000")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"vsg"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"tt"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\nimplicit message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("f00 -"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" f03, method "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(", nonce:1288233"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nidx:480, Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'/'")]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'bafy2bzacebka5xwpzelt4cl5pa452k3oi45mbcy7pyrlc3om7sfnul4cz7dcu'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacebhpihnow4fwuebtxenpl27kvl4k7aeozlsruwcdj3berrposkfgs execution-traces: failed\n")])])]),a("p",[t._v("程序会打印出不同的 execution-trace 的消息,以及不匹配的调用堆栈,可以方便快速定位问题。")])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[60],{451:function(t,s,a){"use strict";a.r(s);var n=a(17),e=Object(n.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h2",{attrs:{id:"venus-tipset-execution-trace-比较工具使用说明"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#venus-tipset-execution-trace-比较工具使用说明"}},[t._v("#")]),t._v(" Venus Tipset Execution trace 比较工具使用说明")]),t._v(" "),a("p",[t._v("execution-trace 比较工具是用于当 venus 链同步发生共识错误导致同步异常时,\n用于快速定位不一致的消息及其执行细节,帮助精准定位问题。")]),t._v(" "),a("h3",{attrs:{id:"原理"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#原理"}},[t._v("#")]),t._v(" 原理")]),t._v(" "),a("p",[t._v("此工具通过 API 接口在 lotus 和 venus 上执行整个 tipset 中的消息,并获取所有的 execution-trace 进行比较,\n通常共识错误发生时,execution-traced 的细节也是不一致的。")]),t._v(" "),a("h3",{attrs:{id:"操作步骤"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#操作步骤"}},[t._v("#")]),t._v(" 操作步骤:")]),t._v(" "),a("h4",{attrs:{id:"编译-lotus-并启动"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#编译-lotus-并启动"}},[t._v("#")]),t._v(" 编译 lotus,并启动")]),t._v(" "),a("p",[t._v("在原力区维护的 lotus, v1.12.0/incubation 分支上,支持了相关接口,\n编译时添加"),a("code",[t._v("ENABLE_GAS_TARCE=1")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("git")]),t._v(" clone https://github.com/ipfs-force-community/lotus.git \n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("git")]),t._v(" checkout -b v1.12.0/incubation oriign/v1.12.0/incubation\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("make")]),t._v(" lotus "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[t._v("ENABLE_GAS_TRACE")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n")])])]),a("h4",{attrs:{id:"获取-execution-trace-分析工具"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#获取-execution-trace-分析工具"}},[t._v("#")]),t._v(" 获取 execution-trace 分析工具")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("git")]),t._v(" clone https://github.com/zl03jsj/filecoin-head-comparer.git\n")])])]),a("h4",{attrs:{id:"配置-execution-trace-分析工具"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#配置-execution-trace-分析工具"}},[t._v("#")]),t._v(" 配置 execution-trace 分析工具")]),t._v(" "),a("p",[t._v("在项目的跟目录下打开配置文件"),a("code",[t._v("./cfg_exec_trace.json")]),t._v("\n编辑配置 venus 和 lotus 的节点信息:")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"lotus"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"url"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://192.168.200.21:1234/rpc/v0"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"token"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"venus"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"url"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://192.168.1.125:3453/rpc/v0"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"token"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBbGxvdyI6WyJyZWFkIiwid3JpdGUiLCJzaWduIiwiYWRtaW4iXX0.oLkKAMWEiUA6oK-stwd3Spiwrx9TlGOuVFgrgn7JPwU"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"启动-execution-trace-工具开始问题检测"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#启动-execution-trace-工具开始问题检测"}},[t._v("#")]),t._v(" 启动 execution-trace 工具开始问题检测")]),t._v(" "),a("p",[t._v("由于共识问题,导致链同步时问题时,通过日志,很容易就可以定位有问题的 tipset epoch,\n在根目录执行命令,在参数中指定高度,就可以对指定的 tipset 进行分析比较了。")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("python3 ./exec_trace_cmp.py "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1288233")]),t._v("\nvenus url:http://192.168.1.125:3453/rpc/v0\nlotus url:http://192.168.200.21:1234/rpc/v0\n\n Venus and lotus got the same state root"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzacebhpihnow4fwuebtxenpl27kvl4k7aeozlsruwcdj3berrposkfgs"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" after apply tipset"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1288233")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n start compile tipset"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1288233")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" traces\n venus total message count"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("contain implicit"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("481")]),t._v("\n lotus total message count"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("contain implicit"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("481")]),t._v("\n \nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzacebo67zpnnaqb4jzz3peflh6mu3hczu7isd4yxkymvlao5li6lrqwi"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzaceaijdjyg263zawvczt3alkciu2ptrzv3pftu434gvxjujqmam2nxe execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzaceavrkj7coojud5amhn2ukrhrkntaxk6r7esnilldbjocia7ut7jzw"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacedus5agquqptf3o3yy3cylg7j2jb2sil24clvtyff4vcoedzxdaha execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzaceaadqo5lv75q7qvsbgx3prm5oh7nqfz6volerwleyt65jizhcyxqa"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacebkdqv25av4bjabifpe2vye74j73ou62le3hztyx33pxy254cul5u execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzacebrmjo2ahojpjj5rvdd6fxqvtgntoovvb722o25dmwmlub4u6icdw"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacebzez4rvo4yteqjtsdmwmaqpz7vadepdoikbaqcvnzqnhkuhkzt5y execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzaceapwk7p5c7gy35buhy6mqs42rv36kxvczca3siwl6h2evufsld5b6"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzaceahpmfeq46nagmbzpvjnabrsem2zjrvcy77cxldaf43aniclduqik execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzacecdl2zt4bd4nwhxnehlqejtlikvqwztnk3leil54dsmnx6koz42zu"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacec7uk7o6rbnxdwyluvlm3fsposlvangkqdaj5fargbwlbwws4ezuo execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzaceakhot2tzgn4zt3nr6aokq2brcity2eh2d67gc2iqrpswlgch5ng6"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacea3n7ku4epbmqq2ecebmgifpb26etb2hrww4ryqmhiumzwpsvf7es execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzacecc5zqh2fm55hno66f56pqji5245huk45xqpxzt7b5hz63o7nh622"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzaceb223qjyqk53zic5th7npzik3redyvy723egt47dsgwlshmaksqr6 execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("8")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzacedoohork3gnnzfvv5kme3gqfxrygw4otcwh5lklfbdz3mxy2evinq"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacea6ks7weiqy65m6m426dvihljvapmbts6cdlu6ytirrpveupvoj2y execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzacecivu4pfhvvdiwfk23ntidy2aein2y646uzrt4hotve46mejtgjsa"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzaceaqjbks2bjmdal6tu7yoxrecygrcn2s2pmwxwkukzj23p5lsjms2s execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzacecn6mfxfspglrrwu26uvj3fcirbz2femaeyv7f63vh7ochrwt76ay"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacec5rnu4a6xunucqpvks5eujn5t3cywpqwieoirex25mgycucbesky execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("11")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzacebvxwcnorwmplriluvus6jjvqvfcknkn44lzf37ptbe5oeiwpt3vu"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzaceaobqsuortebd4nujtqinnwnc7dgs44majmnnkdtt4dqow3wyxah2 execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("12")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzacear7yqpsjwvz5cofocunlyesh3q43ppvqgcs5pcnbsjmxqd4gbmtm"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacecxjuehhuu2hadecr4avab4qwyy5nenyilbftuuppdoxmohj7emjs execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("13")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzacedqliipes5nh74aeyy3wbn4md6t33kkgqx7m2ukke7qvajp2lrbkw"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzaceb37mvzapylc67d3vtz5fcbusziz2bofdicwny6zehonlkd3zwhus execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("14")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzaceas2brzrd3qhto26hfdi7diouff3yzemsvje5yyv66st3vgqzbjcg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacec27fdotcosdnj423naofdqczrykexqblhvu3iey4eptaublp4aeq execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("15")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzacebuyl637qzpqzw46jossgq4tef6j7bh62ec237mghrx4yj4ltu6h6"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacec3hijr5nvasludlrpa37muy4o64326tofzii7hop4zxynao3oquc execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("16")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzaceagr3ucrm3exnpnm62sq6qrpnyjb74u257by2i52axnqjtvsy5t5m"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacecbhtzedpwlpdr7imuv7j47rsbj3vsilibcp5j6ocrtqr4qiekp7s execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("17")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzacedqpta5vr5ha4wvezsenbu7qczhctnwndu2yiclgp52ienbk6oljk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacedblssnkunnlr2zl3rji5457mlgtc2oxunc6q37swqygtopu47eck execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("18")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzaceduw75wrsj6fdokywn4mm72hzvsfk74i2bu7zjmvmvntmupztsa62"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzaceapkogzfoym2n4q6mwnjfvkiqp2ff5ueampjxa2o3htjy2sknq4hm execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("19")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzacea4eoihdgbaui4rchhz66pk5ybeeyyv63qtnb3zbednp5p6m7prtq"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacebqhutaiusljv4cgwh235cyvd3mrwbruypz7utk7tmwjf5esxekjq execution-traces: ok\nidx: "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("20")]),t._v(", Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzaceatyz5v6cxbnb7lw4zrw574aogec4aaeaxy2rwzs3fvr2qnvvoc6g"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzaceczfrg57g4fhmxugaf53s3h7a3hgqyziv5h6ztq7jdsinuaickr6c execution-traces: ok\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n")])])]),a("p",[t._v("当执行一致时,会看到下面的输出。")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("Venus and lotus got the same state root(bafy2bzacebhpihnow4fwuebtxenpl27kvl4k7aeozlsruwcdj3berrposkfgs) after apply tipset(1288233)\n")])])]),a("p",[t._v("当执行不一致是,会看到如下的输出")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v("\nidx:477, Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzaceclyunwu6ig3pvwurm34vxengjc33igcax3rxmmazo4ypevkcc4xg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacebmfzfvdp7x6fg7yk7i7p7gbvu56afosgbxyju6236b4ytpllv2tg execution-traces: ok\nidx:478, Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("bafy2bzaceaftdrisbrnb2yppgx37dahsp4ko23l47wsfg7g6gczx6czmtdvoa"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzaceaj3jyduelozrbaggwu2v5mokmbds67ouh5s6gdajneqrp6pdbxem execution-traces: ok\n-"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" this is a "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("cron")]),t._v(" message: "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("-\nimplicit message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("f00 -"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" f03, method "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(", nonce:1288233"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nidx:479, Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'/'")]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'bafy2bzacedqbx4tfp7qwpe7oylrwueiye4ipfx6ii7f2p4r5w55thwayci44q'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacea2o5ylrpovsg6f3bvufgolcd6z46kxgfohzp3c27gendhpirug5i execution-traces: ok\n-"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" this is a "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("cron")]),t._v(" message: "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("-\n\n message trace"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("283")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" not equals:\n message details "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" cid:"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'/'")]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'bafy2bzacebka5xwpzelt4cl5pa452k3oi45mbcy7pyrlc3om7sfnul4cz7dcu'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(", from:f00, to:f03, nonce:1288233\n-----"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" lotus_trace:---------------\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"OnMethodInvocation"')]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"loc"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"File"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/root/theduan/lotus-src/chain/vm/vm.go"')]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Line"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("333")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Function"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"github.com/filecoin-project/lotus/chain/vm.(*VM).send.func3"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"File"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/root/theduan/lotus-src/chain/vm/vm.go"')]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Line"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("354")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Function"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"github.com/filecoin-project/lotus/chain/vm.(*VM).send"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"File"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/root/theduan/lotus-src/chain/vm/runtime.go"')]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Line"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("445")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Function"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"github.com/filecoin-project/lotus/chain/vm.(*Runtime).internalSend"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"File"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/root/theduan/lotus-src/chain/vm/runtime.go"')]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Line"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("402")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Function"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"github.com/filecoin-project/lotus/chain/vm.(*Runtime).Send"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"File"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/root/go/pkg/mod/github.com/filecoin-project/specs-actors/v6@v6.0.0/actors/builtin/power/power_actor.go"')]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Line"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("450")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Function"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"github.com/filecoin-project/specs-actors/v6/actors/builtin/power.Actor.processBatchProofVerifies"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"File"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/root/go/pkg/mod/github.com/filecoin-project/specs-actors/v6@v6.0.0/actors/builtin/power/power_actor.go"')]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Line"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("222")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Function"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"github.com/filecoin-project/specs-actors/v6/actors/builtin/power.Actor.OnEpochTickEnd"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"File"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/usr/lib/go/src/reflect/value.go"')]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Line"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("543")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Function"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"reflect.Value.call"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"File"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/usr/lib/go/src/reflect/value.go"')]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Line"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("339")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Function"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"reflect.Value.Call"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"File"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/root/theduan/lotus-src/chain/vm/invoker.go"')]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Line"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("247")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Function"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"github.com/filecoin-project/lotus/chain/vm.(*ActorRegistry).transform.func2.1"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"File"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/root/theduan/lotus-src/chain/vm/runtime.go"')]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Line"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("171")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Function"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"github.com/filecoin-project/lotus/chain/vm.(*Runtime).shimCall"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"tg"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("23856")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"cg"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("23856")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"sg"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"vtg"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("23856")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"vcg"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("23856")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"vsg"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"tt"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2830")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ex"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"i"')]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" \n-----"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" venus_trace:---------------\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"OnVerifySeal"')]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"loc"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"File"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/home/zl/venus-src/pkg/vm/vmcontext/syscalls.go"')]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Line"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("106")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Function"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"github.com/filecoin-project/venus/pkg/vm/vmcontext.syscalls.BatchVerifySeals.func1"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"File"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/root/go/src/runtime/asm_amd64.s"')]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Line"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1371")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Function"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"runtime.goexit"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"tg"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2000")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"cg"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2000")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"sg"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"vtg"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"vcg"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2000")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"vsg"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"tt"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\nimplicit message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("f00 -"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" f03, method "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(", nonce:1288233"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nidx:480, Compare msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'/'")]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'bafy2bzacebka5xwpzelt4cl5pa452k3oi45mbcy7pyrlc3om7sfnul4cz7dcu'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" stateAfterApply: bafy2bzacebhpihnow4fwuebtxenpl27kvl4k7aeozlsruwcdj3berrposkfgs execution-traces: failed\n")])])]),a("p",[t._v("程序会打印出不同的 execution-trace 的消息,以及不匹配的调用堆栈,可以方便快速定位问题。")])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/assets/js/7.14526030.js b/assets/js/7.16dc2982.js similarity index 99% rename from assets/js/7.14526030.js rename to assets/js/7.16dc2982.js index 1f22100db..b92cb2b4b 100644 --- a/assets/js/7.14526030.js +++ b/assets/js/7.16dc2982.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{389:function(a,s,t){a.exports=t.p+"assets/img/error-message.e1f0dcdf.png"},390:function(a,s,t){a.exports=t.p+"assets/img/venus-sealer-start.12bc4f8d.jpg"},435:function(a,s,t){"use strict";t.r(s);var e=t(17),n=Object(e.a)({},(function(){var a=this,s=a.$createElement,e=a._self._c||s;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h3",{attrs:{id:"venus-wallet-健康状态检查"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#venus-wallet-健康状态检查"}},[a._v("#")]),a._v(" venus-wallet 健康状态检查:")]),a._v(" "),e("h4",{attrs:{id:"_1、启动"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#_1、启动"}},[a._v("#")]),a._v(" 1、启动")]),a._v(" "),e("p",[a._v("可以看到 venus-wallet 连接到的 gateway 节点地址信息和 venus-gateway 建立连接的会话 ID 信息")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("wallet_event/listenevent.go:173\trestarting listenWalletRequestOnce\t"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[a._v('"api hub"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v(":")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v('"/dns/gateway.filincubator.com/tcp/83/wss"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\nwallet_event/listenevent.go:200\tconnect to server 9ad36ec8-4a47-4f84-b618-e89cf03f6f38\t"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[a._v('"api hub"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v(":")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v('"/dns/gateway.filincubator.com/tcp/83/wss"')]),a._v("\n")])])]),e("p",[a._v("但如果有类似如下的报错信息,则为异常启动:")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v(" ERROR wallet_event wallet_event/listenevent.go:236 WalletSign error password not "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("set")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[a._v('"api hub"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v(":")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v('"/dns/gateway.filincubator.com/tcp/83/wss"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),e("p",[a._v("从日志报 venus-wallet 的密码没有设置,需要执行**./venus-wallet setpwd**来配置 wallet 的密码。")]),a._v(" "),e("h4",{attrs:{id:"_2、锁定钱包"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#_2、锁定钱包"}},[a._v("#")]),a._v(" 2、锁定钱包")]),a._v(" "),e("p",[a._v("如下执行以下命令,则可以上锁钱包,"),e("strong",[a._v("建议不要尝试")]),a._v(":")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("./venus-wallet lock\nPassword:******\nwallet lock successfully\n")])])]),e("p",[a._v("此时,在日志中会有一条如下信息:")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("WARN rpc go-jsonrpc@v1.1ec/handler.go:279 error "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("in")]),a._v(" RPC call to "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v("'Filecoin.Unlock'")]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v(":")]),a._v(" wallet already unlocked\n")])])]),e("p",[a._v("现在 venus-wallet 已经上锁了,这个会影响 venus-sealer 发送到 venus-message 的消息不会被签名,如下图:")]),a._v(" "),e("p",[e("img",{attrs:{src:t(389),alt:"error-message"}})]),a._v(" "),e("p",[a._v("可以执行如下命令,解锁 venus-wallet,可以对 venus-sealer 发出来的消息进行签名后,由 venus 节点向链上发送")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("./venus-wallet unlock\nPassword:******\nwallet unlock successfully\n")])])]),e("h3",{attrs:{id:"venus-sealer-健康状态检查"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#venus-sealer-健康状态检查"}},[a._v("#")]),a._v(" Venus-sealer 健康状态检查:")]),a._v(" "),e("p",[a._v("主要可以从输出的日志中看到版本信息、节点同步状态、加载证明参数文件、本地存储 id 和 venus-sealer 连接到 venus-gateway 节点的会话建立等信息;")]),a._v(" "),e("p",[e("img",{attrs:{src:t(390),alt:""}})]),a._v(" "),e("h3",{attrs:{id:"venus-worker-健康状态检查"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#venus-worker-健康状态检查"}},[a._v("#")]),a._v(" venus-worker 健康状态检查:")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v(" INFO main venus-worker/main.go:158 Starting venus worker\n INFO main venus-worker/main.go:188 config: "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("~/.venusworker/config.toml ~/.venusworker "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("/ip4/10.108.2.42/tcp/6666 eyJhbGciOiJIUzaW4iXX0.4ZDslo6-8kD74"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("sqlite "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),a._v(" 0s"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("worker.db"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n INFO main venus-worker/main.go:255 Remote version "),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("1.0")]),a._v(".2+api1.2.0\n WARN paramfetch go-paramfetch@v0.0.2-0.20210614165157-25a6c7769498/paramfetch.go:158 Assuming parameter files are ok. DO NOT USE IN PRODUCTION\n WARN paramfetch go-paramfetch@v0.0.2-0.20210614165157-25a6c7769498/paramfetch.go:158 Assuming parameter files are ok. DO NOT USE IN PRODUCTION\n INFO paramfetch go-paramfetch@v0.0.2-0.20210614165157-25a6c7769498/paramfetch.go:207 parameter and key-fetching complete\n INFO main venus-worker/main.go:306 Acceptable task types: "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),a._v("seal/v0/fetch seal/v0/commit/1 seal/v0/finalize seal/v0/commit/2"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n INFO main venus-worker/main.go:356 Opening "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("local")]),a._v(" storage"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v(" connecting to master\n INFO main venus-worker/main.go:408 Setting up control endpoint at "),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("10.121")]),a._v(".2.214:5555\n INFO main venus-worker/main.go:507 Making sure no "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("local")]),a._v(" tasks are running\n INFO main venus-worker/main.go:530 Worker registered successfully, waiting "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("for")]),a._v(" tasks\n")])])]),e("p",[a._v("可以从 venus-worker 日志中,看到 venus-worker 启动后加载的配置文件目录,监控的端口号;以及在启动之后注册到 venus-sealer 上,等待获取任务。")]),a._v(" "),e("p",[a._v("如下输出以下信息,则说明 venus-worker 已经获得了新的任务:")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("INFO filcrypto::proofs::api "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v(" seal_commit_phase2: start\nINFO filecoin_proofs::api::seal "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v(" seal_commit_phase2:start: SectorId"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("1000054")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\nINFO filecoin_proofs::caches "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v(" trying parameters memory cache for: STACKED"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("34359738368")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\nINFO filecoin_proofs::caches "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v(" no params "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("in")]),a._v(" memory cache "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("for")]),a._v(" STACKED"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("34359738368")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\nINFO storage_proofs_core::parameter_cache "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v(" parameter "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("set")]),a._v(" identifier "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("for")]),a._v(" cache: layered_drgporep::PublicParams"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" graph: stacked_graph::StackedGraph"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("expansion_degree: "),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("8")]),a._v(" base_graph\n")])])])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{389:function(a,s,t){a.exports=t.p+"assets/img/error-message.e1f0dcdf.png"},390:function(a,s,t){a.exports=t.p+"assets/img/venus-sealer-start.12bc4f8d.jpg"},434:function(a,s,t){"use strict";t.r(s);var e=t(17),n=Object(e.a)({},(function(){var a=this,s=a.$createElement,e=a._self._c||s;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h3",{attrs:{id:"venus-wallet-健康状态检查"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#venus-wallet-健康状态检查"}},[a._v("#")]),a._v(" venus-wallet 健康状态检查:")]),a._v(" "),e("h4",{attrs:{id:"_1、启动"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#_1、启动"}},[a._v("#")]),a._v(" 1、启动")]),a._v(" "),e("p",[a._v("可以看到 venus-wallet 连接到的 gateway 节点地址信息和 venus-gateway 建立连接的会话 ID 信息")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("wallet_event/listenevent.go:173\trestarting listenWalletRequestOnce\t"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[a._v('"api hub"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v(":")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v('"/dns/gateway.filincubator.com/tcp/83/wss"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\nwallet_event/listenevent.go:200\tconnect to server 9ad36ec8-4a47-4f84-b618-e89cf03f6f38\t"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[a._v('"api hub"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v(":")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v('"/dns/gateway.filincubator.com/tcp/83/wss"')]),a._v("\n")])])]),e("p",[a._v("但如果有类似如下的报错信息,则为异常启动:")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v(" ERROR wallet_event wallet_event/listenevent.go:236 WalletSign error password not "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("set")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[a._v('"api hub"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v(":")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v('"/dns/gateway.filincubator.com/tcp/83/wss"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),e("p",[a._v("从日志报 venus-wallet 的密码没有设置,需要执行**./venus-wallet setpwd**来配置 wallet 的密码。")]),a._v(" "),e("h4",{attrs:{id:"_2、锁定钱包"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#_2、锁定钱包"}},[a._v("#")]),a._v(" 2、锁定钱包")]),a._v(" "),e("p",[a._v("如下执行以下命令,则可以上锁钱包,"),e("strong",[a._v("建议不要尝试")]),a._v(":")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("./venus-wallet lock\nPassword:******\nwallet lock successfully\n")])])]),e("p",[a._v("此时,在日志中会有一条如下信息:")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("WARN rpc go-jsonrpc@v1.1ec/handler.go:279 error "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("in")]),a._v(" RPC call to "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v("'Filecoin.Unlock'")]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v(":")]),a._v(" wallet already unlocked\n")])])]),e("p",[a._v("现在 venus-wallet 已经上锁了,这个会影响 venus-sealer 发送到 venus-message 的消息不会被签名,如下图:")]),a._v(" "),e("p",[e("img",{attrs:{src:t(389),alt:"error-message"}})]),a._v(" "),e("p",[a._v("可以执行如下命令,解锁 venus-wallet,可以对 venus-sealer 发出来的消息进行签名后,由 venus 节点向链上发送")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("./venus-wallet unlock\nPassword:******\nwallet unlock successfully\n")])])]),e("h3",{attrs:{id:"venus-sealer-健康状态检查"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#venus-sealer-健康状态检查"}},[a._v("#")]),a._v(" Venus-sealer 健康状态检查:")]),a._v(" "),e("p",[a._v("主要可以从输出的日志中看到版本信息、节点同步状态、加载证明参数文件、本地存储 id 和 venus-sealer 连接到 venus-gateway 节点的会话建立等信息;")]),a._v(" "),e("p",[e("img",{attrs:{src:t(390),alt:""}})]),a._v(" "),e("h3",{attrs:{id:"venus-worker-健康状态检查"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#venus-worker-健康状态检查"}},[a._v("#")]),a._v(" venus-worker 健康状态检查:")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v(" INFO main venus-worker/main.go:158 Starting venus worker\n INFO main venus-worker/main.go:188 config: "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("~/.venusworker/config.toml ~/.venusworker "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("/ip4/10.108.2.42/tcp/6666 eyJhbGciOiJIUzaW4iXX0.4ZDslo6-8kD74"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("sqlite "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),a._v(" 0s"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("worker.db"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n INFO main venus-worker/main.go:255 Remote version "),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("1.0")]),a._v(".2+api1.2.0\n WARN paramfetch go-paramfetch@v0.0.2-0.20210614165157-25a6c7769498/paramfetch.go:158 Assuming parameter files are ok. DO NOT USE IN PRODUCTION\n WARN paramfetch go-paramfetch@v0.0.2-0.20210614165157-25a6c7769498/paramfetch.go:158 Assuming parameter files are ok. DO NOT USE IN PRODUCTION\n INFO paramfetch go-paramfetch@v0.0.2-0.20210614165157-25a6c7769498/paramfetch.go:207 parameter and key-fetching complete\n INFO main venus-worker/main.go:306 Acceptable task types: "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),a._v("seal/v0/fetch seal/v0/commit/1 seal/v0/finalize seal/v0/commit/2"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n INFO main venus-worker/main.go:356 Opening "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("local")]),a._v(" storage"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v(" connecting to master\n INFO main venus-worker/main.go:408 Setting up control endpoint at "),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("10.121")]),a._v(".2.214:5555\n INFO main venus-worker/main.go:507 Making sure no "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("local")]),a._v(" tasks are running\n INFO main venus-worker/main.go:530 Worker registered successfully, waiting "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("for")]),a._v(" tasks\n")])])]),e("p",[a._v("可以从 venus-worker 日志中,看到 venus-worker 启动后加载的配置文件目录,监控的端口号;以及在启动之后注册到 venus-sealer 上,等待获取任务。")]),a._v(" "),e("p",[a._v("如下输出以下信息,则说明 venus-worker 已经获得了新的任务:")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("INFO filcrypto::proofs::api "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v(" seal_commit_phase2: start\nINFO filecoin_proofs::api::seal "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v(" seal_commit_phase2:start: SectorId"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("1000054")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\nINFO filecoin_proofs::caches "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v(" trying parameters memory cache for: STACKED"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("34359738368")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\nINFO filecoin_proofs::caches "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v(" no params "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("in")]),a._v(" memory cache "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("for")]),a._v(" STACKED"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("34359738368")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\nINFO storage_proofs_core::parameter_cache "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v(" parameter "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("set")]),a._v(" identifier "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("for")]),a._v(" cache: layered_drgporep::PublicParams"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v(" graph: stacked_graph::StackedGraph"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("expansion_degree: "),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("8")]),a._v(" base_graph\n")])])])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/8.0f750869.js b/assets/js/8.5880ef83.js similarity index 92% rename from assets/js/8.0f750869.js rename to assets/js/8.5880ef83.js index 2c59fde29..74916d0f2 100644 --- a/assets/js/8.0f750869.js +++ b/assets/js/8.5880ef83.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{329:function(e,t,s){e.exports=s.p+"assets/img/damocles-banner.cdc65a5a.jpg"},404:function(e,t,s){"use strict";s.r(t);var r=s(17),a=Object(r.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("p",[r("img",{attrs:{src:s(329),alt:"damocles"}})]),e._v(" "),r("h3",{attrs:{id:"damocles"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#damocles"}},[e._v("#")]),e._v(" Damocles")]),e._v(" "),r("p",[e._v("Damocles, formerly known as Venus Power Service, is THE Filecoin storage power solution. Learn more about Damocles "),r("a",{attrs:{href:"https://damocles.venus-fil.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),r("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{329:function(e,t,s){e.exports=s.p+"assets/img/damocles-banner.cdc65a5a.jpg"},405:function(e,t,s){"use strict";s.r(t);var r=s(17),a=Object(r.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("p",[r("img",{attrs:{src:s(329),alt:"damocles"}})]),e._v(" "),r("h3",{attrs:{id:"damocles"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#damocles"}},[e._v("#")]),e._v(" Damocles")]),e._v(" "),r("p",[e._v("Damocles, formerly known as Venus Power Service, is THE Filecoin storage power solution. Learn more about Damocles "),r("a",{attrs:{href:"https://damocles.venus-fil.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),r("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/9.6a50ee44.js b/assets/js/9.f2fc0f61.js similarity index 92% rename from assets/js/9.6a50ee44.js rename to assets/js/9.f2fc0f61.js index a7fc6b9fd..cf4466765 100644 --- a/assets/js/9.6a50ee44.js +++ b/assets/js/9.f2fc0f61.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{330:function(e,t,r){e.exports=r.p+"assets/img/droplet-banner.5da6d582.jpg"},405:function(e,t,r){"use strict";r.r(t);var o=r(17),n=Object(o.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[o("img",{attrs:{src:r(330),alt:"droplet"}})]),e._v(" "),o("h3",{attrs:{id:"droplet"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#droplet"}},[e._v("#")]),e._v(" Droplet")]),e._v(" "),o("p",[e._v("Droplet, formerly known as Venus Deal Service, is THE Filecoin storage deal solution. Learn more about Droplet "),o("a",{attrs:{href:"https://droplet.venus-fil.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{330:function(e,t,r){e.exports=r.p+"assets/img/droplet-banner.5da6d582.jpg"},406:function(e,t,r){"use strict";r.r(t);var o=r(17),n=Object(o.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[o("img",{attrs:{src:r(330),alt:"droplet"}})]),e._v(" "),o("h3",{attrs:{id:"droplet"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#droplet"}},[e._v("#")]),e._v(" Droplet")]),e._v(" "),o("p",[e._v("Droplet, formerly known as Venus Deal Service, is THE Filecoin storage deal solution. Learn more about Droplet "),o("a",{attrs:{href:"https://droplet.venus-fil.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/app.1860b58f.js b/assets/js/app.ab44929d.js similarity index 50% rename from assets/js/app.1860b58f.js rename to assets/js/app.ab44929d.js index f1c7319dc..32483c093 100644 --- a/assets/js/app.1860b58f.js +++ b/assets/js/app.ab44929d.js @@ -1,8 +1,8 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(e){function n(n){for(var r,i,s=n[0],c=n[1],l=n[2],p=0,d=[];p0?o(r(e),9007199254740991):0}},function(e,n){var t=Array.isArray;e.exports=t},function(e,n,t){var r=t(152),o="object"==typeof self&&self&&self.Object===Object&&self,a=r||o||Function("return this")();e.exports=a},function(e,n,t){"use strict";function r(e,n,t,r,o,a,i,s){var c,l="function"==typeof e?e.options:e;if(n&&(l.render=n,l.staticRenderFns=t,l._compiled=!0),r&&(l.functional=!0),a&&(l._scopeId="data-v-"+a),i?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(i)},l._ssrRegister=c):o&&(c=s?function(){o.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:o),c)if(l.functional){l._injectStyles=c;var u=l.render;l.render=function(e,n){return c.call(n),u(e,n)}}else{var p=l.beforeCreate;l.beforeCreate=p?[].concat(p,c):[c]}return{exports:e,options:l}}t.d(n,"a",(function(){return r}))},function(e,n,t){var r=t(5),o=t(1),a=t(7),i=Object.defineProperty,s={},c=function(e){throw e};e.exports=function(e,n){if(a(s,e))return s[e];n||(n={});var t=[][e],l=!!a(n,"ACCESSORS")&&n.ACCESSORS,u=a(n,0)?n[0]:c,p=a(n,1)?n[1]:void 0;return s[e]=!!t&&!o((function(){if(l&&!r)return!0;var e={length:-1};l?i(e,1,{enumerable:!0,get:c}):e[1]=1,t.call(e,u,p)}))}},function(e,n,t){var r=t(126),o=t(2),a=function(e){return"function"==typeof e?e:void 0};e.exports=function(e,n){return arguments.length<2?a(r[e])||a(o[e]):r[e]&&r[e][n]||o[e]&&o[e][n]}},function(e,n,t){var r=t(5),o=t(84),a=t(35),i=t(11),s=t(39),c=t(7),l=t(121),u=Object.getOwnPropertyDescriptor;n.f=r?u:function(e,n){if(e=i(e),n=s(n,!0),l)try{return u(e,n)}catch(e){}if(c(e,n))return a(!o.f.call(e,n),e[n])}},function(e,n){e.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},function(e,n,t){"use strict";var r=t(0),o=t(32).filter,a=t(59),i=t(18),s=a("filter"),c=i("filter");r({target:"Array",proto:!0,forced:!s||!c},{filter:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}})},function(e,n){e.exports=!1},function(e,n){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},function(e,n){e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},function(e,n,t){var r=t(235),o=t(238);e.exports=function(e,n){var t=o(e,n);return r(t)?t:void 0}},function(e,n,t){"use strict";var r=t(114).charAt,o=t(31),a=t(127),i=o.set,s=o.getterFor("String Iterator");a(String,"String",(function(e){i(this,{type:"String Iterator",string:String(e),index:0})}),(function(){var e,n=s(this),t=n.string,o=n.index;return o>=t.length?{value:void 0,done:!0}:(e=r(t,o),n.index+=e.length,{value:e,done:!1})}))},function(e,n,t){var r,o=t(6),a=t(110),i=t(82),s=t(40),c=t(125),l=t(79),u=t(55),p=u("IE_PROTO"),d=function(){},f=function(e){return" - + @@ -46,6 +46,6 @@

Distributed Infrastructure

Adhering to design principles of distributed systems, Venus chain service enables you to scale and guarantees availability to your storage providing systems

Optimized Storage Deal

Solution for both storage client and storage provider enables seamless storage deal process

Reimagined Storage Power

Completely revamped sealer submodule to help you to grow and maintain your storage power with more efficiency and stability

- + diff --git a/intro/_Footer.html b/intro/_Footer.html index 028047995..4f39ceca6 100644 --- a/intro/_Footer.html +++ b/intro/_Footer.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -38,6 +38,6 @@

See something missing? Have tips to share? File an issue (opens new window), and we'll follow up as soon as possible. (If you have write permission in this repo, feel free to edit directly.)

- + diff --git a/intro/contribute-docs.html b/intro/contribute-docs.html index 31ca56835..abd7984e2 100644 --- a/intro/contribute-docs.html +++ b/intro/contribute-docs.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -72,6 +72,6 @@ Droplet (opens new window)

- + diff --git a/intro/damocles.html b/intro/damocles.html index a66abe0e1..ac48ab5e8 100644 --- a/intro/damocles.html +++ b/intro/damocles.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -38,6 +38,6 @@

damocles

# Damocles

Damocles, formerly known as Venus Power Service, is THE Filecoin storage power solution. Learn more about Damocles here (opens new window).

- + diff --git a/intro/droplet.html b/intro/droplet.html index dce3da94e..a206f95da 100644 --- a/intro/droplet.html +++ b/intro/droplet.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -38,6 +38,6 @@

droplet

# Droplet

Droplet, formerly known as Venus Deal Service, is THE Filecoin storage deal solution. Learn more about Droplet here (opens new window).

- + diff --git a/intro/index.html b/intro/index.html index 56923f409..f253831ef 100644 --- a/intro/index.html +++ b/intro/index.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -42,6 +42,6 @@ →

- + diff --git a/intro/one-pager.html b/intro/one-pager.html index 59228d461..0d0677c2e 100644 --- a/intro/one-pager.html +++ b/intro/one-pager.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -47,6 +47,6 @@ (opens new window)

- + diff --git a/intro/sophon.html b/intro/sophon.html index f889c3d30..5a26ffef0 100644 --- a/intro/sophon.html +++ b/intro/sophon.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -38,6 +38,6 @@

sophon

# Sophon

Sophon, formerly known as Venus chain service, is THE Filecoin super node solution. Learn more about Sophon here (opens new window).

- + diff --git a/operation/Efficiency_of_sealing.html b/operation/Efficiency_of_sealing.html index 633cfc563..1c2484643 100644 --- a/operation/Efficiency_of_sealing.html +++ b/operation/Efficiency_of_sealing.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -140,6 +140,6 @@ MaxSealingSectors = 7

# Stop-loss

If one of tasks fails too many times, manual intervention is needed to get sealing pipeline back to its normal output.

Remove sectors when you have the following issues.

  1. Expired ticket
  2. Expired Commit
  3. Corrupted proof params

To remove incomplete sectors.

venus-sealer sectors remove --really-do-it <sectorNum>
 
- + diff --git a/operation/System_monitor_of_Zabbix.html b/operation/System_monitor_of_Zabbix.html index 68ca1f477..79c50371f 100644 --- a/operation/System_monitor_of_Zabbix.html +++ b/operation/System_monitor_of_Zabbix.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -113,6 +113,6 @@

Check zabbix RAM usage.

Check problems in dashboard.

- + diff --git a/operation/_Footer.html b/operation/_Footer.html index 67593d886..2a2e24ac5 100644 --- a/operation/_Footer.html +++ b/operation/_Footer.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -38,6 +38,6 @@

See something missing? Have tips to share? File an issue (opens new window), and we'll follow up as soon as possible. (If you have write permission in this repo, feel free to edit directly.)

- + diff --git a/operation/example-single-box.html b/operation/example-single-box.html index fbd201cb0..34846844b 100644 --- a/operation/example-single-box.html +++ b/operation/example-single-box.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -38,6 +38,6 @@

# Venus Single box setup

This is an exmaple venus single box setup that is estimated to grow 1TiB power per day.

# Specs

Parts Recommendation
CPU 3970X * 1 (32 core)
RAM 512G
NVMe (for sealing) 3T/SSD
SSD (for OS) 500G
GPU RTX 3080 * 1

# Job scheduling

Task Core limit Minutes RAM(G) Hourly production rate Daily growth(T)
P1 * 5 20 220 376 1.3636 1.0227
AP, P2, Commit 12 10 120 3 1.125

For more information on core limit, please refer to the next tutorial.

- + diff --git a/operation/index.html b/operation/index.html index 63e4750aa..6fae6bb40 100644 --- a/operation/index.html +++ b/operation/index.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -42,6 +42,6 @@ →

- + diff --git a/operation/lotus-vs-venus.html b/operation/lotus-vs-venus.html index 58c86142a..2a4b2704f 100644 --- a/operation/lotus-vs-venus.html +++ b/operation/lotus-vs-venus.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -38,6 +38,6 @@

# Commands from Lotus

Many basic commands including but not limited to creating worker/controler addresses (opens new window), setting different types of configurations (opens new window), or changing storage locations (opens new window) apply to both Lotus and Venus. Node operators are expected to follow the same process as what is instructed on the Lotus documentation. If you encounter any questions please do not hesitate to reach out to us on #fil-venus (opens new window).

- + diff --git a/operation/nv15-upgrade.html b/operation/nv15-upgrade.html index 7fdfb9d78..15bab76d5 100644 --- a/operation/nv15-upgrade.html +++ b/operation/nv15-upgrade.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -51,6 +51,6 @@

- + diff --git a/operation/nv16-upgrade.html b/operation/nv16-upgrade.html index 252fb431c..e8ad6c90f 100644 --- a/operation/nv16-upgrade.html +++ b/operation/nv16-upgrade.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -69,6 +69,6 @@ →

- + diff --git a/operation/nv17-upgrade.html b/operation/nv17-upgrade.html index 8eb0516a3..8da8def27 100644 --- a/operation/nv17-upgrade.html +++ b/operation/nv17-upgrade.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -70,6 +70,6 @@ →

- + diff --git a/operation/nv18-upgrade.html b/operation/nv18-upgrade.html index dae08f9d1..34ac1dae2 100644 --- a/operation/nv18-upgrade.html +++ b/operation/nv18-upgrade.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -98,6 +98,6 @@ →

- + diff --git a/operation/nv19-upgrade.html b/operation/nv19-upgrade.html index ad215e720..9104d6213 100644 --- a/operation/nv19-upgrade.html +++ b/operation/nv19-upgrade.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -79,6 +79,6 @@ →

- + diff --git a/operation/nv21-upgrade.html b/operation/nv21-upgrade.html index 062eba0eb..ce8ef50b3 100644 --- a/operation/nv21-upgrade.html +++ b/operation/nv21-upgrade.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -87,6 +87,6 @@ →

- + diff --git a/operation/nv22-upgrade.html b/operation/nv22-upgrade.html index 3302c4073..aac7e32d8 100644 --- a/operation/nv22-upgrade.html +++ b/operation/nv22-upgrade.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -76,6 +76,6 @@ →

- + diff --git a/questions.html b/questions.html index d2dae174a..104addd8c 100644 --- a/questions.html +++ b/questions.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -38,6 +38,6 @@

# Have a question?

Filecoin.io (opens new window) - general information about the Filecoin network

Community Channels (opens new window) - links to Filecoin community chat and forum

Last Updated: 5/6/2024, 2:53:43 AM
- + diff --git a/zh/TODO.html b/zh/TODO.html index 7b24c2bec..c562c65f2 100644 --- a/zh/TODO.html +++ b/zh/TODO.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -39,6 +39,6 @@ 简体中文

# 原则

  基于目前的需要,先从重构 guide 和 modules 模块,让两块联动,形成比较易读的 venus 集群部署介绍。

  • modules 模块存储各组件的简介,将不相干的文档移到对应位置

  • guide 和 modules 对于组件介绍存在很多重复的,只保留一份

  • modules 模块组件介绍老旧,超链接到项目的介绍文档,避免项目内更新后 doc 中不及时及重复劳动

  • guide 将组件介绍,编译构建,部署文档独立

  • guide 模块增加 QA 模块,将 venus discussion 的问题以超链接方式统一到 QA 模块

  • 部署模块尽量少一些设计的介绍,简明扼要,每个指定的操作尽量不涉及不相干的,以免造成误解

# TODO list

  • [ ] modules 模块

    • [ ] 引导页内容更新
    • [ ] 不相关文档移走
    • [ ] 文档命名一致
    • [ ] 组件介绍匹配项目进度
    • [x] 编译构建独立到一个文档
    • [ ] 组件文档移除从项目中搬过来的内容,用超链接
    • [ ] market 和 cluster 模块的技术文档移到 modules 模块,
  • [ ] guide 模块

    • [ ] 将部署用到的基础知识单独形成文档
    • [x] 编译构建超链接到对应文档
    • [x] 增加部分组件的验证:怎么判断部署成功
    • [ ] 目录结构调整
      • [ ] market 和 cluster 归属到链服务部署和独立组件部署文档
      • [ ] .fil_withdraw_and_send.md.swp 文件删除
      • [ ] sealer 文档放到单独的目录
    • [ ] Troubleshooting-&-FAQ.md 用超链接方式管理 venus discussion
  • [ ] 移除没有价值或过时的文档

  • [ ] 在很多模块中重复的内容整合

  • [ ] 每个项目搬过来的内容使用超链接

- + diff --git a/zh/about/index.html b/zh/about/index.html index 7cfa7305b..5fe5a02cc 100644 --- a/zh/about/index.html +++ b/zh/about/index.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -38,6 +38,6 @@

# 使命,愿景,价值观

  • ❗️使命:建设 Filecoin 基础设施和工具,支持生态繁荣发展
  • 🌏 愿景:人人都能参与 Filecoin 生态
  • ☯️ 价值观:开放并且去信任

# 联系方式

# 其他资源

- + diff --git a/zh/index.html b/zh/index.html index 6f42b4b16..d5f38dc6c 100644 --- a/zh/index.html +++ b/zh/index.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -46,6 +46,6 @@

分布式架构

依照分布式系统的设计理念和原则,实现了一套快速扩展,高可用的分布式基础架构

优化订单体验

完善了一整套方便存储提供者接收真实存储订单,同时也方便存储客户发送存储订单的解决方案

全新的算力服务

安全,有韧性的算力维持服务;高效,灵活,可扩容的算力增长服务

- + diff --git a/zh/intro/_Footer.html b/zh/intro/_Footer.html index 3fdd483a1..1a70535c3 100644 --- a/zh/intro/_Footer.html +++ b/zh/intro/_Footer.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -38,6 +38,6 @@

See something missing? Have tips to share? File an issue (opens new window), and we'll follow up as soon as possible. (If you have write permission in this repo, feel free to edit directly.)

- + diff --git a/zh/intro/contribute-doc.html b/zh/intro/contribute-doc.html index 4d76ad382..05fcca4b0 100644 --- a/zh/intro/contribute-doc.html +++ b/zh/intro/contribute-doc.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -50,6 +50,6 @@ 水滴 (opens new window)

- + diff --git a/zh/intro/damocles.html b/zh/intro/damocles.html index f0a1d9ead..449d9ff78 100644 --- a/zh/intro/damocles.html +++ b/zh/intro/damocles.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -38,6 +38,6 @@

damocles

# 执剑人

执剑人,原 Venus 算力服务,是一个Filecoin存储算力解决方案。请在 (opens new window)了解更多关于执剑人的信息。

- + diff --git a/zh/intro/droplet.html b/zh/intro/droplet.html index ae07876c2..d25acb219 100644 --- a/zh/intro/droplet.html +++ b/zh/intro/droplet.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -38,6 +38,6 @@

droplet

# 水滴

水滴,原 Venus 订单服务,是一个Filecoin存储订单解决方案。请在 (opens new window)了解更多关于水滴的信息。

- + diff --git a/zh/intro/index.html b/zh/intro/index.html index 333a59ee0..9d3916905 100644 --- a/zh/intro/index.html +++ b/zh/intro/index.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -42,6 +42,6 @@ →

- + diff --git a/zh/intro/one-pager.html b/zh/intro/one-pager.html index 9679767cf..407cda1f1 100644 --- a/zh/intro/one-pager.html +++ b/zh/intro/one-pager.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -47,6 +47,6 @@ (opens new window)

- + diff --git a/zh/intro/sophon.html b/zh/intro/sophon.html index cf8dcc767..7fdf8c2f6 100644 --- a/zh/intro/sophon.html +++ b/zh/intro/sophon.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -38,6 +38,6 @@

sophon

# 智子

智子,原 Venus 链服务,是一个 Filecoin 超级节点解决方案。请在 (opens new window)了解更多关于智子的信息。

- + diff --git a/zh/operation/Efficiency_of_sealing.html b/zh/operation/Efficiency_of_sealing.html index 94e96fa46..e4edc78d8 100644 --- a/zh/operation/Efficiency_of_sealing.html +++ b/zh/operation/Efficiency_of_sealing.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -201,6 +201,6 @@ MaxSealingSectorsForDeals = 0

此时我们可以通过一个简单的定时脚本就可以做到,始终维持最佳的任务量了

# 损失和止损

  如果一个任务执行错误之后又被反复的重试,这就像我们有 7 个通道进行算力的封装,但是此时有一通道阻塞或者损坏,这就会降低我们 1 / 7 的产量,所以及时的处理错误也是非常重要的

  • 何种情况下应该立刻抛弃任务

    1. ticket 过期
    2. Commit 过期
    3. 依赖文件损坏重试多次都未成功时;
  • 移除无法完成的 sector

venus-sealer sectors remove --really-do-it <sectorNum>
 

如遇到无法彻底删除请查询:顽固扇区如何删除 (opens new window)

- + diff --git a/zh/operation/Independent_com_access_analysis.html b/zh/operation/Independent_com_access_analysis.html index 59f14c87e..ee65265b2 100644 --- a/zh/operation/Independent_com_access_analysis.html +++ b/zh/operation/Independent_com_access_analysis.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -64,6 +64,6 @@ INFO filecoin_proofs::caches > no params in memory cache for STACKED[34359738368] INFO storage_proofs_core::parameter_cache > parameter set identifier for cache: layered_drgporep::PublicParams{ graph: stacked_graph::StackedGraph{expansion_degree: 8 base_graph
- + diff --git a/zh/operation/Sealing_deploy_plan_1.html b/zh/operation/Sealing_deploy_plan_1.html index e487d7668..2d1d0f5b9 100644 --- a/zh/operation/Sealing_deploy_plan_1.html +++ b/zh/operation/Sealing_deploy_plan_1.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -101,6 +101,6 @@ ./venus-worker storage attach --seal <ABSOLUTE_LOCAL_PATH>

TRUST_PARAMS=1 环境变量可以跳过校验证明参数文件,如果你确定参数文件都在且是正确的可以用此环境变量用加快 venus-sealer 或 venus-worker 的启动的速度;

seal 要求较高的磁盘吞吐量,建议 ssd 盘。

  • 磁盘空间及并发数计算:

    • 32G 内存消耗:56G cache + 64G * 运行数量

    • 32G 磁盘消耗:520G 左右 * 运行数量

    • 64G 内存消耗:112G cache + 128G

    • 64G 磁盘消耗:1T 左右 * 运行数量

    • 故这两台机器 1t 的内存大约能做 64G sector 的数量为:

   (1024G-112G)/128G=7.125,保险起见我们可以先并发 6 个观察一段时间资源使用率。

   确定了并发密封扇区个数后,就可以确定 seal 需要的磁盘空间= 6*1t=6t.

做策略的思路:先考虑内存,确定并发数,在补充其他资源,如临时磁盘空间,至于 cpu,如果不足,可以限额,这样做的好处是系统可以持续运行,而不被 oom。

可以利用 gpu 加速的任务时 P2,C2 和 windowPoSt,分配 gpu 的顺序是:wdPoSt>C2>P2

  • 并发数控制    ./venus-sealer sectors pledge 发送一个密封任务,通常写一个定时脚本或系统事务,每隔一段时间发送一个 sector 任务;配置文件 MaxSealingSectors 控制同时进行的 sector 上限数。
- + diff --git a/zh/operation/Sealing_deploy_plan_2.html b/zh/operation/Sealing_deploy_plan_2.html index 4edbcd822..349228173 100644 --- a/zh/operation/Sealing_deploy_plan_2.html +++ b/zh/operation/Sealing_deploy_plan_2.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -91,6 +91,6 @@ sudo echo <PID> > /sys/fs/cgroup/cpuset/worker/cgroup.procs

PID: 进程 ID 号;

每次 worker 重启后 PID 会变化,需要更新文件。

/sys/fs/cgroup/cpuset是系统目录,worker是自己创建的.

- + diff --git a/zh/operation/System_monitor_of_Zabbix.html b/zh/operation/System_monitor_of_Zabbix.html index afdebf8b3..5ddba6870 100644 --- a/zh/operation/System_monitor_of_Zabbix.html +++ b/zh/operation/System_monitor_of_Zabbix.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -117,6 +117,6 @@

5、查看 zabbix 监控机器的内存图

6、异常报警,需要处理的机器

- + diff --git a/zh/operation/_Footer.html b/zh/operation/_Footer.html index 264e183a4..76524f6f5 100644 --- a/zh/operation/_Footer.html +++ b/zh/operation/_Footer.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -38,6 +38,6 @@

See something missing? Have tips to share? File an issue (opens new window), and we'll follow up as soon as possible. (If you have write permission in this repo, feel free to edit directly.)

- + diff --git a/zh/operation/example-single-box.html b/zh/operation/example-single-box.html index fb663d015..5bad0112f 100644 --- a/zh/operation/example-single-box.html +++ b/zh/operation/example-single-box.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -38,6 +38,6 @@

# venus 集群日增算力 1T 机器选型方案

# 机器配置

资源 配置
CPU 3970X * 1 (32c)
内存 512G
硬盘 3T/SSD
网卡 千兆
系统盘 500G
显卡 3080 * 1

台数:1 台

# 任务配比

任务分为 AP,P1,P2,Commit 阶段

运行方式 核数限制 耗时 (分钟) 内存消耗 (G) 效率 (个/小时) 日产量 (T)
P1 * 5 20 220 376 1.3636 1.0227
P2,AP,Commit 12 10 120 3 1.125

关于限核,配置执行任务类型,并发任务数等请参考 venus-docs 项目中相关文档。

- + diff --git a/zh/operation/index.html b/zh/operation/index.html index 770997ef9..f0615aeec 100644 --- a/zh/operation/index.html +++ b/zh/operation/index.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -42,6 +42,6 @@ →

- + diff --git a/zh/operation/lotus-vs-venus.html b/zh/operation/lotus-vs-venus.html index ace1aab24..676b883c9 100644 --- a/zh/operation/lotus-vs-venus.html +++ b/zh/operation/lotus-vs-venus.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -38,6 +38,6 @@

# 从 Lotus 来的命令

很多日常的命令包括但不限于创建worker/controler地址 (opens new window),设置不同的配置 (opens new window),或者修改存储路径 (opens new window)等等,都同时适用于LotusVenus。节点运维工程师可以按照 Lotus 文档中的步骤来操作。如果遇到任何问题,欢迎到#fil-venus-cn (opens new window)来提出问题。

- + diff --git a/zh/operation/migrate_market_v1_to_v2.html b/zh/operation/migrate_market_v1_to_v2.html index e34f15f26..f33fdd45f 100644 --- a/zh/operation/migrate_market_v1_to_v2.html +++ b/zh/operation/migrate_market_v1_to_v2.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -50,6 +50,6 @@

- + diff --git a/zh/operation/nv15-upgrade.html b/zh/operation/nv15-upgrade.html index 216cd79e8..1786cd65c 100644 --- a/zh/operation/nv15-upgrade.html +++ b/zh/operation/nv15-upgrade.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -82,6 +82,6 @@ →

- + diff --git a/zh/operation/nv16-upgrade.html b/zh/operation/nv16-upgrade.html index b6f6102e0..ca8ad9e57 100644 --- a/zh/operation/nv16-upgrade.html +++ b/zh/operation/nv16-upgrade.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -69,6 +69,6 @@ →

- + diff --git a/zh/operation/nv17-upgrade.html b/zh/operation/nv17-upgrade.html index 9af6156ec..680b82e90 100644 --- a/zh/operation/nv17-upgrade.html +++ b/zh/operation/nv17-upgrade.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -69,6 +69,6 @@ →

- + diff --git a/zh/operation/nv18-upgrade.html b/zh/operation/nv18-upgrade.html index 4b421285a..96323b039 100644 --- a/zh/operation/nv18-upgrade.html +++ b/zh/operation/nv18-upgrade.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -98,6 +98,6 @@ →

- + diff --git a/zh/operation/nv19-upgrade.html b/zh/operation/nv19-upgrade.html index ff7f77268..4d454260b 100644 --- a/zh/operation/nv19-upgrade.html +++ b/zh/operation/nv19-upgrade.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -79,6 +79,6 @@ →

- + diff --git a/zh/operation/nv21-upgrade.html b/zh/operation/nv21-upgrade.html index 1f28dcd5d..955cebde5 100644 --- a/zh/operation/nv21-upgrade.html +++ b/zh/operation/nv21-upgrade.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -83,6 +83,6 @@ →

- + diff --git a/zh/operation/nv22-upgrade.html b/zh/operation/nv22-upgrade.html index 2712495a4..55fe60722 100644 --- a/zh/operation/nv22-upgrade.html +++ b/zh/operation/nv22-upgrade.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -76,6 +76,6 @@ →

- + diff --git a/zh/operation/prometheus-instruction.html b/zh/operation/prometheus-instruction.html index 757763628..2d4ce3c5a 100644 --- a/zh/operation/prometheus-instruction.html +++ b/zh/operation/prometheus-instruction.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -110,6 +110,6 @@ instance: "messager"

# 启动

$ ./prometheus --config.file=prometheus.yml
 

使用http://localhost:9090/targets, 可查询组件的指标。

- + diff --git a/zh/operation/troubleshoot-consensus-fault.html b/zh/operation/troubleshoot-consensus-fault.html index 0c65940b5..bd9566991 100644 --- a/zh/operation/troubleshoot-consensus-fault.html +++ b/zh/operation/troubleshoot-consensus-fault.html @@ -13,7 +13,7 @@ gtag('config', 'G-SMSDTMGLTV'); - + @@ -190,6 +190,6 @@ implicit message(f00 -> f03, method : 2, nonce:1288233) idx:480, Compare msg({'/': 'bafy2bzacebka5xwpzelt4cl5pa452k3oi45mbcy7pyrlc3om7sfnul4cz7dcu'}) stateAfterApply: bafy2bzacebhpihnow4fwuebtxenpl27kvl4k7aeozlsruwcdj3berrposkfgs execution-traces: failed

程序会打印出不同的 execution-trace 的消息,以及不匹配的调用堆栈,可以方便快速定位问题。

- +