From bbb608abf2fed94e324bd3b077c8311be9c56cd1 Mon Sep 17 00:00:00 2001 From: Oren Date: Sun, 1 Jun 2025 14:58:35 +0300 Subject: [PATCH] Renaming Network to BitcoinNetwork The type Network is common in WiFi libraries and creates collisions. --- src/Bitcoin.cpp | 14 +++++------ src/Bitcoin.h | 64 ++++++++++++++++++++++++------------------------ src/HDWallet.cpp | 16 ++++++------ src/Networks.cpp | 10 ++++---- src/Networks.h | 12 ++++----- src/Script.cpp | 6 ++--- 6 files changed, 61 insertions(+), 61 deletions(-) diff --git a/src/Bitcoin.cpp b/src/Bitcoin.cpp index 419a2fe..5f086e7 100644 --- a/src/Bitcoin.cpp +++ b/src/Bitcoin.cpp @@ -369,7 +369,7 @@ size_t SchnorrSignature::to_stream(SerializeStream *stream, size_t offset) const // ---------------------------------------------------------------- PublicKey class -int PublicKey::legacyAddress(char * address, size_t len, const Network * network) const{ +int PublicKey::legacyAddress(char * address, size_t len, const BitcoinNetwork * network) const{ memzero(address, len); uint8_t buffer[20]; @@ -384,13 +384,13 @@ int PublicKey::legacyAddress(char * address, size_t len, const Network * network return toBase58Check(addr, 21, address, len); } #if USE_ARDUINO_STRING || USE_STD_STRING -String PublicKey::legacyAddress(const Network * network) const{ +String PublicKey::legacyAddress(const BitcoinNetwork * network) const{ char addr[40] = { 0 }; legacyAddress(addr, sizeof(addr), network); return String(addr); } #endif -int PublicKey::segwitAddress(char address[], size_t len, const Network * network) const{ +int PublicKey::segwitAddress(char address[], size_t len, const BitcoinNetwork * network) const{ memzero(address, len); if(len < 76){ // TODO: 76 is too much for native segwit return 0; @@ -403,13 +403,13 @@ int PublicKey::segwitAddress(char address[], size_t len, const Network * network return 76; } #if USE_ARDUINO_STRING || USE_STD_STRING -String PublicKey::segwitAddress(const Network * network) const{ +String PublicKey::segwitAddress(const BitcoinNetwork * network) const{ char addr[76] = { 0 }; segwitAddress(addr, sizeof(addr), network); return String(addr); } #endif -int PublicKey::nestedSegwitAddress(char address[], size_t len, const Network * network) const{ +int PublicKey::nestedSegwitAddress(char address[], size_t len, const BitcoinNetwork * network) const{ memzero(address, len); uint8_t script[22] = { 0 }; // script[0] = 0x00; // no need to set - already zero @@ -425,7 +425,7 @@ int PublicKey::nestedSegwitAddress(char address[], size_t len, const Network * n return toBase58Check(addr, 21, address, len); } #if USE_ARDUINO_STRING || USE_STD_STRING -String PublicKey::nestedSegwitAddress(const Network * network) const{ +String PublicKey::nestedSegwitAddress(const BitcoinNetwork * network) const{ char addr[40] = { 0 }; nestedSegwitAddress(addr, sizeof(addr), network); return String(addr); @@ -505,7 +505,7 @@ PrivateKey::PrivateKey(void){ memzero(num, 32); // empty key network = &DEFAULT_NETWORK; } -PrivateKey::PrivateKey(const uint8_t * secret_arr, bool use_compressed, const Network * net){ +PrivateKey::PrivateKey(const uint8_t * secret_arr, bool use_compressed, const BitcoinNetwork * net){ reset(); memcpy(num, secret_arr, 32); network = net; diff --git a/src/Bitcoin.h b/src/Bitcoin.h index 2fcc15d..9b760fe 100644 --- a/src/Bitcoin.h +++ b/src/Bitcoin.h @@ -114,30 +114,30 @@ class PublicKey : public ECPoint{ /** * \brief Fills `addr` with legacy Pay-To-Pubkey-Hash address (P2PKH, `1...` for mainnet) */ - int legacyAddress(char * addr, size_t len, const Network * network = &DEFAULT_NETWORK) const; + int legacyAddress(char * addr, size_t len, const BitcoinNetwork * network = &DEFAULT_NETWORK) const; /** * \brief Fills `addr` with native segwit address (P2WPKH, `bc1...` for mainnet) */ - int segwitAddress(char * addr, size_t len, const Network * network = &DEFAULT_NETWORK) const; + int segwitAddress(char * addr, size_t len, const BitcoinNetwork * network = &DEFAULT_NETWORK) const; /** * \brief Fills `addr` with nested segwit address (P2SH-P2WPKH, `3...` for mainnet) */ - int nestedSegwitAddress(char * addr, size_t len, const Network * network = &DEFAULT_NETWORK) const; + int nestedSegwitAddress(char * addr, size_t len, const BitcoinNetwork * network = &DEFAULT_NETWORK) const; /** * \brief Alias for `legacyAddress` */ - int address(char * address, size_t len, const Network * network = &DEFAULT_NETWORK) const{ return legacyAddress(address, len, network); }; + int address(char * address, size_t len, const BitcoinNetwork * network = &DEFAULT_NETWORK) const{ return legacyAddress(address, len, network); }; #if USE_ARDUINO_STRING - String legacyAddress(const Network * network = &DEFAULT_NETWORK) const; - String segwitAddress(const Network * network = &DEFAULT_NETWORK) const; - String nestedSegwitAddress(const Network * network = &DEFAULT_NETWORK) const; - String address(const Network * network = &DEFAULT_NETWORK) const{ return legacyAddress(network); }; + String legacyAddress(const BitcoinNetwork * network = &DEFAULT_NETWORK) const; + String segwitAddress(const BitcoinNetwork * network = &DEFAULT_NETWORK) const; + String nestedSegwitAddress(const BitcoinNetwork * network = &DEFAULT_NETWORK) const; + String address(const BitcoinNetwork * network = &DEFAULT_NETWORK) const{ return legacyAddress(network); }; #endif #if USE_STD_STRING - std::string legacyAddress(const Network * network = &DEFAULT_NETWORK) const; - std::string segwitAddress(const Network * network = &DEFAULT_NETWORK) const; - std::string nestedSegwitAddress(const Network * network = &DEFAULT_NETWORK) const; - std::string address(const Network * network = &DEFAULT_NETWORK) const{ return legacyAddress(network); }; + std::string legacyAddress(const BitcoinNetwork * network = &DEFAULT_NETWORK) const; + std::string segwitAddress(const BitcoinNetwork * network = &DEFAULT_NETWORK) const; + std::string nestedSegwitAddress(const BitcoinNetwork * network = &DEFAULT_NETWORK) const; + std::string address(const BitcoinNetwork * network = &DEFAULT_NETWORK) const{ return legacyAddress(network); }; #endif /** * \brief verifies the ECDSA signature of the hash of the message @@ -167,7 +167,7 @@ class PrivateKey : public ECScalar{ virtual size_t from_stream(ParseStream *s); public: PrivateKey(); - PrivateKey(const uint8_t secret_arr[32], bool use_compressed = true, const Network * net = &DEFAULT_NETWORK); + PrivateKey(const uint8_t secret_arr[32], bool use_compressed = true, const BitcoinNetwork * net = &DEFAULT_NETWORK); PrivateKey(const ECScalar sc); #if USE_ARDUINO_STRING PrivateKey(const String wifString); @@ -183,7 +183,7 @@ class PrivateKey : public ECScalar{ void setSecret(const uint8_t secret_arr[32]){ memcpy(num, secret_arr, 32); pubKey = *this * GeneratorPoint; }; /** \brief Pointer to the network to use. Mainnet or Testnet */ - const Network * network; + const BitcoinNetwork * network; /** \brief Writes the private key in Wallet Import Format */ int wif(char * wifArr, size_t len) const; @@ -255,15 +255,15 @@ class HDPrivateKey : public PrivateKey{ uint8_t key_depth = 0, const uint8_t parent_fingerprint_arr[4] = NULL, uint32_t childnumber = 0, - const Network * network = &DEFAULT_NETWORK, + const BitcoinNetwork * network = &DEFAULT_NETWORK, ScriptType key_type = UNKNOWN_TYPE); HDPrivateKey(const char xprvArr[]); - HDPrivateKey(const char * mnemonic, size_t mnemonicSize, const char * password, size_t passwordSize, const Network * network = &DEFAULT_NETWORK, void (*progress_callback)(float) = NULL); + HDPrivateKey(const char * mnemonic, size_t mnemonicSize, const char * password, size_t passwordSize, const BitcoinNetwork * network = &DEFAULT_NETWORK, void (*progress_callback)(float) = NULL); #if USE_STD_STRING - HDPrivateKey(std::string mnemonic, std::string password, const Network * network = &DEFAULT_NETWORK, void (*progress_callback)(float) = NULL); + HDPrivateKey(std::string mnemonic, std::string password, const BitcoinNetwork * network = &DEFAULT_NETWORK, void (*progress_callback)(float) = NULL); #endif #if USE_ARDUINO_STRING - HDPrivateKey(String mnemonic, String password, const Network * network = &DEFAULT_NETWORK, void (*progress_callback)(float) = NULL); + HDPrivateKey(String mnemonic, String password, const BitcoinNetwork * network = &DEFAULT_NETWORK, void (*progress_callback)(float) = NULL); #endif /* HDPrivateKey(const HDPrivateKey &other):HDPrivateKey( // copy other.num, other.chainCode, other.depth, @@ -280,17 +280,17 @@ class HDPrivateKey : public PrivateKey{ uint32_t childNumber; ScriptType type; - int fromSeed(const uint8_t * seed, size_t seedSize, const Network * network = &DEFAULT_NETWORK); - // int fromSeed(const uint8_t seed[64], const Network * network = &DEFAULT_NETWORK); - int fromMnemonic(const char * mnemonic, size_t mnemonicSize, const char * password, size_t passwordSize, const Network * network = &DEFAULT_NETWORK, void (*progress_callback)(float) = NULL); - int fromMnemonic(const char * mnemonic, const char * password, const Network * network = &DEFAULT_NETWORK, void (*progress_callback)(float) = NULL){ + int fromSeed(const uint8_t * seed, size_t seedSize, const BitcoinNetwork * network = &DEFAULT_NETWORK); + // int fromSeed(const uint8_t seed[64], const BitcoinNetwork * network = &DEFAULT_NETWORK); + int fromMnemonic(const char * mnemonic, size_t mnemonicSize, const char * password, size_t passwordSize, const BitcoinNetwork * network = &DEFAULT_NETWORK, void (*progress_callback)(float) = NULL); + int fromMnemonic(const char * mnemonic, const char * password, const BitcoinNetwork * network = &DEFAULT_NETWORK, void (*progress_callback)(float) = NULL){ return fromMnemonic(mnemonic, strlen(mnemonic), password, strlen(password), network, progress_callback); } #if USE_STD_STRING - int fromMnemonic(std::string mnemonic, std::string password, const Network * network = &DEFAULT_NETWORK, void (*progress_callback)(float) = NULL); + int fromMnemonic(std::string mnemonic, std::string password, const BitcoinNetwork * network = &DEFAULT_NETWORK, void (*progress_callback)(float) = NULL); #endif #if USE_ARDUINO_STRING - int fromMnemonic(String mnemonic, String password, const Network * network = &DEFAULT_NETWORK, void (*progress_callback)(float) = NULL); + int fromMnemonic(String mnemonic, String password, const BitcoinNetwork * network = &DEFAULT_NETWORK, void (*progress_callback)(float) = NULL); #endif int xprv(char * arr, size_t len) const; int xpub(char * arr, size_t len) const; @@ -349,7 +349,7 @@ class HDPublicKey : public PublicKey{ uint8_t key_depth = 0, const uint8_t parent_fingerprint_arr[4] = NULL, uint32_t childnumber = 0, - const Network * net = &DEFAULT_NETWORK, + const BitcoinNetwork * net = &DEFAULT_NETWORK, ScriptType key_type = UNKNOWN_TYPE); HDPublicKey(const char * xpubArr); /* HDPublicKey(const HDPublicKey &other):HDPublicKey( // copy @@ -370,7 +370,7 @@ class HDPublicKey : public PublicKey{ uint8_t parentFingerprint[4]; uint32_t childNumber; ScriptType type; - const Network * network; + const BitcoinNetwork * network; int xpub(char * arr, size_t len) const; int address(char * arr, size_t len) const; @@ -505,12 +505,12 @@ class Script : public Streamable{ /** \brief tries to determine the script type */ ScriptType type() const; /** \brief returns address corresponding to the script */ - size_t address(char * buffer, size_t len, const Network * network = &DEFAULT_NETWORK) const; + size_t address(char * buffer, size_t len, const BitcoinNetwork * network = &DEFAULT_NETWORK) const; #if USE_ARDUINO_STRING - String address(const Network * network = &DEFAULT_NETWORK) const; + String address(const BitcoinNetwork * network = &DEFAULT_NETWORK) const; #endif #if USE_STD_STRING - std::string address(const Network * network = &DEFAULT_NETWORK) const; + std::string address(const BitcoinNetwork * network = &DEFAULT_NETWORK) const; #endif /** \brief length of the script with varint */ @@ -642,12 +642,12 @@ class TxOut : public Streamable{ /** \brief returns the output amount in BTC */ float btcAmount(){ return (float)amount/1e8; }; /** \brief returns the address corresponding to the output script */ - size_t address(char * addr, size_t len, const Network * network = &DEFAULT_NETWORK) const{ return scriptPubkey.address(addr, len, network); }; + size_t address(char * addr, size_t len, const BitcoinNetwork * network = &DEFAULT_NETWORK) const{ return scriptPubkey.address(addr, len, network); }; #if USE_ARDUINO_STRING - String address(const Network * network = &DEFAULT_NETWORK) const{ return scriptPubkey.address(network); }; + String address(const BitcoinNetwork * network = &DEFAULT_NETWORK) const{ return scriptPubkey.address(network); }; #endif #if USE_STD_STRING - std::string address(const Network * network = &DEFAULT_NETWORK) const{ return scriptPubkey.address(network); }; + std::string address(const BitcoinNetwork * network = &DEFAULT_NETWORK) const{ return scriptPubkey.address(network); }; #endif bool isValid() const{ return status==PARSING_DONE; }; diff --git a/src/HDWallet.cpp b/src/HDWallet.cpp index f822fc4..8e60685 100644 --- a/src/HDWallet.cpp +++ b/src/HDWallet.cpp @@ -38,7 +38,7 @@ HDPrivateKey::HDPrivateKey(const uint8_t secret[32], uint8_t key_depth, const uint8_t parent_fingerprint_arr[4], uint32_t child_number, - const Network * net, + const BitcoinNetwork * net, ScriptType key_type){ init(); memcpy(num, secret, 32); @@ -73,12 +73,12 @@ HDPrivateKey::HDPrivateKey(const char * xprvArr){ init(); from_str(xprvArr, strlen(xprvArr)); } -HDPrivateKey::HDPrivateKey(const char * mnemonic, size_t mnemonicSize, const char * password, size_t passwordSize, const Network * net, void (*progress_callback)(float)){ +HDPrivateKey::HDPrivateKey(const char * mnemonic, size_t mnemonicSize, const char * password, size_t passwordSize, const BitcoinNetwork * net, void (*progress_callback)(float)){ init(); fromMnemonic(mnemonic, mnemonicSize, password, passwordSize, net, progress_callback); } #if USE_ARDUINO_STRING || USE_STD_STRING -HDPrivateKey::HDPrivateKey(String mnemonic, String password, const Network * net, void (*progress_callback)(float)){ +HDPrivateKey::HDPrivateKey(String mnemonic, String password, const BitcoinNetwork * net, void (*progress_callback)(float)){ init(); fromMnemonic(mnemonic, password, net, progress_callback); } @@ -239,7 +239,7 @@ size_t HDPrivateKey::from_str(const char * xprvArr, size_t xprvLen){ HDPrivateKey::from_stream(&s); return xprvLen; } -int HDPrivateKey::fromSeed(const uint8_t * seed, size_t seedSize, const Network * net){ +int HDPrivateKey::fromSeed(const uint8_t * seed, size_t seedSize, const BitcoinNetwork * net){ init(); uint8_t raw[64] = { 0 }; SHA512 sha; @@ -255,10 +255,10 @@ int HDPrivateKey::fromSeed(const uint8_t * seed, size_t seedSize, const Network pubKey.compressed = true; return 1; } -// int HDPrivateKey::fromSeed(const uint8_t seed[64], const Network * net){ +// int HDPrivateKey::fromSeed(const uint8_t seed[64], const BitcoinNetwork * net){ // fromSeed(seed, 64); // } -int HDPrivateKey::fromMnemonic(const char * mnemonic, size_t mnemonicSize, const char * password, size_t passwordSize, const Network * net, void (*progress_callback)(float)){ +int HDPrivateKey::fromMnemonic(const char * mnemonic, size_t mnemonicSize, const char * password, size_t passwordSize, const BitcoinNetwork * net, void (*progress_callback)(float)){ init(); uint8_t seed[64] = { 0 }; uint8_t ind[4] = { 0, 0, 0, 1 }; @@ -289,7 +289,7 @@ int HDPrivateKey::fromMnemonic(const char * mnemonic, size_t mnemonicSize, const return 1; } #if USE_ARDUINO_STRING || USE_STD_STRING -int HDPrivateKey::fromMnemonic(String mnemonic, String password, const Network * net, void (*progress_callback)(float)){ +int HDPrivateKey::fromMnemonic(String mnemonic, String password, const BitcoinNetwork * net, void (*progress_callback)(float)){ return fromMnemonic(mnemonic.c_str(), mnemonic.length(), password.c_str(), password.length(), net, progress_callback); } #endif @@ -681,7 +681,7 @@ HDPublicKey::HDPublicKey(const uint8_t p[64], uint8_t key_depth, const uint8_t parent_fingerprint_arr[4], uint32_t child_number, - const Network * net, + const BitcoinNetwork * net, ScriptType key_type){ reset(); memcpy(point, p, 64); diff --git a/src/Networks.cpp b/src/Networks.cpp index 055cab7..d17ec9f 100644 --- a/src/Networks.cpp +++ b/src/Networks.cpp @@ -1,7 +1,7 @@ // all known networks #include "Networks.h" -const Network Mainnet = { +const BitcoinNetwork Mainnet = { 0x00, // p2pkh 0x05, // p2sh "bc", // bech32 @@ -19,7 +19,7 @@ const Network Mainnet = { 0 // bip32 coin type }; -const Network Testnet = { +const BitcoinNetwork Testnet = { 0x6F, // p2pkh 0xC4, // p2sh "tb", // bech32 @@ -37,7 +37,7 @@ const Network Testnet = { 1 // bip32 coin type }; -const Network Regtest = { +const BitcoinNetwork Regtest = { 0x6F, // p2pkh 0xC4, // p2sh "bcrt", // bech32 @@ -56,7 +56,7 @@ const Network Regtest = { }; // signet is the same as testnet -const Network Signet = Testnet; +const BitcoinNetwork Signet = Testnet; -const Network * networks[4] = { &Mainnet, &Testnet, &Regtest, &Signet }; +const BitcoinNetwork * networks[4] = { &Mainnet, &Testnet, &Regtest, &Signet }; const uint8_t networks_len = 4; diff --git a/src/Networks.h b/src/Networks.h index 3b77f5e..f4d928a 100644 --- a/src/Networks.h +++ b/src/Networks.h @@ -39,14 +39,14 @@ typedef struct { uint8_t Zpub[4]; /** \brief bip32 coin index */ uint32_t bip32; -} Network; +} BitcoinNetwork; -extern const Network Mainnet; -extern const Network Testnet; -extern const Network Regtest; -extern const Network Signet; +extern const BitcoinNetwork Mainnet; +extern const BitcoinNetwork Testnet; +extern const BitcoinNetwork Regtest; +extern const BitcoinNetwork Signet; -extern const Network * networks[]; +extern const BitcoinNetwork * networks[]; extern const uint8_t networks_len; #endif // __UBTC_NETWORKS_H__ \ No newline at end of file diff --git a/src/Script.cpp b/src/Script.cpp index 4fb5eb5..5991e01 100644 --- a/src/Script.cpp +++ b/src/Script.cpp @@ -145,7 +145,7 @@ void Script::fromAddress(const char * address){ return; } ScriptType type = UNKNOWN_TYPE; - const Network * network; + const BitcoinNetwork * network; for(int i=0; ibech32, strlen(networks[i]->bech32))==0){ type = P2WPKH; @@ -364,7 +364,7 @@ ScriptType Script::type() const{ } return UNKNOWN_TYPE; } -size_t Script::address(char * buffer, size_t len, const Network * network) const{ +size_t Script::address(char * buffer, size_t len, const BitcoinNetwork * network) const{ memset(buffer, 0, len); if(type() == P2PKH){ uint8_t addr[21]; @@ -405,7 +405,7 @@ size_t Script::address(char * buffer, size_t len, const Network * network) const return 0; } #if USE_ARDUINO_STRING || USE_STD_STRING -String Script::address(const Network * network) const{ +String Script::address(const BitcoinNetwork * network) const{ char buffer[100] = { 0 }; size_t l = address(buffer, sizeof(buffer), network); if(l == 0){