mining difficulty is not changed on regtest I want to see the automated mining difficulty change on regtest but it did not change even I generated 2016 blocks. How can I see it?

// initial difficulty
$ ./bitcoinA/src/bitcoin-cli -rpcuser=bitcoinrpc -rpcpassword=bitcoinrpcpass -rpcport=16591 -regtest getmininginfo
{
  "blocks": 0,
  "currentblockweight": 0,
  "currentblocktx": 0,
  "difficulty": 4.656542373906925e-10,
  "networkhashps": 0,
  "pooledtx": 0,
  "chain": "regtest",
  "warnings": ""
}

// generate 2016 blocks
$ ./bitcoinA/src/bitcoin-cli -rpcuser=bitcoinrpc -rpcpassword=bitcoinrpcpass -rpcport=16591 -regtest generate 2016

// show the difficulty
$ ./bitcoinA/src/bitcoin-cli -rpcuser=bitcoinrpc -rpcpassword=bitcoinrpcpass -rpcport=16591 -regtest getmininginfo
{
  "blocks": 2016,
  "currentblockweight": 4000,
  "currentblocktx": 0,
  "difficulty": 4.656542373906925e-10,
  "networkhashps": 12,
  "pooledtx": 0,
  "chain": "regtest",
  "warnings": ""
}

// generate 2016 blocks again
$ ./bitcoinA/src/bitcoin-cli -rpcuser=bitcoinrpc -rpcpassword=bitcoinrpcpass -rpcport=16591 -regtest generate 2016

// the difficulty was not changed
$ ./bitcoinA/src/bitcoin-cli -rpcuser=bitcoinrpc -rpcpassword=bitcoinrpcpass -rpcport=16591 -regtest getmininginfo
{
  "blocks": 4032,
  "currentblockweight": 4000,
  "currentblocktx": 0,
  "difficulty": 4.656542373906925e-10,
  "networkhashps": 12,
  "pooledtx": 0,
  "chain": "regtest",
  "warnings": ""
}
It worked. I needed to change some configurations.


change source code


// src/chainparams.cpp
consensus.nPowTargetTimespan = 14 * 24 * 60;
consensus.nPowTargetSpacing = 10; // 14 * 24 * 60 / 10 = 2016
consensus.fPowNoRetargeting = false;


https://github.com/bitcoin/bitcoin/blob/0.17/src/chainparams.cpp#L291


check the difficulty change


// initial difficulty
$ ./bitcoinA/src/bitcoin-cli -rpcuser=bitcoinrpc -rpcpassword=bitcoinrpcpass -rpcport=16591 -regtest getmininginfo
{
  "blocks": 0,
  "currentblockweight": 0,
  "currentblocktx": 0,
  "difficulty": 4.656542373906925e-10,
  "networkhashps": 0,
  "pooledtx": 0,
  "chain": "regtest",
  "warnings": ""
}

// generate 2016 blocks
$ ./bitcoinA/src/bitcoin-cli -rpcuser=bitcoinrpc -rpcpassword=bitcoinrpcpass -rpcport=16591 -regtest generate 2016

// check the difficulty
$ ./bitcoinA/src/bitcoin-cli -rpcuser=bitcoinrpc -rpcpassword=bitcoinrpcpass -rpcport=16591 -regtest getmininginfo
{
  "blocks": 2016,
  "currentblockweight": 4000,
  "currentblocktx": 0,
  "difficulty": 4.716464207201856e-06,
  "networkhashps": 1024.75,
  "pooledtx": 0,
  "chain": "regtest",
  "warnings": ""
}