Bitcoin比特币源码解读——网络架构

    bitcoin core首先是一个p2p软件,然后还需要接受用户输入。比特币会监听两个端口,一个用于结点间通迅,一个用于用户与结点交互(钱包功能,数据查询等)。

一、P2P结点

     P2P端口可以通过参数-port指定,主网默认是nDefaultPort = 8333。因为P2P连接,一开始要如何发现其他结点?作为一个去中心化软件,和其他P2P软件一样,比特币也要去一个中心结点查询其他结点的IP和端口。这个是通过DNS服务来实现的。在代码里hardcode了好几行类似vSeeds.emplace_back("seed.bitcoin.sipa.be");这样的域名。这些域名是由https://github.com/sipa/bitcoin-seeder这样的域名服务器解释的。

      bitcoin-seeder先是代码里也配置了一些比特币结点地址,然后通过和新链接进来的结点交互数据,根据他们数据是否是最新来决定是否把他们的地址发给其他结点。流程大概是这样,比特币结点第一次启动时,通过查询域名服务链接到bitcoin-seeder,seeder根据记录的数据随机回了一组地址,比特币拿到地址后就去连这些结点。然后比特币结点间也相互交换各自的邻居结点数据,关闭时,会记录活跃的结点,下次启动就不用去DNS查询了。

二、RPC调用接口

       可以通过-rpcport参数指定rpc端口。RPC接口是使用的是HTTP协议,数据格式为JSON。可以通过http来调用,也可以通过bitcoin-cli程序在命令行调用,bitcoin-cli help会返回所有的rpc接口。

 

你可能感兴趣的:(Bitcoin比特币源码解读——网络架构)