概述
区块链技术前景及应用
目前,区块链(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. 智能合约
这里所说的智能合约是指用户自行编写且上传至区块链的智能合约。资产如何被发行和被转让,用户如何得到资产并且转让资产,这些是业务规则。业务规则可在区块链应用中自行实现,也可以通过区块链的智能合约实现。
银链中间件支持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
最后
以上就是能干大雁为你收集整理的应用场景应该如何选择适合的区块链底层技术平台?的全部内容,希望文章能够帮你解决应用场景应该如何选择适合的区块链底层技术平台?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复