摘要:最近美国SEC通过了比特币的ETF申请,比特币究竟是个什么东西,从技术上来说,bitcoin是一个点对点的电子现金系统,它可以实现分布式的记账,不依赖中心化的账务系统(比如银行,支付宝),它的账本完整的分布在每一个比特币的客户端,并且实时同步。...
近期美国 SEC 通过比特币的人 从技术上讲,ETF申请,BTC到底是什么,bitcoin 它是一个点对点的电子现金系统,可以实现分布式会计,不依赖集中会计系统(如银行、支付宝),其账簿完全分布在每个比特币客户端,并实时同步。更受欢迎的是,您可以在客户端本地转账,查询所有账户的余额和交易明细。让我们来分析一下它的代码。
比特币代码开源,在 github 您可以查看所有版本的历史代码和修改记录:
https:
//github.com/bitcoin/bitcoin
以下分析了每个目录和功能模块的功效:
根目录
src/
: 该目录包括比特币核心的源代码。
doc/
: 文档目录,包括安装指南、奉献指南等。
contrib/
: 包括一些辅助脚本和常用工具。
depends/
: 依赖库,用于构建对比特币核心的依赖。
qa/
: 包括与测试相关的质量保证脚本工具等。
src目录
wallet/
: 钱夹相关代码,包括密钥管理和交易建立。
qt/
: 包括BTCQT客户端页面的代码,即比特币的图形用户界面。
rpc/
: 远程过程调用相关代码与比特币核心交互。
net/
: 网络相关代码,处理节点之间的通信。
node/
: 与节点操作相关的代码包括区块链和交易处理。
consensus/
: 与共识规则相关的代码包括区块和交易的验证。
script/
: 脚本分析相关代码,处理交易脚本。
crypto/
: 哈希算法和加密技术等与加密相关的函数。
leveldb/
: 用于存储区块链数据的LevelDB数据库源代码。
zmq/
: ZeroMQ信息接口的实现,用于发布实时系统通知。
其他资料
init.cpp
: 包括主初始化代码,负责启动BTC节点。
main.cpp
: 旧版本包含了区块链和交易处理的主要逻辑,新版本可能已经将这些逻辑分散到其他模块。
bitcoind.cpp
: 比特币的守护过程启动代码。
bitcoin-cli.cpp
: 命令行界面的客户端代码。
检测目录
test/
: 包括自动化测试代码,因为它们确保了代码的准确性。
functional/
: 用于测试比特币核心功能的功能测试脚本。
如何分析代码
阅读文档
: 首先查看doc/目录下的文档,特别是README和CONTRIBUTING文档,了解如何构建项目,如何贡献。
查看入口
: src/init.cpp和src/bitcoind.CPP一般是理解程序启动过程的好地方。
追踪数据流
: 了解交易是如何建立、广播、验证并最终添加到区块链中的。
理解构造
: 查看类和函数的定义,了解它们是如何相互作用的。
运行测试
: 查看test/目录、操作单元测试和集成测试,了解它们是如何工作的。