如果我告诉你:
区块链不存在
或者区块链有两种完全不同的含义
或者, 区块链是三个完全不同的东西的别称
觉得不对? 听我把话说完
区块链是一个效率非常低的数据库, 它作为比特币中拼图难题 (jigsaw puzzle) 正常运转必须的技术之一而被人们熟知
比特币技术是基于区块链技术实现的, 而不是区块链技术基于比特币技术
区块链技术与一个区块链 (A Blockchain) 或这个区块链 (The Blockchain) 的概念是截然不同的
是不是感到很困惑? 从技术角度来看, 这些不同的术语有着细微的差别在本文中, 你将了解到每个术语的真正含义并深入理解区块链的工作原理
让我们从区块链技术 (Blockchain Technology) 开始
区块链技术其实就是一个分散的不可信网络, 它利用本地资产, 分散账本和一些基于博弈论模型的算法来使网络中的每一方达成共识
什么是一个区块链(A Blockchain)?
假想你现在有一个 Excel 电子表格, 表格中的每一行都有包含着几列的数据, 其中一列包含着交易信息
现在, 如果每一行中的特定列中包含着该行的所有数据加上上一行传递的哈希 (Hash) 值对应的唯一指纹(一个新的哈希值), 此时这些行顺序串联起来就构成了一个哈希链
一个哈希链的实例所有的数据都具有唯一的哈希值, 就像指纹一样, 修改其中的任意一个数据都将打破这个链条
用户可以利用软件来检测这些哈希值软件可以通过哈希链的计算方式来判断每一个哈希值的有效性一旦出现了无效的哈希值, 用户就可以知道有人在后来 (哈希链创建后) 伪造了某一行的数据
哈希链可能有很大用处, 但是并没有什么令人激动的特性我们为什么要讲哈希链, 哈希链与一个区块链又有什么联系呢?
再进一步, 把上面电子表格中的行扩展为多个电子表格, 每个电子表格中充满了交易信息我们将通过这种方式组合起来的交易信息称为交易块
如果你在一个电子表格中创建了所有数据的哈希值, 然后在另一个电子表格中创建该表中所有数据的哈希值, 通过上面的方式我们可以通过两表的哈希值组合计算得到新的哈希值像下图一样串联起来, 你就得到了一个电子表格组成的链
请记住: 由于这些表格包含着一个交易块, 所以它们构成了一个简单有效的区块链
那么区块链意味着什么?
最初, 区块链是一项大型现代企业看来都很具有颠覆性的技术, 即使不用加密货币或者分散式账本 (Distributed ledger) 这样听起来具有颠覆性的名称也是如此
现在, 你可能经常听到有人通过说我们在做区块链来吸引投资者的注意区块链的概念也被广泛传播, 此时的概念基本上是指围绕分散式账本概念构建的开放式的计算机网络
我们甚至看到了不使用一个区块链来构建的区块链, 取而代之的是其他的存储技术, 比如说 DAG(有向无环图)
很多在职者提到区块链时, 他们指的其实是一个只与我们信任的人分享的共享式数据库 (shared database) 这并不是一个新鲜的事物, 分布式数据库 (distributed database) 在比特币出现时已经存在了至少十年
区块链的魅力在哪里?
区块链真正的魅力不是在于数据存储的技术, 而是如何使网络中所有的不可信用户达成共识
举例来说, 通过区块链, 可以让每个人都承认 Alice 支付且仅只支付给了 Bob 通过她的交易信息可以证明她没有支付双倍的金额(例: Alice 在完全相同的精确时间同时支付了 $5 给 Bob 和 John)
双重支付问题是比特币所取得的主要突破
交易信息将被存储在于网络绑定的一个区块链当中网络中的任何用户都可以下载该区块链的副本(如果他们选择这样做的话), 然后运行软件检验网络中加入的交易信息
软件将拒绝任何形式的双重支付尝试如果交易有效, 软件将更新区块链中比特币 (或其他资产) 的所有权
当用户使用区块链进行交易时, 他们的软件实际上做了以下工作:
软件 (用户的钱包) 创建一个脚本这个脚本是用所有计算机都可以处理检验的计算机语言编写的这个脚本通过私钥进行了签名, 网络的用户可以通过他们的私钥来证明他们对某一区块链的所有权
一旦通过数字签名证明所有权之后, 网络就可以继续处理脚本内容以上面提到的场景作为最简单的脚本实例 Alice 支付给 Bob 五美元, 此时网络中的计算机将检验 Alice 交易条目的真实性, 如果交易有效, 整个网络将同意更新信息, Alice 的账户将减少 5 美元, Bob 的账户将增加五美元
一旦使用数字签名证明了所有权, 网络就可以继续处理脚本最简单的脚本将简单地说给 Alice 5 美元然后网络上的计算机将验证 Alice 在区块链中有一个条目; 如果有效, 整个网络将同意更新 Alice 的账户, 减少 5 美元, 而 Bob 的账户增加 5 美元
这里还有一个有趣的现象: 一个常见的误解是比特币不提供合约实际上提供了! 一个脚本就是一份合约当你听到智能合约一词时应当意识到这是交易脚本的营销术语
区块链的关键问题是双重支付问题我上面解释的过程并不能解决这个问题
如果世界各地的两台电脑同时收到来自 Alice 的不同脚本怎么办? 一个脚本说: 给 Bob 五美元, 另一个脚本说: 给苏珊五美元网络如何达成共识?
你瞧, 区块链的魅力不在于区块链, 而在于工作量证明
工作量证明是区块链网络用来确保网络分散性的计算机算法, 它还可以防止网络中的计算机自己构建历史信息
下面给出理解工作量证明的一个简单方法:
想象在网络中运行着一个彩票系统, 每隔几分钟网络会随机选择一台计算机为获胜方此时网络会说: 这台电脑是赢家!
然后网络对获奖的电脑说: 把你最新的有效交易块和中奖彩票交给所有其他的电脑如果你能证明你有中奖彩票, 所有其它的计算机将检查你提供的交易块是否只包含有效的交易信息如果确实如此的话我们会更新我们的区块链来获得你新创建的区块, 相应地你会获得你的奖励
这是简化的加密货币挖掘 (cryptocurrency mining) 通过仅允许一个用户提供一个交易块, 我们可以确保 Alice 的双重支出尝试中只有单个记录进入交易块
此时如果不同的计算机正在构建不同的交易块即 Alice 目前有双重支付的交易在网络中传递, Alice 最终只能花一笔钱这是因为会根据提供的之前最新的区块来完成他们的副本的更新, 之后的更新会忽略任何与最新副本不匹配的区块
现在每个人都拥有最新的区块链副本, 之后创建的任何新区块都必须通过哈希链接在当前区块链之上
什么是区块链(The Blockchain)?
通常来说, 这个术语通常用来代表第一个区块链比特币区块链不过, 在现在的营销环境下, 它的概念已经很模糊了
来源: https://cloud.tencent.com/developer/article/1055228