我们在常见问题解答中简要描述了快照,但IRI团队仍希望借此次快照的机会,更详细地解释快照的工作原理以及我们的社区节点运营商如何提供帮助。另外,有关IOTA钱包用户需要为此做的准备工作已经,Ralf已经在上次快照时发文做出了完美概述。具体来说,我们将涵盖:
在快照发生之前,之间和之后都发生了什么?
作为节点运营商如何准备,验证并更新自己的节点?
为什么执行快照?
IOTA协议中最引人注目的两个特性是:(1)网络完全无需授权;(2)交易完全免费。更重要的是,除了IOTA通证的转移之外,交易还可用于转移任意编码数据,而不需要附加任何价值。这也是许多网络参与者和开发者依赖其应用的原因!然而,对于节点运营商来说,随着所服务人群不断进行交易,开发,测试,网络数据会不断增长,节点数据库会不断变大。这是一件好事。事实上,缠节网络正在指望它的壮大!
通常来说,交易数据占数据库增长率的90%到95%之间,这意味着较小节点上的磁盘空间会很快耗尽。我们正在积极研究本地快照,以便在不远的将来,节点运营商将能够更有效地管理自己的数据库规模。同时,我们提供临时解决方案,以帮助保持数据库的精益和节点运营商的业务不被打断。这个临时解决方案就是:快照。
执行IOTA快照的5个步骤
步骤概览
快照过程由5个步骤组成,第1步发生在快照开始日期前2周(这就是为什么我们尝试着提前大约2周公布快照):
代码冻结。虽然快照过程就像修剪数据库和重新启动协调器一样简单,但我们通常会借此机会引入新版本的IOTA-IRI。在宣布发布日期之前,自上一个快照以来,所有最新的改进,修补程序和错误修复的代码均已“冻结”作为候选代码准备发布。在快照前的剩余时间内,团队24小时工作以测试确定候选版本并进入下一个版本的IRI。
停止协调器。在快照发生的那一刻,协调器停止发布里程碑交易,网络就以发布的最新里程碑交易来达成共识。此时的数据库状态将被重新使用一次:(A)数据库已存留为所有正余额地址的新初始状态;(B)所有这些帐户余额已经由IOTA基金会和社区验证。
基金会验证。来自IOTA基金会的多位参与者会在不同的节点上运行Snapshot.ixi。该工具从数据库中提取具有当前余额的所有地址。一旦每位参与者都独立确认过内容相匹配,快照本身就会被签名并准备好进行社区验证。
已使用的地址。作为我们现在希望所有IOTA用户都知道的规则,即地址只能用于发送交易一次。为了在快照之间执行此规则,将当前Epoch期间(上一次和当前快照之间的时间)所花费的所有地址附加到名为previousEpochsSpentAddresses.txt的文件中,该文件将包含在下一个数据库中。这将确保所有从最开始就产生花费的地址都被计入并防止地址重用。
社区验证。可以说这是整个过程中最重要的部分:您以及我们心爱的社区节点运营商! 一旦所有先前步骤的结果都得到验证,之后我们团队就会将其推送到GitHub,这是您的荣耀时刻。我们以合并请求(PR)的形式提供以下内容,类似于IRI#512:
新的IRI代码
新的里程碑索引
(+ 签名)
(+ 签名)
快照时间戳 - 网络的恢复时间(用于根据附件时间过滤旧交易事务)
向社区成员提供验证快照的明确说明
要求所有社区成员按照说明进行操作并验证快照,我们从PR推出时开始等待6个小时,以便有足够的时间让社区参与,同时最大限度的减少网络整体停机时间。最后,当一切都被证实有效时,协调器会重启并开始再次发布里程碑——快照完成!
节点运营商的选择
对于新的节点运营商——快照始终是参与进来并开始运行自己节点的好机会!iota.partners提供了相当全面的指引来建立节点。
对于现有的节点运营商——您有三种选择:
什么都不做。由于此次快照更新的版本中没有重大更改,所以您可以继续运行现有版本的IRI。协调器处于离线状态的约6个小时内,您将看不到任何确认交易。另外,您不会得到IRI 1.4.2.4版本附带的tag修正,因此在findTransactions上通过tag进行搜索时,仍然会出现异常。我们强烈建议每个节点运营商保持IRI的最新版本,以确保您节点运营性能提高和错误修复。
迁移现有的数据库。如果您希望保留现有数据库并且不因快照而丢失交易记录,则可以从源代码(branch)¹编译IRI。然后用新编译的替换现有的文件,并使用flag重新启动节点。flag将执行数据库迁移,并且只需要运行一次。
清理数据库。如果您使用小型的VPS并且磁盘空间很少,则可能需要完全删除现有数据库并重新开始。在这种情况下,您应该删除文件夹,并将替换为快照后不久将在发布页面上找到的jar文件。
¹建立IRI时添加一条命令以检出正确的分支:
$ git clone https://github.com/iotaledger/iri
$ cd iri
-> $ git checkout v1.4.2.4_RC
$ mvn clean compile
$ mvn package
验证快照
如果您运行节点并希望参与验证过程。只要确保您已经安装了Node.js,并按照这里的指引:https://github.com/iotaledger/snapshot-validator.
如果您想参与,基金会和社区成员将在快照期间,在Discord中的#snapshots频道提供支持。
版本注释
当新版本可用时,发布页面上将提供完整的版本注释。
此快照包含以下修补程序:
Tag indexing (#728)
Running node on testnet with a single flag (#610)
TCP networking issues (#592)
ZMQ sending issues (#569)
Improved milestone solidity tracking (#486)
英文链接:
https://blog.iota.org/the-april-29-2018-iota-snapshot-and-iri-1-4-2-4-behind-the-scenes-7e034babcd44
领取专属 10元无门槛券
私享最新 技术干货