# 区块链系列课程：VOL1.区块链与以太坊简介

By [scientist](https://paragraph.com/@scientist) · 2021-10-20

---

**本系列课程从第一章区块链基础介绍开始，第一节是区块链与以太坊简介。**\*\*\*\*\\

**背景：信息存储的历史发展**

区块链是信息存储与共识的载体，在了解区块链发展前，我们**先了解信息存储的历史发展**。

在远古时候，人类为了生存聚在一起生活，一块劳动共同对抗大自然的不确定性和外界的威胁。那个时候，由于最多的活动是打猎，捕到猎物会用绳子一个个地拴起来。当时人们发现，结越多，就代表着猎物越多，结越少，就代表猎物越少。就这样，人类开始使用**打结**来表示数量上的不同。

在古代北欧地区，牧羊人利用**刻痕计数法**来记录自己的羊群数量。英语单词score就源自北欧语skor，本意是“刻痕”。由于当地人采用20进制，一条刻痕代表20，所以score也就含有“20”的意思。

夏、商、西周三代时期，数字元号逐渐规范。公元前十四至十一世纪的殷墟**甲骨文**卜辞中有许多数字。其中有13个记数单字、1-9、10、100、1000、10000。

西汉（公元前202年—8年）初期，中国人发明了造纸术（此前靠龟甲、兽骨、金石、竹简、木牍、缣帛等记录文字）。纸的出现让信息的能被记录、传播和继承，带来了革命性的进步，促进了人类文化的传播。**纸也为打孔卡奠定了基础。**

**打孔卡的发展历史**

1725年法国人**Basile Bouchon发明了打孔卡**（穿孔卡），他用在纸上打孔的形式来存储图案，**用于控制纺织机**进行图案织造。

1801年Joseph Marie Jacquard将打孔卡顺序捆绑在一起用于提花织机，这是打孔纸带（Punched Tape）的雏形。

1846年Alexander Bain使用打孔纸带**发送电报**。

1890年，Herman Hollerith发明了**打孔卡制表机**，用于收集并统计人口普查数据，标志着半自动化数据处理系统时代的开始。这种机器不仅统计速度更快，而且能够以新的方式理解信息，很快便应用到了各个行业。

1896年，Herman Hollerith成立了**制表机公司**，这家公司就是后来大名鼎鼎的IBM的前身。打孔卡和纸带直到80年代还在使用，持续了两个多世纪。

随着存储设备的逐渐升级，同体积的硬件存储的容量呈指数级增长，出现了**磁带、磁鼓、机械硬盘、固态硬盘等**硬件存储设备。由于区块链需要非常大的存储量，这些硬件存储设备**成为了区块链存储的根基。**

在计算机领域，存储是极为重要的应用。以数据库为例，上层应用在存储数据时只需要和数据库或其他数据管理系统打交道，而数据的具体存储方式不需要应用和开发者担心。目前的应用很多都依赖单一的数据库，有些则依赖于集群部署和多地部署的数据库。但无论如何，这些**数据库都由公司或机构管理。**

一个应用场景：在一个食品供应链领域，食品的生产、加工、运输和零售都来自不同的企业。每个企业都管理着自己的数据库，维护着自己关心的数据。比如：生产方关注产品生产的原料消耗、制作时间、制作成本等；加工方关注产品的采购价格、采购时间、加工价格、加工时间等；运输方关注产品的运输时间、预期交付时间、运输位置、温度等；零售方关注产品的销量、进货时间、销售时间等。

当各方拥有的数据分开，会带来**两个问题**：

\*\*1.数据造假追责较难。\*\*谁都有可能修改自己的数据库。一旦修改，各方难以达成共识找出足够的证据证明具体是谁改的；

2. \*\*数据生态难以形成。\*\*由于各方的数据彼此隔离，想要使用这些全方面的数据实现更高的数据价值就非常困难。

为了克服以上问题，这里提出一个方法：每个业务的参与方都维护同样的数据库，而对于这项业务的每次状态变更都记录在所有方的数据库中。当做到了所有数据库的一致性，那么也实现了数据的共享，能直接核对出数据库的篡改方。

但是，如果完全开放数据库的增删改查权限给每一方，这无形地成为一个分布式数据库，只做到数据共享但无法保证数据可信，无法确定哪些操作是合法以及谁进行了某些操作。

**智能合约**克服了以上问题。比特币的转账逻辑是一个简易的智能合约。以便了解智能合约。再举食品供应链的例子：生产方说自己生产了一个产品，准备发送给加工方。当他想对数据库里的产品数量进行+1操作时，他必须通过大家公认的智能合约里的create方法来增加产品数量。操作方必须先用自己的**私钥签名**才能进行操作，保证数据可追溯且可信任。

假设生产方想要作恶，他只生产了一个产品但却写入了2。此时在区块链中，每个参与方都必须执行一遍以下合约。当大家运算结果都是1，并对1达成共识，那么私自改为2的节点自然无法达成共识，导致账本不被认可。再加上所有的操作都必须先由操作方进行签名，因此可以追溯到作恶的操作方。

**区块链的起源——比特币**

2008年10月，一个自称为**中本聪**的人在一个密码学邮件列表中发布了一篇论文。论文描述了一种称为**比特币**的**数字货币**，但在当时并未得到学术界或者企业界的太多重视。

2009年1月，中本聪发布了比特币软件0.1版，比特币系统正式开始运行。几天后，**第一笔转账发生**。

2010年5月，第一笔比特币支付的真实交易产生：一个弗罗里达的程序员花**1万比特币（当时约25美元) 买了两份披萨**。

2010年7月，**第一个比特币交易所在日本成立**。

区块链的核心思想其实是一种分布式记账。

比较中心化与分布式记账。**中心化记账**：

• 数据的存储和计算都在中心进行

• 交易依赖于对中心的信任

• 中心受到攻击后会造成很大的损失

• 中心本身可能会作恶

**分布式记账**：

• 不需要可信任第三方

• 每个人的账本保存所有交易信息

• 通过类似民主投票的方式保证数据一致

• 大部分记账人诚实，系统则正常运行

值得一提的是，目前很多公司使用了集群数据库解决中心化记账的问题。**但这些数据库仍然由一个机构所管理，没有本质上的改变。**

有了区块链，这里出现了两个重要的问题：**1.节点为什么愿意帮助整个网络维持账本？2.如何防止交易过于频繁导致的网络账本不一致问题？**

第一个问题：为了激励用户参与到区块链中，公链（有别于联盟链）**会采用第一个记账者奖励、交易手续费和MEV激励用户**。以比特币为例，奖励的实现如下：

我们将这种方法称为工作量证明。这种共识算法的记账规则为：

• 一段时间内只能有一个人记账成功。

• 通过竞争解决数学问题来获得记账权。

• 其它节点复制记账结果。

计算规则为：

• 找到随机数Nonce，使得Hash（上一个区块的Hash值，交易记录集，随机数）的值小于目标值。

• 难度根据全网算力。动态变化：diff\_new=diff\_old∗(k∗10)/cost(k), k=2016

• 奖励逐步减半，目前6.25个比特币的奖励。

• 由于以新发行比特币作奖励，因此被称为“挖矿”。

对于第二个问题：需要通过某方法**保证账本一致。**

区块由区块头和区块主体构成，区块头负责实现区块链的基本功能，区块主体包含了交易信息。区块间为链式存储，每个区块都包含前一个区块的哈希值，相当于把上一区块的指纹放在下一区块里，彼此串在一起。

可想而知，一旦有人篡改某个交易信息，所有的区块都需要进行修改，否则哈希验证无法通过，节点数据就出现问题。此外，如果哈希算得很快，那么节点可以推倒重新算一遍。反之如果算哈希需要几十分钟的时间，那么想要修改数据可谓是难比登天。这里的时间就是难度，是后面会讨论的问题。

区块链系统中节点包含以下几类：

**• 钱包**，存储地址和私钥，允许用户交易。

**• 账本**，记录所有交易历史。

**• 矿工**，通过记录交易和解决数学难题来生成新的区块。

**• 路由**，将其他节点传输的交易数据等信息进行广播。

对于节点，它们的**行为模式**包括：

• **监听**， 网络中每个节点都在监听正在发生的交易。

• **加入交易池**，一旦节点监听到交易并验证为合法，就加入到自己的交易池，准备打包进新的区块。

• **挖矿**，所有节点都会做数学题 (挖矿) 来争夺记账权并获取收益，先解出者可以向全网广播区块。

• **验证区块**，当且仅当区块中所有交易均有效且首次出现，其他节点才认同该区块的合法性，并将其加到自己的区块链末尾，一笔新的交易一般需要经过6个区块的确认才算有效。

**区块链的分类**

并不是所有区块链都和比特币一样。根据节点的准入规则，可以将它们分为公有链、联盟链和私有链：

•**公有链**对所有人开放，任何人都能参与，如比特币、以太坊、PlatON等。

•**联盟链**对特定的组织团体开放，如Fabric、BCOS、百度超级链等。

•**私有链**对单独的个人或实体开放，通常由公司或个人内部使用。

**几个著名的公链项目介绍**

\*\*比特币（Bitcoin）\*\*是一种基于去中心化，采用点对点网络与共识主动性，开放源代码，以区块链作为底层技术的加密货币。比特币由中本聪（网名）（Satoshi Nakamoto）于2008年10月31日发表论文提出。\\

\*\*以太坊 (Ethereum)

以太坊是一种通过支付小额费用向任何人发送加密货币的技术。基于它还能创建永不停机、人人可用的各种应用。

**它是 _属于全世界的可编程区块链。_**

以太坊以比特币带来的创新为基础，同时做出了很多改进。

虽然两者都能让您无需支付服务提供商或银行的支持即可使用数字货币，但是以太坊是可编程的，因此您可以基于它构建其它不同的数字资产 - 甚至是比特币！

因此以太坊并不仅仅意味着支付。它还是一个聚集了各种金融服务、游戏和应用的自由市场。在这里没有人可以监控或者窃取您的数据。

**PlatON** 是专注于可扩展性和隐私保护的高性能分布式计算网络，通过可验证计算、安全多方计算、零知识证明、同态加密等密码学算法共同组装的下一代计算架构，为全球人工智能、分布式应用开发者、数据提供方及存有计算需求的各类社区、机构、个人，提供开源架构下的公共基础设施软件开发、咨询、运营服务。

**各类区块链对比**

**公有链**：

•任何人都可加入网络访问/写入数据

•每秒3-20次数据写入

•需要给挖矿者激励

**联盟链**：

•授权公司和组织才能加入网络

•每秒1000次以上数据写入

•机构间互利共赢，无需激励

**私有链**：

•单个公司和组织管理的网络

•每秒1000次以上数据写入

•无需激励

**_END_**

---

*Originally published on [scientist](https://paragraph.com/@scientist/vol1)*
