区块链基础
引言
区块链技术是一种革命性的数据存储与追踪方式,同时让任何人都能查看这些数据。它把数据整理成一份公开的历史交易清单,人人可看,但谁都无法修改。这份公开的交易清单统称为区块链账本。
了解区块链的各个层次之后,你就能读懂区块浏览器这个工具所展示的结构:区块的列表、这些区块里的交易,以及每一笔交易的细节。想亲眼看看,可以试试 Etherscan,这是以太坊上很常用的区块浏览器。
区块链的结构
「区块链」既可以当名词用(比特币区块链),也可以当形容词用(区块链技术)。无论哪种用法,区块链指的都是加密货币赖以建立的整个结构。
从外往里看,区块链有 3 个层次:
- 整条
区块链由按顺序连接在一起的区块组成 区块由一组组交易汇集而成交易是网络上地址之间的价值转移,或是发给程序的指令
这三层结构合在一起,构成一份密码学账本:网络上所有交易的、不可更改的历史记录。
知识检测 1
什么是区块链?
-
[ ] 由交易整理而成的一组组区块
-
[ ] 一份人人可看、谁都无法修改的共享记录
-
[ ] 按顺序连接在一起的区块
-
[ ] 以上都对
细看账本
在常见的货币体系里,我们信任银行这类第三方去记录每个人有多少钱。但要真正做到 Bankless,我们想要一个不必信任某个实体来管理账本的体系。
账本是区块链上有史以来所有交易的清单;对于公开区块链,任何人都能查看它。账本里一批批相互独立的交易组成区块,区块又共同组成区块链。
新交易被记入账本后,每个地址上的余额随之更新;过去的交易无法改动。这就像允许任何人随时查看所有人历来的银行账户交易记录。
账本上的交易
我们来看几笔示例交易:
- Alice 向 Bob 发送 5 ETH
- Bob 向 Charlie 发送 2 ETH
单笔交易显示的是每个地址上加密货币数量的变化,因此所有交易的累计结果,就是每个地址持有的加密货币数量。
⇒ Alice 减少了 5 ETH
⇒ Bob 净增加了 3 ETH(收到 5,发出 2)
⇒ Charlie 增加了 2 ETH
知识检测 2
关于公开区块链的账本,下面哪一项是正确的?
-
[ ] 所有交易都公开,过去的交易无法更改
-
[ ] 账本记录着每个地址当前持有多少加密货币
-
[ ] 账本会随着新交易的加入而增长
-
[ ] 以上都对
去中心化
写进区块链账本的交易不仅无法更改,还会在一个庞大的计算机网络里被共享和分发。为了确保没有任何单一实体有权改动数据,区块链账本的副本被保存在网络中的许多台计算机上,这些计算机叫节点。
正是这种数据共享,让区块链账本变得去中心化。没有任何单一权威或实体控制这些数据。像以太坊这样的区块链还是公开的,因为账本人人可查。
这一课你只需要记住:账本数据被共享在运行以太坊网络的众多计算机上。
知识检测 3
是什么让区块链去中心化?
-
[ ] 只有一个实体可以向区块链写入数据
-
[ ] 它符合政府设定的去中心化要求
-
[ ] 没有单一实体控制账本,账本存在许多计算机上
-
[ ] 账本保存在一台安全的服务器上
区块的构造
区块链有一个重要特性:交易数据一旦被写进区块,就无法再更改。原因在于每个区块都有一个独一无二的区块哈希,像指纹一样,用来把区块一个接一个地串起来。谁要改动过去的交易,就必须同时改掉那个指纹,以及它之后每一个区块的指纹,因为每个指纹都依赖前一个。
所以每个区块其实就是一组交易,加上一个由区块内容算出的独特指纹(它的区块哈希)。区块之所以连成一条链,是因为每个区块都引用了前一个区块的独特指纹,从而形成一条完整相连的区块链。
知识检测 4
区块哈希的用途是什么?
-
[ ] 加密区块数据,让别人读不到
-
[ ] 把区块串联起来,让过去的交易数据无法更改
-
[ ] 确保交易被发送到正确的地址
-
[ ] 确保区块链保持去中心化
区块内部
记住,区块数据就是一组打包在一起的交易。深入单个区块看,我们会看到一份交易清单,以及一些关于谁创建了这个区块的数据。
回到前面讨论区块链账本时的例子,那两笔交易可能被归进同一个区块,也可能随着时间被分散到多个区块里。但无论落在哪个区块,它们最终都会被记入整个区块链账本。
- Alice 向 Bob 发送 5 ETH
- Bob 向 Charlie 发送 2 ETH
别忘了,每个区块还必须引用上一个区块的区块哈希,才能把区块链连起来。
知识检测 5
一个区块里包含哪些信息?
-
[ ] 之前所有区块里包含的全部信息
-
[ ] 与区块链相关的一切,因为区块大小没有限制
-
[ ] 交易数据,以及对上一个区块的引用
-
[ ] 固定时间段内产生的全部交易数据
单笔交易
任何区块链上的数据,本质上都是一份交易清单,记录着货币在用户之间的转移。每一笔交易都必须有发送方的数字签名才有效。
你在钱包里确认交易时做的就是这件事:用你的数字签名来授权一笔交易。可以把它想成在支票、收据或刷卡单上签字的数字版。
交易可以很简单,比如转出加密资产;也可以更复杂,比如兑换加密资产,甚至部署一段被触发时才执行的特殊代码,也就是智能合约。
最后,每笔交易都有一个独一无二的数字标识,叫交易哈希,其他交易都不会与它相同。这让人们日后可以方便地指认任何一笔交易,也确保这笔交易的细节事后无法被改动。
知识检测 6
区块链上的数据就是一份被打包进区块的交易清单。这样的交易例如:
-
[ ] 发送或接收加密资产
-
[ ] 改变区块的大小
-
[ ] 编辑过去的区块链数据
-
[ ] 以上都对
用户地址
地址是一个公开标识,任何人都能在区块链上查到它。就像电子邮箱地址一样,谁都可以往里面转账,但只有掌握私钥的人,才能解锁并动用该地址上的资金。
在以太坊上,地址总是以 _0x__________ 开头,由 42 位数字和字母组成,从该地址的公钥推导而来。
在区块浏览器里查看单笔交易时,我们能看到 From: 和 To: 两个地址。这并不能告诉我们控制这些地址的人是谁,但让任何用户都能追踪加密货币在区块链账本中的流动。
知识检测 7
关于区块链地址,下面哪一项是正确的?
-
[ ] 它们是区块链上不同主体的公开标识
-
[ ] 在以太坊上它们总是以 0x 开头
-
[ ] 谁掌握私钥,谁就能动用该地址上的资金
-
[ ] 以上都对