同心互助CTO钟馥百:区块链是怎样实现企业的落地与实践?
Nancy 2016-08-24 00:00:00发布
8362
摘要:在国内媒体对比特币的炒作逐渐降温,但是比特币的核心技术区块链却受到越来越多的重视。目前欧美已经积极研究区块链技术,如由大型银行和金融集团组成的R3 CEV区块链技术联盟。  
在国内媒体对比特币的炒作逐渐降温,但是比特币的核心技术区块链却受到越来越多的重视。目前欧美已经积极研究区块链技术,如由大型银行和金融集团组成的R3 CEV区块链技术联盟。在国内,区块链技术也有不少研究,但真正落地的很少。近日,同心互助联合创始人兼CTO钟馥百分享了一些关于区块链及应用实践的经验。
 
分布式帐本
 
帐本的模型比较简单,其基础模块是Block(区块),Block按顺序挨个相链,组成一个长长的链表;Block中包含其创建信息(创建者-挖矿人)、产生时间、Hash(用于引用和验证),以及Transaction数组(交易数据)。
 
Transaction中存储的就是“帐本信息”,理论上可以是任意的数据,可以是对CryptoCurrency(加密数字货币)的操作、也可以是单纯的状态信息。
 
分布式帐本的另一个特点是:Block、Transaction这样的有序链表,是存储在整个区块链网络的每个节点中(当然,基于实际商业的需求,可以让一部分敏感数据不存储在非授权节点中)。只要节点连入区块链网络,它就会自动用P2P的机制下载缺失的Block、Transaction数据,并且验证其数据的正确性(基于Hash、智能合约的执行结果对比),保证每个节点数据的统一性、一致性。
 
所以,基于这样的结构设计,使得区块链拥有如下的重要特征:
 
• 公开、透明:链上的数据都是公开的,(理论上)每个节点都可以获取并验证;
 
• 不可篡改:链是有序的、有时间戳的;同时,攻击者需要控制至少超过50%的节点,才能篡改其中的数据。只要节点足够多,攻击者的成本就越高,其不可篡改的特性就越强;
 
共识机制
 
共识机制是另一个关键点。共识机制的核心是在分布式网络中,利用一种规则(算法)来保证全网对于Block的创建是一致的。
 
比如在比特币中,采用的是POW工作量证明,各个节点用本地资源,计算满足同一条件的Hash值,谁先计算出来,这个Block就是谁的。这个Hash值的计算,对每个节点都是一样的、公平的。
 
另一种现在流行在使用的就是POS,采用类似股权证明+投票的机制,选出记帐人,由它来创建Block。
 
所以从技术角度来看,共识算法实质上解决的是“拜占庭将军问题”。所以,现在大家也都在尝试使用Paxos、Raft、PBFT等算法来代替POW、POS等共识机制。
 
比如,Ethereum以太坊现在使用的POW,接下来会采用POS代替;BitShares(比特股)采用的是更高效的DPOS;HyperLedger直接采用的是PBFT算法。
 
从另一个角度来看,共识机制直接影响区块链的TPS。以比特币为例,受限于POW,它的tps只能达到7/s;DPOS的代表BitShares,根据官方数据,最高能达到10w/s的tps。
 
所以,在区块链的商业落地中,共识机制的选择直接影响实际业务的效果。
 
区块链中的数据存储有两种载体,一种是Raw Transaction,另一种是智能合约。两种方式的存储,本质上都是一个Linked List with Key/Value Pair;但是从存取等操作方式上来看,各有优缺点,看实际的使用场景。
 
在当前的同心互助中,我们优先使用的是Raw Transaction模式。这种模式下,数据Schema需要预定义,建议是结构化的;否则后期无法二次处理、状态迁移。
 
另一种智能合约的方式,在Ethereum的Solidity语言中,就是 key/value pair。由智能合约将 Solidity的 key/value pair转成binary,存储在Transaction中。
 
同时,为了更好的让用户理解区块链、感受区块链的价值,我们提供了区块链地图、区块浏览器,让大家更便捷的查看区块链的状态、节点状态以及链上的数据。
 
区块链的第二个价值在于效率提升,利用永不宕机、自动执行、强制执行等特性,可以大幅度提高效率,降低人工干预、参与的成本。
 
在同心互助中,我们还利用区块链的“交易即清算、交易即结算”的特性,来对资金流水进行自动实时对帐。当然,这是单独的另一个私有链了。
 
在这个场景中,我们记录用户的资金流水,通过智能合约验证帐目一致性(状态),采用数据货币的特性来保证资金变更不出错。其核心的思路如下:
 
以用户为中心,通过验证的资金记录需要满足如下状态记录
 
• 用户帐面的流水变更
 
• 第三方支付机构的对应流水记录
 
• 系统内(同心互助)的对应流水记录
 
状态记录不满足,则出现问题,通过另外的方式(自动or人工)解决。
 
借助于区块链,对帐系统的复杂度得到了极大的简化,同时效率也得到了提升,可以做到准实时~
 
同心互助区块链的开发实践中,我们遇到了一些比较有意思的问题,一并分享给大家:
 
1、用户隐私
 
正如区块链的价值一样,公开透明是深入技术低层,所以用户的隐私保护是首个问题。
 
在这块上面,我们借鉴采用了如下几种方法:
 
链上的公开数据全部进行脱敏处理:比如只公开用户姓、只显示身份证号前4位、后4位,保护用户的信息不被外泄;
 
利用存在性证明原理:链上不保存用户身份的真实数据,也不加密保存;采用保存身份证+姓名的Hash的方法。只有知道用户真实身份的人,才能通过Hash来确认此人是否在链上;
 
2、数据写错了
 
另想了,数据上了链,就下不来了。即使你控制超过50%的节点,也不能这样干。
 
在这种情况下,我们的选择就是:特定的Transaction,声明前面某一条记录有误,补充一条正确的新记录。
 
这不仅仅是一个实现问题,还是一个区块链实现的原则:记录的数据需要自带“修改”的语意,需要从逻辑上能推导出“修改”。否则就会存在正确数据被错误数据攻击的风险。
 
同样的,涉及到交易冻结、撤销,也同样需要这样的机制。
 
3、智能合约升级
 
智能合约,即业务逻辑代码,同样的也是存在区块链上的,也不能修改。那么,如果智能合约代码存在bug、业务逻辑需要变更,怎么办?前段时间,以太坊社区的TheDAO的漏洞事件,闹得沸沸扬扬,就是这个问题。
 
我们有两个解决方案:
 
• 把数据和合约代码分享,即Entity和BizLogic分离。在这种情况下,部署新的合约,停止老的合约,数据仍然保留,可以达到这个目的;
 
• 合约层面进行数据迁移,把数据从老的合约迁移到新的合约。这样也可以解决这个问题。但是在这种情况下,数据迁移会导致“数据对于状态的体现”发生了变化,数据和状态的变化不一致,这是一个逻辑风险。
 
从我们的实际经验来看,需要在低层提供合约代级的功能,即第一个解决方案,用起来会比较合适。
 
4、性能!性能!!性能!!!
 
区块链的优势在于提高效率,但是现有的区块链实现都还不够快,最快的BitShares又不能拿来当区块链技术来使用,还是加密数据货币。
 
性能的优化,共识机制首当其冲,需要根据实际业务场景的需求,定义一个合适的高效的算法;而非简单的拿来主义(当然,还得看实际的场景)。
 
解决了共识机制后,其次就是相对大家都很熟悉的性能优化领域了。
 
关于共识机制的优化,我们也还在研究和探索,希望下次能给大家分享实际的优化案例。
 
对于征信而言,区块链的一个结合点在于“数据永不篡改”。征信报告只是一个瞬时的结果,征信记录才是永恒。区块链可以做到:
 
• 无法删除:不可篡改
 
• 无法修改:不可修改
 
• 易于共享:每个节点都拥有全部数据
 
这样对于征信数据的提供方和消费方,大家都可以平等的分享整个征信记录。
 
在区块链技术的运用过程中,遇到了主要的一个问题是,了解区块链的开发者太少了,能写区块链实现代码的开发者更少。解决方法就是“读代码、写代码”,慢慢学。
 
第二个问题是业务与区块链的结合点:区块链不是万能药,它也有它的限制,它也不能解决所有问题。所以一定要搞清楚区块链的优点和缺点,结合实际的业务场景来设计方案。
 
有人说区块链技术是金融风控的终结者,关于这个观点,从我的经验来看,金融风控是一个非常庞大的话题,并非“区块链”这一个“分布式帐本”技术所能解决的。从金融风控的角度来看,区块链是一个非常好的“信息收集”者,它能保证数据一直在、不会丢失、不会变化;它无法对数据进行分析、挖掘,找到高危风险,这种事情,还得靠数据挖掘、AI等技术。
 
以太坊是一个区块链的实现。但是它设计的初衷是“加密数据货币”,所以引入了“以太币”、Gas、POW共识机制等。这些机制对于大多数商业应用,其实是用不上的,或者说没有太大必要。
 
所以,商业实践中,一定需要对以太坊这种实现进行修改和大幅度调整,所以需要区块链的开发者。当然,HyperLedger看起来还不错,对商业应用的支持设计的很到位。
 
还有一个是区块链应用的开发者,这种人现在也很少,也直接影响区块链应用的开发速度和进展。
 
作者:同心互助联合创始人兼CTO钟馥百
区块链技术
点击进入招聘详情>
微信扫一扫
关注区块链新金融
扫一扫
下载数链APP
内容合作/商务合作:
gxcj@gongxiangcj.com
联系电话:
021-31128751