区块链是什么

原计划应该写“比特币之外的几种主要加密货币”,但探讨这几种加密货币区别时,必须涉及到一定的技术细节,所以有必要先解释加密货币的若干技术原理。

之前我们提到了加密货币的特征:没有中心,任何人都可以相互之间发送货币。这一点需要区块链才能实现。那么,什么是区块链呢?

一个公开的账本

无数台电脑按照某个协议连在一块,组成了加密货币的网络。比特币,本质上是一个包含了所有交易信息的账本,加入了比特币网络的电脑共享账本信息。

若干笔交易的信息,被存储在一个“区块”中,就像账本上的一页纸。一个区块的交易信息被记录好之后,新的交易就要记录在新的区块中,就像账本翻到了新的一页。

“区块”按照时间顺序排列,形成一个“链条”,就构成了所谓的“区块链”(block chain)。

可以把区块理解为账本上的一页纸,把区块链当作一个账本。在我写稿的当下,比特币的区块链上已经有509285个区块。

一个新的区块如何产生

小D给小A转了100个比特币,在比特币网络中会发生什么呢?

你的电脑会做一个广播:小D给小A转了100块。这个信息会被先传给网络中的附近的电脑。每台电脑都根据账本做验证:发送货币的人给了正确的密码吗?小D的帐户里真的有100个比特币吗?验证通过后,这笔交易会被逐渐传播到整个比特币网络中。

这个时候,连入比特币网络的电脑会把最近的几百个交易组成一个区块——就像把近期的交易记录在账本上。

负责记录和验证交易的电脑,就被称为矿工。所有矿工同时记录交易、验证交易、把交易打包成区块。一旦有矿工完成了一个区块的打包后,他就会把区块信息广播到整个网络中。

其他电脑收到这个信息后,会做一次验证,如果通过,就会把这个新的区块接在自己本地的区块链上,就像把已经写好的账本抄到自己本地的账本上。同一个账本分布在全世界矿工的电脑上,每个人都有一个备份,所以比特币的账本又被称为“分布式账本”。

一个新的区块被加入了区块链之后,矿工们就会开始处理接下来的几百笔订单。

为什么会有电脑愿意帮助处理这些交易信息呢?因为,最先完成区块打包的矿工,会获得25个比特币的收入,这就是所谓的“挖矿”

挖矿时到底发生了什么

之前提到,所有矿工同时记录交易、验证交易、把交易打包成区块。这个过程看上去很简单,只是把交易记录起来。但比特币的设计者刻意让这个过程变得很困难。想要成功打包区块,每个矿工都必须用电脑解决一道非常复杂的数学题。这被称为“工作量证明”( Proof of Work)。

矿工们互相比赛,看谁的电脑能最先解出打包区块需要的数学题。高级的电脑,运算能力强,解决速度就快。计算机解这道数学题的能力,就被称为“算力”。

在比特币刚出生的时候,只需要一台家用主机就能参与挖矿。随着比特币价值越来越高,人们制造了专门用来挖矿的机器,导致算力越来越强。

随着计算能力越来越强大,挖矿速度会越来越快吗?不会,因为比特币设计了一个根据挖矿能力调整数学题难度的机制,挖矿能力越强,数学题难度越高,保证每个区块的平均产生时间是10分钟。

为什么需要解数学题?

解数学题才能打包区块,是为了防止有人作假。

比如我用1个比特币买了一台电脑,这笔交易进入了最新的区块中,卖电脑的小哥看到信息后给我发货。

但我并不想真的支付这个比特币。这个时候我能做的事情是什么呢?我要删掉自己的支付记录后重新打包区块,说服大家我伪造的账本才是真的账本,我的区块才是真的区块。但这点几乎不可能。

“工作量证明”在设计时保证了一点:集体比个人的挖矿速度要快。其他矿工加起来的算力比我个人大很多,所以他们的打包的速度会比我快。如下图:4A是真的区块,4B是我想伪造的区块,当我解决了数学难题,打包了4B区块时,真正的区块已经达到第7块了。这时其他矿工不会相信我的账本是真的。

因为“工作量证明”的存在,个人矿工没有办法伪造出让全部人相信的账本。

只有1种情况会让造假成功:造假者占据了整个比特币网络51%的算力。这被称为“51%攻击”。因为算力分散在世界各地,所以这个情况没有出现过。

小结

区块链是一组又一组的交易记录,按照时间顺序排列。

矿工是负责把交易打包成区块的人,最先完成一个区块打包的人获得25个比特币的奖励。

每个矿工都保存了一份区块链,所以比特币是分布式账本。

“工作量证明”保证了个人没有办法伪造账本。

如果这篇文章对你有帮助,欢迎打赏小费哦

BTC: 19qcWjx3A4RkkdHZyzYvDQWG5q1V7DfjDN

ETH: 0xBa181C2174795cD85305ecA7340e2149539f705d

XRP: r9qHsKc47n11TuoUmS2FvXpA25KAiDc8tD

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180215G0L5RC00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券