diff --git a/src/chainparams.cpp b/src/chainparams.cpp index aaad51639..701573bdb 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -153,6 +153,11 @@ public: // guarantees the first 2 characters, when base58 encoded, are "SK" base58Prefixes[ZCSPENDING_KEY] = {0xAB,0x36}; + bech32HRPs[SAPLING_PAYMENT_ADDRESS] = "zs"; + bech32HRPs[SAPLING_FULL_VIEWING_KEY] = "zviews"; + bech32HRPs[SAPLING_INCOMING_VIEWING_KEY] = "zivks"; + bech32HRPs[SAPLING_SPENDING_KEY] = "secret-spending-key-main"; + vFixedSeeds = std::vector(pnSeed6_main, pnSeed6_main + ARRAYLEN(pnSeed6_main)); fMiningRequiresPeers = true; @@ -310,6 +315,11 @@ public: // guarantees the first 2 characters, when base58 encoded, are "ST" base58Prefixes[ZCSPENDING_KEY] = {0xAC,0x08}; + bech32HRPs[SAPLING_PAYMENT_ADDRESS] = "ztestsapling"; + bech32HRPs[SAPLING_FULL_VIEWING_KEY] = "zviewtestsapling"; + bech32HRPs[SAPLING_INCOMING_VIEWING_KEY] = "zivktestsapling"; + bech32HRPs[SAPLING_SPENDING_KEY] = "secret-spending-key-test"; + vFixedSeeds = std::vector(pnSeed6_test, pnSeed6_test + ARRAYLEN(pnSeed6_test)); fMiningRequiresPeers = true; @@ -429,6 +439,11 @@ public: base58Prefixes[ZCVIEWING_KEY] = {0xA8,0xAC,0x0C}; base58Prefixes[ZCSPENDING_KEY] = {0xAC,0x08}; + bech32HRPs[SAPLING_PAYMENT_ADDRESS] = "zregtestsapling"; + bech32HRPs[SAPLING_FULL_VIEWING_KEY] = "zviewregtestsapling"; + bech32HRPs[SAPLING_INCOMING_VIEWING_KEY] = "zivkregtestsapling"; + bech32HRPs[SAPLING_SPENDING_KEY] = "secret-spending-key-regtest"; + // Founders reward script expects a vector of 2-of-3 multisig addresses vFoundersRewardAddress = { "t2FwcEhFdNXuFMv1tcYwaBJtYVtMj8b1uTg" }; assert(vFoundersRewardAddress.size() <= consensus.GetLastFoundersRewardBlockHeight()); diff --git a/src/chainparams.h b/src/chainparams.h index f1d9b43c3..6ee41fc4b 100644 --- a/src/chainparams.h +++ b/src/chainparams.h @@ -56,6 +56,15 @@ public: MAX_BASE58_TYPES }; + enum Bech32Type { + SAPLING_PAYMENT_ADDRESS, + SAPLING_FULL_VIEWING_KEY, + SAPLING_INCOMING_VIEWING_KEY, + SAPLING_SPENDING_KEY, + + MAX_BECH32_TYPES + }; + const Consensus::Params& GetConsensus() const { return consensus; } const CMessageHeader::MessageStartChars& MessageStart() const { return pchMessageStart; } const std::vector& AlertKey() const { return vAlertPubKey; } @@ -81,6 +90,7 @@ public: std::string NetworkIDString() const { return strNetworkID; } const std::vector& DNSSeeds() const { return vSeeds; } const std::vector& Base58Prefix(Base58Type type) const { return base58Prefixes[type]; } + const std::string& Bech32HRP(Bech32Type type) const { return bech32HRPs[type]; } const std::vector& FixedSeeds() const { return vFixedSeeds; } const CCheckpointData& Checkpoints() const { return checkpointData; } /** Return the founder's reward address and script for a given block height */ @@ -103,6 +113,7 @@ protected: unsigned int nEquihashK = 0; std::vector vSeeds; std::vector base58Prefixes[MAX_BASE58_TYPES]; + std::string bech32HRPs[MAX_BECH32_TYPES]; std::string strNetworkID; std::string strCurrencyUnits; CBlock genesis;