Bitcoincore源码——CChainParams类

类概述

Bitcoincore系统的CChainParams类定义了区块链参数,并在bitcoind启动阶段完成初始化,参见bitcoind.cpp的AppInit()。


CChainParams包含如下主要数据成员。


类成员介绍

1、CBlock genesis;

创世块。具体构建参见CreateGenesisBlock()。

2、Consensus::Paramsconsensus;

初始化共识参数。

3、CMessageHeader::MessageStartCharspchMessageStart;

消息头标识,识别消息所属网络,main网络模式为[0xf9,0xbe,0xb4,0xd9],testnet网络模式为[0x0b,0x11,0x09,0x07]。

4、std::vector<std::string>vSeeds;

预置的DNS Seed服务器。Bitcoincore的main模式预置了7个DNS Seed服务器。


5、std::vector<unsignedchar> base58Prefixes[MAX_BASE58_TYPES];

Base58Check的前缀,存储了PUBKEY_ADDRESS、SCRIPT_ADDRESS、SECRET_KEY、EXT_PUBLIC_KEY、EXT_SECRET_KEY五种类别的Base58前缀。

6、int nDefaultPort;

默认端口号。main模式为8333,testnet模式为18333。

7、std::string bech32_hrp;

Bech32地址标识的human-readable part,main网络为“bc”,testnet为“tb”。Bech32是由BIP0173定义的比特币地址格式。详细介绍参考:

《https://en.bitcoin.it/wiki/Bech32_adoption》

《https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki》

8、uint64_tnPruneAfterHeight;

用于精简模式(prune mode)。若启动精简模式,则区块链的nPruneAfterHeight高度之后采用精简模式。main网络该值为100000,testnet网络为1000。

9、boolfMineBlocksOnDemand;

目前只用于regtest模式。main和testnet模式均为false。

10、ChainTxDatachainTxData;

存放交易验证的经验数据,用于评估验证进度时使用。

struct ChainTxData {

   int64_t nTime;

   int64_t nTxCount;

   double dTxRate;

};

main模式下预置了截止到高度为506081区块的相关信息。

{

1516903077,  //该块中交易的时间戳。

295363220,  //截至到上述时间戳的交易总数量。

3.5         //该时间戳以后每秒交易数量(预测的)。

}

参见在GuessVerificationProgress()中的使用。

11、boolm_fallback_fee_enabled;

是否使用回滚费用。main模式下默认禁止,testnet模式默认开启。但运行时可由-fallbackfee参数修改。

12、CCheckpointDatacheckpointData;

预置可用于有效性检查的参考区块头数据,避免链接到不合适的区块链分支。

使用场景参见ContextualCheckBlockHeader()。



猜你喜欢

转载自blog.csdn.net/weixin_42080566/article/details/80695215