文章
· 六月 28, 2023 阅读大约需 5 分钟

InterSystems IRIS 数据平台的以太坊适配器

1. 区块链

当我写这篇文章时,比特币的价格还不到其成功顶峰时期的五分之一。因此,当我开始向某人讲述我的区块链经历时,我听到的第一句话是毫不掩饰的怀疑:“现在谁需要这个区块链东西?”

没错,区块链炒作已经减弱。然而,它所基于的技术将继续存在并将继续在特定领域使用。互联网通常提供大量描述这些技术的一般用法的材料

(例如在Medium福布斯上)。

众所周知,区块链是一个分布式注册表,即分布在多个节点之间的数据库,每个节点都存储注册表的完整副本。区块链的主要特征是记录(交易)形成块,块形成块链。区块链仅支持追加操作。这意味着几乎不可能对已经保存在区块链中的交易进行更改。

网上有无数的区块链教程(如果您从未听说过区块链,可以从这个简单的视频开始)。

当区块链蓬勃发展时,人们多次呼吁在任何地方使用该技术。然而,可能需要区块链的项目/任务有某些明显的特征。

首先,必须有很多玩家/用户编写大量数据,这些数据必须一致且可信。

那么,就不应该存在每个人都信任的第三方。

必须有一个公共数据验证的机制。
如果满足所有这些标准,考虑使用区块链可能是个好主意。

任何行业都可以找到这样的任务。 www.101blockchains.com项目汇总了有关潜在和现有区块链项目的信息,以及在各个行业中使用区块链技术的细微差别。

例如,区块链可用于医疗保健领域的以下任务:

  • 用于安全地远程管理患者记录;
  • 通过整个供应链中不可更改的交易来打击假药;
  • 通过排除欺诈和篡改数据的可能性来提高临床试验的监控和有效性。

企业部门通常使用一种特殊类型的区块链,称为私有许可区块链。此类网络具有一组特殊的节点来验证交易。

然而,在开发第一个 InterSystems IRIS 区块链适配器时,我们选择了以太坊,这是一种属于无许可区块链类别的区块链 - 一个没有单一控制中心的开放平台。该决定是基于该区块链引擎的受欢迎程度以及具有大量工具和库的足够成熟的基础设施。请注意,您还可以使用以太坊工具创建私有区块链

2. 适配器

让我们实际上回到适配器。

InterSystems IRIS 中的适配器(就像 Ensemble 中一样)是 InterSystems IRIS 类的类或包,允许您与外部系统交互。 InterSystems IRIS 适配器分为入站(当外部系统是交互发起者时,用于从外部系统接收数据)和出站(当 InterSystems IRIS 是交互发起者时,用于与外部系统一起工作)。

IRIS 以太坊适配器是出站适配器,与大多数其他 InterSystems IRIS 适配器略有不同。该适配器还包括一个小型 NodeJS 模块。其架构如图 1 所示。

图1。

适配器的 NodeJS 模块使用现有的 NodeJS 库来与以太坊配合使用。

该适配器允许您执行以下操作:

  • 将智能合约部署到以太坊(我们计划撰写另一篇文章,涵盖智能合约、开发工具和示例)。
  • 调用智能合约方法:改变区块链状态的方法和不改变区块链状态的方法
  • 保存交易(将资金从一个钱包转移到另一个钱包)
  • 调用额外的方法来获取区块链的状态
  • 记录所有请求(由 NodeJS 模块完成,方便调试)

该适配器附带 OpenExchange 上的源代码

3. 一个简单的例子

该适配器附带一个“Hello world”示例。

要开始使用以太坊(并运行此示例),您将需要以下内容:

  • 选择您要使用的网络。 Ropsten 等测试网络通常用于开发目的
  • 在此网络中创建一个钱包并向其存款
  • 安装本地以太坊客户端(例如 Geth)或获取与云提供商(例如 Infura)合作的密钥

配置业务操作时需要设置以下内容(图2):

  1. NodeJS模块工作的服务器和端口(默认使用3000端口)
  2. 提供商设置(在本例中访问 Infura)
  3. 访问凭据(指定您的钱包号码作为用户名,指定您的私钥作为密码。InterSystems IRIS 将访问凭据存储在一个单独的数据库中,您必须为其启用加密)

图 2.

为了使用智能合约,您需要在文件系统中创建(为您将使用的每个智能合约)一个文件夹,并在其中放置两个文件:
*abi.txt
*字节码.txt

这些文件应包含智能合约的 ABI 及其字节码。智能合约的 ABI 是 JSON 格式的接口的正式描述。 ABI 和字节码是在编译智能合约时创建的。

仅部署合约时需要字节码。

您可以使用 InterSystems IRIS 互操作性测试服务来测试业务运营。

图 3 说明了如何使用测试服务部署智能合约。调用此业务操作的结果是包含交易哈希的消息。

图 3.

您可以使用 ropsten.etherscan.io (https://etherscan.io/) 浏览器找到此交易并获取已部署的智能合约的地址。

要使用适配器调用智能合约的方法,您需要在生产配置中填写以下字段:ContractFolder 和 ContractAddress。

智能合约的执行代码非常简单:

-----0-----

将智能合约的地址和 ABI 传递给适配器的 GetContract 方法,以创建一个智能合约对象,然后将其用于调用方法。在这种情况下,必须在智能合约中定义返回字符串的 hello() 方法。

在这个例子中,hello()方法不会改变区块链状态,因此可以同步调用。然而,改变区块链状态的方法的执行时间可能相当长(因为必须等待交易被验证)。

要调用此类方法,请使用 InterSystems IRIS 提供的延迟响应机制。适配器必须提交延迟响应令牌,当交易获得批准时,NodeJS 模块会将其执行结果传递给 InterSystems IRIS。为此,您需要配置一个 Web 应用程序并向生产添加额外的业务服务来处理收到的响应。

以下是调用改变区块链状态的方法的代码:

-----1-----

在这种情况下,在调用智能合约的 setName() 方法之前,您需要指定许多参数,包括延迟响应令牌。

在下一篇文章中,我们将详细介绍智能合约,并提供使用 InterSystems IRIS 以太坊适配器解决实际问题的示例。

讨论 (0)1
登录或注册以继续