虽然目前区块链技术发展飞快和日趋成熟,但仍有不少企业对应用区块链还有些顾虑,主要因为传统区块链技术要落地到商业应用特别是金融应用,仍有比较多问题,其中最大三大问题分别是交易性能
、隐私保护
、监管缺失
。但随着各个区块链技术商的深入研究和技术迭代更新,这些问题目前都有了比较不错的解决方案,下面Elwin就給大家介绍一下这些利器。
一、交易性能
对于商业应用来看,交易吞吐量和时延是企业最关心的交易性能指标,金融机构往往会吐槽区块链做不了高频交易。诚然,类似比特币区块链交易频率约6.67次/秒,每次交易需要6个区块确认,10分钟才能产生一个区块,全网确认一次交易需要1个小时,这个很多使用场景肯定比较难接受。我们看看哪些环节可以对交易性能进行优化的。
主要影响区块链的交易性能包括广播通信、信息加解密、共识机制、交易验证机制等等几个环节。
广播通信:由于区块链的核心技术之一就是P2P网络,因此P2P网络通信的效率是对性能的影响非常重要。首先,为了能最大程度的改善交易性能,Elwin推荐你采用联盟链而不是公链,假如你的应用是高频应用,如果运行基于比特币或以太坊的公链,那用户体验会比较差。由于公链必须保持高度的去中心化,节点软件必须能够在标准的消费级电脑上运行,并且每个节点机器的性能和网络情况都是千差万别的,导致交易性能形成一个天然的限制。而对于联盟链,我们可以指定节点机器的物理配置和节点数量,并尽量以高速网络进行连接,则可以很大程度改善区块链的交易性能。
信息的加解密:信息的加解密是区块链的关键环节,主要是哈希函数和非对称加密两部分的算法。哈希函数目前主要有SHA家族算法、MD5、SCRYPT、RIPEMD、WHIRLPOOL、CUCKOO HASH、HAVAL、Tiger、LYRA2、Equihash、Hashimoto、Dagger、Ethash(以太坊目前Pow机制下的算法)等多种算法,还有其中算法的串联和并联使用。由于商业应用一般都不考虑挖矿问题和更注重性能问题,Elwin更推荐大家采用常用的SHA256算法为主。而非对称加密部分,主要有非对称加密算法包括RSA、DSA、椭圆曲线算法等,区块链一般使用椭圆曲线算法,包括ECDSA和SCHNORR,还有国密算法(SM2椭圆曲线公钥密码算法、SM3密码杂凑算法、SM4分组密码算法),其中,比特币使用的签名算法是ECDSA,而Schnorr签名的验证速度比ECDSA签名的快,而且这种签名体积可以更小,还原生地支持多重签名。
共识机制:共识机制是分布式账本为了使得所存储信息的准确性与一致性设计的一套机制,机制的设计主要由业务与性能的需求决定,从PoW到PoS再到DPoS和各种拜占庭容错算法,共识机制不断创新,区块链平台性能也得到大幅提升。在类似DPoS或PBFT的共识机制下,区块链上交易的确认很迅速,交易吞吐量也满足现有的金融交易规模,部分私链性能达到万笔/秒,能够满足绝大多数业务需求。
交易验证:从交易验证机制角度出发,目前有几种优化处理方式:
1.分片处理(sharding),总体思路是每个节点只处理一部分交易,比如一部分账户发起的交易,从而减轻节点的计算和存储负担。
2.闪电网络(LightningNetwork)和状态通道(State Channels),这两种策略是保持底层的区块链协议不变,尽可能将交易放到链外执行,通过改变协议用法的方式来解决扩展性问题。在这种策略下,分布式账本上只是记录粗粒度的账本,而真正细粒度的双边或有限多边交易明细,则不作为交易记录在分布式账本上。
3.北航链设计了独有的ABC(账户区块链)和TBC(交易区块链),当有新的银行成立或者原有银行需要进行扩展时,可以设立ABC来解决;当交易量较大时,系统可以增加TBC来增加处理速度,通过这两种途径来解决可扩展性方面的需求。
从比特币到以太坊,从Ripple到HyperLedger fabric或Corda,通过共识算法的创新以及联盟链的部署使得吞吐量等性能得到大幅的提升,当前延时已能够控制在秒级别,吞吐量达万笔每秒,单节点的存储空间需求也能够进行相应的优化与压缩,性能瓶颈已经被逐步突破。
二、隐私保护
在区块链公有链中,每一个参与者都能够获得完整的数据备份,所有交易数据都是公开和透明的,这个区块链的优势特点,但另一方面,对于很多区块链应用方来说,这个特点又是致命的。因为很多时候,不仅仅用户本身希望他的帐户隐私和交易信息被保护,就商业机构来说,很多帐户和交易信息更是这些机构的重要资产和商业机密,不希望公开分享給同行。
比特币对隐私保护的解决思路是,通过隔断交易地址和地址持有人真实身份的关联,来达到匿名的效果。所以虽然能够看到每一笔转账记录的发送方和接受方的地址,但无法对应到现实世界中的具体某个人。但这样的保护是很弱的,通过观察和跟踪区块链的信息,通过地址ID、IP信息等还是可以追查到帐户和交易的关联性。
为了解决区块链的隐私保护问题,目前有混币、环签名、同态加密、零知识证明等几种方式。
混币原理(CoinJoin):混币原理是割裂输入地址和输出地址之间的关系。在一个交易中,假如有很多人参与,其中包括大量输入和输出,这样会比较难在输入和输出中找出每个人的对应对,这样一来,输入与输出之间的联系被事实上割裂。多次混币、每次少量币,效果更好。
环签名:环签名是一种简化的类群签名,它因为签名由一定的规则组成一个环而得名。在环签名方案中,环中一个成员利用他的私钥和其他成员的公钥进行签名,但却不需要征得其他成员的允许,而验证者只知道签名来自这个环,但不知到谁是真正的签名者。环签名解决了对签名者完全匿名问题,环签名允许一个成员代表一组人进行签名而不泄漏签名者的信息。在暗网币中,它的环签名是块链上的混币服务,这种混币具有相同金额的输入,并且使用了多个别人的公钥,只知道是从这一群人中的一个发送的,但无法判断是哪一个,也无法通过金额分析来判断输入输出对。
同态加密:同态加密是一种无需对加密数据进行提前解密就可以执行计算的方法。它提供了一种急需的方法,能够在原有基础上使用区块链技术。通过使用同态加密技术在区块链上存储数据可以达到一种完美的平衡,不会对区块链属性造成任何重大的改变。也就是说,区块链仍旧是公有区块链。然而,区块链上的数据将会被加密,因此照顾到了公有区块链的隐私问题,同态加密技术使公有区块链具有私有区块链的隐私效果。
零知识证明(ZKPs): ZKP是一种密码学技术,是一种在无需泄露数据本身情况下证明某些数据运算的一种零知识证明,允许两方(证明者和验证者)来证明某个提议是真实的,而且无需泄露除了它是真实的之外的任何信息。在密码学货币和区块链中,这通常是指交易信息数据。Zcash和Zcoin都引入的零知识证明,Zcoin和Zcash是仅存的两个使用零知识证明而达到零知识级匿名的加密货币。
在联盟链中,除了在算法做处理外,还有其他一些特别的隐私数据保护方法。
1.Enigma系统的方式,它将数据分解成碎片,然后使用一些巧妙的数学方法对这些数据进行掩盖。单独从每一碎片获知数据是不可能的,你不可能重新获得有关的原始数据。因为很多商业数据非常敏感,所以机构不能轻易把数据分享出来做研究,但是如果只是使用机器学习模型或者预测模型来运行特定的数据分析的话,就不会有这种担忧了,这将是突破性的。
2.很多联盟链都允许系统的终端用户控制他与环境交互和共享的信息,要求它的交易得其他企业不可见,而他的行业合作伙伴无权分享机密信息。如在fabric中交易隐私是通过非授权用户的两个属性来实现的,一个是交易匿名,交易的所有者隐藏在一个被称为匿名集的组建中;另一个是交易不可关联,同一用户的两个或多个交易不能被关联起来。
最后Elwin需要提醒的是,隐私交易会产生一定的交易性能问题,需要注意隐私保护和交易性能的平衡。
三、监管
区块链透明化、去中心化的特点,在政府、监管者甚至交易层面,都很难被完全接受。那么区块链应该如何让政府和监管机构适当地参与到里面的监管,又不损害到商业机构的利益和避免降低效率呢?
在fabric系统中,总账可以按照规定规则来审计全部或部分总账分录。在与参与者合作中,审计员可以通过基于时间的证书来获得总账的查看,连接交易来提供实际的资产操作。fabric利用了密钥的层级可以控制将给予审计员检查某些交易,某组交易的审计权限,只披露给审计实体最相关的密钥来提供控制审计的可能性。不是系统的成员的应用审计人员,可以给予被动的观察区块链数据的手段,同时保证给予他们只是为了与被审计应用程序相关的交易。
Corda推出时候就定位为用于记录、管理和同步受监管金融机构之间的金融协议,它直接设计出负责监管与监督观察作业的节点,监管者也在Corda账本上,交易信息经由特定交易方来验证,不需由一大群与该交易无关的验证者。
量子链为监管者的角色设计了很多可选项,引入数字身份和第三方征信平台,设计一种新的合约类型—主控合约,把监管者的角色引入,同时监管者可以作为 Qtum系统中的喻言和数据源的提供者。
Chain为能支持大规模金融应用而打造,在运行获得许可的区块链网络的同时,达到关于金融服务行业的严格监管、安全和隐私要求。Chain的私密解决方案对区块链数据进行加密,并让相关对手方和监管者进行有选择的读取。
区块链的监管,在某种程序上是促进区块链的商业应用更好落地和提供合规性的保护,但如果过度监管也可能毁掉区块链,需要把握好尺度。同时监管机构也应紧追创新步伐,以开放和包容的态度进行有效的新形式的监管。