No jargon, just sharing.
No pressure, just learning.

从原理到操作一步通关 🧠⛏️

本文分两部分:① 用好懂的例子讲清 比特币如何运行;② 手把手搭一个本地测试网络(regtest),现场“挖矿、打包交易、转账确认”。纯学习用途,不构成任何投资建议。

常用入口:

一、比特币到底怎么跑起来的?(超简版逻辑)

  • P2P 网络:每个客户端都是节点,彼此直接连线,不依赖中心服务器。
  • 区块链:每 1 个区块打包若干交易,并把“上一个区块的哈希”写进区块头,像链条一样连起来。
  • 哈希:把任意数据用 SHA-256 算出一段固定长度的“指纹”。数据只要改一点点,哈希就完全不同(雪崩效应)。
  • 挖矿 = 记账竞赛:谁先算出一个小于目标难度的区块头哈希,谁的区块就被全网接受;奖励发到区块里的 coinbase 交易。
  • 难度调整:每 ~2016 个区块(约两周)自动校正,始终让全网平均每 ~10 分钟出块一次。
  • 为什么安全:区块一环扣一环,改早期数据会导致后续所有区块哈希失效;全网遵循“最长链”规则。除非掌握接近全网的一半算力(所谓 51% 攻击),否则篡改几乎不可行。
  • 交易与 UTXO:没有“账户余额”这个概念,只有还未花掉的“交易输出”(UTXO)。花费 UTXO 时,经常会把“找零”打回自己地址,手续费为“输入总额 − 输出总额”。
一句话地图: “下载 Bitcoin Core → 形成 P2P → 打包交易 → 反复哈希碰撞 → 满足难度 → 广播区块 → 全网确认 → 进入最长链”。

二、搭一个「本地比特币网络」来真挖矿(regtest)

我们在同一台电脑上跑 3 个独立节点(cong=中本聪 / wo=我 / ni=你),互为邻居,演示出块、转账、确认的全流程。

1)安装 Bitcoin Core

  • 到官网下最新版:bitcoin.org/zh_CN/download
  • 安装后先不要让它同步主网区块(600+ GB),我们只用本地测试网 regtest

2)为三个节点准备数据目录

假设安装目录是 C:\Program Files\Bitcoin(路径按你的实际环境)。在同级目录新建三个文件夹:congwoni

3)为每个节点创建配置文件 bitcoin.conf

把下列内容分别保存到对应目录的 bitcoin.conf 中(注意端口与账号各不相同)。

① 中本聪(cong)

regtest=1
server=1
txindex=1

[regtest]
rpcuser=user1
rpcpassword=pass1
rpcallowip=127.0.0.1
rpcport=18443

port=18444
listen=1
bind=127.0.0.1
addnode=127.0.0.1:18445
addnode=127.0.0.1:18446

② 我(wo)

regtest=1
server=1
txindex=1

[regtest]
rpcuser=user2
rpcpassword=pass2
rpcallowip=127.0.0.1
rpcport=18453

port=18445
listen=1
bind=127.0.0.1
addnode=127.0.0.1:18444
addnode=127.0.0.1:18446

③ 你(ni)

regtest=1
server=1
txindex=1

[regtest]
rpcuser=user3
rpcpassword=pass3
rpcallowip=127.0.0.1
rpcport=18463

port=18446
listen=1
bind=127.0.0.1
addnode=127.0.0.1:18444
addnode=127.0.0.1:18445

4)分别启动三个节点

以管理员打开命令行,进入 Bitcoin 安装目录,依次运行:

bitcoin-qt.exe -regtest -datadir="cong"
bitcoin-qt.exe -regtest -datadir="wo"
bitcoin-qt.exe -regtest -datadir="ni"

界面左下角能看到连接数;互加的 addnode 会把三人连成一个小型 P2P 网。

5)“一键挖出”创世后的第一个区块(regtest 可快速挖)

  1. cong 节点钱包里新建一个接收地址(假设叫 A)。
  2. 打开 窗口 → 控制台,执行:
generatetoaddress 1 "A"

这会立刻产出 1 个区块(包含 50 BTC 的 coinbase 奖励,但需等 100 个确认才可花)。此时其他两个节点会同步到区块高度。

6)补齐确认数,让奖励可花

仍在 cong 控制台执行(一次性补挖 99 个):

generatetoaddress 99 "A"

7)发送一笔转账:中本聪 → 你(9 BTC)

  1. ni 节点生成地址(记为 B)。
  2. cong 的「发送」里填入 B,金额 9,手续费可留默认。
  3. 发送后,这笔交易会进入各节点的 内存池(mempool),在你(ni)的钱包里会显示“未确认的 9 BTC”。

8)把这笔交易打进区块并确认

让任意节点出块即可(例如继续在 cong 挖 1 个):

generatetoaddress 1 "A"

该区块会包含一笔 coinbase(51 BTC:50 奖励 + 手续费)和一笔“中本聪→你”的转账;你(ni)的钱包余额随之变为 9 BTC(已确认)

验证小技巧:
  • getblockchaininfo 看当前链高度与最新区块哈希
  • getblock <blockhash> 查看区块头、难度(bits/difficulty)、交易列表
  • getrawmempool / getmempoolentry 观察内存池里的交易细节

三、把“难点”讲透:FAQ 与常见坑

1)为什么必须等 100 个区块才能花挖矿奖励?

为防止链上短分叉造成奖励回滚(reorg)。确认越多,被回滚的概率越低。

2)转 9 枚却经常看到“另有一笔转回自己”?

因为你在花的是一整张“UTXO”,比如面额 50;支付 9,找零 41 会回到你钱包的另一个地址上(系统自动生成)。

3)手续费从哪来?

手续费 = 输入总额 − 输出总额。矿工把“更愿意付高费”的交易先打进区块。

4)我想连“真实的公共测试网”,行不行?

可以。用 -testnet(测试网 4),会连上全球测试节点并同步较小的链数据,适合做更接近真实网络的实验。可视化在 mempool.space 右上角切换 Testnet

5)为什么我连不上节点或同步很慢?

  • 某些代理/机场会拦截加密货币相关流量。
  • 主网同步体量大(600+ GB),网络/硬盘性能都会影响速度。
  • 务必从官网获取安装包,避免被“魔改钱包”污染隐私与资产。

四、到主网看看“真实世界”在发生什么

打开 mempool.space

  • 首页能看到内存池大小、手续费区间、最新出块、矿工奖励与难度走势。
  • 点进任意区块:查看区块哈希(通常有很多前导 0)、bits(目标阈值)、merkle root(所有交易的哈希树根)、交易数量与总手续费。
  • 切换到 Genesis Block#0)看看“比特币最初的那束光”。
隐私提醒: 比特币的交易本身是公开透明的;如果你通过第三方代理转发交易,对方还能把你网络层的真实 IP 和钱包地址做关联分析。严肃的隐私需求建议自己运行全节点并直连网络。

五、快捷命令备忘(复制即用)

启动三个节点

bitcoin-qt.exe -regtest -datadir="cong"
bitcoin-qt.exe -regtest -datadir="wo"
bitcoin-qt.exe -regtest -datadir="ni"

出块(把奖励打到地址 A)

generatetoaddress 1 "A"
generatetoaddress 99 "A"   # 补满 100 确认

区块 & 交易查询

getblockchaininfo
getbestblockhash
getblock <blockhash>
getrawmempool
getmempoolentry <txid>

六、结尾想说的

有人把比特币视作技术革命,有人把它当作“老鼠药”。价值评判各执一词,但从工程视角看,它确实以一套公开的数学与博弈规则,让一个无需信任中心的价值网络长期稳定运行。理解它、在本地亲手跑一遍,你会更清楚自己在谈论什么。🙂

Categories:

Tags:

No responses yet

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注