作者:黄武汉
区块链,是“中本聪”(真实身份未知)在2008年发表的《比特币白皮书》中提出的。2009年创立了比特币社会网络。近两年,区块链越来越受关注。抽时间看了点资料,做一下整理,分章节简单介绍一下区块链,特别是以比特币为代表的区块链1.0技术。
首先看看区块链的定义?
区块链涉及很广,它是一种基于已有技术的巧妙组合,包括了密码学,博弈论,对等网络(P2P),经济学,分布式共识...等一系列概念。区块链的定义很难用一句话来概括,有种渐进的方式可能更容易诠释区块链:
1、首先区块链属于一种去中心化的分布式数据库。每一个节点都存储着全量的数据内容,没有传统意义上的中心节点。那数据库存储的是什么?
2、数据库中存储的数据被称为账本,每个账本通过反向单向链表链接而成,每一个账本被称为一个区块,整个链表就是区块链。区块之间通过哈希指针关联,子区块存储了父区块的哈希指针,所以称为反向单向链表。那账本里面具体是什么?
3、账本,通常叫区块,是一批交易的集合。一个区块,主要包括区块头和区块体两部分。区块头存储摘要信息,区块体存储具体交易信息。那交易是什么?
4、交易是区块链的核心。首先区块链里的比特币都是由coinbase交易产生的,coinbase交易是区块体中的第一个交易,最初每个coinbase交易能产生50个BTC,一段时间后减半,直至为零。其次,区块链没有账户余额概念,所有的货币以UTXO(Unspent Transaction Outputs)的形式存在,区块链中的所有比特币就是UTXO的集合。换句话说,区块链里面的余额是以交易的形式存在的,交易构成了一组链式结构,所有合法的交易都可以向前追溯到一个或多个的coinbase交易,向后的末尾则是一个或多个的UTXO。那交易又是怎样被加入到区块链中的?
5、分布式系统中的每个节点,都有记账的权利。任意节点产生一笔交易时,都会广播到整个网络。网络中的节点通过一定的选举算法来争取记账权。争取到记账权的节点,会将一定时间内收到交易集合进行筛选,逐条验证,打包成区块,关联到已有链表尾部,并广播到全网。那选举算法是什么?
6、在比特币网络中,选举算法是通过解决一道哈希散列难题来进行的,谁先算出符合要求的随机数,随就有权记账。简单说,就是寻找一个随机数,让父区块的哈希值,加上10分钟内验证过的交易内容,加上这个随机数,三者组成的数据的哈希值小于给定的难度目标。因为网络环境复杂,在父区块计算出来后,广播到达的时间有早有晚,为了避免这种延迟导致的不公平,系统会通过调节难度目标,使得计算时间平均控制在10分钟左右,这样就能忽略延迟时间了。即使是这样,也有可能存在多个节点同时解出难题,同时广播区块消息的情况,这时候,应该以哪个为准?
7、这种问题,也被称为分布式共识问题。现存的解决方法主要有PoW,PoS,DPoS,分布式一致性算法等。比特币采用的是PoW,即工作量证明。不管有多少个节点同时解出问题,随着链路的增加,不同的分支在同一个时间肯定有不同的长度(通过一条链路上的区块链难度之和计算链路长度),系统只会认可难度最大,即所谓链路最长的一条为主链,其他的都不生效。就这样,各个节点会形成一种共识,总会找最长的链条进行确认增加,因为这条链被承认为主链的概率最大。而大家也会放弃短的链条,因为有很大概率这条链路是要被废弃的,那在这条链路上所作的所有工作都白费了。既然区块链存在分叉,那怎样才能最终确认一笔交易?
8、为了避免作弊行为,如"双花问题",比特币采用6次确认的规则。即当前交易所在的区块后面又有五个验证通过的区块,我们才承认这笔交易,相当于这比交易经过了6次确认。前面说过,在正常情况下,短时间内有多个人同时解出难题是有概率的,此时就有多个分支并行交替发展。但分支总会有长有短,短的分支上产生的所有交易会被取消,重新放入未打包的交易区。大概6次确认后,如果交易没被取消,基本可以确认这次交易。如果有恶意用户,短时间内解出多个区块,也是完全可以作弊的,不过需要的代价也很大,几率很低。
以上是对区块链简单的定义。
那区块链要解决的是什么问题?
从定义中,可以至少发现以下几点::
1、分布式容灾。区块链中的每一个节点都遵循同一套规则,存储相同的信息,不依赖任何一个中心节点服务。单个节点发生消息延迟或不可送达,无法控制和破坏整个网络,可用性极高。这就是去中心化的好处。
b、不可篡改性。数据一但提交并确认,将不能回滚,也不能被修改。这源于哈希指针、最长主链原则、六次确认、哈希难题等一系列机制。
c、隐私保护性。区块链的参与者,都以私钥(或钱包地址)形式存在,很难与真实世界相对应,所有权限的认证通过密码学实现。
d、信任问题。区块链不依赖任何中心组织,无需任何权威机构背书,不存在机构操纵控制问题,完全通过算法自我约束,任何恶意欺骗系统的行为都会遭到其他节点的排斥和抑制。在处理拜占庭错误问题(指系统中存在包括消息被篡改、节点不按照协议进行处理等问题)上,区块链可以容忍1/3左右的节点异常。
那区块链有哪些分类?
区块链自诞生以来就备受关注,关于分类也有多种说法,有两种比较常见的分类方式:
1、按照公开程度,分为三种:
a、私有链:只有少数节点可以操控,信息不公开或部分公开。写入权限控制在部分管理者中,在小范围内实现去中心化的分布式应用。这种区块链,在商业上应用前景较好。读写权限分离,读权限可以公开或部分公开,适用于审计管理等。
b、联盟链:由若干组织一起合作维护一条区块链,区块链的使用权有权限要求,相关信息得到保护。这种区块链比私有链公开,适用于一些商业联盟,在更大范围内实现去中心化的分布式理念。适用于银联等联盟体系应用。
c、公开链:全世界任何人都可读取的、任何人都能发送交易且交易能获得有效确认的、任何人都能参与其中共识过程的区块链。这些区块链被认为是“完全去中心化”的,比如比特币。
2、按照功能来看,主要分为三种:
a、区块链1.0:以支持数字货币为主的数字货币区块链,主要代表就是比特币网络。这项技术主要来自聪哥的白皮书。从08年提出,09年开始实践,经历了8年多的考验,是一项革命性的创新,它的特点在于:去中心化,世界流通,隐蔽性高,交易方便,不存在信任问题等。同时也发现了一些不足:如扩容、矿池导致的中心化问题、PoW导致的资源浪费问题,比特币脚本的图灵不完备导致的扩展问题(图灵不完备主要是出于安全性考虑)等等。
b、区块链2.0:以以太坊为代表的支持智能合约的通用区块链。在区块链诞生的6年后,即2014年,Vitalik Buterin提出了新一代的区块链技术:一种图灵完备的可编程区块链,可以实现多种类型的去中心化应用平台,以此实现一个总体上完全无需信任基础的智能合约平台。概念有点抽象,说实在点:以太坊使用了内存需求较高的哈希函数,使用uncle块激励机制,避免矿池的中心化;支持除了 PoW 之外的可以避免资源浪费的共识机制;实现了图灵完备的虚拟机EVM(智能合约基础)等。2.0技术意味着区块链不仅可以用来买卖货币,还能进行各种合约性质的业务,如:资质证明、众筹、金融交易、资产证明等等。2.0技术也有其局限性:主要集中于特定对象(比如合同的双方)、交易主要以特定资产为主的(比如房产、知识产权、汽车等的所有权或其他权益)、交易范围还比较局限。
c、区块链3.0:面向复杂商业应用场景,支持权限管理的分布式账本平台。简单点说,就是除货币(1.0)和金融(2.0)外,将区块链应用到在其他领域上。3.0的概念还不成熟,许多人再争夺这个“冠名权”。3.0将是一个划时代的产品,像超级账本,自动化采购,智能化物联网,智能供应链等生活的方方面面都会涉及。
以上所有,让我们大概认识了什么是区块链,因为参考的资料比较多,就不列了。
相关阅读:
走进区块链(一)
走进区块链(二)
走进区块链(三)
走进区块链(四)
网易云新用户大礼包:https://www.163yun.com/gift
本文来自网易实践者社区,经作者黄武汉授权发布。