44

IOTA-全新的状态客户端库

 5 years ago
source link: https://studygolang.com/articles/19701?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

今天,我们正式发布全新的状态客户端库的beta版本,其中包含我们称之为“帐户模块”的内容。这个名称不足以说明什么是重要的更新,因此我们将总结我此次更新客户端库的内容说明。

客户端库一直是构建IOTA上层应用的难题。库的功能是以您熟悉的语言来实现您的项目设计目标。

IOTA基金会一种在维护Java,JavaScript和Golang版本的客户端库。虽然我们看到很多开发者使用库构建出许多出色的项目,但我们依然认为它离开发者们心中最理想的体验还有很大的距离。

几个月前,我们开始彻底的重新设计客户端库,并试图尽可能多地抽象出复杂的操作。因此,开发人员只需要关心他们真正关心的事情:发送交易和接收交易即可,而对于其他琐碎的IOTA协议内容大可无需考虑。

新的客户端库做了什么?

以前在使用我们的客户端库时,开发人员必须从头开始实现许多组件。这需要许多IOTA概念的高级知识。 例如,你必须非常熟悉:

1、交易

2、交易束,并会构建它们

3、了解哪些地址可以安全地用于存款,哪些地址可用于输入选择

4、推进和重新附加待处理交易

5、以及其他很多概念

由于客户端库没有状态,开发人员必须管理或完全依赖网络。甚至诸如获取交易数据之类的操作也需要接入网络,并且必须考虑通过快照修剪旧的分类账数据。

所有的这些粗枝末节都使得在IOTA之上的项目建设变得复杂。在发送交易之前必须进行的前期学习才是真正的问题。特别是当你想在IOTA上试验简单的应用程序时。

然而, 对于新库,大多数基本概念都被抽象掉了 。开发人员可以创建一个帐户,并以更少的工作量开始发送和接收交易。

新的客户端库在本地存储帐户信息,无需调用节点来获取地址状态或余额等信息。它们对快照也很有弹性,具体功能如下:

1、在本地存储帐户信息和设置。您还可以导出和导入现有帐户。

2、本地存储待处理交易。

3、通过预定义的策略处理待处理交易的推进和重新附加。您还可以定义自己的策略。通过插件支持重新附加和升级功能,您可以开发自己的插件来扩展库功能。

4、了解您帐户中的哪些地址已存入和使用,以及哪些地址应用于输入选择。因此,无论何时您要求存款,您都是以安全的方式进行存款。

5、提供事件处理功能。您现在可以收听不同的事件,例如每个新存款或每个已确认的外发交易。

6、引入有条件存款地址(CDAs)的概念,现在是与存款人沟通的主要手段。这是一个非常重要的功能,我们将在后续内容中进行扩展。

在前面的内容中,我们重点介绍了客户端库中的一些主要更改,以及它们如何简化IOTA的开发。下面,我们将仔细研究条件存款地址(CDAs)的概念。

CDA是特殊地址,允许您指定它们保持可用的条件,只要您指定的条件成立,CDA就可用于提款和存款。

CDA的主要用途是避免地址重用。当您从一方请求IOTA时,您创建一个在特定时间段内处于活动状态的CDA,并且可以指定IOTA的确切数量。通过这种方式,您可以向发币者传达意图,然后发币人会判断是否存款。简化的流程是:

用户生成CDA地址。

创建CDA时,您可以指定地址有效的条件,如时间,收款金额限制等。

您可以通过您选择的媒介与存款人共享CDA,并将其序列化为您选择的对象,例如二维码,协议缓冲区或磁力链接。

存款人要么将令牌发送到CDA中指定的地址,要么请求一个新的CDA(例如,在CDA已经过期的情况下)。

CDA是简单的描述性对象,您可以将它们序列化为任何格式。 例如,CDA磁铁链接的样子:

iota://GODULTSVAVRXBJFKTAEAJTULFKJUHIMKKVBCS9TJCNBWEVWFHAAVKVKLABMYTSK9EKWPMZJUVHAKGULLDAMABAGQIZ/?timeout_at=1554372484&expected_amount=1000

客户端库可以解析磁链接,然后发送您收到的链接也很简单:

account.sendToCDA({
    magnetLink: magnetLink
})
    .then()
    .catch();

试试条件存款地址

为了展示这个概念,Luca Moser构建了一个作为网络钱包工作的Web应用程序(注意:这在使用测试令牌的devnet上运行的):

转到 Sigma Wallet网站

创建一个帐户。

在钱包中生成一个金额设置为1000的地址。

点击“COPY RAW ADDRESS”按钮并使用它从 Devnet 获取资金。资金应该很快就会出现,您可以在余额部分看到。

在网络钱包中生成新地址,然后单击“复制磁力链接”。

您可以将此磁力链接粘贴到钱包“发送”部分的地址字段中,并将特定金额发送给您自己。

如果您在生成CDA时指定了IOTA的数量,IOTA将在它们到达时立即在您的余额中可用。否则它们将被阻止,直到CDA到期,一般情况是30分钟。

发送交易到条件存款地址

捐赠地址或其他场景

CDA启用的一种方案是实施固定时间捐赠地址。您在网站上显示CDA,例如QR码。 而且,每当目前的CDA即将到期时,都可以设置策略在CDA有效期的最后48小时内,生成一个新的CDA并显示新的二维码。为已经进入的交易留出足够的空间以安全地进入,以确保所有新的捐赠都被新的CDA接收。

您可以在此 捐赠场景的PoC代码库 中看到Go语言实现此方法的示例。

您可以在我们的文档 中阅读有关客户端库 的更多信息。 或者从各自的代码库中获取客户端库

Go library

Java library

JavaScript library

文章链接: https://www.iotachina.com/stateful-client-libraries-part-1-and-part-2.html


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK