# 数据转发至BCS可信上链
#### 场景说明
通过IoTDA规则流转能力实现自动调用合约将数据流转到BCS区块链服务实现数据可信上链，助力客户构建可信多方协作平台，使用区块链可减少人为纠纷，提高交易效率；区块链的不可篡改性降低了欺诈和网络错误的发生；共享的账本、流程、记录增进参与方之间的可信度；审计机构可随时对不可篡改的账本进行审计。IoTDA企业版实例支持将数据流转到BCS华为云区块链引擎实例（推荐）和Hyperledger Fabric增强版。
本示例分为两部分，将设备上报的数据转发到[华为云区块链引擎实例]（推荐）和[Hyperledger Fabric增强版]上链。
![](https://support.huaweicloud.com/usermanual-iothub/public_sys-resources/note_3.0-zh-cn.png)
Hyperledger Fabric增强版由于开源内核限制，不支持高tps场景使用。建议使用性能更好的华为云区块链引擎实例。
 #### 转发华为云区块链引擎实例
**一、购买华为云区块链引擎实例**
1. 登录华为云，访问[区块链服务BCS](https://www.huaweicloud.com/product/bcs.html)，进入区块链服务管理控制台。
2. 选择"实例管理"，单击购买华为云区块链引擎，按照需求选择华为云区块链引擎规格，单击"立即创建"。 
   图1购买华为云区块链引擎   
   ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001743250726.png "点击放大")
   
   
3. 单击进入购买的华为云区块链引擎实例，选择"合约管理"，安装您开发好的合约[（可参考合约开发）](https://support.huaweicloud.com/devg-bcs/bcs_devg_01_004.html)，并选择合适的背书策略。
   
   图2安装合约   
   ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001790190609.png "点击放大")
   
   
**二、** **配置设备接入服务**
在设备接入服务中设置数据转发规则，实现当设备上报数据时将数据作为参数调用华为云区块链合约实现数据上链。
1. 访问[设备接入服务](https://www.huaweicloud.com/product/iothub.html)，单击"立即使用"进入设备接入控制台。
2. 在左侧导航栏选择"规则\>数据转发"，单击左上角的"创建规则"。
3. 参考下表参数说明，填写规则内容。以下参数取值仅为示例，您可参考[操作步骤](https://support.huaweicloud.com/usermanual-iothub/iot_01_0024.html#ZH-CN_TOPIC_0264671221__section1919615255459)创建自己的规则，填写完成后单击"创建规则"。
   
   表1创建规则参数说明 
   | 参数名  | 参数说明                             |
   |:---|:---|
   | 规则名称  | **参数说明：**自定义，如"iotda-bcshw"。      |
   | 规则描述    | **参数说明：**自定义，如"数据转发至Bcs华为云区块链实例"。 |
   | 数据来源 | **参数说明：**选择"设备属性"。             |
   | 触发事件 | **参数说明：**自动匹配"设备属性上报"。           |
   | 资源空间  | **参数说明：**选择"所有资源空间"。             |
      
   
   
4. 单击"设置转发目标"页签，单击"添加"，设置转发目标，设置完成后单击"确定"按钮。 
   表2创建转发目标参数说明 
   | 参数名     | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   |:---|:---|
   | 转发目标 | **参数说明：**选择"区块链服务(BCS)-华为云区块链"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   | 区域     | **参数说明：**选择数据上链的BCS华为云区块链实例所在的区域。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   | 实例      | **参数说明：**选择数据上链的BCS华为云区块链实例。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   | 访问方式    | - 标准通道：应用访问区块链系统使用EIP方式。  - 高性能通道：应用访问区块链系统使用VPCEP方式，应用访问区块链流量较大场景时，建议使用VPCEP方式。单击"前往创建终端节点"。 1. 计费方式选择默认按需计费，选择IoTDA企业版所在私有云和子网。  2. 单击"立即创建"。  3. 确认信息无误后，勾选协议和免责声明，并单击"提交"。  4. 创建成功后，单击刷新，即可选择已创建成功的终端节点。     |
   | 接入组织  | **参数说明：**选择上链的身份组织。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   | 背书组织     | **参数说明：**选择上链背书的组织，需要和合约的背书策略保持一致才能正常上链。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   | 合约      | **参数说明：**选择上链所需要调用的合约。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   | 合约函数   | **参数说明：**填写上链需要调用的合约函数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   | 参数配置  | **参数说明：** 配置转发字段与调用合约函数的参数下标的映射，转发字段可以参考[设备属性上报通知](https://support.huaweicloud.com/api-iothub/iot_06_v5_01202.html)。如设备Id：notify_data.header.device_id                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
      
   图3新建转发目标-转发至BCS-华为区块链   
   ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000002322452258.png "点击放大")
   
   
5. 单击"启动规则"，激活配置好的数据转发规则。
**三、验证操作**
- 您可以使用配置设备接入服务时注册的真实设备接入平台，上报任意数据。
- 您也可以使用模拟器模拟设备上报数据，操作方法请参考[在线开发MQTT协议的智慧路灯](https://support.huaweicloud.com/bestpractice-iothub/iot_bp_00016.html)。
期望结果：
登录华为云区块链BCS控制台， 单击"实例管理"，进入数据上链的华为云区块链引擎实例，单击右侧"区块链浏览器"，可以在交易列表中看到新增交易内容。
图4验证结果   
![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001743794450.png "点击放大")
 #### 转发Hyperledger Fabric增强版
**一、购买Hyperledger Fabric增强版**
1. 登录华为云，访问[区块链服务BCS](https://www.huaweicloud.com/product/bcs.html)，进入区块链服务管理控制台。
2. 选择"实例管理"，单击购买华为云区块链引擎，按照需求选择Hyperledger Fabric增强版规格，单击"立即创建"。 
   图5购买Hyperledger Fabric增强版   
   ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001743644086.png "点击放大")
   ![](https://support.huaweicloud.com/usermanual-iothub/public_sys-resources/note_3.0-zh-cn.png)
   购买Hyperledger Fabric增强版选择和购买IoTDA企业版同一VPC可支持内网通信，可在"实例管理 \> Hyperledger Fabric增强版"实例列表中，在对应Hyperledger Fabric增强版实例右上方选择"更多 \> 更新访问地址"将接入地址修改为内网地址。
   
   
3. 在"实例管理 \> Hyperledger Fabric增强版"实例列表中，找到购买的Hyperledger Fabric增强版实例，进入"区块链管理"界面，选择左侧"链代码管理"，单击"安装链代码"安装您开发好的链代码（可参考[链代码开发](https://support.huaweicloud.com/devg-bcs/bcs_devg_2001.html)）。
   
   图6安装链代码   
   ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001743816124.png "点击放大")
   
   
4. 安装完成后单击安装的链代码右侧的"实例化"操作，在对应通道选择合适的背书策略完成实例化。
   
   图7链代码实例化   
   ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001790700481.png "点击放大")
   
   
**二、** **配置设备接入服务**
在设备接入服务中设置数据转发规则，实现当设备上报数据时将数据作为参数调用华为云区块链合约实现数据上链。
1. 访问[设备接入服务](https://www.huaweicloud.com/product/iothub.html)，单击"立即使用"进入设备接入控制台。
2. 在左侧导航栏选择"规则\>数据转发"，单击左上角的"创建规则"。
3. 参考下表参数说明，填写规则内容。以下参数取值仅为示例，您可参考[操作步骤](https://support.huaweicloud.com/usermanual-iothub/iot_01_0024.html#ZH-CN_TOPIC_0264671221__section1919615255459)创建自己的规则，填写完成后单击"创建规则"。
   
   表3创建规则参数说明 
   | 参数名    | 参数说明                                               |
   |:---|:---|
   | 规则名称    | **参数说明：**自定义，如"iotda-bcsfabric"。               |
   | 规则描述     | **参数说明：**自定义，如"数据转发至Bcs Hyperledger Fabric增强版"。 |
   | 数据来源  | **参数说明：**选择"设备属性"。                            |
   | 触发事件 | **参数说明：**自动匹配"设备属性上报"。                        |
   | 资源空间    | **参数说明：**选择"所有资源空间"。                          |
      
   
   
4. 单击"设置转发目标"页签，单击"添加"，设置转发目标，设置完成后单击"确定"按钮。 
   表4创建转发目标参数说明 
   | 参数名   | 参数说明                                                                                                                                                       |
   |:---|:---|
   | 转发目标   | **参数说明：**选择"区块链服务(BCS)-Hyperledger Fabric增强版"。                                                                                                          |
   | 区域    | **参数说明：**选择数据上链的BCS Hyperledger Fabric增强版实例所在的区域。                                                                                                      |
   | 实例    | **参数说明：**选择数据上链的BCS Hyperledger Fabric增强版实例。                                                                                                            |
   | 通道     | **参数说明：** 选择数据上链通道。即[购买流程步骤4]实例化链代码的通道。                                                                |
   | 接入组织   | **参数说明：**选择上链的身份组织。                                                                                                                                    |
   | 背书组织    | **参数说明：**选择上链背书的组织，需要和链代码的背书策略保持一致才能正常上链。                                                                                                             |
   | 链代码名称  | **参数说明：** 填写上链所需要调用的链代码名称。即[购买流程步骤3]所安装的链代码名称。                                                           |
   | 链代码函数 | **参数说明：**选择上链需要调用的链代码函数。                                                                                                                                |
   | 参数配置    | **参数说明：** 配置转发字段与调用链代码函数的参数下标的映射，转发字段可以参考[设备属性上报通知](https://support.huaweicloud.com/api-iothub/iot_06_v5_01202.html)。如设备Id：notify_data.header.device_id |
      
   图8新建转发目标-转发至BCS-华为区块链Hyperledger Fabric   
   ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000002322612698.png "点击放大")
   
   
5. 单击"启动规则"，激活配置好的数据转发规则。
**三、验证操作**
- 您可以使用配置设备接入服务时注册的真实设备接入平台，上报任意数据。
- 您也可以使用模拟器模拟设备上报数据，操作方法请参考[在线开发MQTT协议的智慧路灯](https://support.huaweicloud.com/bestpractice-iothub/iot_bp_00016.html)。
期望结果：
登录华为云区块链BCS控制台，在"实例管理 \> Hyperledger Fabric增强版"实例列表中，找到数据上链的Hyperledger Fabric增强版实例，进入"区块链管理"界面，选择左侧"区块链浏览器"，切换到"对应通道"，在"交易列表"中可以看到最新上链的交易信息。
图9验证结果   
![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001790840173.png "点击放大")
