区块链技术全面剖析:原理

区块链是目前当仁不让的最火的金融类IT技术(FinTech),不久前基于区块链的实验性项目the DAO成功众筹超过1.6亿美金,成为史上最大的众筹项目。这个项目旨在基于以太坊区块链来构建一个完全运行在代码上的自治组织。初步发表的Demo仅几百行区块链合约代码,开玩笑的讲平均一行合约代码就值几十万美金!可见区块链技术所受的疯狂追捧,那么这个所谓的区块链技术到底是什么呢?

从技术角度来讲,区块链(Block Chain)是一种分布式账本技术方案。从狭义来讲,它专指目前很火热的比特币或是以太坊的底层机制,拥有由区块组成的链式结构存储。从广义来讲,它指的是由此衍生出的底层技术架构。它与其他基于分布式数据库的技术方案不同在于它大胆地设计了一个完全P2P的去中心模型,所有参与人员以集体的方式共同来维护这个分布式账本,并且还可以满足全球规模P2P分布!这个技术实现本身就有一定科技颠覆意义,但是越来越多的人觉得这个技术是可以投入到各种实用领域的,特别是随着它越来越多的特性与潜力被挖掘出来。

区块链是作为话题众多的比特币的底层技术才开始得到广泛关注的,因此要说明清楚区块链技术的来龙去脉就必须从比特币的诞生讲起。首先一个问题是什么是比特币?比特币是2009年1月3日由一个网络名为“中本聪”的神秘人物发明的产物,他于2009年1月3日在密码学杂志上发布了《Bitcoin: A Peer-to-Peer Electronic Cash System》这篇文章,里面描述了一种完全基于密码学的安全P2P通信的数字货币。我们接触过的货币形式有人类历史早期的自然货币,例如博物馆或书本里说过的贝壳、金银等;也有目前正在使用的信用货币,包括各国的钱币以及基于各国法币的借记卡和信用卡系统,而随着信息技术的普及,信用货币已经逐渐转变到电子货币的形式,以数字的形式保存在各国网络系统当中,但是电子货币仍然以国家信用为背书,中央银行的角色仍然存在。而比特币则是作为人类未来的货币,以完全数字货币的形式设计出来的新货币系统,这个系统希望能够解决现行法币系统全球流通困难(需要各国法币间互换)、交易成本较高、而且无法匿名使用的种种问题。比特币设计的初衷其实就是洗钱利器!

不同于我们见过的数字货币比如Q币或是其他网游货币,比特币的设计是没有中心节点完全运行于P2P网络环境的,不需要任何大公司来进行集中管理,即任何人可以与任何人使用这个货币进行直接交易,自然这个货币满足不可伪造、不会多重支付等货币必要的安全合理性要求。使用这个货币的账号全部都是匿名的,但这个网络上产生的所有交易对所有参与者都是直接可见完全公开透明的,因此有着天然审计的特点。由于没有中心节点进行发行或管理,比特币的发行是由著名的所谓“挖矿”行为完成的,这种挖矿行为是比特币网络参与者都可以自发进行的,而驱动这些人进行挖矿行为的正是比特币当前越来越高的价格。截至2016年6月13日,近来一周比特币价格一路暴涨,再次冲破一BTC兑换4000RMB大关。近来BTC更是借东风涨到8000RMB然后暴跌至6000RMB,仍是历史高位。由于没有中心节点的信用背书,技术上需要集中解决两个主要难题:一个是货币信息的伪造,一个是如何防止货币重复花费。

为解决这两个问题,比特币巧妙设计了一个链式结构,即每个人在完整的全局账本上签上新的一笔的时候,都需要利用前面的交易信息来生成后面的(自然还需要带上自己的签名与当期时间戳),这样既保证所有交易都可以追溯,又防止后来信息的抵赖。而每一笔新的交易信息都需要网络中的所有用户进行验证和确认,为保证传输效率,比特币网络会将一段时间内发生的多笔交易的所有信息打包成一个数据块来进行全网广播,并结合一种基于工作量证明POW的共识机制来保证这些交易信息的可靠性与一致性,防止重复花费的出现。这个包含所有交易信息的块状的链式结构正是比特币网络的全局账本,也就是所谓的区块链(狭义)。也就是说用户使用自己钱包中的比特币进行交易,所有交易记录最终都存储在区块链这个账本上,而且很好的解决了两大技术难题。

比特币交易就像复式记账法账簿中的行,信息至少包含时间、输入、签名、输出和交易金额。简单来说,每一笔交易包含一个或多个“输入”,输入是针对一个比特币账号的负债。这笔交易的另一面,有一个或多个“输出”,被当成信用点数记入到比特币账户中。这些输入和输出的总额(负债和信用)不需要相等。相反,当输出累加略少于输入量时,两者的差额就代表了一笔隐含的“矿工费”,这也是将交易放进账簿的矿工所收集到的一笔小额支付。因此要知道一个用户账号余额就必须统计所有所谓UTXO(Unspent Transaction Output)的金额,在保证金额数目正确的同时甚至可以保证每笔钱的来源都是正确的,所以才有天然审计的特性。

区块链上的每个区块正是包含了出块期间收集的所有交易信息,并通过出块所需要使用的上一个区块所有信息合成的hash值来链接形成链式结构。区块链上出块这个过程又被称为挖矿,因此区块头里记录了挖矿操作所需的各种信息,包括上一个区块头的hash数、幸运数、难度、时间戳、所有交易信息的Merkle根等。区块头里的这些信息作用稍后再说,先说说这个有名的挖矿究竟是在干啥,跟比特币发行和交易又到底有什么关系。

因为没有中央银行,比特币的发行实际需要由挖矿这个行为产生,区块中记录的第一笔交易信息正是挖矿成功的收益信息,目前会给挖矿成功的矿工们50个比特币的奖励,这50个比特币就是新发行出来的。区块链的起始第一个区块完成由比特币体系初始化信息组成,包括向这个系统中引入一部分初始的比特币用来交易,也被称为创世块。之后的链块都由挖矿这个操作产生。矿工们会通过挖矿并打包交易生成区块得到奖励,这些奖励由两部分组成:一部分是挖矿成功的收益,一部分是区块内所有交易的手续费。在奖励这个利益驱使下会有更多的矿工参与挖矿这个工作。比特币的设计是限量供应的,挖矿的收益大约每四年会减半,因此发行总量约2100万个。挖矿实际是要求矿工机器需要竞争经过一系列复杂计算才能找到一个幸运数,这种竞争机制正是一种基于工作量证明POW的共识算法,用于保证多节点记账的一致性,即最新一个区块信息以最先挖到矿的节点数据为准。

挖矿本质也是交易的确认过程,全世界的比特币节点通过挖矿竞争奖励,同时完成期间交易的验证、打包、确认工作,保证交易信息的可靠与全球一致。为保证全球交易信息同步,只有六个区块前的交易才能被视为真正完成的交易,因此一笔比特币交易的速度平均下来需要3分钟左右。POW共识算法比较好的保证了比特币的全球一致状态与可靠性,唯一的问题是竞争导致的能源损耗太多,看起来不那么环保(另一种看法是正因为比特币的价值正来源于这些能源的消耗,正如开采黄金一样)。可以在这个网站看看目前比特币产生区块的情况

那么比特币的成功,让大家注意到了其底层技术区块链的设计,但是真正让金融机构着迷的还远不止这个可靠的P2P架构。下回再说说让区块链这项技术真正发挥威力的智能合约吧。

 

 

本文是全系列中第4 / 8篇:区块链技术

打赏作者

抢沙发

评论关闭咯