您的位置:首页 > 其它

应用场景应该如何选择适合的区块链底层技术平台?

2017-05-03 13:41 926 查看

区块链技术前景及应用

目前,区块链(Blockchain)技术已经成为金融机构、企事业单位的新宠:R3联合摩根大通、高盛等42家超大型金融机构打造Corda清结算区块链;LINUX基金会联合INTEL、IBM等近百家科技公司和金融机构研发分布式账本Hyperledger。

区块链是由节点参与的分布式数据库系统,即系统中的每个节点都参与数据记录。其特点是去中心化、公开透明、不可更改,不可伪造。区块链技术在数字资产、供应链、身份信用、股权债券、公示公证、电子票据、医疗记录、物联网、数据共享都取得了一定的应用。

选用区块链底层技术平台的难点

目前国内外较为大众熟悉的区块链底层技术平台有:以太坊、Bition、Ethereum、Fabric、corda、Bitshares、Openchain等。这些区块链底层技术平台都有其适用性和可取性。众多的区块链底层技术平台,使得金融机构必须得去一一学习,去理解其技术,才能结合应用场景采用某种区块链。

但是,区块链底层技术平台种类繁多,发展前景不确定。金融机构在实施区块链应用时必须考虑选用的区块链能否长期存在、合规性、版权、运维等一系列问题。另外,就人才成本而言,区块链技术和应用对从业人才层次、技术积累和理念改变提出了较高的要求。企业需要在短时间内培养出金融和区块链的交叉人才。因此,在众多的区块链底层技术平台中,如何选择适合自己应用场景的区块链底层技术平台,就成为了金融机构和企事业单位最棘手的一个问题。

解决方法

近期,一种将各种区块链底层技术平台和上层应用相联系的技术——BMWare横空出世,BMWare中间件封装多种异构区块链,向上层应用提供统一API接口,在区块链应用和区块链底层技术平台之间架起一座桥梁。

当前的BMWare中间件版本提供了用户管理、资产管理、智能合约、通知等API接口。支持银链联盟链(BLChain)、Ethereum和Fabric等三种区块链类型。以下是BMWare中间件的部分示例代码:

1.	访问前缀 https://api.bankledger.com/blockchain/user/,用户管理的所有接口放在此URL下; https://api.bankledger.com/blockchain/asset/,数字资产管理的所有接口放在此URL下; https://api.bankledger.com/blockchain/chaincode/,智能合约的所有接口放在此URL下; 
2.	区块链底层
区块链	编号
银链联盟链(BLChain)	200
Fabric	201
以太坊(ETH)	202
以太坊原链(ETC)	203
3.	接口
通过https协议的POST方法调用API接口,其URL都必须是“https访问前缀+方法”,如用户管理的API接口,需加上https://api.bankledger.com/blockchain/user/。
3.1.	获取token
获取访问令牌,这是使用所有API接口的首要条件,必须得先获得访问令牌,才能调用其他API接口。该API接口需要加上用户管理https访问前缀,即: https://api.bankledger.com/blockchain/user/getToken 
方法:
getToken

客户端:
{
“appId”:””,              // appId
“appKey”:””             // appKey
}

服务器:
{
“errCode”:””,            // 见错误码表
“errMsg”:””,
“data”:
{
“token”:””,        // token
“expires”:””       // 过期时间,单位:秒
}
}
其中expires为过期时间,一旦token过期,则要重新获取。
3.2.	用户管理
用户可包括法人用户、个体户、商家和个人用户等,是指开发者的用户。
注册区块链用户
方法:
register

客户端:
{
“token”:””,              // token
“userName”:””,             // 用户名
“password”:””,              // 密码
“metadata”:””              // 自定义字段
}
开发者首要注册用户,才能进行用户管理、发行和转让资产等操作,用户的自定义信息可写在数据项metadata中。

服务器:
{
“errCode”:””,            // 见错误码表
“errMsg”:””,
“data”:
{
“blAddress”:””      // 区块链地址
}
}
当开发者注册成功一个用户,银链中间件就给该用户生成唯一的区块链地址,即用户ID,区块链应用应当记录该用户ID,对应到真实用户信息。
3.3.	数字资产
有价值的、可转让的数据我们称之为资产,比如积分、数字货币、单据、征信、保险、贷款等等。目前有资产发行、资产转让这两种获得方式,开发者可以自行组合出许多种应用场景,如数字货币发行和转让;提货单发行与转让;甚至可以同时发行代币和积分,并且在一定汇率下进行兑换等。数字资产接口包括资产发行、转让、查询等。
发行资产
方法:
issue

客户端:
{
“token”:””,             // token
“blockChainId”:””,           // 区块链底层ID,参考第3节
“callMode”:””,              // 调用模式  sync--同步调用 async--异步调用
“password”:””,             // 密码
“blAddress”:””,             // 区块链地址
“assetName”:””,            // 资产名称
“assetUnit”:””,             // 资产单位
“assetQuantity”:””,         // 资产数量,支持小数点,如100.5
“assetDesc”:””,             // 资产描述
“metadata”:””,             // 自定义字段
“timestamp”:””            // 时间戳,从1970年1月1号开始的时间戳
}

开发者可以给地址为blAddress的用户发行资产,也可以由某个商家用户给个人用户blAddress发行资产,由开发者在应用中控制。如数字资产与法币兑换,当用户给开发者从银行系统中支付100元钱,开发者在区块链中给该用户发行相应价值的数字资产,开发者的用户没有发行数字资产的权限;又如积分应用,商家和个人用户都是开发者的用户,商家有权限给个人用户发行积分,个人用户则没有该权限。
调用模式可以是同步或者异步,这是因为区块链的交易确认需要一定时间如几秒钟,因而以同步方式调用API会有等待时间。因而可以以异步方式调用,银链中间件会通知到用户指定的回调URL地址,该URL地址在开发者管理平台中设置。
blockChainId是指在哪个区块链上发行资产,以下的接口同此意义。开发者管理平台中可设置默认区块链,同时也可启用其他几种区块链,经银链中间件初始化后,即可在不同的区块链上发行同一种数字资产。blockChainId可以选择为非默认区块链,在这种情况下,区块链应用本身必须记录哪种资产是在哪个区块链上发行的。

服务器:
{
“errCode”:””,            // 见错误码表
“errMsg”:””,
“data”:
{
“assetId”:””,        // 资产Id
“txId”:””           // 交易Id
}
}
如果返回txid不为空,则已经成功发行;如果是异步调用,则会通知到指定的URL回调地址。
3.4.	智能合约
这里所说的智能合约是指用户自行编写且上传至区块链的智能合约。资产如何被发行和被转让,用户如何得到资产并且转让资产,这些是业务规则。业务规则可在区块链应用中自行实现,也可以通过区块链的智能合约实现。
银链
4000
中间件支持Ethereum和Fabric两种智能合约平台,用户可以把智能合约事先在开发者管理平台上传、编译和部署,而后在API接口中调用。
目前智能合约接口包括调用、查询等,
3.4.1.	调用
方法:
invoke

客户端:
{
“token”:””,         // token
“blockChainId”:””,   // 区块链底层ID,参考第2节
“callMode”:””,          // 调用模式  sync--同步调用 async--异步调用
“chaincodeId”:””,       // chaincode ID
“function”:””,          // 调用Chaincode中的哪个函数
“args”:[“1”, “2”, ...],      // 传给Chaincode参数
“timestamp”:””        // 时间戳,从1970年1月1号开始的时间戳
}
Function是指函数名称,args是传给该函数的参数列表。
Invoke方法是要发送交易、调用智能合约、改变智能合约数据的操作。

服务器:
{
“errCode”:””,            // 见错误码表
“errMsg”:””,
“data”:
{
“txId”:””            // 交易ID
}
}

3.4.2.	查询
方法:
query

客户端:
{
“token”:””,         // token
“blockChainId”:””,   // 区块链底层ID,参考第2节
“chaincodeId”:””,       // chaincode ID
“function”:””,          // 调用Chaincode中的哪个函数
“args”:[“1”, “2”, ...]      // 传给Chaincode参数
}
query方法是通过智能合约在本地查询的操作,不发送交易、不改变智能合约数据。

服务器:
{
“errCode”:””,            // 见错误码表
“errMsg”:””,
“data”:
{
“result”:[“abc”, “123”]  // 查询结果
}
}

同时,BMWare中间件还支持多链访问、数据迁移、企业私有化部署等操作。

想获取更多技术相关信息,欢迎关注微信:bankledger

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息