今天,我们正式发布全新的状态客户端库的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上运行的):
创建一个帐户。
在钱包中生成一个金额设置为1000的地址。
点击“COPY RAW ADDRESS”按钮并使用它从Devnet获取资金。资金应该很快就会出现,您可以在余额部分看到。
在网络钱包中生成新地址,然后单击“复制磁力链接”。
您可以将此磁力链接粘贴到钱包“发送”部分的地址字段中,并将特定金额发送给您自己。
如果您在生成CDA时指定了IOTA的数量,IOTA将在它们到达时立即在您的余额中可用。否则它们将被阻止,直到CDA到期,一般情况是30分钟。
发送交易到条件存款地址
捐赠地址或其他场景
CDA启用的一种方案是实施固定时间捐赠地址。您在网站上显示CDA,例如QR码。 而且,每当目前的CDA即将到期时,都可以设置策略在CDA有效期的最后48小时内,生成一个新的CDA并显示新的二维码。为已经进入的交易留出足够的空间以安全地进入,以确保所有新的捐赠都被新的CDA接收。
您可以在此捐赠场景的PoC代码库中看到Go语言实现此方法的示例。
您可以在我们的文档中阅读有关客户端库的更多信息。 或者从各自的代码库中获取客户端库
文章链接:https://www.iotachina.com/stateful-client-libraries-part-1-and-part-2.html
有疑问加站长微信联系(非本文作者)