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()。
13)-dnsseed=1 //默认是1,表示使用DNS种子 ,0表示不适用DNS种子
-seednode= //若自举节点不知道网络任何信息,-seednode 可用于连接到一个种子节点,该节点仅作为一个种子用于引进其他节点。 在使用初始种子节点完成引进其他节点后,客户端将与初始种子节点断开连接并使用新发现的对等节点。
-addnode= //添加一个节点到对等节点列表中
-connect= //选项来指定一个或多个IP地址,从而覆盖节点的自动管理并指定IP地址列表。如果采用此选项,节点将只会连接到这些选定的IP地址,而不会自动发现并维护与对等节点的连接。

-dnsseed=0
-seednode=192.0.2.113
# 您可以在下面使用多个 addnode= 设置来连接到指定的节点
#addnode=69.164.218.197
#addnode=10.0.0.2:8333
# 或使用多个 connect= 设置来仅连接到指定的节点
#connect=69.164.218.197
#connect=10.0.0.1:8333

在bitcoind的参数中:
bitcoind -addnode=192.168.0.3
如果已经启动了bitcoind,也可以用bitcoin-cli命令来添加一个节点:
bitcoin-cli -testnet addnode 192.0.2.113:18333 onetry
14)参数修改
15)vAlertPubKey。所以我们需要更改alert和genesis coinbase的key值

openssl ecparam -genkey -name secp256k1 -out alertkey.pem
openssl ec -in alertkey.pem -text > alertkey.hex
openssl ecparam -genkey -name secp256k1 -out testnetalert.pem
openssl ec -in testnetalert.pem -text > testnetalert.hex
openssl ecparam -genkey -name secp256k1 -out genesiscoinbase.pem
openssl ec -in genesiscoinbase.pem -text > genesiscoinbase.hex

这样我们就得到了一系列alertkey和genesiscoinbase key。我们首先打开alertkey
cat alertkey.hex。我们把‘pub’和‘ASN1 OID: secp256k1′中间的5行数值去掉冒号和空格填到
vAlertPubKey = ParseHex(“…”);里去。然后我们再用
cat testnetalert.hex把其中的数据填入到CTestNetParams函数中去。
16)

标签: none

添加新评论