Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions packages/wasm-utxo/js/coinName.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ export const coinNames = [
"tbtc4",
"tbtcsig",
"tbtcbgsig",
"tbtcreg",
"bch",
"tbch",
"bcha",
Expand All @@ -31,6 +32,7 @@ export function getMainnet(name: CoinName): CoinName {
case "tbtc4":
case "tbtcsig":
case "tbtcbgsig":
case "tbtcreg":
return "btc";
case "tbch":
return "bch";
Expand Down Expand Up @@ -80,6 +82,8 @@ export function toCoinName(name: CoinName | UtxolibName): CoinName {
return "tbtcsig";
case "bitcoinBitGoSignet":
return "tbtcbgsig";
case "bitcoinRegtest":
return "tbtcreg";
case "bitcoincash":
return "bch";
case "bitcoincashTestnet":
Expand Down
1 change: 1 addition & 0 deletions packages/wasm-utxo/js/utxolibCompat.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ export type UtxolibName =
| "bitcoinTestnet4"
| "bitcoinPublicSignet"
| "bitcoinBitGoSignet"
| "bitcoinRegtest"
| "bitcoincash"
| "bitcoincashTestnet"
| "ecash"
Expand Down
2 changes: 2 additions & 0 deletions packages/wasm-utxo/src/address/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,8 @@ pub const BITCOIN_BECH32: Bech32Codec = Bech32Codec::new("bc");

pub const TESTNET: Base58CheckCodec = Base58CheckCodec::new(0x6f, 0xc4);
pub const TESTNET_BECH32: Bech32Codec = Bech32Codec::new("tb");
pub const REGTEST: Base58CheckCodec = Base58CheckCodec::new(0x6f, 0xc4);
pub const REGTEST_BECH32: Bech32Codec = Bech32Codec::new("bcrt");

// Bitcoin Cash (Base58Check)
// https://github.com/bitcoin-cash-node/bitcoin-cash-node/blob/master/src/validation.cpp
Expand Down
12 changes: 10 additions & 2 deletions packages/wasm-utxo/src/address/networks.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ use super::{
BITCOIN_CASH_TESTNET_CASHADDR, BITCOIN_GOLD, BITCOIN_GOLD_BECH32, BITCOIN_GOLD_TESTNET,
BITCOIN_GOLD_TESTNET_BECH32, BITCOIN_SV, BITCOIN_SV_TESTNET, DASH, DASH_TEST, DOGECOIN,
DOGECOIN_TEST, ECASH, ECASH_CASHADDR, ECASH_TEST, ECASH_TEST_CASHADDR, LITECOIN,
LITECOIN_BECH32, LITECOIN_TEST, LITECOIN_TEST_BECH32, TESTNET, TESTNET_BECH32, ZCASH,
ZCASH_TEST,
LITECOIN_BECH32, LITECOIN_TEST, LITECOIN_TEST_BECH32, REGTEST, REGTEST_BECH32, TESTNET,
TESTNET_BECH32, ZCASH, ZCASH_TEST,
};
use crate::bitcoin::Script;
use crate::fixed_script_wallet::wallet_scripts::OutputScriptType;
Expand All @@ -29,6 +29,7 @@ fn get_decode_codecs(network: Network) -> Vec<&'static dyn AddressCodec> {
| Network::BitcoinBitGoSignet => {
vec![&TESTNET, &TESTNET_BECH32]
}
Network::BitcoinRegtest => vec![&REGTEST, &REGTEST_BECH32],
Network::BitcoinCash => vec![&BITCOIN_CASH, &BITCOIN_CASH_CASHADDR],
Network::BitcoinCashTestnet => vec![&BITCOIN_CASH_TESTNET, &BITCOIN_CASH_TESTNET_CASHADDR],
Network::Ecash => vec![&ECASH, &ECASH_CASHADDR],
Expand Down Expand Up @@ -247,6 +248,13 @@ fn get_encode_codec(
Ok(&TESTNET)
}
}
Network::BitcoinRegtest => {
if is_witness {
Ok(&REGTEST_BECH32)
} else {
Ok(&REGTEST)
}
}
Network::BitcoinCash => Ok(&BITCOIN_CASH),
Network::BitcoinCashTestnet => Ok(&BITCOIN_CASH_TESTNET),
Network::Ecash => Ok(&ECASH),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,7 @@ impl BitGoPsbt {
| Network::BitcoinTestnet4
| Network::BitcoinPublicSignet
| Network::BitcoinBitGoSignet
| Network::BitcoinRegtest
| Network::BitcoinCash
| Network::BitcoinCashTestnet
| Network::Ecash
Expand Down
14 changes: 12 additions & 2 deletions packages/wasm-utxo/src/networks.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ pub enum Network {
BitcoinTestnet4,
BitcoinPublicSignet,
BitcoinBitGoSignet,
BitcoinRegtest,

// https://github.com/bitcoin-cash-node/bitcoin-cash-node/blob/master/src/validation.cpp
// https://github.com/bitcoin-cash-node/bitcoin-cash-node/blob/master/src/chainparams.cpp
Expand Down Expand Up @@ -63,6 +64,7 @@ impl Network {
Network::BitcoinTestnet4,
Network::BitcoinPublicSignet,
Network::BitcoinBitGoSignet,
Network::BitcoinRegtest,
Network::BitcoinCash,
Network::BitcoinCashTestnet,
Network::Ecash,
Expand All @@ -89,6 +91,7 @@ impl Network {
Network::BitcoinTestnet4 => "BitcoinTestnet4",
Network::BitcoinPublicSignet => "BitcoinPublicSignet",
Network::BitcoinBitGoSignet => "BitcoinBitGoSignet",
Network::BitcoinRegtest => "BitcoinRegtest",
Network::BitcoinCash => "BitcoinCash",
Network::BitcoinCashTestnet => "BitcoinCashTestnet",
Network::Ecash => "Ecash",
Expand All @@ -115,6 +118,7 @@ impl Network {
"BitcoinTestnet4" => Some(Network::BitcoinTestnet4),
"BitcoinPublicSignet" => Some(Network::BitcoinPublicSignet),
"BitcoinBitGoSignet" => Some(Network::BitcoinBitGoSignet),
"BitcoinRegtest" => Some(Network::BitcoinRegtest),

"BitcoinCash" => Some(Network::BitcoinCash),
"BitcoinCashTestnet" => Some(Network::BitcoinCashTestnet),
Expand Down Expand Up @@ -154,6 +158,7 @@ impl Network {
"bitcoinPublicSignet" => Some(Network::BitcoinPublicSignet),
"bitcoinTestnet4" => Some(Network::BitcoinTestnet4),
"bitcoinBitGoSignet" => Some(Network::BitcoinBitGoSignet),
"bitcoinRegtest" => Some(Network::BitcoinRegtest),
"bitcoincash" => Some(Network::BitcoinCash),
"bitcoincashTestnet" => Some(Network::BitcoinCashTestnet),
"ecash" => Some(Network::Ecash),
Expand Down Expand Up @@ -181,6 +186,7 @@ impl Network {
Network::BitcoinTestnet4 => "bitcoinTestnet4",
Network::BitcoinPublicSignet => "bitcoinPublicSignet",
Network::BitcoinBitGoSignet => "bitcoinBitGoSignet",
Network::BitcoinRegtest => "bitcoinRegtest",
Network::BitcoinCash => "bitcoincash",
Network::BitcoinCashTestnet => "bitcoincashTestnet",
Network::Ecash => "ecash",
Expand Down Expand Up @@ -208,6 +214,7 @@ impl Network {
"tbtc4" => Some(Network::BitcoinTestnet4),
"tbtcsig" => Some(Network::BitcoinPublicSignet),
"tbtcbgsig" => Some(Network::BitcoinBitGoSignet),
"tbtcreg" => Some(Network::BitcoinRegtest),
"bch" => Some(Network::BitcoinCash),
"tbch" => Some(Network::BitcoinCashTestnet),
"bcha" => Some(Network::Ecash),
Expand Down Expand Up @@ -236,6 +243,7 @@ impl Network {
Network::BitcoinTestnet4 => "tbtc4",
Network::BitcoinPublicSignet => "tbtcsig",
Network::BitcoinBitGoSignet => "tbtcbgsig",
Network::BitcoinRegtest => "tbtcreg",
Network::BitcoinCash => "bch",
Network::BitcoinCashTestnet => "tbch",
Network::Ecash => "bcha",
Expand All @@ -261,7 +269,8 @@ impl Network {
| Network::BitcoinTestnet3
| Network::BitcoinTestnet4
| Network::BitcoinPublicSignet
| Network::BitcoinBitGoSignet => Network::Bitcoin,
| Network::BitcoinBitGoSignet
| Network::BitcoinRegtest => Network::Bitcoin,

Network::BitcoinCash => Network::BitcoinCash,
Network::BitcoinCashTestnet => Network::BitcoinCash,
Expand Down Expand Up @@ -306,6 +315,7 @@ impl Network {
Network::BitcoinTestnet4 => BitcoinNetwork::Testnet,
Network::BitcoinPublicSignet => BitcoinNetwork::Signet,
Network::BitcoinBitGoSignet => BitcoinNetwork::Signet,
Network::BitcoinRegtest => BitcoinNetwork::Regtest,
// Non-Bitcoin networks - use Bitcoin mainnet/testnet based on whether they're mainnet
_ => {
if self.is_mainnet() {
Expand Down Expand Up @@ -381,7 +391,7 @@ mod tests {
#[test]
fn test_all_networks() {
// Verify ALL contains all networks
assert_eq!(Network::ALL.len(), 21);
assert_eq!(Network::ALL.len(), 22);

// Verify no duplicates
for (i, network1) in Network::ALL.iter().enumerate() {
Expand Down
2 changes: 1 addition & 1 deletion packages/wasm-utxo/src/wasm/psbt.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1037,7 +1037,7 @@ mod tests {
#[test]
fn test_all_networks_macro_is_complete() {
const _: () = assert!(
Network::ALL.len() == 21,
Network::ALL.len() == 22,
"test_all_networks! macro is out of sync with Network::ALL"
);
}
Expand Down
9 changes: 7 additions & 2 deletions packages/wasm-utxo/test/address/compatibility.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ const legacyGroups: CoinName[][] = [
["dash"],
["doge"],
["ltc"],
["tbch", "tbcha", "tbsv", "tbtc", "tbtc4", "tbtcbgsig", "tbtcsig", "tbtg", "tdoge"],
["tbch", "tbcha", "tbsv", "tbtc", "tbtc4", "tbtcbgsig", "tbtcreg", "tbtcsig", "tbtg", "tdoge"],
["tdash"],
["tltc"],
["tzec"],
Expand All @@ -58,11 +58,16 @@ const segwitGroups: CoinName[][] = [
["btg"],
["ltc"],
["tbtc", "tbtc4", "tbtcbgsig", "tbtcsig"],
["tbtcreg"],
["tbtg"],
["tltc"],
];

const taprootGroups: CoinName[][] = [["btc"], ["tbtc", "tbtc4", "tbtcbgsig", "tbtcsig"]];
const taprootGroups: CoinName[][] = [
["btc"],
["tbtc", "tbtc4", "tbtcbgsig", "tbtcsig"],
["tbtcreg"],
];

describe("address compatibility", function () {
it("p2sh: btc/bch/bcha/bsv share mainnet format, most testnets share testnet format", function () {
Expand Down
2 changes: 2 additions & 0 deletions packages/webui/src/wasm-utxo/addresses/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ const ALL_COINS: CoinName[] = [
"tbtc4",
"tbtcsig",
"tbtcbgsig",
"tbtcreg",
"bch",
"tbch",
"bcha",
Expand Down Expand Up @@ -47,6 +48,7 @@ const COIN_NAMES: Record<CoinName, string> = {
tbtc4: "Bitcoin Testnet4",
tbtcsig: "Bitcoin Signet",
tbtcbgsig: "Bitcoin BitGo Signet",
tbtcreg: "Bitcoin Regtest",
bch: "Bitcoin Cash",
tbch: "Bitcoin Cash Testnet",
bcha: "eCash",
Expand Down
1 change: 1 addition & 0 deletions packages/webui/src/wasm-utxo/parser/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ const networkLabels: Record<CoinName, string> = {
tbtc4: "Bitcoin Testnet4",
tbtcsig: "Bitcoin Signet",
tbtcbgsig: "Bitcoin BitGo Signet",
tbtcreg: "Bitcoin Regtest",
ltc: "Litecoin",
tltc: "Litecoin Testnet",
bch: "Bitcoin Cash",
Expand Down
Loading