新的IOTA客户端库:更好,更快,更强大

新的IOTA客户端库:更好,更快,更强大

多年来,我们生态系统中的许多开发人员一直在使用我们的客户端库将IOTA集成到他们的应用程序中。官方支持的项目和社区驱动的项目有多种不同的编程语言,可以在许多项目中利用IOTA tangle:从使用C语言库的物联网设备到Node.js,Go或Python中的Web应用程序。

在2020年初,我们开始计划通过过去几年的学习来改善这种体验。

我们提出了一个坚实的计划,并决定在IOTA Chrysalis 版本中,专注于生产就绪和用户体验,使其成为取代我们现有的客户端库,再向前迈进成为一个更简单,更健壮,更可持续和标准化的解决方案,鉴于IOTA的“新曙光”,我们现在正在引入这个解决方案。

新客户端库的核心原则

在与现有的客户端库合作了几年并支持了无数社区开发人员的项目之后,我们对可以改进的方面有了一个相当好的想法。

我们经常听到的一些说法是这样的:“在开始使用IOTA之前,我需要了解太多关于IOTA的知识”或“功能 X 仅支持 Y 语言”。

我们收集了我们自己的所有经验以及社区和企业的反馈,并为新的客户端库提出了一套核心原则:

绑定,唯一的标准来源

到目前为止,每种语言都有其自己的一组受支持的IOTA功能以及完成某些任务的方式。有时这可能会导致不同实现之间的混淆,并且显然是次优的。

对于新的库,我们决定客户端库应该只有一个参考实现(为此,我们选择了Rust),而在命名和功能方面,所有其他实现都应遵循该参考实现。

为了实现这一点并利用Rust的安全性和性能,我们决定新库应通过绑定利用Rust引用,以确保在任何受支持的语言中具有完全相同的行为和相同的功能。这意味着您实际上可以直接从您喜欢的语言以您喜欢的语法使用我们的Rust库,从而将基于Rust的库的功能和性能带到您选择的语言中。在撰写本文时,我们已经为Node.js和Python提供了绑定,并且正在积极开发针对Java和其他语言的其他绑定。

易于使用,但可以根据您的需要进行高级设置。

以前在创建库时要考虑到了最大的灵活性。从字面上讲,协议中的每个可用选项都可以从客户端使用,但这也意味着您需要充分了解协议本身的工作原理,然后才能充分利用它。

有了Chrysalis后,我们决定改善这种体验,并提出尽可能多的合理默认设置。以前,您必须先手动提供节点URL,对事务进行转换/编码,设置诸如“最小重量值”(MWM)和“深度”之类的选项,然后才能使用这些库。但是,在新版本中,所有这些都是默认情况下提供的,前提是您要使用主网,并使用主网的默认参数,并且您要以(utf-8)字节编码数据。这使得每个人都可以更容易地使用库,即使您以前从未使用过IOTA。

如果您不提供特定的参数,则使用默认值;如果您不希望使用默认值,则可以覆盖此行为,所有高级设置都可以如此。这使我们提供一个易于使用的新库,并具有您所需要的所有内置功能。

助手功能

在使用IOTA进行开发时,有一些情况非常常见。例如找到要使用的公共节点。以前这是一项手动工作,但是有了新的客户端库,您只需告诉它使用“主网”或“测试网”,它就会通过我们的助手功能自动为您找到一个已同步的公共节点。我们提供的另一个很好的助手功能是事件的抽象。

在过去,您必须使用单独的第三方库来连接到节点的MQTT/ZMQ提要来获取事件,现在,如果事件被触发,您只需提供自己的回调函数,就可以选择直接从客户端库监听事件。

这些和更多的助手功能现在已经可以使用了,新的客户端库为IOTA开发人员体验带来了另一个级别的便利。

新的钱包库原则

以前,每个处理IOTA令牌的IOTA实现都使用核心客户端库(它是很底层的)来实现自己的事件。这是一项相当大的工作,并且由于每个事件都不相同,因此有时会导致错误的实现。

为了一劳永逸地解决这个问题,我们推出了另一个全新的客户库,wallet.rs。Wallet.rs本质上是一个可编程的钱包,我们鼓励用于处理 IOTA 令牌的每一个实现。这个状态库为您处理所有事情,包括同步和安全性。Wallet.rs已经集成到新的Firefly(萤火虫)钱包,命令行钱包和测试网钱包,并允许任何开发人员实现自己的钱包,其中的关键核心组件由库处理。

wallet.rs的一些亮点是:

  • 它是有状态的,即使您有许多地址和帐户,使用起来也很快
  • 您可以根据自己的选项创建任意数量的帐户。如果需要,可以在一个wallet.rs设置中同时管理测试网和主网帐户
  • 默认情况下它是安全的,使用Stronghold进行秘密管理
  • 发送和接收资金很容易,如果需要重新附加,它会帮你处理
  • 备份和恢复状态是一项内置功能

适用于核心库的相同原则也适用于wallet.rs。该库易于使用,并具有合理的默认值,并具有针对Node.js,Python和Java的绑定,以后将添加更多潜在的语言。

其他客户端库

不管我们有多喜欢我们的新方法,它并不是在所有可能的情况下都是理想的解决方案。对于这些情况,我们还提供了其他库,但功能有限:

低功耗设备的C语言库

C语言是一种低水平,高性能的语言,在资源有限的嵌入式设备中大量使用。由于嵌入式设备的Rust绑定带来的一些限制,我们决定为C语言创建一个单独的库。该库可处理所有基本交互,但不提供wallet.rs之类的功能或iota.rs的大多数助手功能。

原生Go和TypeScript库

我们还提供了不使用Rust绑定的原生Go和TypeScript库。这与我们在iota.rs可用之前就已经需要使用这些库的事实有关。我们正在考虑在稍后阶段为两者提供绑定,但如果您希望通过Go或在Web浏览器中使用IOTA技术,则可以使用这些库。

结论

有了新的客户端库,我们为IOTA生态系统带来了全新的可用性,灵活性,性能和专业水平,让与它们合作成为一种真正的乐趣。它们现在可以在我们的Chrysalis测试网上使用,一旦我们在主网上启动Chrysalis,它们将替换现有的库。

包括绑定的客户端库可以在这里找到,初始文档在这里。有关钱包库,请参阅GitHub上wallet.rs存储库及其初始文档

我们迫不及待地想让您试一试了!


原文:点击进入

如果你喜欢这篇文章或者我之前发表的文章,我很高兴能得到一点捐助;-):

IOTA:OZFXAVABNPAPFGJ9RVZQGGJZDXHZJA9REUTQSCQIKCGUILGLTAVDUC9KYDZKHOEXC9DYJTXYXLQ9EBJUYWWABVEJGC

专栏作者:IOTA-方可

个人简介:我共发表了 178 篇文章,总计被阅读了270,394 次,共获得了 1,967 个赞。

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

发表评论

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