2017-2019年时做过一段时间的区块链挖矿业务,对于钱包做了一个分析整理,当时主要是对接挖矿服务。现在也分享出来,以供学习。
简单介绍:
对于一个钱包,其主要有三个业务进程可以被调用:
1)bitcoind,这个是钱包的核心(下图也主要是这个的基础数据流),它提供了:
P2P通讯服务,连接p2p网络,接收/中继广播/发布所有block、tx等;
RPC Sever服务(对接任何以rpc格式接入的请求,包括本机终端上用户通过 bitcoin-cli发起的,或者从任何地方通过http rpc请求进来的,比如第三方的挖矿服务的业务进程)
2)bitcoin-cli,这个是可供用户在本机终端通过rpc命令发起请求的进程;
3)bitcoin-tx,这个进程主要是raw tx(原始交易)相关的命令执行,不过rpc目前也支持raw tx了;
基础数据流图示意:
网上有很多介绍各个文件的作用的,其实不必细细纠结于各个文件,抓住数据流,也就看到了区块链了。当然,在看代码之前,最好对Block/TX有个简单的了解。比如以下问题,最好提前了解,否则代码看不懂:
1)什么是UTXO?
2)一个TX的vout和另一个关联TX的vin有什么关系?
3)一个UTXO如果在被花费时,要么被花完,要么维持不花的状态,这个说法对不对?