内容


通过分析让区块链智能合约更加智能

Comments

简介

目前为止,您可能看到过大量区块链信息,而且至少对其关键概念有所了解。(关于某些基本知识,请查阅我的一篇包含两部分的介绍构建我的第一个区块链网络的文章)。迄今为止,我研究区块链已有一年多的时间,研究分析数据已有超过 25 年的时间。最近,我面临了一个新挑战,要求演示分析和区块链是如何互惠互利的。在本文中,我将分享这些工作成果,并列举一些其他关于如何融合使用分析和区块链的示例。我认为有许多机会通过区块链来改进分析,反之亦然。

区块链的一个关键概念是智能合约,它是促进多方交易的条款和条件的一种电子表示。在区块链中,智能合约通常是组合使用代码和数据来构建的。区块链开发者可以为智能合约实现他们想要的智能水平,但区块链的原则要求将代码保留在区块链中,而且仅使用在区块链中可见的数据。这有助于保持交易各方之间的信任和透明度。

那么,如何让智能合约更加智能呢?有几种方法可以考虑:

  • 使用资产来表示合约条款和条件中的数据
  • 通过高级分析来增强数据
  • 使用机器学习
  • 通过针对复杂规则的决策优化来实现增强

在本文中,我将使用一个常见的供应链用例来演示上述方法如何帮助智能合约变得更加智能。在这个用例中,一个种植者将商品发货到零售商。零售商接收货物,然后向种植者付款。下图演示了该流程,以及涉及到的参与者、资产和交易。

流程图
流程图

在这个例子中, Ships To 交易引用了 GrowerRetailer 参与者,运输的是 Product(s),可能还有其他一些信息,比如发货日期、数量或交易金额。Ships To 交易智能合约验证 Grower、Retailer、Product 和发货日期是有效的,而且交易金额大于零,或者某个非常基本的条件。

这个智能合约示例非常简单,但它已足以说明我的观点 —— 而且它是区块链开发者的典型起点。

使用资产来表示合约条款和条件

所有智能合约逻辑都包含在 Ships To 交易代码中。这是一个很好的起点,但它可能限制您的灵活性。改进此解决方案的第一种方案是,创建一个 Contract 资产类型来引用 Grower 和 Retailer 之间的所有货物验收条款和条件,而且可能还包含其他一些信息供以后使用。Ships To 交易引用该 Contract。

资产类型
资产类型

这使得所有条款和条件可以作为 Contract 的属性进行维护,而不是放在交易的代码中。可以使用应用程序来使得 Grower 和 Retailer 在条款和条件上达成一致,然后可以使用这些条款和条件来创建一个 Contract 资产。当 Grower 发起 Ships To 交易时,它只需引用 Contract 资产,即可获得所有验证智能合约的变量。

以下是您可能希望包含的其他一些智能合约特性:

  • 产品从 Grower 运送到 Retailer 的天数 -- 当 Retailer 收到货物时,智能合约可以验证到达日期是否在发货日期后的预期时间范围内
  • 温度阈值(上限和下限) -- 用于确定在整个运输过程中是否保持着合适的温度
  • 加速度传感器阈值 -- 用于确保集装箱未掉落或未被不当处理
  • 地理围栏边界 -- 用于限制集装箱的移动
  • 罚金金额 -- 用于影响违反合约上设置的任何限制所造成的支出

所有这些的关键在于您应该在 Contract 资产中实现灵活性,Contract 资产比链代码更容易修改。您可能在偶尔添加条款和条件时仍需要修改链代码,但是如果将参数构建到 Contract 资产中,可以让交易各方相互协商条款和条件,然后将这些条款和条件作为资产存储在区块链中。账本会跟踪记录所有修改。

通过高级分析来增强数据

随着时间的推移,区块链会收集大量可以利用的历史数据。利用区块链的一种方式是使用数据挖掘和预测分析来检测传入合约和交易中的异常或异常值。继续以我们的供应链用例为例,我们可以开始识别行为模式,比如:

  • 一些供应商通常会以典型数量供应某些产品
  • 某些产品的成本通常比较稳定
  • 货运公司具有典型的交货天数

根据历史数据不断训练异常或归并模型,然后针对传入的交易运行这些模型,可以帮助您在潜在供应链问题发生之前识别它们。

如果种植者 A 拟定了一个针对产品 A、B 和 C 的 Contract 资产,但种植者 A 通常仅发送产品 A 和 B,这可能会触发一条警告,警告零售商再看一遍合约。或者,如果种植者 A、B 和 C 通常以每磅 2 美元的价格收取某一特定质量的咖啡,但种植者 D 试图以每磅 5 美元的价格收取,这可能触发对合约的进一步审查。

为实现此功能,您可能需要将一些额外的数据存储在 Contract 资产中,比如 Anomaly 分数和 Anomaly Reason 描述。您还需要确保参与该流程的每个人都了解模型的训练,以便保持透明。

使用机器学习模型

当种植者 A 装运一些香蕉时,作为交易的一部分,该流程可能要求对产品样本拍照并提交照片。可使用机器学习 Visual Recognition 模型来检测某些可以添加到区块链中的信息位,比如:

  • 发货时的成熟度
  • 收货时的成熟度
  • 香蕉类型
  • 香蕉质量
  • 每串香蕉个数

由于某些原因,可以在智能合约中使用这些添加的信息。例如,可以使用这些信息来确定是否符合合约中的服务级别协议。如果香蕉在装运时应为绿色,在送达时应为绿色中带点淡黄色,但在送达时它们呈亮黄色,那么这批货物可能遭到拒绝或打折。如果检测到每串有 2-4 个香蕉,而您要求有 6-8 个香蕉,这可能会影响种植者与零售商之间的协议。

通过针对复杂规则的决策优化来实现增强

对于最后一个场景,假设根据原产地、目的地或运输方式等因素,管理香蕉装运的规则有所不同。这些复杂规则有时难以在链代码中实现。可以使用规则引擎来确定可接受的后续步骤和批准流程。

如果种植者 A 尝试将香蕉从巴西运到欧洲,那么仅当他们提供了特定文件并且装运数量在可接受范围内,才允许他们这么做。可能仅在一年的某个时间内,才允许种植者将香蕉从菲律宾运往北美。尽管这些示例很简单,但您可以从中了解到,规则可能很难在代码中实现,而且可能需要频繁更改。

可以将 IBM Operational Decision Manager 等规则引擎与区块链平台集成

结束语

如您所见,让智能合约变得更加智能的方法有许多。您始终应该牢记,需要透明度才能保持信任。受特定模型影响的交易参与者需要能够访问这些模型,而且需要了解如何对其进行培训。管理交易的规则需要对所有各方均可见。在区块链上构建的应用程序和流程旨在保持透明度和信任。即使模型在链外运行,而且只创建了额外的数据点,所有参与者也需要了解该数据的派生方式。

要了解 IBM Blockchain 的更多信息,可以查阅 IBM Blockchain 网站和在 Twitter 上关注 IBM Blockchain @IBMBlockchain。您还可以在 Twitter 上找到我 @ChrisATyler,或者在 LinkedIn 上与我交流。

本文翻译自: Make your blockchain smart contracts smarter with analytics(2018-11-30)


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Big data and analytics
ArticleID=1064011
ArticleTitle=通过分析让区块链智能合约更加智能
publish-date=12182018