NOTE

区块链是是一种技术,广为熟知的比特币和以太坊只是使用了这种技术。区块链和金融是强相关的,因为它的创建者(中本聪)一开始就是为了金融的目的(比特币)而创造了它。

在大多谈到区块链的时候,总是会伴随着 Web3,很容易让人以为 Web3 就是区块链,就像认为比特币就是区块链一样,实际上 Web3 是一种基于 Web2 的对下一代互联网的畅想。

本文主要解释区块链的技术和原理。关于前文提及的两个概念,可以查看:

图片来源:Surety

首先对区块链做一个总结放在最前面:

区块链就是通过密码学的方式形成的一个由集体维护的分布式数据库。

麻将就是区块链!

张三、李四、二狗、麻子四个伙计,是多年的“雀友”,人称麻将四人组。麻将四人组的玩法和大家并没有差别,但是他们不用现金结账,每次通过记账来记录每个人的输赢,而且他们的记账规则很奇特

1、自摸才算胡牌(正确写法是“和牌”,为了便于理解都写成“胡牌”)。
2、输赢暂时都不用给钱,而是先记个账,四人每人一本账本。
3、每局由胡牌的人先记账,其他三人看过没问题后,把这一局的记账照抄到自己的账本上,如果记错了或者记假账,就没法拿到赢得钱。
4、整个打麻将过程都有监控,任何人都可以随时核对输赢情况。

举例说明,假设第一局二狗胡了,其他三人每人输给二狗 200 元。赢家二狗有优先记账权,在自己的账本上记上一条:

二狗的账本

局数张三李四二狗麻子
第一局-200-200600200
第二局
第三局
第 N 局

经张三、李四和麻子检查,确认没毛病,于是他们分别在自己的账本上照抄一份,最后每个人都有一份相同的账本: 

张三的账本

局数张三李四二狗麻子
第一局-200-200600200
第二局
第三局
第 N 局

李四的账本

局数张三李四二狗麻子
第一局-200-200600200
第二局
第三局
第 N 局

二狗的账本

局数张三李四二狗麻子
第一局-200-200600200
第二局
第三局
第 N 局

麻子的账本

局数张三李四二狗麻子
第一局-200-200600200
第二局
第三局
第 N 局

大家都记好账之后,开始第二局的游戏。假设第二局李四胡了,其他三人都需要支付李四 100 元,于是,这次由李四来记账,记账结果如下:

局数张三李四二狗麻子
第一局-200-200600200
第二局-100300-100-100
第三局
第 N 局

经其他三人确认后,大家按李四记录照抄到自己的账本上,结果如下:

张三的账本

局数张三李四二狗麻子
第一局-200-200600200
第二局-100300-100-100
第三局
第 N 局

李四的账本

局数张三李四二狗麻子
第一局-200-200600200
第二局-100300-100-100
第三局
第 N 局

二狗的账本

局数张三李四二狗麻子
第一局-200-200600200
第二局-100300-100-100
第三局
第 N 局

麻子的账本

局数张三李四二狗麻子
第一局-200-200600200
第二局-100300-100-100
第三局
第 N 局

这个流程,保证了每一局游戏结束后,所有人的账本信息都是一致的。

一轮记账结束后,再开始下一局游戏……

麻将四人组的记账方式,我们可以总结出以下特点:

1、打麻将的四人每人都记账,人人都一本账,每个人的账本是分开的,这种记账方式称为分布式记账。

2、谁胡牌谁记账,其他人复制胡牌人的记账,这样一来,人人都有一本和其他人一样的账本。通过胡牌产生记账权,这是四人组的共识,这种产生记账人的机制称为共识机制,四人组的共识机制是“胡牌共识机制”。

3、胡牌人记的账,需要经过其他人 3 人的检查,一旦发现记假账、记错账,其他人是不会同意的,不仅如此,这把胡牌还不算数,这一局都白忙活了,胡牌人为了避免空欢喜一场局面发生,就会小心且老老实实的记账,这样就保证记录的真实性,说的好听一点,这就叫记账的不可伪造性。

4、假设麻子手气太背,输了太多,想修改自己的账本,会发生什么情况呢?最后算钱的时候,大家会发现,麻子的账和大家的对不上,大家肯定知道麻子修改记账了,其他人肯定不相信麻子记的账,而且整个过程还有监控。你看,修改记账,门都没有!说的好听一点这叫记账不可篡改

5、输了钱的麻子为啥想改账本呀,就是想赖账,记账不可篡改,赖账也就没路了,这叫啥,这叫防抵赖性!

感受到了麻将四人组记账方式的厉害之处了吧!

非技术解释

技术分解

在解释区块链具体是什么东西之前我认为最核心的是要知道“我们为什么要用区块链技术”。

1、区块链的诞生是为了解决什么问题?

在支付宝转账的时候,作为用户的你感觉是把你的钱直接打到对方的账户中。但…事实是这样的:

首先是你向支付宝转入 100 元,然后支付宝在先对方转入 100 元,这里支付宝承担了“第三方”的角色,它帮你记录了你向对方转账的全过程。

那为什么我们俩转账为什么要有一个“第三方”?

想象一下,你通过网络,向一个与你相隔万里的陌生付款,你应该怎样保证这笔交易是安全的、可信的?例如,在交易前,你确定对方的账户是可信的?在交易过程中,你的资金不会暴露与风险之?在交易后,你的的交易被所有人都承认其合法性?

像支付宝和银行这样的金融机构一样,“第三方”主要是提供信用背书,它是通过政府权威向大众提供的信用背书。通过这样的机构,人们得以同全世界的商家进行交易。

2006 年,大洋彼岸的一位神秘人在想,我为什么不能直接把这笔钱直接付给对方呢?

于是比特币就出现了,这是首个实现直接把这笔钱直接付给对方的金融产品,它的底层正是区块链技术。

传统中心化的交易方式:

图源:https://www.yuque.com/tedawanlamian/pxki07/ckggsh

区块链网络下的”去中心化的交易方式:

图源:https://www.yuque.com/tedawanlamian/pxki07/ckggsh

在去中心化的网络下,每个用户之间都可以是直接联系的,不再有任何第三方的参与,用户间的转账就像手递手付现金一样,这也是为什么比特币会被称为”电子现金“。

好了,现在 A 已经把钱转给 B 了,那么谁来记这笔账呢?之前有支付宝帮我记账对账,会统一存在支付宝后台系统中。为了让所有用户的交易都被记录下来并且账目都是正确的,支付宝会为此付出巨大努力。看看支付宝的初期…

《造梦者》中说:“由于系统尚未完善,早起支付宝都是由员工手工对账,那时候 B2B 一天 1000 来笔的收入,已经对得焦头烂额了”

每天 1000 笔的账单,人工对账就已经很痛苦了。

以现在支付宝的体量,每天少则几十万的账单,即使是系统对账也难免漏单,并且要付出相应的人力、物力来维护这一套非常复杂的收支清算系统。

说了这么多,那区块链是怎么对账的呢?答案是:没有! 这正是区块链的创新之一。

回到中心化的记账模式中,我们已经解释过为什么需要对账,因为“信用背书”使得交易具备安全性和合法性。

在某些时候,我们并不需要通过中心化的方式实现这种“安全性”和“合法性”。

回忆一下幼稚园的经历,在期末老师发奖状的时候,似乎并不是班长把你带到办公室,在老师的监督下给你发的这个奖状,相反 —— 这个奖状是在全班小朋友的见证下发给你的。该属于你的奖状仍然属于你,并且所有的小朋友仍然承认你的奖状的合法性,基于这个实践,我们是否可以在交易中重现呢?

答案是可以,区块链孕育而生。

区块链究竟是如何实现的呢?

为了方便理解,我们可以把幼稚园班上的每一个小朋友都看作是一个“节点”,他们是交易行为的见证者和亲历者 —— 他们可以证明和保障交易行为的有效性和安全性。

在区块链中的每一个节点自己都有一个账本,这个账本是实时更新的,区块链网络中发生的任何交易都会被记到每个节点的的账本中,没错,别人的帐你也有,但是你是不知道这个人是谁的,因为他们统一都长这个样子: 0xd7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592

这就意味着,以前由一个中心化的机构帮你记账对账,现在由每一个网络中的参与者帮你记账,大家都有同一个账本。如下图

图源:https://www.yuque.com/tedawanlamian/pxki07/ckggsh

每个人拥有同一个账本,即使你篡改了你自己的账本,让你的账上多了 1 亿,可是 以上的账本中你的账户还是 1 分钱,那就说明你的帐上余额就是 1 分钱,无法抵赖。当然,如果你能控制网络 的人在账本中帮你把一分钱变成 1 亿,你就能获得一亿,但基本上就要动用举国之力了…,这就是为什么大家说区块链网络是安全的,因为攻击成本太过巨大,想象一下,你为了更改你的账本,需要购买世界上超过一半甚至一倍的用于比特币挖矿的矿机,现在恐怕没有任何一个人能做到。

说了上面这么多其实就是想说明区块链的几个特性:

  1. 去中心化:,没有第三方中介,一切都由“程序”来完成。
  2. 安全性:主要体现在分布式、 攻击,即使一个节点被攻击或宕机也不会影响网络的运行。
  3. 去信任:一切社会行为都要建立在”信任“的基础上,这也是区块链解决的最根本的问题。

在《造梦者》中马云说过一句话:“淘宝对中国社会最大的改变就是信任”。时至今日,区块链技术解决的最核心的问题就是“信任”。

技术解释

非技术分解

首先,区块链,字面上理解就是由多个“区块”连接成为的一种“链式”的数据结构。

就像这样:

图源:https://www.yuque.com/tedawanlamian/pxki07/ckggsh

下面来详细说一下具体一个区块是什么样的数据结构:

图源:https://www.yuque.com/tedawanlamian/pxki07/ckggsh

  • 区块高度:可以理解为每个区块的唯一 ID,从零开始的“创世块”(即块高度为0),一段时间生成一个块,块高度加 1。
  • 头哈希:每一个区块都有一个唯一哈希值,依据 上一个区块的头哈希 + 数据块哈希 + 随机数 生成
  • 父哈希:上一个高度区块的头哈希
  • merkle 根:区块中每一笔交易对应一个哈希,呈树状结构,生成的最终值(根),代表了该区块中的交易。
  • 难度:难度不是固定不变的,会随着网络现有算力的变化而自动调节
  • Nonce:一个不能重复的随机数。
  • 区块体:一定时间内所生成的交易信息,即账本。

说到这里,一定还有头脑中没有形成区块链的概念,所以我下面描述一个比特币中交易的“全流程”:

小明和小红每人有一个比特币的地址(公钥:相当于是我们银行卡的卡号 )和一个私钥(相当于银行卡密码或者说你的签名),像这个样子:1JQMpgRThCJjKbs7P8Ht6x142zjPJFmZVY

我们需要填写转账的金额和对方的比特币地址,就像我们平时用银行卡转账一样的操作,一段时间后,对方即可收到你的转账金额。

这是作为用户能感知到的,看上去和我们平时的转账交易没什么不同,只是“卡号”看起来奇怪了一点,交易时间变长了一点。

那么当你按下“转账”按钮时,背后的区块链系统到底发生了什么?

下图是一幅比特币交易流程图:

图源:https://www.yuque.com/tedawanlamian/pxki07/ckggsh

  1. 使用私钥对这笔即将发生的交易进行签名
  2. 从你的客户端把你的这笔交易提交到区块链网络
  3. 由已经开启“挖矿”程序的计算机(称为矿机)把10分钟内的交易打包成一个数据块(相当于一个账本,其中就包含了小明的这笔交易)
  4. 这个数据块就是上图中的“区块主体”,而此时,这些区块主体中的交易并未生效。
  5. 那么如何使这些交易生效呢?每个区块中都有一个哈希值,通过不断哈希运算,不断哈希运算(可能是几亿次)最终找到一个比当前哈希小的值,就认为这个区块被确认。即为交易生效,这个过程就称为“挖矿”。
  6. 那谁来做这个哈希呢?全球那么多交易,如果只是一家公司的几台计算机是远远不够的。所以,比特币有“激励机制”,当一台计算机确认了一个区块,就可以奖励 个比特币。为了得到奖励,越来越多矿工就有动力造更大更多算力的矿机来“挖矿 ”。越多的人参与挖矿的竞争,算力就越分散,比特币系统就越不可能被某一个人控制。这就形成了“双赢”的局面,对于矿工来说,想想你每天游山玩水,有一台机器每天帮你赚钱,源源不断地打到你的账户。对于创造比特币的人来说,几乎不花钱一分钱就能常年安全稳定地运行一套这么牛X的系统,一样可以去游山玩水而不用担心系统的维护。

区块链、比特币相关概念及工作原理解释:

查一查:世界上运行时间最长的区块链是哪个?

不是比特币,问题中谈论的“区块链”在 20 世纪 90 年代就开始运行了!

线索:纽约时报(答案在文末)

问题来源:MIT 《区块链与货币》 第一课:十六分钟

参考:

  1. 【书籍】《区块链:从数字货币到信用社会》:这本书从现实版的区块链行为理念深入到区块链的技术世界,整体不算很难
  2. 【网站】我的第一个 NFT: 比较全面和通俗的区块链学习网站,只需1小时即可入门
  3. 【语雀文档】区块链,密码cg1a:涉及区块链、以太坊、智能合约、NFT、百度超级链等知识点(本文引用的大量的图片)
  4. 【飞书文档】:

阅读材料:

什么是区块链?coinbase.com

什么是区块链:blackduck.com

什么是区块链?coingeek.com

什么是区块链:coresite.com

区块链:它是什么,它是如何工作的,为什么它很重要:builtin.com

答案

还记得本文的第一张图片吗?

那是 2009 年时,《纽约时报》中 Surety 哈希值的一个例子。

其中写道:

通知&寻物启事

通用登记条目:

区块2-dS8492……

区块3-JnFCg+……

这些 base64 编码值代表在 2009 年 6 月 3 日到 2009 年 6 月 9 日之间 Surety 公证的所有电子文档的组合指纹(即哈希值,译者注)。

参考文章: https://cloud.tencent.com/developer/article/1345496