应用场景应该如何选择适合的区块链底层技术平台?
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
相关文章推荐
- 如何在区块链底层平台和应用场景中搭一个“桥梁”,他们推出了“中间件”
- (转)腾讯区块链方案白皮书:底层技术平台及五大场景解决方案
- 企业如何选择适合自己的区块链平台?
- 业务、架构、技术,我们应该关注什么 Java和.Net的优势劣势简单看法 市场经济决定,商业之道即是软件之道,市场的需求决定着软件技术的发展 利益决定着选择应用新技术
- 技术大佬告诉你:创业型APP如何选择推送平台
- 如何将区块链技术应用到物联网
- 如何选择最适合自己的技术架构?
- 嵌入式系统开发中,如何选择适合的MCU平台?
- Java动态缓存技术:WEB缓存应该如何应用
- 区块链技术发展及应用场景
- 技术大佬告诉你:创业型APP如何选择推送平台
- 国外区块链技术部分应用场景(及其一周内相关资讯汇总)
- 如何选择真正适合你的存储平台
- 区块链开发应用多重签名技术实践数字货币如何实现
- “开放应用技术博客圈”-“企业异构平台选择与互操作”专家座谈会
- 短视频应用应该如何打造技术架构?
- 如何选择一个适合的工作流平台
- 移动应用开发技术选择六要素:慎重选平台
- 三方流通平台丨区块链+连锁酒店应用场景
- 区块链浏览器ICO技术加密数字货币交易所平台软件如何开发与搭建?