Skip to content

Commit

Permalink
Rename GreatWork to FortCanningGreatWorld (#1435)
Browse files Browse the repository at this point in the history
  • Loading branch information
Bushstar authored Aug 31, 2022
1 parent 920a70c commit 1dc05ad
Show file tree
Hide file tree
Showing 17 changed files with 44 additions and 48 deletions.
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -145,3 +145,8 @@ dist/

# compile_commands.json
compile_commands.json

# secp256k1
src/secp256k1/gen_context
src/secp256k1/src/ecmult_static_context.h

11 changes: 5 additions & 6 deletions src/chainparams.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -136,8 +136,7 @@ class CMainParams : public CChainParams {
consensus.FortCanningRoadHeight = 1786000; // April 11, 2022.
consensus.FortCanningCrunchHeight = 1936000; // June 2, 2022.
consensus.FortCanningSpringHeight = 2033000; // July 6, 2022.
// TODO: Rename later to FortCanningGreatWorld
consensus.GreatWorldHeight = 2212000; // Sep 7th, 2022.
consensus.FortCanningGreatWorldHeight = 2212000; // Sep 7th, 2022.

consensus.pos.diffLimit = uint256S("00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
// consensus.pos.nTargetTimespan = 14 * 24 * 60 * 60; // two weeks
Expand Down Expand Up @@ -375,7 +374,7 @@ class CTestNetParams : public CChainParams {
consensus.FortCanningRoadHeight = 893700;
consensus.FortCanningCrunchHeight = 1011600;
consensus.FortCanningSpringHeight = 1086000;
consensus.GreatWorldHeight = std::numeric_limits<int>::max();
consensus.FortCanningGreatWorldHeight = std::numeric_limits<int>::max();

consensus.pos.diffLimit = uint256S("00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
// consensus.pos.nTargetTimespan = 14 * 24 * 60 * 60; // two weeks
Expand Down Expand Up @@ -568,7 +567,7 @@ class CDevNetParams : public CChainParams {
consensus.FortCanningRoadHeight = std::numeric_limits<int>::max();
consensus.FortCanningCrunchHeight = std::numeric_limits<int>::max();
consensus.FortCanningSpringHeight = std::numeric_limits<int>::max();
consensus.GreatWorldHeight = std::numeric_limits<int>::max();
consensus.FortCanningGreatWorldHeight = std::numeric_limits<int>::max();

consensus.pos.diffLimit = uint256S("00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
consensus.pos.nTargetTimespan = 5 * 60; // 5 min == 10 blocks
Expand Down Expand Up @@ -753,7 +752,7 @@ class CRegTestParams : public CChainParams {
consensus.FortCanningRoadHeight = 10000000;
consensus.FortCanningCrunchHeight = 10000000;
consensus.FortCanningSpringHeight = 10000000;
consensus.GreatWorldHeight = 10000000;
consensus.FortCanningGreatWorldHeight = 10000000;

consensus.pos.diffLimit = uint256S("00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
consensus.pos.nTargetTimespan = 14 * 24 * 60 * 60; // two weeks
Expand Down Expand Up @@ -976,7 +975,7 @@ void SetupCommonArgActivationParams(Consensus::Params &consensus) {
UpdateHeightValidation("Fort Canning Road", "-fortcanningroadheight", consensus.FortCanningRoadHeight);
UpdateHeightValidation("Fort Canning Crunch", "-fortcanningcrunchheight", consensus.FortCanningCrunchHeight);
UpdateHeightValidation("Fort Canning Spring", "-fortcanningspringheight", consensus.FortCanningSpringHeight);
UpdateHeightValidation("Great World", "-greatworldheight", consensus.GreatWorldHeight);
UpdateHeightValidation("Fort Canning Great World", "-fortcanninggreatworldheight", consensus.FortCanningGreatWorldHeight);

This comment has been minimized.

Copy link
@prasannavl

prasannavl Aug 31, 2022

Member

Let's also add greatworldheight arg aliased to FortCanningGreatWorld to not break other upstream elements.


if (gArgs.GetBoolArg("-simulatemainnet", false)) {
consensus.pos.nTargetTimespan = 5 * 60; // 5 min == 10 blocks
Expand Down
2 changes: 1 addition & 1 deletion src/consensus/params.h
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ struct Params {
int FortCanningRoadHeight;
int FortCanningCrunchHeight;
int FortCanningSpringHeight;
int GreatWorldHeight;
int FortCanningGreatWorldHeight;

/** Foundation share after AMK, normalized to COIN = 100% */
CAmount foundationShareDFIP1;
Expand Down
2 changes: 1 addition & 1 deletion src/init.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -501,7 +501,7 @@ void SetupServerArgs()
gArgs.AddArg("-fortcanningroadheight", "Fort Canning Road fork activation height (regtest only)", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::CHAINPARAMS);
gArgs.AddArg("-fortcanningcrunchheight", "Fort Canning Crunch fork activation height (regtest only)", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::CHAINPARAMS);
gArgs.AddArg("-fortcanningspringheight", "Fort Canning Spring fork activation height (regtest only)", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::CHAINPARAMS);
gArgs.AddArg("-greatworldheight", "Great World fork activation height (regtest only)", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::CHAINPARAMS);
gArgs.AddArg("-fortcanninggreatworldheight", "Fort Canning Great World fork activation height (regtest only)", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::CHAINPARAMS);

This comment has been minimized.

Copy link
@prasannavl

prasannavl Aug 31, 2022

Member

Same as above.

gArgs.AddArg("-jellyfish_regtest", "Configure the regtest network for jellyfish testing", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::OPTIONS);
gArgs.AddArg("-simulatemainnet", "Configure the regtest network to mainnet target timespan and spacing ", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::OPTIONS);
gArgs.AddArg("-dexstats", strprintf("Enable storing live dex data in DB (default: %u)", DEFAULT_DEXSTATS), ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
Expand Down
4 changes: 2 additions & 2 deletions src/masternodes/govvariables/attributes.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -918,7 +918,7 @@ Res ATTRIBUTES::Validate(const CCustomCSView & view) const
}
break;
case TokenKeys::LoanMintingInterest:
if (view.GetLastHeight() < Params().GetConsensus().GreatWorldHeight) {
if (view.GetLastHeight() < Params().GetConsensus().FortCanningGreatWorldHeight) {
const auto amount = std::get_if<CAmount>(&value);
if (amount && *amount < 0) {
return Res::Err("Amount must be a positive value");
Expand Down Expand Up @@ -1153,7 +1153,7 @@ Res ATTRIBUTES::Apply(CCustomCSView & mnview, const uint32_t height)
return res;
}
} else if (attrV0->key == TokenKeys::LoanMintingInterest) {
if (height >= static_cast<uint32_t>(Params().GetConsensus().GreatWorldHeight) && interestTokens.count(attrV0->typeId)) {
if (height >= static_cast<uint32_t>(Params().GetConsensus().FortCanningGreatWorldHeight) && interestTokens.count(attrV0->typeId)) {
const auto tokenInterest = std::get_if<CAmount>(&attribute.second);
if (!tokenInterest) {
return Res::Err("Unexpected type");
Expand Down
12 changes: 6 additions & 6 deletions src/masternodes/loan.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ void CLoanView::EraseDelayedDestroyScheme(const std::string& loanSchemeID)

std::optional<CInterestRateV3> CLoanView::GetInterestRate(const CVaultId& vaultId, const DCT_ID id, const uint32_t height)
{
if (height >= static_cast<uint32_t>(Params().GetConsensus().GreatWorldHeight)) {
if (height >= static_cast<uint32_t>(Params().GetConsensus().FortCanningGreatWorldHeight)) {
return ReadBy<LoanInterestV3ByVault, CInterestRateV3>(std::make_pair(vaultId, id));
}

Expand Down Expand Up @@ -292,7 +292,7 @@ CAmount TotalInterest(const CInterestRateV3& rate, const uint32_t height)

void CLoanView::WriteInterestRate(const std::pair<CVaultId, DCT_ID>& pair, const CInterestRateV3& rate, uint32_t height)
{
if (height >= static_cast<uint32_t>(Params().GetConsensus().GreatWorldHeight)) {
if (height >= static_cast<uint32_t>(Params().GetConsensus().FortCanningGreatWorldHeight)) {
WriteBy<LoanInterestV3ByVault>(pair, rate);
} else if (height >= static_cast<uint32_t>(Params().GetConsensus().FortCanningHillHeight)) {
WriteBy<LoanInterestV2ByVault>(pair, ConvertInterestRateToV2(rate));
Expand Down Expand Up @@ -321,7 +321,7 @@ Res CLoanView::IncreaseInterest(const uint32_t height, const CVaultId& vaultId,
rate.interestToHeight = TotalInterestCalculation(rate, height);
rate.height = height;

if (height >= static_cast<uint32_t>(Params().GetConsensus().GreatWorldHeight)) {
if (height >= static_cast<uint32_t>(Params().GetConsensus().FortCanningGreatWorldHeight)) {
CBalances amounts;
ReadBy<LoanTokenAmount>(vaultId, amounts);

Expand Down Expand Up @@ -373,7 +373,7 @@ Res CLoanView::DecreaseInterest(const uint32_t height, const CVaultId& vaultId,

rate.height = height;

if (height >= static_cast<uint32_t>(Params().GetConsensus().GreatWorldHeight)) {
if (height >= static_cast<uint32_t>(Params().GetConsensus().FortCanningGreatWorldHeight)) {
CBalances amounts;
ReadBy<LoanTokenAmount>(vaultId, amounts);
rate.interestPerBlock = InterestPerBlockCalculationV3(amounts.balances[id], token->interest, scheme->rate);
Expand Down Expand Up @@ -452,7 +452,7 @@ void EraseInterest(CLoanView& view, const CVaultId& vaultId)

Res CLoanView::EraseInterest(const CVaultId& vaultId, uint32_t height)
{
if (height >= static_cast<uint32_t>(Params().GetConsensus().GreatWorldHeight)) {
if (height >= static_cast<uint32_t>(Params().GetConsensus().FortCanningGreatWorldHeight)) {
::EraseInterest<LoanInterestV3ByVault>(*this, vaultId);
} else if (height >= static_cast<uint32_t>(Params().GetConsensus().FortCanningHillHeight)) {
::EraseInterest<LoanInterestV2ByVault>(*this, vaultId);
Expand All @@ -465,7 +465,7 @@ Res CLoanView::EraseInterest(const CVaultId& vaultId, uint32_t height)

void CLoanView::EraseInterest(const CVaultId& vaultId, DCT_ID id, uint32_t height)
{
if (height >= static_cast<uint32_t>(Params().GetConsensus().GreatWorldHeight)) {
if (height >= static_cast<uint32_t>(Params().GetConsensus().FortCanningGreatWorldHeight)) {
EraseBy<LoanInterestV3ByVault>(std::make_pair(vaultId, id));
} else if (height >= static_cast<uint32_t>(Params().GetConsensus().FortCanningHillHeight)) {
EraseBy<LoanInterestV2ByVault>(std::make_pair(vaultId, id));
Expand Down
22 changes: 7 additions & 15 deletions src/masternodes/mn_checks.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -251,13 +251,6 @@ class CCustomMetadataParseVisitor
return Res::Ok();
}

Res isPostGreatWorldFork() const {
if(static_cast<int>(height) < consensus.GreatWorldHeight) {
return Res::Err("called before GreatWorldHeight height");
}
return Res::Ok();
}

template<typename T>
Res serialize(T& obj) const {
CDataStream ss(metadata, SER_NETWORK, PROTOCOL_VERSION);
Expand Down Expand Up @@ -2478,7 +2471,7 @@ class CCustomTxApplyVisitor : public CCustomTxVisitor
if (!HasFoundationAuth())
return Res::Err("tx not from foundation member!");

if (obj.interest < 0 && height < static_cast<uint32_t>(consensus.GreatWorldHeight)) {
if (obj.interest < 0 && height < static_cast<uint32_t>(consensus.FortCanningGreatWorldHeight)) {
return Res::Err("interest rate cannot be less than 0!");
}

Expand Down Expand Up @@ -2567,7 +2560,7 @@ class CCustomTxApplyVisitor : public CCustomTxVisitor
if (!HasFoundationAuth())
return Res::Err("tx not from foundation member!");

if (obj.interest < 0 && height < static_cast<uint32_t>(consensus.GreatWorldHeight)) {
if (obj.interest < 0 && height < static_cast<uint32_t>(consensus.FortCanningGreatWorldHeight)) {
return Res::Err("interest rate cannot be less than 0!");
}

Expand Down Expand Up @@ -2931,9 +2924,8 @@ class CCustomTxApplyVisitor : public CCustomTxVisitor
return Res::Err("Vault does not have enough collateralization ratio defined by loan scheme - %d < %d", collateralsLoans.val->ratio(), scheme->ratio);
}
}
if (height >= static_cast<uint32_t>(consensus.GreatWorldHeight)) {
const auto loanTokens = mnview.GetLoanTokens(obj.vaultId);
if (loanTokens) {
if (height >= static_cast<uint32_t>(consensus.FortCanningGreatWorldHeight)) {
if (const auto loanTokens = mnview.GetLoanTokens(obj.vaultId)) {
for (const auto& [tokenId, tokenAmount] : loanTokens->balances) {
const auto loanToken = mnview.GetLoanTokenByID(tokenId);
assert(loanToken);
Expand Down Expand Up @@ -3119,7 +3111,7 @@ class CCustomTxApplyVisitor : public CCustomTxVisitor
uint64_t totalLoansActivePrice = 0, totalLoansNextPrice = 0;
for (const auto& [tokenId, tokenAmount] : obj.amounts.balances)
{
if (height >= static_cast<uint32_t>(consensus.GreatWorldHeight) && tokenAmount <= 0)
if (height >= static_cast<uint32_t>(consensus.FortCanningGreatWorldHeight) && tokenAmount <= 0)
return Res::Err("Valid loan amount required (input: %d@%d)", tokenAmount, tokenId.v);

auto loanToken = mnview.GetLoanTokenByID(tokenId);
Expand Down Expand Up @@ -3306,7 +3298,7 @@ class CCustomTxApplyVisitor : public CCustomTxVisitor
const auto& paybackTokenId = kv.first;
auto paybackAmount = kv.second;

if (height >= static_cast<uint32_t>(consensus.GreatWorldHeight) && paybackAmount <= 0) {
if (height >= static_cast<uint32_t>(consensus.FortCanningGreatWorldHeight) && paybackAmount <= 0) {
return Res::Err("Valid payback amount required (input: %d@%d)", paybackAmount, paybackTokenId.v);
}

Expand Down Expand Up @@ -3420,7 +3412,7 @@ class CCustomTxApplyVisitor : public CCustomTxVisitor

if (height >= static_cast<uint32_t>(consensus.FortCanningMuseumHeight) &&
subLoan < currentLoanAmount &&
height < static_cast<uint32_t>(consensus.GreatWorldHeight))
height < static_cast<uint32_t>(consensus.FortCanningGreatWorldHeight))
{
auto newRate = mnview.GetInterestRate(obj.vaultId, loanTokenId, height);
if (!newRate)
Expand Down
2 changes: 1 addition & 1 deletion src/masternodes/rpc_loan.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1516,7 +1516,7 @@ UniValue getinterest(const JSONRPCRequest& request) {
return true;
};

if (height >= Params().GetConsensus().GreatWorldHeight) {
if (height >= Params().GetConsensus().FortCanningGreatWorldHeight) {
pcustomcsview->ForEachVaultInterestV3(vaultInterest);
} else if (height >= Params().GetConsensus().FortCanningHillHeight) {
pcustomcsview->ForEachVaultInterestV2([&](const CVaultId& vaultId, DCT_ID tokenId, const CInterestRateV2 &rate) {
Expand Down
2 changes: 1 addition & 1 deletion src/masternodes/rpc_vault.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ namespace {
totalInterests += interestCalculation;
}
if (verbose) {
if (height >= Params().GetConsensus().GreatWorldHeight) {
if (height >= Params().GetConsensus().FortCanningGreatWorldHeight) {
interestsPerBlockValueHighPrecision = InterestAddition(interestsPerBlockValueHighPrecision, {rate->interestPerBlock.negative, static_cast<base_uint<128>>(price) * rate->interestPerBlock.amount / COIN});
interestsPerBlockHighPrecission[tokenId] = rate->interestPerBlock;
} else if (height >= Params().GetConsensus().FortCanningHillHeight) {
Expand Down
2 changes: 1 addition & 1 deletion src/rpc/blockchain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1334,7 +1334,7 @@ UniValue getblockchaininfo(const JSONRPCRequest& request)
BuriedForkDescPushBack(softforks, "fortcanningroad", consensusParams.FortCanningRoadHeight);
BuriedForkDescPushBack(softforks, "fortcanningcrunch", consensusParams.FortCanningCrunchHeight);
BuriedForkDescPushBack(softforks, "fortcanningspring", consensusParams.FortCanningSpringHeight);
BuriedForkDescPushBack(softforks, "greatworld", consensusParams.GreatWorldHeight);
BuriedForkDescPushBack(softforks, "fortcanninggreatworld", consensusParams.FortCanningGreatWorldHeight);
BIP9SoftForkDescPushBack(softforks, "testdummy", consensusParams, Consensus::DEPLOYMENT_TESTDUMMY);
obj.pushKV("softforks", softforks);

Expand Down
2 changes: 1 addition & 1 deletion src/test/loan_tests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -314,7 +314,7 @@ BOOST_AUTO_TEST_CASE(loan_interest_rate)
BOOST_AUTO_TEST_CASE(loan_total_interest_calculation)
{
// Activate negative interest rate
const_cast<int&>(Params().GetConsensus().GreatWorldHeight) = 1;
const_cast<int&>(Params().GetConsensus().FortCanningGreatWorldHeight) = 1;

CCustomCSView mnview(*pcustomcsview);

Expand Down
6 changes: 3 additions & 3 deletions src/validation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1845,7 +1845,7 @@ DisconnectResult CChainState::DisconnectBlock(const CBlock& block, const CBlockI
}

// one time downgrade to revert CInterestRateV3 structure
if (pindex->nHeight == Params().GetConsensus().GreatWorldHeight) {
if (pindex->nHeight == Params().GetConsensus().FortCanningGreatWorldHeight) {
auto time = GetTimeMillis();
LogPrintf("Interest rate reverting ...\n");
mnview.RevertInterestRateToV2();
Expand Down Expand Up @@ -2572,7 +2572,7 @@ bool CChainState::ConnectBlock(const CBlock& block, CValidationState& state, CBl
LogPrint(BCLog::BENCH, " - Interest rate migration took: %dms\n", GetTimeMillis() - time);
}

if (pindex->nHeight == chainparams.GetConsensus().GreatWorldHeight) {
if (pindex->nHeight == chainparams.GetConsensus().FortCanningGreatWorldHeight) {
auto time = GetTimeMillis();
LogPrintf("Interest rate migration ...\n");
mnview.MigrateInterestRateToV3(mnview, static_cast<uint32_t>(pindex->nHeight));
Expand Down Expand Up @@ -4412,7 +4412,7 @@ static Res VaultSplits(CCustomCSView& view, ATTRIBUTES& attributes, const DCT_ID

CVaultId failedVault;
std::vector<std::tuple<CVaultId, CInterestRateV3, std::string>> loanInterestRates;
if (height >= Params().GetConsensus().GreatWorldHeight) {
if (height >= Params().GetConsensus().FortCanningGreatWorldHeight) {
view.ForEachVaultInterestV3([&](const CVaultId& vaultId, DCT_ID tokenId, const CInterestRateV3& rate) {
if (tokenId == oldTokenId) {
const auto vaultData = view.GetVault(vaultId);
Expand Down
2 changes: 1 addition & 1 deletion test/functional/feature_negative_interest.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ def set_test_params(self):
self.num_nodes = 1
self.setup_clean_chain = True
self.extra_args = [
['-txnotokens=0', '-amkheight=1', '-bayfrontheight=1', '-eunosheight=1', '-fortcanningheight=1', '-fortcanningmuseumheight=1', '-fortcanningspringheight=1', '-fortcanninghillheight=1', '-fortcanningcrunchheight=1', '-greatworldheight=1', '-jellyfish_regtest=1', '-txindex=1', '-simulatemainnet=1']
['-txnotokens=0', '-amkheight=1', '-bayfrontheight=1', '-eunosheight=1', '-fortcanningheight=1', '-fortcanningmuseumheight=1', '-fortcanningspringheight=1', '-fortcanninghillheight=1', '-fortcanningcrunchheight=1', '-fortcanninggreatworldheight=1', '-jellyfish_regtest=1', '-txindex=1', '-simulatemainnet=1']
]

def createTokens(self):
Expand Down
2 changes: 1 addition & 1 deletion test/functional/feature_negative_loan_interest.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ def set_test_params(self):
self.num_nodes = 1
self.setup_clean_chain = True
self.extra_args = [
['-txnotokens=0', '-amkheight=1', '-bayfrontheight=1', '-eunosheight=1', '-fortcanningheight=1', '-fortcanninghillheight=1', '-fortcanningcrunchheight=1', '-greatworldheight=1', '-jellyfish_regtest=1']]
['-txnotokens=0', '-amkheight=1', '-bayfrontheight=1', '-eunosheight=1', '-fortcanningheight=1', '-fortcanninghillheight=1', '-fortcanningcrunchheight=1', '-fortcanninggreatworldheight=1', '-jellyfish_regtest=1']]

def run_test(self):
# Create tokens for tests
Expand Down
2 changes: 1 addition & 1 deletion test/functional/feature_stored_interest.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def set_test_params(self):
self.num_nodes = 1
self.setup_clean_chain = True
self.extra_args = [
['-txnotokens=0', '-amkheight=1', '-bayfrontheight=1', '-eunosheight=1', '-fortcanningheight=1', '-fortcanninghillheight=1', '-fortcanningcrunchheight=1', '-greatworldheight=1', '-jellyfish_regtest=1']]
['-txnotokens=0', '-amkheight=1', '-bayfrontheight=1', '-eunosheight=1', '-fortcanningheight=1', '-fortcanninghillheight=1', '-fortcanningcrunchheight=1', '-fortcanninggreatworldheight=1', '-jellyfish_regtest=1']]

def run_test(self):
# Create tokens for tests
Expand Down
2 changes: 1 addition & 1 deletion test/functional/rpc_blockchain.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ def _test_getblockchaininfo(self):
'fortcanningroad': {'type': 'buried', 'active': False, 'height': 10000000},
'fortcanningcrunch': {'type': 'buried', 'active': False, 'height': 10000000},
'fortcanningspring': {'type': 'buried', 'active': False, 'height': 10000000},
'greatworld': {'type': 'buried', 'active': False, 'height': 10000000},
'fortcanninggreatworld': {'type': 'buried', 'active': False, 'height': 10000000},
'testdummy': {
'type': 'bip9',
'bip9': {
Expand Down
Loading

0 comments on commit 1dc05ad

Please sign in to comment.