许多人身处加密货币生态系统中,却对比特币的运作方式一知半解。不幸的是,比特币正是这个生态系统的核心。编写这份指南的目的在于全面阐述比特币的概念。
通过了解比特币的运作原理,您将更容易理解在去中心化金融(DeFi)中开发的所有内容(如 BRC20、STAMPS、SRC20、Ordinals 等),这将为您日后的学习和应用提供便利。
比特币是加密货币生态系统的开创者,它的出现引领了一系列创新。
1. 地址与密钥
在比特币中,一切都始于密钥。密钥共有三种类型:
- 私钥
- 公钥
- 地址
私钥首先生成,随机选取。私钥是通过数学过程生成的,每次生成都有一个不同的私钥。生成两个相同的私钥的概率极低,就像从所有已经存在的人群中挑出两个基因组完全相同的人一样。
公钥是通过椭圆曲线乘法从私钥生成的。这个函数是单向的,可以根据私钥 x 计算出函数值 f(x),但无法从 f(x) 推导出 x。公共地址是通过哈希函数从公钥生成的,该函数同样是单向的。
公共地址用于接收比特币($BTC),而私钥用于解锁相应的公共地址中存储的比特币。
如何生成私钥?
正如前文所述,私钥是在无限大的集合中随机生成的,以避免两次生成相同的私钥,因此需要大量的熵源。
SHA256 算法引入了一个 256 位(10^77)的数字。以下是一个 Python 脚本,它可以:
- 创建一个唯一的私钥
- 从私钥生成公钥
- 从公钥生成地址
如果您希望存储仅自己知道的私钥,这个脚本将非常有用。
比如说,最早的比特币钱包是实体卡片,一面印有私钥(用于消费),另一面印有地址(用于接收),使用非常简单。然而,这种方式并不安全。
2. 钱包
钱包是一个必须了解的重要概念。它只是一个应用程序,让您可以:
- 管理密钥和地址
- 监控余额
- 创建交易
- 签署交易
钱包并不存储比特币(BTC)!它包含私钥,可以签署交易,从区块链中解锁比特币。
钱包有两种类型:
- 非确定性钱包
- 确定性钱包
非确定性钱包生成一组无关的随机私钥。这种类型的钱包并不常用,因为管理起来相对较难,私钥之间没有关联,需要一个高效的备份系统。
确定性钱包从种子生成私钥,因此所有私钥都是相互关联的,并且可以从种子重新生成。这些钱包(也称为 HD 钱包)便于使用和备份。
如果你有一个钱包,99% 的可能性是确定性钱包。对于 HD 钱包,种子通常使用 BIP-39 标准转换为助记词(你可能已经有了一个)。
助记词易于抄写、记录在纸上和阅读。是的,我指的就是那些 12 或 24 个单词。Ledger 钱包就是一个 HD 钱包的例子。
首次使用时,您需要记录助记词,以便在必要时恢复所有私钥。而 Ledger 钱包更为安全:
- 未连接到互联网(冷钱包)
- 需要实体确认
冷钱包将私钥离线存储,远离任何互联网连接。这意味着即使黑客获得了您的计算机或智能手机的访问权限,他们也无法访问您的冷钱包并窃取您的私钥。这种方式更为安全。
热钱包通过与互联网连接的存储方式来存储私钥。热钱包通常用于日常交易,因为它们易于访问,可用于快速发送或接收比特币。尽管不太安全,但有时它们具有一定的实用性。
3. 交易
交易是理解比特币的核心部分。
每笔交易都会创建未花费交易输出 (UTXO),以作为未来交易的输入。
在比特币中,您不直接花费比特币,而是消费未花费的交易 (UTXO)。
比特币网络中的交易与您在区块浏览器中看到的并不完全相同。
假设 Alice 向 Bob 发送 0.015 比特币,并支付 0.0005 比特币的手续费。
这笔交易在比特币区块链中的展示如下
可以看到什么呢?正如我所说,在比特币中我们花费 UTXO,因此 Alice 花费了她的“vin”UTXO,并在“vout”中创建了两个新的 UTXO。
Alice 有一个价值 0.1 比特币的 UTXO,为了支付给 Bob,她必须创建两个 UTXO,一个给 Bob(0.015 比特币),一个给她自己(找零)。
“scriptPubKey”中的文本定义了新 UTXO 的花费条件。
用人类的语言来说,这意味着:要花费 UTXO,用于签署交易的私钥必须对应于“scriptPubKey”中给出的地址。
第一个“vin”部分是 Alice 从之前的交易中收到并现在要花费的 UTXO。
下面是这个列表中每个参数的含义:
Txid:交易 ID,引用包含要花费的 UTXO 的交易vout:一个索引,标识引用了该交易中的哪个 UTXO(第一个为零)
scriptSig:满足 UTXO 上设置的条件,解锁它以进行消费
sequence:用于时间锁定
解锁脚本由 Alice 的钱包构建,首先检索引用的 UTXO,检查其锁定脚本,然后用它来构建满足该条件的解锁脚本。
交易费用并未在交易中明确标明。
它们是通过计算输入总和与输出总和之间的差额来确定的。
如果 Alice 没有将输出返回给自己(找零),她将支付 0.085 比特币的交易费用。
通过将交易中包含的所有信息记录在区块链中,区块浏览器能够以更易读的方式显示交易。
注意,在每笔交易中,一个 UTXO 被分成两个或多个 UTXO。
随着时间的推移,包含越来越少比特币的 UTXO 会越来越多。
节点需要更多的内存空间来存储这些 UTXO,这可能在未来导致问题。
4. 区块链
区块链数据结构是一个有序的、按反向链接的方式排列的交易块列表。
自比特币诞生以来,所有的交易,无论大小,都被记录在区块链中。
现在我们来仔细分析一个区块的结构。每个区块由四部分组成:
- 区块大小
- 区块头
- 交易计数器
- 交易
区块头包含以下元素:
区块头主要负责与前一个区块链接,并给出与区块上下文相关的全局信息摘要(如 Merkle 树交易、难度、时间戳等)。因此,每个区块都链接到前一个区块,每个区块头中都包含前一个区块的哈希值。
这就是形成连接所有区块的链的关键所在。
那么第一个区块呢?
创世区块已被直接编码,所以每个节点都始终“知道”创世区块的哈希值、结构、固定的创建时间,甚至其中的单个交易。
第一个区块的标识符:000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
通过在区块浏览器中查看这个区块的内容,我们可以看到中本聪留下的消息。这条消息既可以帮助我们确定区块链的年代,也可以让我们理解比特币的创建初衷。
« The Times 03/Jan/2009 Chancellor 即将对银行进行第二次救助 »。
6. 挖矿
挖矿是在创造新比特币的同时,确保比特币保持去中心化的过程。矿工的主要任务包括:
- 验证交易
- 将交易整合到区块中
- 将区块添加到区块链中
总共有 2100 万枚比特币将被挖掘出来,大约每 4 年(减半周期),分配给矿工的比特币数量减少一半。
最终,矿工将只能通过交易费来获得奖励,总有一天所有的比特币都会被挖掘完。
节点(包括矿工节点和普通节点)负责验证交易(如语法、供应、双重支付等问题)。一旦交易获得验证,它们就会被放入一个“内存池”,在那里它们等待被矿工节点(具备挖矿能力的节点)整合到候选区块中。
平均每 10 分钟就会出现一个新的区块。为了将这些区块整合到一起,矿工需要提供证据,证明他们已经付出了一定的时间和努力来验证这个区块(即“工作证明”)。
从概率角度看,提供更多工作量的矿工更容易完成区块的验证。
矿工所进行的工作基于 SHA256 算法,需要注意的是,对于给定的输出,无法直接确定对应的输入。
因此,工作证明包括找到一个输入,该输入能产生一个开头具有一定数量“0”的哈希值(输出)。
所以,矿工需要尝试数万亿种可能性,以找到满足设定标准的哈希值。
“0”的数量越多,难度越大。这就是比特币网络根据网络算力调整挖矿难度的方式。
如果网络中有很多矿工,他们都拥有大量的计算能力,那么网络将要求输入产生更多开头的“0”的输出。
网络难度会不断调整,以确保每隔 10 分钟产生一个新区块。
7. 安全性
比特币的安全性源于其去中心化特性,只要保持去中心化,比特币就能确保其安全性。
要攻击比特币,就需要整合虚假交易(如双重支付等)或拒绝执行某些来自区块链的交易。
然而,要将一个区块添加到区块链中,必须通过与其他矿工竞争的工作证明。
只要存在这种竞争,就很难将错误区块整合到链中。
攻击者必须投入大量工作才能成功。
即便攻击者投入巨大能量,成功的可能性也并非100%,因为他们并不能确保一定能赢得竞争(除非投入了100%的工作量)。
特别是因为节点还会验证交易并可以拒绝执行它们。
总的来说,攻击比特币所需的投资巨大,而成功的机会微乎其微(接近于0)。
因此,没有人会有兴趣攻击比特币。
这得益于比特币的去中心化特性,其能量来自世界各地。
如果工作量集中在少数群体或个人手中,比特币将变得中心化,这个中心化实体就可以通过尝试双重支付或拒绝交易来影响区块链。
去中心化是比特币的基石。
8. 我对比特币的看法
比特币是我进入这个生态系统的主要原因,在那时山寨币并不多,所以我有时间深入研究比特币。
除了它的价值之外,我对比特币所承载的思想也感兴趣。
我们生活在一个中心化的世界里,我们并不真正拥有任何东西。
甚至你在银行里的钱,你为之付出努力的钱,也不完全属于你。
比特币拥有我所追求的自由和独立的价值观。
我认为比特币能让我重新掌握控制权。
比特币为任何人提供了成为自己银行的能力,其资产价值通过通缩属性得以保值。
这是一种与黄金等价的资产,但可以在全球范围内轻松兑换,这是黄金无法做到的。
对我来说,它不仅仅是一种货币,它还代表:
- 价值观
- 一种心态
- 原则
- 一个理念
- 一个概念
我们常常忘记,正是比特币为今天我们所知道的所有其他区块链和加密货币铺平了道路。没有比特币,我们今天就不会在以太坊上拥有智能合约。
我希望这篇指南能帮助您更好地了解比特币的技术运作。了解比特币非常重要,尤其是在 STAMPS、Ordinals、BRC-20 等重要发展阶段。这份指南所包含的信息仅占 @aantonop《精通比特币》一书中的0.1%。如今,当我想回顾技术细节时,我仍然会使用这本书。如果您已经理解了我所讲的内容并希望了解更多细节,那么这本书将是您的下一个阅读选择。
所有评论