区块链重新回到了业界的话题中心,在此之前,因为层出不穷的代币金融诈骗事件,区块链在普通人眼里几乎要和欺诈划上等号,臭不可闻。
实际上,正经的区块链应用一直在被国内外的大厂商推动发展着。通过剖析区块链的特征,观察国内具备领导地位的企业的发展成果,我们才能认识到区块链的真正价值。
比特币=区块链。比特币及其交易所是区块链的原生应用,但也仅是区块链的其中一种应用形式。
区块链是万能的,要替代互联网。区块链是一系列现有成熟技术的组合,并不是一种新的技术体系,相反,它高度依赖现有的互联网技术,比如密码学和协同算法的发展。
笼统地说,具备以下特征的系统就可以被称之为区块链:
多个利益不一致的记账参与方,在共识算法的驱动下,轮换发起记账,其他参与方共同验证和记录。
所有的记账参与方对账本都有访问权限。
没有唯一的信任中心,任何一个记账参与方的账本都可以作为信任背书。
基于密码学的散列算法和多方冗余,形成现有技术条件下的不可篡改,但不是绝对的,比如未来的量子计算就可能使这一特征不复存在。
基于共识算法,使多个网络节点都拥有各自独立的、完整的数据储存,各节点间互不干涉,权限平等。传统的做法是在中心数据库存储,区块链则是有多少节点就存储多少份,是一种超大规模的数据冗余,所以称之为不可逆、不可篡改,所有人都有一份数据,谁想逆、想改,需要征得所有人的同意。
解决由哪一个节点发起记账,其它节点怎么验证的问题。常见适用于公链的的PoW和PoS算法,以及适用于联盟链的PBFT和其衍生算法。
自动验证、执行数字合同的代码,其意义在于交易双方可以在没有第三方信托机构的情况下,忠实地履行合同了。履约是商业社会的地基,把合同涉及的资产上链,当合约中的事件触发时,代码会自动执行资产的传递,代码没有感情也没有歧义,能够大幅降低履约成本,构建诚信社会。
区块链的基石是哈希算法,其特性是即便输入值只发生微小的篡改,其输出值也将发生非常大的变化。所以区块链所谓“不可篡改”也可以理解为“即便篡改了,也会被很快识别,并被所有参与方获知”。
网络中的是不可信节点,可以面向任意用户公开。典型代表是以太坊、EOS。比特币、交易所属于公有链的应用。
网络中的是可信节点,用户取得授权才能加入。典型代表是超级账本(Hyperlegder)、企业以太坊联盟(EEA)、金链盟(FISCO BCOS)。
网络中所有的节点掌握在一家机构手中。
超级账本(Hyperlegder)
企业以太坊联盟(EEA)
金链盟(FISCO BCOS)
Blockchain as a Service,“区块链即服务”,是指将区块链框架嵌入云计算平台,利用云服务基础设施的部署和管理优势,为开发者提供便捷、高性能的区块链生态环境和生态配套服务,支持开发者的业务拓展及运营支持的区块链开放平台。
简单地说,区块链底层的IaaS、PaaS由云计算厂商解决了,密码学、共识算法、存储、传输等等一系列高精尖的问题大家都别管了,可以专注于自己的业务场景。
阿里巴巴、华为、腾讯、百度四家作为国内云计算的领导者,在BaaS上也获得了匹配其地位的成果。
官方网址:https://www.aliyun.com/product/baas
应用场景:商品溯源、供应链金融、数字资产共享、数字内容版权。
阿里的BaaS有三个品种:蚂蚁区块链、Hyperledger Fabric和Quorum。
类型:合约链,实际也是联盟链,因为是阿里云自研,做出了创新,所以名字上也做了区分。
适用于供应链金融、电子票据、可信存证、分布式数字身份。
合约开发:阿里云提供了一个集成开发工具“Cloud IDE”,帮助开发者进行合约开发、合约部署,合约的开发语言是Solidity,这是一门面向合约的、为实现智能合约而创建的高级编程语言。
应用开发:Cloud IDE集成的JS SDK使Node.js和JavaScript的开发者能够便捷地上手应用开发。并且也面向Java开发者提供了Java SDK。
类型:联盟链。
适用于溯源、供应链金融、数据共享、数字内容版权。
Hyperledger Fabric是 Hyperledger 的分支开源项目,目的是建立开发模块化体系结构的区块链应用程序的基础,以便诸如共识和会员服务等组件可以即插即用。
合约开发:链码(ChainCode)是 Hyperledger Fabric 技术框架中对智能合约的实现,开发语言支持Golang,Node.js和Java。
应用开发:提供Go SDK、Java SDK、Node.js SDK。
类型:企业以太坊,基于以太坊的代码库建立的私有的联盟链,可以连接以太坊主链。
适用于数字资产交易、供应链协同、数字化营销。
合约开发:Solidity 语言。Remix 是基于浏览的以太坊智能合约编译器和IDE,它能协助用户编译Solidity智能合约并调试它们。Truffle是以太坊智能合约的开发、测试和管理框架。
应用开发:Web3.js 实现了以太坊 JSON-RPC 在 JavaScript 下的 API 接口。
官方网址:https://www.huaweicloud.com/product/bcs.html
类型:联盟链,基于Hyperledger Fabric。
应用场景:供应链金融、供应链溯源、数字资产、众筹公证。
合约开发:链代码(ChainCode),当账本数据存储方式为关系数据库时,只支持Golang。其他情况则支持Golang与Nodejs。
应用开发:Java SDK、MySQL SDK、Node.js SDK,还有REST API是无需SDK的。
官方网址:https://xchain.baidu.com/
有个酷炫的名字叫XuperChain,并且是开源的:https://github.com/xuperchain/xuperunion
类型:联盟链,底层自研,没有使用 Hyperledger Fabric,实现了DPOS共识算法,支持可插拔,从而支持不同的业务场景。
应用场景:司法、版权、政务、溯源、金融。
合约开发:它实现了一套智能合约虚拟机XVM,可以支持Go,Solitidy,C/C++,Java。
应用开发:XuperCDT(XuperChain Crontract Development Toolkit),支持C++和Golang。
官方网址:https://trustsql.qq.com/
类型:联盟链。
应用场景:游戏、数字资产、鉴证证明、共享账本。
合约开发:JavaScript。
应用开发:Java SDK、C++ SDK。
到截稿前,未开放注册,目前在腾讯云解决方案中,只有通过“应收账款流转”、“动产质押登记”、“可信存证”加入。
现阶段,区块链适用的范围是:有多个利益不一致的参与方、协作效率要求不是很高、各合作方之间的信任成本很高。
正经的区块链以toB应用为主,以联盟链为主。符合目前区块链低TPS,超大规模应用体验不佳,toC教育成本高的特征。尽量避开性能问题,最大程度发挥传递信任价值的作用。
如果着眼于企业级业务落地,不想或者没有能力聚焦底层技术开发的话,使用BaaS能够大大降低业务落地的成本。
如果着眼于底层技术开发的话,使用以 Hyperledger 为代表的开源项目作为基础,已经有一线大厂帮你验证了。
区块链的想象空间的确足够大,但是目前可以正经落地的场景有限,大家都在摸索。后面的文章将会继续深入到各家的应用案例,希望他山之石,可以攻玉。