作者:木木夕
现在区块链已经成为全球金融科技最火热的概念啦,但是,什么是区块链呢?
区块链定义
从数据结构的角度来讲,区块链本质上是基于密码学的分布式数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
从协议的层面来讲,区块链是一种新型去中心化协议,能安全地存储比特币交易或其它数据,信息不可伪造和篡改,可以自动执行智能合约,无需任何中心化机构的审核。交易既可以是比特币这样的数字货币,也可以是债权、股权、版权等数字资产,区块链技术解决了拜占庭将军问题,大大降低了现实经济的信任成本与会计成本,重新定义了互联网时代的产权制度。
从技术方案的角度来讲,区块链是一种类似于非关系型数据库这样的技术解决方案统称,并不是某种特定的技术,可以通过不同的编程语言来实现区块链技术。
区块链1.0可编程货币——从比特币说起
比特币原理
迄今为止,比特币系统是区块链的唯一成熟应用,所以我们结合比特币系统来说明区块链技术解决方案。
比特币和区块链几乎是共同诞生的,区块链的初始使命是为了支持比特币的形成和流通。在比特币诞生之前,互联网的TCP/IP协议,基本实现了全球信息的高速传递,然而一类特殊的信息——“金钱”则在上面跑的比较慢。
看到这里你一定想问,为什么所有信息都可以在TCP/IP协议上像德芙巧克力一般丝滑的相互传递,而金钱却不可以呢?
其实原因有以下几点:第一,没有加密技术和公共账本的情况下,数字货币和其他数字资产一样,具有无限可复制性(就像你可以随便保存多次邮件附件一样),而且也难以避免一笔数字货币消费多次的情况,即所谓的“双花”[1]问题;第二,现实生活中的金钱都不可避免地依赖“第三方/中心”(国家、政府、组织)的信用背书,从而解决普遍的群体“无信用”、“不信任”的问题,而在网络上,我们发现这些增信方式基本是无效的,这也就是所谓的“拜占庭将军”问题[2]。
那么这些问题该怎么解决呢?区块链就给出了一套技术层面的解决方案:为了让一笔数字现金只被花出去一次,一方面,区块链结合了单方一端对另一端的文件共享技术和公钥密码学来记录交易,另一方面通过数字背书的方式来产生新的数字货币,从而解决了数字货币可复制也即被多次记录的问题。再者,为了让大家都信任这个系统,相信每一笔账的真实性,那我们就需要一个大的账本来记录大家的交易行为,现实里,我们是通过一个可以信赖的第三方机构(国家、政府,银行,支付宝等)来保留和维护交易总账,那么在科技时代里,有没有东西既可以替代这个第三方,从而使整个账本和记账行为”去中心化“,同时又能保证系统的可信任性呢?对此,区块链给出的解决方案就是”所有节点共同确认、共同维护“,即所有参与到系统中的节点共同参与到对账本的维护中来,任何一个节点想要篡改任一个账本的一部分都要经过超过半数的节点的同意才可以进行修改。
比特币体系(比特币区块链技术解决方案)
下面让我们看下比特币系统的结构是怎么样的:
(图一)
到现在为止,区块链都没有一个精确的定义是因为不同的角度去理解时,区块链所指代的意义是不一样的,就如图一所示,比特币系统的底层,区块链指的是非关系型的数据库,在中间层,区块链指代的是一种协议,对于整个比特币系统,区块链指代的是一种技术解决方案。
(图二)
如图二所示,在比特币系统的底层,区块链可以想象成一个大的账簿,而每个区块就是一个个升级版的账单。它是一组交易的记录,通过”上一页的页码”被连接到区块链(总账)上,这个“页码”就是指区块的地址。从这个角度来说,区块是一种特定数据结构的存储块,而区块链就是非关系型的数据库,即所谓的总账,该总账可以通过区块链浏览器被公开查看,你可以通过输入一个区块链地址(用户的公钥地址)来查看一串交易流。
堆栈中间的那一层是协议—区块链总帐上进行资金转账的软件系统。最后一层就是数字加密货币本身。关键的一点在于,对于所有的现代数字加密货币而言,区块链、协议和货币这三个层级式一种通用结构,拓展而言,不同的数字货币对应着不同的协议,比如说“合约币”是基于合约币的协议运行的,而“合约币”的协议又是基于“合约币”的区块链运行的。所以从这种通用结构的角度去讲,区块链技术就是一整套技术解决方案了。
随着比特币的稳定运行和区块链技术优势的不断显现,当然,如果要提到区块链应用的兴起, “以太坊”功不可没。
以太坊的出现
在区块链的应用变得多样化之前,还有一件事一直困扰着技术人员们,就是技术的实现问题,都知道一般开发一款应用无论是收集APP,还是windows上的应用程序,都是需要基于操作系统来开发的。巴特,在区块链1.0时代,并没有类似于安卓ios等的操作系统,程序猿想要独立开发出区块链应用的话就需要从底层开始编写代码了,听起来很崩溃对不对,所以为了使开发区块链应用的门槛降低,有一群心疼这批开发区块链的程序猿的技术人员们(当然也可能就是他们自己)开发出了Ethereum,也就是所谓的“以太坊”。
以太坊是一个开源的区块链底层系统,它提供了很多的API和接口,让许多人能在上面快速开发出各种区块链应用。目前已经有过百个应用在以太坊上开发,其中十分有特色的就包括了智能合约。
区块链2.0可编程合约—-智能合约的兴起
基于区块链、协议、比特币这一体系的技术堆栈,聪明的程序猿们,哦不,是技术人员们就在想,如果我们把这里的比特币替换成其他东西,再加上相应的脚本合约系统,那区块链可以实现的功能就可以拓展的更多了。是的,随着技术人员们的智慧之花的绽放,区块链2.0开始脱离货币领域的创新,转战涉及合约功能的其他领域。智能合约的实现也是区块链2.0的核心。
对于泛指的区块链2.0技术,包括了比特币2.0,比特币2.0协议,智能合约,智能资产,去中心化应用和去中心化自治企业。因为智能合约广受人们关注,也是区块链2.0的核心,所以接下来将向您详细讲述什么是智能合约。
传统的合约,就是规定双方或多方的权利与义务的条文,合同中的权力义务必须能够落实才会被合约的参与方所认可其效力,换一种说法只有当合约的每一方都要信任彼此会履行义务的情况下,合约才会被认可。传统合约的有效性需要依靠第三方(中心)的监督,而区块链的特点就在于去中心化和去信任化,所以合约在区块链上的应用是必然会出现的。
对于智能合约,其最大的特点就是:智能合约由代码定义,同时也由代码执行,完全自动且无法干预。具体而言,当一些预设的条件发生时(比如期权到期,某市场到达了指定价格,筹资目标被完成等),智能合约就将会对区块链上的各种数字资产进行复杂的操作,从而自动完成智能合约的内容。
举个简单的例子,智能合约就好比一个由代码编写的并且能够自动运行的ATM机,ATM机的行为是可以计算的,相同的指令行为总是会得到相同的结果。当你塞入银行卡并选择一些选项,一定数目的货币就会输出,机器永远是按照预定的程序来执行。智能合约也是一样,它一定会按照预先设定的代码来执行。
聪明的读者肯定已经发现了智能合约自治、自足和去中心化的优势,但也意识到了其限制性,智能合约并不是说能够实现一切以前我们不能做到的事情,事实上,它们能够最大限度以减少信任成本的方式来解决一些问题。最小化信任能够让事情变得更加便捷,因为通过全自动执行来来替代人的判断和执行。至于智能合约的应用场景则需要我们自己去判别,到底哪些社会契约、商业合约是可以用代码来替代的,即根据代码来自动执行且无法阻止运行的,而一些需要事后控制、监管、赔偿损失的一些法律性合约是难以成为智能合约从而达到自动执行的目的。于此同时,就像现实世界中的合同一样,如果没有认真审核,其还是有可能出现漏洞并被坏人所利用的,所以如果合同的内容和执行流程过于复杂,则也需要有律师、审计这样的角色介入审查,但这些漏洞都是基于合同的条款和规则上的,以太坊和区块链技术本身是没有问题的。
总而言之,区块链技术能够提供给我们的是一个多方无需信任的环境、一套密码学技术、一套共同记录的机制和一个共同维护的数据日志。无论是比特币,还是只能合约,都只是区块链在支付领域和合约领域的应用,它还可以用于更广阔的领域,安全认证,数字背书,医疗,物联网,供应链等领域都可以应用在区块链技术上,它对于各行各业都会产生深远的影响,但值得注意的是,区块链只是给我们提供了一套可靠完整的技术,至于应用在其上的业务逻辑还是需要我们去不断审查来防止漏洞的产生的。至于区块链3.0时代到底能发展成什么样子、什么程度,让我们一起拭目以待吧。
[1] 双花问题:如何保证一笔钱只被花出去过一次
[2] 拜占庭将军问题:于是战场上多个当事方(将军)并不信任彼此但是需要有某种沟通机制
文章原文链接:https://www.anquanke.com/post/id/84365