检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
开发前准备 链代码(Chaincode)又称智能合约,在Hyperledger Fabric中是用Go、Java或Node.js语言编写的程序,主要用于操作账本上的数据。链代码是运行在区块链上的、特定条件下自动执行的代码逻辑,是用户利用区块链实现业务逻辑的重要途径。基于区块链特点
用户名为admin,初始登录密码为您在部署区块链服务时设置的区块链管理初始密码。如果没有设置区块链管理初始密码,则以资源初始密码为准,为了保证系统安全,建议定期修改密码。 在链代码管理页面,单击页面左上角的“安装链代码”。 在安装界面输入“链代码名称”、“链代码版本”,配置参数如表1所示。
用户名为admin,初始登录密码为您在部署区块链服务时设置的区块链管理初始密码。如果没有设置区块链管理初始密码,则以资源初始密码为准,为了保证系统安全,建议定期修改密码。 在“tcshelper”链代码列表的“操作”列,单击“实例化”。 选择实例化通道、链代码版本、背书策略、背书组织列表,具体设置请参考表1。 表1
TCS部署时通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在指定区域(如华北-北京4)对应的项目(cn-north-4)中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问TCS时,需要先切换至授权区域。
易结果需要“跨链读”权限,因此需要在进行跨链交易之前设置对应权限。 跨链读:访问链任意合约可以执行被访问链指定合约的读操作。 跨链写:访问链任意合约可以执行被访问链指定合约的写操作。 跨链查询账本:访问链可以查询被访问链账本中的区块、交易信息。 操作步骤 登录可信跨链服务管理控制台,进入“跨链通道”页面。
示区块链部署完成。 按照2-6,购买区块链Cross-ChainB。区块链服务名称设置为Cross-ChainB,Peer节点组织设置为orgB,通道名称设置为channelb,其余按照参数表格设置。 父主题: 准备工作
开发跨链智能合约 开发跨链智能合约前,需要先了解跨链操作的原理。在跨链资产交换场景中,在减少某个链上资产后,需要相应的在对应链上增加资产,这种转移使各条链的资产发生了变化。因此,跨链操作需要保证整个跨链交易结束后不同链之间的全局事务保持一致性,即同时记账,或同时不记账。 可信跨链
使用默认区域。 跨链通道名称 设置为transfercross-demo 业务类型 互操作 选择区块链 选择注册区块链的两个节点“AAAA”和“BBBB”。 购买时长 默认 单击右下角“立即购买”跳转至付款页面,付款完成之后,等待4~5分钟时间创建跨链通道,在跨链通道界面可以看到tra
支持按交易ID、创建者组织、所在区块号、交易类型、链代码名称、创建时间自定义设置多维度查询交易信息。 创建者组织或合约名称支持模糊搜索。 任意搜索条件中包含交易ID,支持全量搜索,例如交易ID、创建者组织、所在区块或交易ID、类型等搜索组合。 任意搜索条件中不包含交易ID,仅支持从最近2000笔交易进行查询
单击“注册区块链”,填写区块链Cross-ChainA的注册信息,参考表1。 表1 注册Cross-ChainA信息 参数 说明 区块链名称 设置为“AAAA” 描述 记录信息,可不填 区块链类型 Hyperledger Fabric 合约名称 tcsexample 配置文件 上传准备好的crosschainA
解锁跨链资产(unlockAccount) 在跨链资产交换即将完成时,需要解锁跨链资产交换中涉及的资产。可将上述逻辑封装至一个方法中,便于后续在其他智能合约方法(主要是commitSend、commitRecv、rollbackSend与rollbackRecv)中调用: /* * unlockAccount
修改跨链资产数值(putStateWithLock) 在跨链资产交换涉及的智能合约方法中,所有对跨链资产的修改都必须与资产上锁同时进行。可将上述逻辑封装至一个方法中,便于后续在其他智能合约方法(主要是preCommitSend与preCommitRecv)中调用: /* * putStateWithLock
回滚跨链资产(rollback) 在跨链资产交换的过程中如遇到异常情况,需要读取跨链资产对应数据锁中的PreValue,并根据该值回滚跨链资产交换中涉及资产已发生的变化。可将上述逻辑封装至一个方法中,便于后续在其他智能合约方法(主要是rollbackSend与rollbackRecv)中调用: /*
CrossTXID 记录跨链资产数据锁所属的交易ID,回滚时使用 另外,一般在智能合约中以资产Key拼接数据锁后缀作为资产数据锁的Key,如Key为A的资产数据锁的Key为A_Lock。因此,可在智能合约中定义该后缀常量,便于后续在其他智能合约中使用: const ( lockSuffix
交易发起方提交(commitSend) 该方法用于在跨链资产交换发起方所属区块链上执行提交操作,即解锁发起方所属区块链上对应资产,使得其可以继续处理下一笔跨链操作。 本例中,该方法将删除发起方所属区块链上args[0]对应的数据锁,代表该笔跨链资产交换操作在发起方已端到端完成。unlockAc
交易接收方提交(commitRecv) 该方法用于在跨链资产交换接收方所属区块链上执行提交操作,即解锁接收方所属区块链上对应资产,使得其可以继续处理下一笔跨链操作。 本例中,该方法将删除接收方所属区块链上args[0]对应的数据锁,代表该笔跨链资产交换操作在接收方已端到端完成。unlockAc
通过控制台界面或者接入点(RESTful接口)触发跨链交易,交易信息会记录在跨链服务中。支持两种方式触发跨链交易: 方式1:界面触发,方便用户简单测试。操作方法如下: 在“跨链通道”页面,单击对应通道的名称。 在新打开页面的“跨链通道测试”下,选择某一个接口,填写参数值,单击“执行调试”后即可查看交易结果。
交易发起方回滚(rollbackSend) 该方法用于在跨链资产交换发起方所属区块链上执行回滚操作,即还原发起方所属区块链上对应资产至跨链资产交换开始前的状态,并解锁该资产,使得其可以继续处理下一笔跨链操作。 本例中,该方法将根据发起方所属区块链上args[0]对应数据锁中的PreValue进行资产回滚
交易接收方回滚(rollbackRecv) 该方法用于在跨链资产交换接收方所属区块链上执行回滚操作,即还原接收方所属区块链上对应资产至跨链资产交换开始前的状态,并解锁该资产,使得其可以继续处理下一笔跨链操作。 本例中,该方法将根据接收方所属区块链上args[1]对应数据锁中的PreValue进行资产回滚
应用场景 以下介绍可信跨链服务在跨地域电子票据的应用场景。 行业痛点 随着区块链生态的发展,不同地市税局提出不同区块链解决方案,产生基于不同架构,安全算法等一系列区块链联盟。如何保证在跨链传递过程中数据的真实性,事务的一致性,不让单链成为发票全生命周期流转的限制,是需要解决的问题。