预备知识
本篇描述了使用BROPTool API需要了解的一些区块链开发特定知识。
智能合约方法调用
智能合约方法有两种类型,一种是只读方法,只查询合约数据,不发送数据上链;另一种是交易方法,创建或修改合约,需要发送交易上链。
BROPTool中的业务接口通过中间件服务调用智能合约方法,每个业务接口标明了智能合约方法类型,在调用时请注意类型。下面描述了两种不同类型方法的调用方式。
只读方法调用
只读方法调用只需要1个步骤:
调用区块链基础接口的 根据合约地址和块号查询智能合约数据 接口。
不同业务接口使用的参数(包括合约地址、合约方法名和合约参数)在各自接口中说明。
交易方法调用
交易方法调用需要4个步骤:
- 调用区块链基础接口的 查询当前最新块号 获取当前块号,用于构造后面几步需要用到的blockLimit值。
- 调用区块链基础接口的 产生待签原文 构造调用合约方法的待签原文。
- 调用安全插件API的 签名接口,使用私钥对待签原文进行签名。
- 调用区块链基础接口的 发送交易及签名信息 发送数据上链。
注意:
- 业务接口中仅提供了第4步的参数描述,其它步骤需要自行调用。交易方法调用是一个完整的过程,第4步的参数值为第2步的参数值+第3步的签名数据,否则数据无法正常上链。
业务接口参数说明
bizId
bizId是业务调用方自己维护的请求id,最大长度为UTF-8编码格式下的32字节。业务方可以通过bizId对应到某次业务请求。比如可以 时间戳 + 随机数。
bizId对同一个外部账户(即公私钥对)应该具有唯一性,例如,合作方使用安全插件管理公私钥对,安全插件中有“user1”和“user2”两个账号,则一个账号应使用不重复的bizId,而“user1”和“user2”可以使用相同的bizId。这是区块链层提供的功能。
seqId
seqId和存证相关,也称为存证流水号,用于追溯存证的变更历史。
blockLimit
blockLimit是针对某次数据上链请求,可以等待的最大区块号。如果到该区块号,数据还未上链,就认为上链失败。比如可以取 当前节点区块号 + 50。blockLimit最大限制是当前节点区块号+1000,超过1000会失败。
regionId
regionId为专区编号,在专区链中是指代特定专区的唯一编号。业务系统在给专区链发送交易时需要指定相应的专区编号,这样才能指明该笔交易是发送给哪个特定的专区的。