Skip to content

绪论

前言

人类文明的整个发展历程,都伴随着记账科技的持续演化。

按照科技发展的一般规律,可将记账科技从古至今的演化过程大致分为四个阶段:单式账本、复式账本、数字化账本、分布式账本。

  • 单式账本:'某日收到张三白银 3 两'
  • 复式账本: '某日收到张三白银 3 两 -- 李四', '某日向李四支付 3 两 -- 张三'
  • 数字账本:计算机统一数据库
  • 分布式账本:由交易多方共同维护同一个共享的分布式账本

区块链实际上是记账问题发展到分布式场景下的天然结果。

简介

  • 概念:它是许多参与者共享的特定类型的数据库。这个特殊的数据库只是一个交易列表,记录着网络中发生的每笔交易。
  • 特点:
    • 每个人都可以拥有自己的交易列表备份。
    • 强有力的货币激励措施消除各方之间信任成本。
  • 解决了什么问题?
    • 摒弃信任中介。 (传统交易通常引入第三方来解决相互不信任的人进行的交易,如:支付宝、银行。)
  • 如何做到?
    • 每个人都具有相同的交易列表,因此很难欺骗网络接受虚假交易。
    • 通过与一些加密算法和货币激励相结合,鼓励所有节点积极参与记账以及规避作弊。
    • 区块链几乎无法篡改。 改变历史记录的唯一方法是让大多数节点(矿工)同意这样做
  • 坊间观点
    • 下一代价值互联网。- 蒸汽机之于第一次工业革命
    • 世界上最慢的数据库/庞氏骗局
    • 技术本身和商业运作是不同的,技术就是为了解决某一系列问题,其本身并不应该被抨击。

比特币本身仅是基于区块链这一技术的一种加密货币(除此之外还有莱特币、以太币等许多种加密货币)。

底层

区块链本质是一个分布式账本,每个节点都有该数据的副本。 既是账本那就要求:

  • 各节点数据一致(数据的一致性和不可篡改性)
  • 需要有人主动记账(区块生产和验证)
  • 需要他人认可记账权,且认可新记的账(共识机制)

除此之外,区块链还拥有着以下特点:

  • 透明性: 所有账本数据公开透明,任何人都可以查看。
  • 匿名性: 任何一堆交易数据都没有明确的发送方和接收方,所有人都可以参与。

账本

节点中的账本通常保存的就是一条区块链, 在这个语境下,区块链是一种数据结构,用来存储交易记录。这个数据结构的基本组成部分是“区块”(Block),每个区块包含多条交易记录,并且区块之间通过加密哈希函数相互连接,形成一个链条。下面是一个区块链节点中账本数据结构的大致描述:

节点中的账本数据结构

js
- 1.区块(Block)
  - 区块头(Block Header):
    - 前一个区块的哈希(Previous Block Hash):指向前一个区块的哈希值,用于保持区块链的连续性。
    - 时间戳(Timestamp):记录区块被创建的时间。
    - 难度目标(Difficulty Target):用于挖矿过程中计算工作量证明(PoW)的难度。
    - 随机数(Nonce):在工作量证明中用于找到满足条件的哈希值。
    - 梅克尔树根(Merkle Root):该区块内所有交易的哈希值通过梅克尔树(Merkle Tree)计算得到的根哈希值,确保交易数据的完整性和一致性。
  - 区块体(Block Body):
  - 交易列表(Transaction List):该区块内包含的所有交易记录,每条交易通常包含输入、输出以及相关的签名等数据。

- 2.交易(Transaction)
  - 交易ID(Transaction ID):交易的唯一标识符,一般通过交易内容的哈希值生成。
  - 输入(Inputs):标识资金来源(即之前区块中某个交易的输出),通常包括一个指向之前交易的引用和解锁脚本。
  - 输出(Outputs):标识资金去向,通常包括接收者的地址和锁定脚本。
  - 交易金额(Amount):转账金额。
  - 数字签名(Digital Signature):确保交易的合法性和发起者的身份验证。

- 3.默克尔树(Merkle Tree)
  - 是一种二叉树结构,叶子节点是交易的哈希值,非叶子节点是其子节点哈希值的哈希。根节点称为“梅克尔根”,用于快速校验区块中交易数据的完整性。

之后所有的探讨都围绕这个数据结构的由来、以及这个数据结构的作用展开。

君子慎独