实验1 初步熟悉比特币客户端

以下内容是我测试 Bitcoin Core 的实验相关内容,这玩意简单来说就是能挖矿。
1. 配置比特币客户端
环境搭建
-
我在 https://bitcoincore.org/bin/ 中下载了最新版本的 bitcoin 程序(目前是bitcoin-core-29.0/)
-
然后配置了两个环境变量,因为这样就能在命令行中用相关命令:
点击“环境变量”,找到并选择系统变量中的Path
,点击编辑变量: 点击“新建”,将比特币安装路径
和比特币安装路径\daemon\
添加到变量中
值得注意的是,如上是比特币客户端的程序安装路径,但是比特币客户端的程序数据路径一般默认会在 C 盘,可能在这两个位置:
- 旧版本:
%APPDATA%\Bitcoin\
- 新版本:
C:\Users\26646\AppData\Local\Bitcoin
注意把用户名字段 26646
替换成你自己的。
配置回归测试模式(Regtest Mode)
回归测试模式可以在不消耗真实算力的情况下测试比特币挖矿等各种流程,相关对比如下:
与其他网络模式的对比
- 主网(Mainnet)
- 真实的比特币网络
- 使用真实的比特币
- 需要实际算力挖矿
- 测试网(Testnet)
- 公共测试网络
- 使用测试币
- 需要连接外部节点
- 回归测试网(Regtest)
- 私有测试环境
- 完全控制
- 本地独立运行
在刚才的C:\Users\26646\AppData\Local\Bitcoin
中新建配置文件bitcoin.conf
内容如下:
1 | regtest=1 |
然后终端运行 bitcoind
命令,确实多了一个文件夹,如图表1:
分析回归测试模式日志
分析终端输出的日志,能有以下关键信息:
1 | 2025-03-24T06:43:41Z * Using 8.0 MiB for chain state database |
可见为链上交易状态(chain state)分配了8.0 MiB的数据库空间,以及440.0 MiB的内存UTXO集合空间。
分析日志,可总结回归测试模式下,程序添加P2P节点的步骤:
首先绑定了本地监听端口
1 | 2025-03-24T06:43:41Z Bound to 127.0.0.1:18445 |
启动网络相关线程
1 | 2025-03-24T06:43:41Z net thread start |
尝试从DNS种子获取节点地址
1 | 2025-03-24T06:43:41Z Loading addresses from DNS seed dummySeed.invalid. |
60秒后尝试添加固定种子节点
1 | 2025-03-24T06:44:42Z Adding fixed seeds as 60 seconds have passed and addrman is empty |
其他重要观察
- 程序运行在回归测试模式(regtest)
- RPC服务器在本地8332端口启动
- 区块数据库和链状态数据库都使用了LevelDB
- 程序成功初始化了创世区块:
1 | 2025-03-24T06:43:41Z UpdateTip: new best=0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206 height=0 |
但是密钥信息并没有出现,经查阅,我发现在 21 版本以后不会自动创建钱包,这是我和实验指导书的差异。这需要我们自己手动创建。
创建并配置新版本钱包
创建钱包
钱包名称可以替换成你自己想要的。
1 | bitcoin-cli -regtest createwallet "LeavesWallet" |
获得了以下输出:
1 | PS C:\Users\26646> bitcoin-cli -regtest createwallet "LeavesWallet" |
为钱包创建新地址
1 | PS C:\Users\26646> bitcoin-cli -regtest getnewaddress |
尝试进行挖矿
1 | PS C:\Users\26646> bitcoin-cli -regtest generatetoaddress 102 "bcrt1q8xe3ukkxdmhr74dhgdf9r3cy73cr69cnr4tw0m" |
查看余额
1 | PS C:\Users\26646> bitcoin-cli -regtest getbalance |
对余额的解释:
- 比特币的成熟度规则
- 在比特币系统中,挖矿奖励(coinbase交易)必须等待100个区块确认后才能使用
- 第1个区块会产生挖矿奖励
- 需要再挖100个区块让这个奖励成熟
- 所以总共需要101个区块
- 具体计算
- 第1个区块:获得50 BTC奖励(regtest模式下的奖励值)
- 接下来的100个区块:让第1个区块的奖励成熟
- 最终结果:有了可以使用的50 BTC
因为如上这个原因,网上总会习惯性先挖 101 个,我这里故意挖 102 个,果然,余额是 100 BTC。
有时候,当你把终端关闭后再次尝试查看余额之前,需要先加载钱包:
1 | bitcoin-cli -regtest loadwallet "wallet_name" |
把钱包名称替换成你的实际值即可。
更多关于钱包的配置与概念,可以参考比特币客户端钱包基础。
- 标题: 实验1 初步熟悉比特币客户端
- 作者: 三葉Leaves
- 创建于 : 2025-03-24 00:00:00
- 更新于 : 2025-03-25 16:32:34
- 链接: https://blog.oksanye.com/281b16e76c56/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。