数字农业可信上链最佳实践

场景描述

本文档以数字农业场景,通过IoT区块链Hub把IoT设备数据中转到阿里云BaaS-Fabric区块链为示例,介绍完成的IoT设备上链流程。

1

在该场景中会涉及两类角色:

  1. 数字农业-管理方。自身拥有区块链物理资源,需要接入其他参与方到IoT区块链Hub。

  2. 数字农业-使用方。自身没有区块链物理资源,拥有自己的IoT设备,把IoT设备数据接入到管理方所拥有的区块链。

管理方角色

进行该最佳实践前请保证您的账号已购买并且拥有区块链资源。

步骤一:创建业务链

管理方首先进行创建业务链的工作,在IoT区块链Hub中创建一个业务链,完成该步骤之后,可以通过该业务链连接到您所拥有的物理区块链。

  1. 在区块链列表页面进行新增业务链操作。

新增业务链
  1. 选择区块链类型:阿里云BaaS-Fabric链,区块链名称,备注等信息。

BaaS区块链
  1. 选择区块链中的联盟,通道,组织等配置信息,点击提交

1

  1. 业务链创建成功之后,您可以在区块链列表页面查看已创建完成的业务链。

1

步骤二:成员接入

在数字农业场景中,使用方的IoT设备数据需要上链,管理方则把使用方成员组织到一起,并进行相应的授权,使得使用方拥有访问业务链的权限。后续使用方可以把IoT设备数据上链到拥有访问权限的业务链。

作为管理方,如果您没有其它参与方进行IoT设备数据上链的需求,IoT设备数据上链操作由您自行完成,请跳过成员接入步骤,跳转到使用方角色步骤进行后续操作。

  1. 添加成员。请输入使用方的阿里云账号UID,成员名称以及服务调用次数等信息,对成员进行入驻。

1

  1. 成员授权。为添加的使用方成员分配权限,使得使用方成员可以访问管理方所创建的业务链。

1

使用方角色

使用方被授权之后,登录到IoT区块链Hub,可以看到管理方为您授权的业务链信息。接下来您可以创建产品和授权,把自身的IoT设备数据进行上链。

说明

进行最佳实践前请保证您的IoT设备已经完成设备身份认证的对接,如未完成请联系我们

步骤一:创建产品和产品授权

您需要创建一个产品并完成产品和业务链的授权,完成该步骤之后该产品下的所有IoT设备均拥有访问业务链的权限,IoT设备数据可以进行上链。

  1. 点击产品列表页的添加设备按钮。

1
  1. 点击添加设备弹出框中的创建产品

1
  1. 在创建产品弹出框中,填写完成产品信息后,点击确认提交。

1
  1. 返回添加设备弹出框,选择您所添加的产品,填写备注,点击确定

1
  1. 此时完成了产品的创建工作,您可以回到产品列表页面进行查看。

1
  1. 创建完产品之后,您需要对此产品进行业务链访问授权,之后该产品下的IoT设备才能上链到该业务链。

1

步骤二:创建隐私规则

在数字农业场景,如果有某些数据信息,比如地理位置信息,在上链之前需要进行数据隐私处理,您可以在接下来的步骤进行隐私规则配置,IoT区块链Hub可以遵循您所创建的隐私规则,对IoT设备数据进行隐私处理之后再进行数据上链。

  1. 点击隐私规则列表页的添加隐私规则按钮。

  1. 在弹出的添加隐私规则弹出框中填写隐私规则信息后,点击确定进行隐私规则的创建。

1
  1. 此时,此时管理方就完成了隐私规则的创建工作,回到隐私规则列表页面进行查看。

1

步骤三:配置路由规则

为了指明IoT设备数据上链到哪个业务链,您需要进行路由规则配置,在该步骤可以指定具体的业务链目标地址,IoT设备数据会遵循您所配置的路由规则,把IoT设备数据路由到特定的业务链。在该步骤可以配置之前创建的隐私规则,IoT设备数据会经过该隐私处理之后,再进行路由上链。

  1. 点击路由规则列表页的添加路由规则按钮。

  1. 在弹出的添加路由规则弹出框中填写路由规则信息后,点击确定进行路由规则的创建。

1
  1. 此时,此时就完成了路由规则的创建工作,您可以回到路由规则列表页面进行查看。

1

步骤四:设备端SDK集成

接下来您需要在IoT设备端集成SDK,请参考设备端接入,下载设备端SDK,集成到您的设备(这里以Linux平台x86架构IoT设备为例)。之后IoT设备可以进行数据采集,并通过设备端SDK对采集的数据进行处理,生成可信令牌,IoT设备数据就可以通过IoT区块链Hub进行数据上链。

此处以数字农业场景中的温度和位置采集为例,最终生成的数据如下:

             iotDataDID: did:lto:000FFFFFDABCFDF0B4999700610B599D00000001
          iotDataDIDLen: 48
          userPlainData: {"温度":"25.2"}
       userPlainDataLen: 17
        userPrivacyData: {"位置":"180.24, 257.27"}
     userPrivacyDataLen: 27
            iotAuthType: ID2
         iotAuthTypeLen: 3
   iotIdServiceProvider: pkpkpkpkpkk
         iotIdServiceProviderLen: 11
                  iotId: 000FFFFFDABCFDF0B4999700
               iotIdLen: 24

          iotDataDigest: FBB7FAE10BDD1466F1C7534E7CFDFE7941FBD1A4FAE64FB1F07CA7F3AD97E02B
       iotDataDigestLen: 64
           iotDataToken: 3~2~1756E40A3FAE23E1~1628133789000~GLrSRKly/9T71lSqlzPhqX0Mb8I7uiNXmgPpt1q2cQtJcgazu61apcJrdsLqP/6D
        iotDataTokenLen: 99
        lto: generate token success!

步骤五:数据上链和查询

  1. 在数字农业场景,IoT设备数据处理完成之后,为了表明该数据的完整和可信,您可以把该数据通过IoT区块链Hub进行上链。

API名称:UploadIoTDataToBlockchain

请求示例:

UploadIoTDataToBlockchainRequest request = new UploadIoTDataToBlockchainRequest();
request.setIotDataDID("did:lto:000FFFFFDABCFDF0B4999700610B599D00000001");
request.setPlainData("{\"温度\":\"25.2\"}");
request.setPrivacyData("{\"位置\":\"180.24, 257.27\"}");
request.setIotAuthType("ID2");

// IotIdServiceProvider为步骤三创建的设备中的ProduceKey
request.setIotIdServiceProvider("pkpkpkpkpkk");

request.setIotId("000FFFFFDABCFDF0B4999700");
request.setIotIdSource("2");
request.setIotDataDigest("FBB7FAE10BDD1466F1C7534E7CFDFE7941FBD1A4FAE64FB1F07CA7F3AD97E02B");
request.setIotDataToken("3~2~1756E40A3FAE23E1~1628133789000~GLrSRKly/9T71lSqlzPhqX0Mb8I7uiNXmgPpt1q2cQtJcgazu61apcJrdsLqP/6D");

响应结果:

{
  "code": "00000",
  "data": "",
  "message": "",
  "requestId": "7B4CE933-08F4-1654-AC17-F09CDFF94816",
  "success": true
}

  1. IoT数据上链成功之后,为了确保原始数据的完整性,您可以通过IoT区块链Hub获取之前上链的数据,并进行校验比对。

API名称:QueryBlockchainData

请求示例:

QueryBlockchainDataRequest request = new QueryBlockchainDataRequest();
request.setIotDataDID("did:lto:000FFFFFDABCFDF0B4999700610B599D00000001");
request.setBizChainId("7376036577407211");

响应结果:

{
        "code":"00000",
        "data":{
                "plainData":"{\"温度\":\"25.2\"}",
                "privacyData":"tiq9SV1EkVkUhZSamwP2unmenPc7Hv6E4YH/VhlJngv/BmKj3cjL8k20mq+pENQo",
                "privacyRuleId":"0387453157147937"
        },
        "message":"",
        "requestId":"802E77DD-C5F3-1B11-93D1-9E761E48247C",
        "success":true
}

  1. IoT设备数据上链成功之后,为了获取该次上链的数据证书信息,以对该次上链数据进行证明,您可以调用IoT区块链Hub云端API查询上链数据元信息进行查证。

API名称:QueryBlockchainMetadata

请求示例:

QueryBlockchainMetadataRequest request = new QueryBlockchainMetadataRequest();
request.setIotDataDID("did:lto:000FFFFFDABCFDF0B4999700610B599D00000001");
request.setBizChainId("7376036577407211");

响应结果:

{
        "code":"00000",
        "data":{
                "blockHash":"970e4ac4b4b458916f17d95e405021bde5c45d9c9b6c08094fc4501f79ea7e74",
                "blockNumber":"4",
                "iotId":"000FFFFFDABCFDF0B4999700",
                "memberName":"小明",
                "productKey":"pkpkpkpkpkk",
                "timestamp":1629262928000,
                "txHash":"11d24261fd7e7641d654f83959ae85297b6f904f84d21e183932078d874283e0"
        },
        "message":"",
        "requestId":"6D19B975-0A6C-1ED6-9550-707453D567C9",
        "success":true
}

步骤六:资源使用统计概览

您可以在统计信息视图,查看当前已使用的服务调用次数,以及各个业务链的授权次数使用情况。

1