Skip to content

Commit f31f47b

Browse files
committed
chainparams: Add Sapling Bech32 HRPs
1 parent 04fe6c4 commit f31f47b

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

src/chainparams.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,14 @@ class CMainParams : public CChainParams
239239
base58Prefixes[EXT_COIN_TYPE] = boost::assign::list_of(0x80)(0x00)(0x00)(0x77).convert_to_container<std::vector<unsigned char> >();
240240

241241
vFixedSeeds = std::vector<SeedSpec6>(pnSeed6_main, pnSeed6_main + ARRAYLEN(pnSeed6_main));
242+
243+
// Sapling
244+
bech32HRPs[SAPLING_PAYMENT_ADDRESS] = "ps";
245+
bech32HRPs[SAPLING_FULL_VIEWING_KEY] = "pviews";
246+
bech32HRPs[SAPLING_INCOMING_VIEWING_KEY] = "pivks";
247+
bech32HRPs[SAPLING_SPENDING_KEY] = "p-secret-spending-key-main";
248+
249+
convertSeed6(vFixedSeeds, pnSeed6_main, ARRAYLEN(pnSeed6_main));
242250
}
243251

244252
const Checkpoints::CCheckpointData& Checkpoints() const
@@ -375,6 +383,12 @@ class CTestNetParams : public CMainParams
375383
base58Prefixes[EXT_COIN_TYPE] = boost::assign::list_of(0x80)(0x00)(0x00)(0x01).convert_to_container<std::vector<unsigned char> >();
376384

377385
vFixedSeeds = std::vector<SeedSpec6>(pnSeed6_test, pnSeed6_test + ARRAYLEN(pnSeed6_test));
386+
387+
// Sapling
388+
bech32HRPs[SAPLING_PAYMENT_ADDRESS] = "ptestsapling";
389+
bech32HRPs[SAPLING_FULL_VIEWING_KEY] = "pviewtestsapling";
390+
bech32HRPs[SAPLING_INCOMING_VIEWING_KEY] = "pivktestsapling";
391+
bech32HRPs[SAPLING_SPENDING_KEY] = "p-secret-spending-key-test";
378392
}
379393

380394
const Checkpoints::CCheckpointData& Checkpoints() const

src/chainparams.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,15 @@ class CChainParams
5252
MAX_BASE58_TYPES
5353
};
5454

55+
enum Bech32Type {
56+
SAPLING_PAYMENT_ADDRESS,
57+
SAPLING_FULL_VIEWING_KEY,
58+
SAPLING_INCOMING_VIEWING_KEY,
59+
SAPLING_SPENDING_KEY, // todo: implement extended spend key
60+
61+
MAX_BECH32_TYPES
62+
};
63+
5564
const Consensus::Params& GetConsensus() const { return consensus; }
5665
const MessageStartChars& MessageStart() const { return pchMessageStart; }
5766
int GetDefaultPort() const { return nDefaultPort; }
@@ -69,6 +78,7 @@ class CChainParams
6978
std::string NetworkIDString() const { return strNetworkID; }
7079
const std::vector<CDNSSeedData>& DNSSeeds() const { return vSeeds; }
7180
const std::vector<unsigned char>& Base58Prefix(Base58Type type) const { return base58Prefixes[type]; }
81+
const std::string& Bech32HRP(Bech32Type type) const { return bech32HRPs[type]; }
7282
const std::vector<SeedSpec6>& FixedSeeds() const { return vFixedSeeds; }
7383
virtual const Checkpoints::CCheckpointData& Checkpoints() const = 0;
7484

@@ -87,6 +97,7 @@ class CChainParams
8797
int nDefaultPort;
8898
std::vector<CDNSSeedData> vSeeds;
8999
std::vector<unsigned char> base58Prefixes[MAX_BASE58_TYPES];
100+
std::string bech32HRPs[MAX_BECH32_TYPES];
90101
std::vector<SeedSpec6> vFixedSeeds;
91102
};
92103

0 commit comments

Comments
 (0)