区块链入门指北

in 区块链 with 0 comment

前言

很多人面对来势迅猛的『区块链』,都会产生『区块链技术到底有什么价值』等类似的问题。咱们暂且先不回答这个问题,我们先来看看目前我们所面对的问题:我们总是能看到国外银行倒闭的新闻。虽然这种概率很低,并且也并非我们不信任银行,但是一旦当用户的存储付之一炬,总不会是一件乐于面对的事情。

而我最近刚好跳读了一下《精通比特币》一书,所以在此文中,我会尽量以简单和通俗的口吻来阐述『区块链』这门技术以及它所解决的问题,当然,以我目前的理解而言还为知过浅,所以如有不对还望指正。

去中心化

在阐述这个概念之前,我们可以先思考一个问题:“如果有一种我们大家都信任,没有银行也没有三方公司,我们的每一笔交易都能得到极大保障的系统,这种系统你是否愿意尝试?”,我们暂且先不管这种系统是怎么得到所有人的信任的,我们假设这个条件是绝对成立的。同时,在我的观点里,我也并非说不信任银行,第三方公司,就好比网购,支付宝等刚推出时候面对的窘境,很少有人敢去吃『螃蟹』。所以,如果能有这样一套不基于任何中间渠道,大家共同管理的系统,那么将会对现有的金融体系带来很大的冲击。
而这也就是区块链中「去中心化」的概念。
举个例子来讲,以前我们买一杯咖啡,需要先把钱放在支付宝或其他支付平台上,再由支付宝把钱转给咖啡店;而现在,我们只需要把我们所拥有的比特币通过比特币钱包直接给咖啡店即可,当然,你可以理解为原始的线下现金交易。
那么在这样的一种情况下,就会产生一系列问题:”其他人怎么知道这家咖啡店收到了这笔钱?我怎么知道你刚刚收到的钱是不是伪造的?“与此同时,我们回归到刚刚那个问题,我们为什么都能信任这样的一套系统?这也就是我们接下来要阐述的模块:「共识机制」。

共识机制

「大多数即正义」是共识机制的最大特点。
回归上面提到的问题,你们私下的交易行为,我怎么知道是真的还是假的?因此,区块链提出的解决方案是:我们有一个「全球账本」,在这个账本上面记载了所有人的交易,而如果要修改这个账本是极为困难的(后面我会解释为什么修改起来极为困难,在这里我们同样假设它是成立的)。这个「全球账本」每十分钟会产生一块交易记录,而这一块块的交易记录会被集合到一个叫「区块」的结构上,而每一块区块都会衔接上前一块,就好比一长条的链接,而这也就是「区块链」的概念。

区块

前面我们已经提到了「区块」和「区块链」,在此节中我想阐述一下每个区块具体存放了什么内容,以及解释为什么我在上一节中说「修改这个账本是极为困难的」。
在此节中会涉及到一些技术方面的知识,如果没有兴趣阅读可以跳过此节,我们只需要记住前面说的这个结论即可。

结构

结构

注:图片取自于巴比特

由图中所知,我们可以知道,每个区块分成区块头和交易部分,我们会对头部进行Hash计算,同时会指向它的上一块。头部其中有一个叫做Merkle Root值得我们关注。

Merkle Tree

Merkle Tree是一种二叉树结构,主要分成三个部分:头部,叶子节点和根部数据。如下图所示:

Merkle Tree

注:图片取自于巴比特

如上图所示,我们产生了四笔交易,首先对每笔交易进行Hash,此时我们得到四个Hash之后的结果,此时我们两两拼接,再一次进行Hash,以这种方式不断循环,最终只剩下一个Hash值,这个值也就是我们上文说到的Merkle Root。因此,当我们如果想要修改其中的一笔交易,必然会导致最终的Merkle Root进行变化,从而导致Block Header Hash产生变化,而我们也知道,每一个区块都会指向上一个区块,也就是说,如果我们要修改其中一笔交易,必须要把当前区块以及之前所有的区块都进行修改,这也就解释了前面说为什么修改账本是极为困难的原因。

我们再回过头来关注我们前面说的交易。当两个人产生交易之后,这笔交易怎么挪到全球账本上呢?这个时候就引出了另外的一个概念:「矿工」。

矿工

我们在前面已经提到了「共识机制」,只有在区块链上面的交易才是能被大家所认可的。那么我们的交易是怎么传到全球账本上面去的呢?这里就要说到我们的「矿工」,也就是我们经常听到的挖矿。那么挖矿究竟是在挖什么呢?
其实,当二者产生交易的同时,也会把交易信息发送到每一个用户,同时,会在这笔订单里面绑定其难度和目标值,其中有一部分人,会通过他们的计算力来计算,直到计算出这笔订单的结构小于其目标值,那么就可以存储在他本地内存中,这个计算的过程被称为「工作时间证明」(POW),直到整个周期结束(10分钟),谁的工作时间证明最大,那么谁就有权利把自己刚刚存储的区块放置到全球区块链中去,而这个概念就被称之为「矿工」。
那么此时问题就来了,为什么他们这群人要耗时耗力的去做这个事情呢?答案很简单:利益驱使。一方面,能成功把区块添加到区块链中的人可以获得比特币的奖励,2009年是50个,每四年递减一半,直到2140年无限趋近于零;另一方面,当矿工打包交易到区块中时,有可能获得“小费”奖励,这个小费的计算公式是:总输入 - 总输出,比如A去B那边买咖啡,咖啡价格是0.15比特币,A给了1个比特币,如果A没有设置找零,那么剩下的0.85就都属于“小费”的范畴。当然,在交易中也有可能有人会主动的给小费,因为小费越高,意味着订单能越快被处理。

总结

其实在区块链中,还有许多其他的概念,我对此也是浅尝辄止,并没有做深入了解。总结起来,比特币的交易流程大致如下(以例子说明):

  1. A去B那边买东西,支付1比特币

  2. N个矿工收到了此笔交易,进行竞赛,计算其目标值

  3. 十分钟之后,或者说有矿工C向全网通知,这个回合我的POW最大,我已经打包好了区块

  4. 所有矿工认可这个区块,C把这个区块添加到全球区块链中

  5. 所有人认可A与B的交易,B的这个比特币可以进行下一笔交易

Responses