IOTA生态系统基金的追踪与存储

IOTA生态系统基金的追踪与存储

IOTA基金会(IF)委托我开发IOTA生态系统基金发放与捐赠的资金记录追踪器[https://transparency.iota.org/]。 开发新技术的绿色领域项目是作为开发人员最为荣耀的时刻之一。毫无疑问,我抓住了这个机会。虽然,我已经开发了IOTA Pico库[https://github.com/iota-pico],对这项技术有很好的理解,但这并不是说它没有任何挑战。

资金追踪器

追踪器的本质是要为IOTA生态系统发展基金提供完全透明和可审计的资金进出记录视图。这些数据原本完全可以存储在常规数据库中,但考虑到追踪器是用在IOTA基金会生态系统上面的,所以,使用他们的缠结技术则更有意义。

缠结

在缠结做的项目开发对自己来说是一种挑战,其中之一就是你添加的任何数据都不能更改或删除,而且在perma-nodes存在的情况下,它将无限增长。

存储在缠结的 单独地址

第一种方法是使用单个IOTA地址,并将具有JSON有效支出的交易附加到该地址。如果我们想要编辑数据,我们可以拥有一个唯一的具有JSON有效支出的ID,并用UPDATE的操作来替代它。对于删除也是如此,给定一个唯一的JSON有效支出的ID,就可以处理DELETE操作。

 IOTA生态系统基金的追踪与存储
单一地址追踪器

通过这种方法,我们可以按时间顺序浏览所有交易,从而看到数据的完整审计追踪记录。

这种方法的一个缺点就是如果要快速查看跟踪器的当前状态,那必须遍历所有的数据,而这会随着时间的推移会变得非常缓慢。

这种方法的第二个也是更大的问题是,因为我们使用零值交易来附加数据,所以作恶者很容易发起垃圾交易攻击。我们可以对数据添加签名以验证属于我们自己的交易。但是这也意味着我们需要读取地址上的所有交易事务,也就是说我们仍然需要解析恶意数据,从本质上来说,这就像是针对地址的DOS攻击

无需多言,这种方法并不是答案。

存储在缠结的掩码认证消息

接下来的想法是使用IOTA自己的掩码认证消息。我不会在这里详细解释这项技术,但您可以阅读[https://medium.com/@abmushi/iota-mam-eloquent-explained-d7505863b413],获取更多的技术信息。

使用公共访问的掩码认证信息频道似乎是解决我们问题的方法。数据存储为消息链,每条消息都在不同的地址上,每条消息中的数据都会连接下一条消息。 由于数据是经过签名和加密,所以数据的保障也是来自IOTA基金会。

IOTA生态系统基金的追踪与存储
掩码验证消息追踪器

这种方法看起来很好的解决了垃圾交易攻击和验证数据的问题。

我们所有的数据都保存在频道中以备审计目的,但我们仍然需要从整个数据链中获取追踪器的当前状态。另外,我们需要对每条消息进行解码以获取下一个消息的地址,这将导致节点需要增加大量需求,从而获得缠结的所有交易。

另外,由于有效支付的消息是加密的,因此无法直接从缠结中看到有效支付。

在解决一些问题时,掩码认证消息的方法也衍生出了一些其他困难。

存储在缠结的数据库

前面提到的两种方法,说明我们需要为产生的问题找到存储解决方案。

  • 达到当前追踪器状态的快速方法
  • 完整的数据审计历史
  • 有保证的数据有效性
  • 缠结中的数据透明度

回到最初的概念,其实质上还是一个数据库,只不过存储在缠结上,因此,设计出了如下基于数据库模型的解决方案。

数据库有一个指向表内记录的索引,我们可以使用这个模型并创建一个索引,指向我们的跟踪数据的交易序列。我们将索引存储在缠结中,并记住我们系统中其他地方的当前索引的交易序列。如果我们读取序列,我们可以检索当前的索引数据,然后检索代表追踪器当前状态的交易事务。

IOTA生态系统基金的追踪与存储IOTA生态系统基金的追踪与存储
数据库索引追踪器

如果我们对数据执行任何创建/更新/删除的操作,都会在缠结中存储新条目并更新索引,如下所示:

  • Create会将新的交易序列添加到索引中
  • Updated从索引中删除旧项目的序列之后添加并替换交易序列
  • Delete将从索引中删除交易序列

在执行了这些操作之后,新的索引以及我们当前索引的指针均被保存到缠结中。

此过程改进了当前的跟踪器状态,但为了提供审计历史记录,我们向索引添加了一些附属信息。当我们存储一个新的索引时,我们维持上一个索引引用着再之前的索引。因此,通过最后的索引,我们可以回顾索引的更改情况,并查看更改的整个历史记录。

IOTA生态系统基金的追踪与存储
操作后索引的追踪器

通过索引链,我们可以非常轻松地获取当前状态和审计数据。 由于我们始终引用我们创建的交易序列,因此不会给任何人发送垃圾数据的机会,我们也只能检索我们需要的交易事务,而不是所有存储在地址中的交易事务。

这应该足以满足验证审计数据的真实性要求,但为了使概念更加安全并保证数据的真实性,我们在索引和交易数据中添加了RSA-SHA256签名。 通过使用我们的私钥签署数据并向全世界提供公钥,任何人都可以验证数据。

此外,由于我们没有对有效支付交易进行加密,因此在缠结中可以完全透明地查看它们。

我们对存储在缠结上的数据结构的最终构架如下:

IOTA生态系统基金的追踪与存储
完整结构的追踪器

在我们开始检索数据时,所有要做的工作都从当前索引序列开始。

结论

在缠结上存储数据的方法很多,选择合适的方法取决于你想要实现的目标。

我们尚未描述追踪器还拥有的其他功能,但希望我们已经展示了如何利用基本的底层存储机制以完全透明,可审计和安全的方式将数据存储在缠结中

上述技术代码的简化版本可以在下面地址找到 [https://github.com/iotaeco/iota-database-tutorial]

 

原文链接:https://medium.com/@iota.eco/iota-ecosytem-fund-tracker-storage-dd8c90b7c4ea

tigermumu

专栏作者:tigermumu

个人简介:坚定不移的贯彻以推广和普及IOTA为核心一百年不动摇

作者邮箱 作者主页 Ta的文章

发表评论

邮箱地址不会被公开。 必填项已用*标注