Anton7755 (OP)
Newbie
Offline
Activity: 3
Merit: 0
|
|
March 15, 2024, 04:16:33 AM Last edit: March 15, 2024, 08:21:10 AM by Anton7755 |
|
Hello guys, i'm currently designing my altcoin, I'm not getting any errors but the clients are having problems connecting. I've already read a lot on the internet, but all the instructions you can find about chainparams.cpp are not for v26.0 . Have I made a mistake or are the values I set correct? // Copyright (c) 2024 Anton7755 // Copyright (c) 2042 Anton7755 // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#include <kernel/chainparams.h>
#include <chainparamsseeds.h> #include <consensus/amount.h> #include <consensus/merkle.h> #include <consensus/params.h> #include <hash.h> #include <kernel/messagestartchars.h> #include <logging.h> #include <primitives/block.h> #include <primitives/transaction.h> #include <script/interpreter.h> #include <script/script.h> #include <uint256.h> #include <util/chaintype.h> #include <util/strencodings.h>
#include <algorithm> #include <cassert> #include <cstdint> #include <cstring> #include <type_traits>
static CBlock CreateGenesisBlock(const char* pszTimestamp, const CScript& genesisOutputScript, uint32_t nTime, uint32_t nNonce, uint32_t nBits, int32_t nVersion, const CAmount& genesisReward) { CMutableTransaction txNew; txNew.nVersion = 1; txNew.vin.resize(1); txNew.vout.resize(1); txNew.vin[0].scriptSig = CScript() << 486604799 << CScriptNum(4) << std::vector<unsigned char>((const unsigned char*)pszTimestamp, (const unsigned char*)pszTimestamp + strlen(pszTimestamp)); txNew.vout[0].nValue = genesisReward; txNew.vout[0].scriptPubKey = genesisOutputScript;
CBlock genesis; genesis.nTime = nTime; genesis.nBits = nBits; genesis.nNonce = nNonce; genesis.nVersion = nVersion; genesis.vtx.push_back(MakeTransactionRef(std::move(txNew))); genesis.hashPrevBlock.SetNull(); genesis.hashMerkleRoot = BlockMerkleRoot(genesis); return genesis; }
/** * Build the genesis block. Note that the output of its generation * transaction cannot be spent since it did not originally exist in the * database. * * CBlock(hash=000000000019d6, ver=1, hashPrevBlock=00000000000000, hashMerkleRoot=4a5e1e, nTime=1231006505, nBits=1d00ffff, nNonce=2083236893, vtx=1) * CTransaction(hash=4a5e1e, ver=1, vin.size=1, vout.size=1, nLockTime=0) * CTxIn(COutPoint(000000, -1), coinbase 04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73) * CTxOut(nValue=50.00000000, scriptPubKey=0x5F1DF16B2B704C8A578D0B) * vMerkleTree: 4a5e1e */ static CBlock CreateGenesisBlock(uint32_t nTime, uint32_t nNonce, uint32_t nBits, int32_t nVersion, const CAmount& genesisReward) { const char* pszTimestamp = "The Times 03/Mar/2024 Investing in ailing limbs and failing eyes will keep me in healthy profit"; const CScript genesisOutputScript = CScript() << ParseHex("04d02587f8472514a9c3ae4f4ca12093bff787af668a724e15e799977afee59b64fb256f73bcbbedbcda6871ad76c67f9d674184edceb93489951aa6a12c1672be") << OP_CHECKSIG; return CreateGenesisBlock(pszTimestamp, genesisOutputScript, nTime, nNonce, nBits, nVersion, genesisReward); }
/** * Main network on which people trade goods and services. */ class CMainParams : public CChainParams { public: CMainParams() { m_chain_type = ChainType::MAIN; consensus.signet_blocks = false; consensus.signet_challenge.clear(); consensus.nSubsidyHalvingInterval = 100000; consensus.script_flag_exceptions.emplace( // BIP16 exception uint256S("0x00"), SCRIPT_VERIFY_NONE); consensus.script_flag_exceptions.emplace( // Taproot exception uint256S("0x00"), SCRIPT_VERIFY_P2SH | SCRIPT_VERIFY_WITNESS); consensus.BIP34Height = 0; consensus.BIP34Hash = uint256S("0x0000000000ae20c4552e1d523dc544583fe8931e804dbad984a19f4c321c96a7"); consensus.BIP65Height = 0; // 000000000000000004c2b624ed5d7756c508d90fd0da2c7c679febfa6c4735f0 consensus.BIP66Height = 0; // 00000000000000000379eaa19dce8c9b722d46ae6a57c2f1a988119488b50931 consensus.CSVHeight = 0; // 000000000000000004a1b34462cb8aeebd5799177f7a29cf28f2d1961716b5b5 consensus.SegwitHeight = 0; // 0000000000000000001c8018d9cb3b742ef25114f27563e3fc4a1902167f9893 consensus.MinBIP9WarningHeight = 0; // segwit activation height + miner confirmation window consensus.powLimit = uint256S("00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff"); consensus.nPowTargetTimespan = 14 * 24 * 60 * 60; // two weeks consensus.nPowTargetSpacing = 10 * 60; consensus.fPowAllowMinDifficultyBlocks = false; consensus.fPowNoRetargeting = false; consensus.nRuleChangeActivationThreshold = 1815; // 90% of 2016 consensus.nMinerConfirmationWindow = 2016; // nPowTargetTimespan / nPowTargetSpacing consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28; consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = Consensus::BIP9Deployment::NEVER_ACTIVE; consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT; consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].min_activation_height = 0; // No activation delay
// Deployment of Taproot (BIPs 340-342) consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].bit = 2; consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nStartTime = 1619222400; // April 24th, 2021 consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nTimeout = 1628640000; // August 11th, 2021 consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].min_activation_height = 0; // Approximately November 12th, 2021
consensus.nMinimumChainWork = uint256S("0x0000000000000000000000000000000000000000000000000000000100010001"); consensus.defaultAssumeValid = uint256S("0x0000000000ae20c4552e1d523dc544583fe8931e804dbad984a19f4c321c96a7");
/** * The message start string is designed to be unlikely to occur in normal data. * The characters are rarely used upper ASCII, not valid as UTF-8, and produce * a large 32-bit integer with any alignment. */ pchMessageStart[0] = 0xa7; pchMessageStart[1] = 0xa1; pchMessageStart[2] = 0xc2; pchMessageStart[3] = 0xf4; nDefaultPort = 7755; nPruneAfterHeight = 100000; m_assumed_blockchain_size = 1; m_assumed_chain_state_size = 1;
genesis = CreateGenesisBlock(1709474599, 1751449418, 0x1d00ffff, 1, 50 * COIN); consensus.hashGenesisBlock = genesis.GetHash(); assert(consensus.hashGenesisBlock == uint256S("0x0000000000ae20c4552e1d523dc544583fe8931e804dbad984a19f4c321c96a7")); assert(genesis.hashMerkleRoot == uint256S("0x7b1ac28ac39daa1be7f01da822a39bffa75e8def1b4ff413ea6ca49e51caf61c"));
// Note that of those which support the service bits prefix, most only support a subset of // possible options. // This is fine at runtime as we'll fall back to using them as an addrfetch if they don't support the // service bits we want, but we should get them updated to support all service bits wanted by any // release ASAP to avoid it where possible. vSeeds.emplace_back("dnsseed.mydnsseeder.com."); // MyDNS //vSeeds.emplace_back("seed.bitcoin.sipa.be."); // Pieter Wuille, only supports x1, x5, x9, and xd //vSeeds.emplace_back("dnsseed.bluematt.me."); // Matt Corallo, only supports x9 //vSeeds.emplace_back("dnsseed.bitcoin.dashjr.org."); // Luke Dashjr //vSeeds.emplace_back("seed.bitcoinstats.com."); // Christian Decker, supports x1 - xf //vSeeds.emplace_back("seed.bitcoin.jonasschnelli.ch."); // Jonas Schnelli, only supports x1, x5, x9, and xd //vSeeds.emplace_back("seed.btc.petertodd.net."); // Peter Todd, only supports x1, x5, x9, and xd //vSeeds.emplace_back("seed.bitcoin.sprovoost.nl."); // Sjors Provoost //vSeeds.emplace_back("dnsseed.emzy.de."); // Stephan Oeste //vSeeds.emplace_back("seed.bitcoin.wiz.biz."); // Jason Maurice base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,35); base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,50); base58Prefixes[SECRET_KEY] = std::vector<unsigned char>(1,239); base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x35, 0x87, 0xCF}; base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x35, 0x83, 0x94};
bech32_hrp = "an";
vFixedSeeds = std::vector<uint8_t>(std::begin(chainparams_seed_main), std::end(chainparams_seed_main));
fDefaultConsistencyChecks = false; m_is_mockable_chain = false;
checkpointData = { { { 0, uint256S("0x0000000000ae20c4552e1d523dc544583fe8931e804dbad984a19f4c321c96a7")}, } };
m_assumeutxo_data = { // TODO to be specified in a future patch. };
chainTxData = ChainTxData{ // Data from RPC: getchaintxstats 4096 00000000000000000001a0a448d6cf2546b06801389cc030b2b18c6491266815 .nTime = 1692502494, .nTxCount = 0, .dTxRate = 0, }; } };
|