当前位置:首页 > 区块链新闻 > 正文

技术沙龙第四期:金融机构如何兼容区块链

来源: 互联网时间:2018-01-24 16:13:00

2018年1月21日,以“金融机构如何兼容区块链?”为主题的“Chainge”技术沙龙第四期在深圳举办,本次沙龙由主办,金链盟协办,参与分享的嘉宾有:微众银行区块链首席架构师 张开翔、四方精创区块链首席架构师梁永甫、微众银行区块链高级架构师 李辉忠、莫楠等。

renwu-zhangkaixinag

张开翔:联盟链的机遇和技术挑战

张开翔首先介绍了FISCO BCOS区块链底层开源平台,它是由金链盟开源工作组基于BCOS,打造的安全可控、适用于金融领域的区块链底层平台。

以中介模式和分布式的两种商业关系举例,在中介模式下的商业活动中,资金方、资产方及监管机构之间存在着互相隔离、信息传递路径长、数据分割维护困难、夹杂手续费的问题。分布式商业的特点是多方参与、智能协同、专业分工、价值分享、安全可控,最终带来的结果是生产关系的优化和新商业模式的出现。

在以区块链为代表的分布式模型中,传统的中介机构的功能由公共账本承担,所有机构共同参与共同维护账本,实现了信息的快速传输、公开透明和安全共享,带来效率的提升和成本的下降。

接下来,张开翔介绍了区块链的基本特性以及公有链和联盟链的区别。

区块链的概念可分为四个层面,从下往上依次是:分布式网络层、数据层、密码学层、共识层。分布式网络层次的特点是:多中心、无中介的对等网络,高效率高可用;数据层是按照时间先后顺序链式排列,可以保证数据难以篡改;密码学层包含了哈希算法、非对称加密、同态加密、群签名、环签名等;共识层是区块链的核心,“如果把区块链比做汽车发动机,共识就是区块链的变速箱,是保持系统正常、健壮运行的核心部件”,共识体系牵涉面广复杂度高,据张开翔介绍,FISCO BCOS的共识算法的设计开发和优化工作历时经年。结合共识机制和智能合约,能够共同构建互信的商业模式。

在公有链和联盟链对比上,公链的特点是:完全公开、匿名性、竞争记账、经济激励。联盟链的特性是:许可型网络、身份可见、合作记账、监管与合规。二者的共通之处在于,都拥有共享帐本、运用了密码学算法、数据是链式结构、采用分布式网络。

在承载商业级应用方面,联盟链无疑是最有优势的。张开翔形象地将公链比作邮轮,将联盟链比作高铁,公链速度慢,以比特币和以太坊为代表的世界两大公链,交易速度分别是7笔/秒、十几秒每笔。其次,公链风险系数高,容易受到政策影响及黑客攻击。联盟链就像高铁,在全国有着四通八达的网络,合法合“轨”运行,速度快,安全、自主可控。FISCO BCOS就是要致力于建造联盟链上的高铁。

真正完成商业级生产,并非易事。面临着“高安全性、高性能、高可用性、业务落地、合法合规”这五座大山。

在安全性方面,对于银行来说,安全就是生命线,互联网金融系统在逐步采用私有云或公有云架构,为了保证高安全性,FISCO BCOS的解决方案是:在隐私方面采取机构准入、权限控制,不同的联盟链成员采用独立链路,实现物理隔离;在数据存储方面,所有数据均采用加密存储,私钥和秘钥隔离存储等。

在性能优化方面,为了满足金融级高频交易场景需求,FISCO BCOS具体实现是:第一,优化网络通信模型,通信效率相比公链得到成倍提升;第二,采用联盟链合作博弈的共识机制,不需消耗大量计算资源,出块时间1秒左右;第三,采用多链并发架构,实现平行扩容;第四,增加热点账户模型,所谓热点账户是指在短时间大量C端账户对一个独立账户进行上万笔以上的交易行为。FISCO BCOS把C端用户的实时交易分配到不同的链上,实现交易数据的分布式处理,热点账户同时记录不同链上的交易行为,最后用异步机制完成最终结算。

在可用性方面,FISCO BCOS联盟链的设计是7×24小时运行,可用率达到99.8%以上,这意味着即使极端情况下全年允许停机时间也是极短。

在业务落地方面,FISCO BCOS会提供各种服务接口,方便程序员编写和调用智能合约。张开翔还总结了在业务场景落地探索过程中的四点心得:第一,不要盯着“颠覆”原有业务,而是积极的探索新的场景或优化解决原业务的痛点;第二,起始阶段小步快跑,旁路上链和局部上链。所谓旁路上链,指的是不停止原来业务,将原来业务数据迁移到联盟链上;第三,以账本为核心,区分链上数据和链外计算。即链上只关注“账本”,与“账本”无关的数据放在链下;第四,和既有系统进行整合、对账,互相对照,稳妥落地。

在监管方面,基于区块链上的交易操作都会留下数字签名,无法篡改的特点,监管机构可以作为节点加入到FISCO BCOS联盟链中,同步联盟链上所有的交易数据,从而避免了不同的机构报送数据不全、不一致的问题。

最后,张开翔还介绍了基于联盟链的机构间对账平台和区块链存证系统,二者均实现了商业级生产且运转效果良好。

renwu-lizhonghui

李辉:区块链的共识算法

共识算法是区块链的灵魂,李辉忠从什么是共识、为什么需要共识算法、区块链世界的共识算法展开介绍。

共识的定义是:搁置争议,达成能够被各方所接受的陈述(即使有时也是勉强接受)的社群解决方案。这里面有三个关键点,首先,共识一定是多方参与的一个系统,比如一个群体或者社群;其次,在这个社群中或者群体中各方会互相博弈;最后,需要通过共识来找到唯一的解决方案。

为什么需要共识?在一个社群中,资源是有限的,而且资源是广泛分布在不同的地方和不同的人手中,每个主体都想在一定时间范围内去获取他所需要的资源。这时候就需要有一种共识机制,在有限的时间内,在有限的资源条件下,找到一个可行的解决方案。

区块链世界的共识需要从计算机的发展历程说起,计算机的发展经历了三个阶段:单机阶段、多机阶段和分布式阶段。在分布式阶段,一个课题研究需要通过一套分布式的系统才能够完成。单机已经无法支撑完成运算,分布式系统因为有非常多的不同的计算单元,遍布在网络中相互通信,可以相互协作,共同完成一个任务。由于消息在网络中传递,会发生丢包、延迟甚至重复得等各种问题,即分布式系统中节点和节点之间的状态不一致,这就需要各方形成共识机制,达成分布式一致性问题。

分布式一致性问题需要满足三个基本要求:Agreement、validity、Termination。也就是说在分布式系统中,首先,所有节点最终都能够相信同一个状态或者同一个结果。其次,每个决定都是由系统中的其中某些节点或者某一个节点提出来的,而非外界强加。最后,每一次决策都要有时效性,要在有限的时间内达成共识。

李辉忠还介绍了分布式系统中的CAP理论(Consistency,一致性; Availability,可用性;Partition Tolerance,分区容错性)。一致性指的是所有客户端在同一时间得到的系统状态是一致的,可用性指的是所有的终端都可用,分区容错性指的是即使网络出现分歧,系统仍然能够正常运行。实际运行中,这三者是无法同时满足的,需要进行妥协和平衡,由于网络中节点的重启、宕机这一些现象是不可避免的,分区容错性一定要保证,一致性和分区容错性不能完全牺牲任何一个,需要引入最终一致性理论。

分布式一致性算法也经历较大发展过程,从2阶段提交(2PC)、3阶段提交(3PC)、PAXOS、ZAB、RAFT到现在的PBFT、RBFT等。其中,ZAB基于ZXID和Nodel,大者优先;RAFT基于时间窗Term,先到先得;PBFT通过签名机制防止消息被篡改。

在区块链网络,目前普遍采用的共识算法是POW、POS、DPOS、BFT等,这些共识算法共同面临同一个问题:不可能三角。即在安全,效率和规模三个方面,任何一种算法无法全部满足。如POW在安全性和规模上能够得到保证,但是效率低下;POS在效率和规模上可以得到保证,在安全上无法保证“有钱人”作恶;BFT安全性和效率较高,但需要多节点多轮次广播,网络压力大,因此无法支持大规模网络。基于此,人们尝试引入新的共识算法,如“POW+”,在POW算法的安全性和规模优势基础上,用以解决性能问题的sPOW算法;“BFT+”,在BFT算法的安全性和效率优势基础上,解决规模问题的Algorand、阈值签名接力算法等。

renwu-liangyongfu

梁永甫:基于FISCO BCOS的数据资产交易平台

梁永甫从系统部署、配置生成、数据上链、交易模式、隐私保护、作恶节点控制等方面介绍了基于FISCO BCOS的数据资产交易平台。
在系统部署方面,FISCO BCOS区块链底层平台镜像文件包含了两个节点的配置信息,启动脚本中会自动启动两个节点,四方精创在此基础上重新生成配置文件并重写了启动脚本,用docker compose启动容器。

在配置生成方面,四方精创节点配置生成有以下四种方式:CA的私钥和证书在创世区块生成;其他节点生成自己的密钥对并创建请求证书;创世节点为其他节点生成证书;每个节点启动时生成自己配置,需要有创世节点的校验文件。

在数据上链方式上,每个参与方维护一个节点,组成区块链网络;每个参与方上链自己的公钥;每个节点与公司的IT系统对接,导入公司上链数据;基本信息上链,如信息摘要、时间、标签信息等;详细数据计算哈希值,数据本身不上链。

在数据交易模式上,任何数据在上链的时候数据提供方要预先设定数据价值,其他成员需要支付后才能查询数据;每个数据绑定一个查询方的公钥,保证只有一个查询方可以通过该链接查询。

在隐私保护上,所有数据链下保存,点对点交易,交易在链上加密保护,只有交易双方能解密交易。

在节点作恶控制上,接入节点不等于业务节点;业务节点在业务合约中控制,作恶(如售卖假数据)达到一定标准,通过合约停止所有数据的交易。如果一个作恶节点重新申请加入,需要在链上发起一次投票,超过半数的其他节点的管理员同意,才可解除限制。

renwu-monan

莫楠:FISCO BCOS的业务实践之路

莫楠以以太坊对比,介绍了FISCO BCOS在业务实践遇到的挑战、实施情况以及技术探索。

挑战主要体现在存储、容量、功能三方面。

以太坊默克尔树是树状的数据结构,它的特点是可追溯和可验证。弊端是:第一,访问任何一个数据结构,都需要遍历这个树的每一个树枝,需要走非常长的路径。在遍历的过程中,要不停的去验证,进行sha56的运算,非常消耗CPU资源。第二,随着数据量不断增多,默克树变的越来越“高”,访问数据经过的空间被拉长,默克尔树的性能随着数据总量扩大而降低。第三,默克尔树每个叶子节点需要存储至少16个哈希值,每个哈希值大小是32字节,占用的数据存储空间多。

默克尔树很难做sharding。如果把默克尔树的叶子节点分别放到不同的set里面,在读数据的时候,需要从树根开始遍历整个树枝,导致读扩散问题;写数据会连带更新整个分支的节点,导致写扩散。另外,任意一个set失效,影响到的数据范围也是难以估量的。
在吞吐量方面,FISCO BCOS是基于以太坊开发,以太坊为了追求交易的确定性,交易都是串行执行的,如果发生并行交易,会带来执行结果的不一致,导致无法共识,从而难以大规模提升性能。

solidity语言的语法简单,但是易学难精,功能有限。solidity语言缺少常用的数组和字典数据结构,静态数组和动态数组之间完全割裂,二者不能互相转化。字典结构只用在合约的成员变量,无法作为全部变量使用,也无法遍历,在合约相互调用的时候,solidity无法传递动态数据。以上限制了它在实际业务场景的使用。

以太坊的EVM虚拟机,在区块链发展历程上是具有革命性意义,但是从虚拟机的角度看,尚未达到最优。首先EVM是一个基于栈的虚拟机,优势在于对系统的要求低,不需要很复杂处理器、处理器等,劣势在于栈容易占用存储空间,造成了过于复杂的智能合约在以太坊上难以运行。其次,EVM在收集数据类型的时候,跟常规语言是不一样,C语言数据的存储大小是根据不同的数据类型而定,从1字节、2字节、4字节、8字节、12字节、16字节不等,而solidity最小的数据结构是32字节,导致了空间极大浪费。最后,基于栈设计的虚拟机,执行速度慢,优化空间有限。

FISCO BCOS在以太坊的基础上,在四个方面做了优化,分别是:解决容量问题的sharding,解决虚拟机问题的WebAssembly,解决系统问题的并行化方案,以及对共识机制的优化。

FISCO BCOS的sharding存储模型,基于传统DBMS系统,可以最充分地利用系统资源,理论上总量是没有上限的。支持历史数据回溯、旁路生成MPT、批量读写数据等。抛弃了以合约成员变量为主的存储访问接口,支持SQL的增删改查功能,支持按条件、范围查询进行数据查询和数据更新。

WebAssembly支持使用Javascript、C/C++语言;基于寄存器的虚拟机,性能高,可定制性好。另外,WebAssembly社区活跃,发展迅速,有良好的技术前景。

并行化方案体现在区块链级并行——多链模型;交易级并行——DAG并行模型,指令级并行——SIMD三方面。其中,多链是最自然的模型,不同的链上处理不同的交易,中间通过跨链完成并行处理。DAG(有向无环图)模型,不同于主流区块链结构需要将所有数据打包成区块有序链接起来,DAG模型中对于无关交易的交易的处理是并行的。智能合约开发者通过注解标注每一个接口需要访问的资源,在发送交易的时候,再根据交易返回值得知交易需要访问的资源,如果访问资源不冲突,就把原本有序的交易列表生成DAG。 SIMD(Single Instruction Multiple Data,单指令多数据流),可以达到一条指令处理多条数据的目的,这种指令在CPU和GPU中广泛使用。由于区块链中运用了大量的密码学算法,而这些密码学算法大部分都是批量的,需要操作大量数据,比如计算哈希、加解密,其中同态加密更是几何级的运算。如果能充分利用SIMD,可以极大加速现有的密码学算法。WebAssembly已经支持SIMD计划。

对共识机制的优化方面,莫楠介绍了基于滑动窗口的实时共识机制,它需要把交易队列和共识线程分开,其中,交易队列实时收集交易信息,共识线程从交易队列获取信息进行共识,二者同步进行。这种模式可以保证:第一,在系统低负载运行时,实时响应,交易确认的时间是交易处理时间与单词共识时间的累加。在系统高负载运行时,系统以最大TPS处理交易。

FISCO BCOS区块链底层平台开源地址:https://github.com/fisco-bcos

免责声明:

1.本文内容综合整理自互联网,观点仅代表作者本人,不代表本站立场。

2.资讯内容不构成投资建议,投资者应独立决策并自行承担风险。

你可能感兴趣

    error