使用IBM区块链构建了一个银行卡积分互助互换交易系统一点心得浅谈,欢迎指正

一、 区块链的定位区块链与其说是一种技术,不如说是通往新的世界的工具,可以撑起互联网的下半场。如果是互联网上半场是解决信息传播的扁平化,互联网的下半场,则是解决价值传递扁平化。 随着人们对互联网世界越来越熟悉,互联网上人们越来越需要得到归属感和尊重的需求,进而引发...显示全部

一、 区块链的定位

区块链与其说是一种技术,不如说是通往新的世界的工具,可以撑起互联网的下半场。

如果是互联网上半场是解决信息传播的扁平化,互联网的下半场,则是解决价值传递扁平化。 随着人们对互联网世界越来越熟悉,互联网上人们越来越需要得到归属感和尊重的需求,进而引发互联网世界的多中心化、去中心化趋势。而区块链技术恰好能够很好的满足这种需求。

回归技术本质,我认为区块链技术本身是一种追求分布一致性的数据库。我们学过数据库的,都知道CAP理论。CAP理论是指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。

大多数区块链,放弃了一些可用性,偏向了一致性和分区容错。

二、 区块链的实践经验分享

我今年主要使用IBM区块链构建了一个银行卡积分互助互换交易系统。我们不仅用区块链实现可支持多家银行卡积分互换的问题,而且实现了线下POS机收单的问题

这个平台不是解决一个业务小问题,是原来这个系统根本无法设计。银联主要是解决跨行之间人民币互相转账的业务,但是这个业务逻辑本身并不复杂,有两个原因:第一、人民币的价值都是一样的,在工行和中行的一块钱一定是一样的。第二、转账手续费人民银行已经规定好了。所以这个业务由中心化平台方式构建是可行的,主要解决大容量交易的问题就可以了。

然而,回过来想一下,银行卡积分就不这么容易了。第一、各家的积分价值是不一样的。有些银行刷卡送的积分数值多,有些银行刷卡送的积分数值小,没法比较。第二、人民银行现在不会给积分跨行转账收手续费,以后也不会。这就开始考验我们的系统设计,我们或许没法中心化方式做这个业务,更谈不上清算。每一笔交易都可能是点对点谈出来的,这样用区块链去实现就很合适了。

三、 区块链与基础架构的关联性

区块链与基础架构的关联性,我认为初学者可以把区块链当成一个数据库或者日志系统。现在这个阶段,我们并不需要太过于担忧这个系统效率、吞吐量等问题。

区块链与云平台是相辅相成的。区块链的系统构建起来稍显复杂,而云平台能够让我们快速的启动区块链环境。而云平台本身又有数据可信问题,区块链可以预见性运用于多种云计算平台之间的数据共识互信。

收起
参与46
  • 请问该系统已经商用了吗? 运用过程中有什么问题可以分享给大家吗?
    2017-12-11

查看其它 6 个回答焱de想象的回答

焱de想象焱de想象CEO上海塔链网络科技有限公司

现在是基于应用层的服务。四家主要银行各起一个hyperledger的节点,组成区块链网络用智能合约封装成web服务提供给应用层

互联网服务 · 2016-11-23
浏览6440
  • 我最近也在测试部署hyperledger的节点,但是有些疑问,不知您是否能帮忙解答下,详见http://www.aixchina.net/Question/223043
    2016-11-23
  • 您好,贾锡学已经在您的之前的网站回复您了,如果还有问题,欢迎互动 xixuejia软件开发工程师 , IBM 目前的v0.6-dev-preview版本确实有一部分功能不够完善,不过在接下来马上要发布的v1.0版本会得到解决。 以下是针对所提问题的个人解答: 1. 4个节点可以部署在4台机器上,这样可以一定程度减少单台机器启动的docker镜像数; 目前一般的系统中并不会部署那么多的合约。Hyperledger使用docker的原因,个人认为有以下几点: 1). 可以实现不同合约之间的隔离, 合约之间无法直接调用,合约之间的交互需要通过peer控制; 2) 可以很容易支持不同语言实现的合约, 目前已支持Golang, Java, 将来也可以很容易地实现其他语言的支持; 3) docker社区较为成熟,使用成本较低。 2. 一个应用可以对应一个智能合约,也可以有多个。智能合约之间可以互相访问,但是需要做好权限控制。API-> https://godoc.org/github.com/hyperledger/fabric/core/chaincode/shim#ChaincodeStub.InvokeChaincode 3. Fabric节点类似于一个event sourcing系统,每个节点要执行的交易是已经排序好的event,然后顺序执行,并生成一致的结果(非拜占庭节点&确定性输出)。Rocksdb的查询方式确实较单一,不支持类似SQL那么灵活的方式。可以考虑使用https://godoc.org/github.com/hyperledger/fabric/core/chaincode/shim#ChaincodeStub.GetRows 若这种方式还无法满足需求,可考虑创建额外的索引表来支持复杂的查询方式。在Fabric v1.0会支持更多的存储方式, goleveldb, CouchDB等等,这样会直接提供复杂的查询支持。
    2016-12-17

回答者

焱de想象
CEO上海塔链网络科技有限公司
擅长领域: 服务器分布式系统区块链

焱de想象 最近回答过的问题

回答状态

  • 发布时间:2016-11-23
  • 关注会员:9 人
  • 回答浏览:6440
  • X社区推广