Skip to content

Commit 1153595

Browse files
authored
Merge pull request #7 from sandrocsimas/main
Support Electra Protocol
2 parents 23e5631 + 397e7d5 commit 1153595

File tree

8 files changed

+150
-27
lines changed

8 files changed

+150
-27
lines changed

lib/bip/bip/conf/bip44/bip44_coins.dart

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,9 @@ class Bip44Coins extends BipCoins {
314314
/// Zilliqa
315315
static const zilliqa = Bip44Coins._('zilliqa');
316316

317+
/// Electra Protocol
318+
static const electraProtocol = Bip44Coins._('electraProtocol');
319+
317320
// Test nets
318321

319322
/// Bitcoin Cash Testnet
@@ -355,6 +358,9 @@ class Bip44Coins extends BipCoins {
355358
/// Ton Testnet
356359
static const tonMainnet = Bip44Coins._('tonMainnet');
357360

361+
/// Electra Protocol Testnet
362+
static const electraProtocolTestnet = Bip44Coins._('electraProtocolTestnet');
363+
358364
// Fields and methods
359365

360366
@override
@@ -478,7 +484,10 @@ class Bip44Coins extends BipCoins {
478484
Bip44Coins.zilliqa: Bip44Conf.zilliqa,
479485
Bip44Coins.tonTestnet: Bip44Conf.tonTestnet,
480486
Bip44Coins.tonMainnet: Bip44Conf.tonMainnet,
487+
Bip44Coins.electraProtocol: Bip44Conf.electraProtocolMainNet,
488+
Bip44Coins.electraProtocolTestnet: Bip44Conf.electraProtocolTestNet,
481489
};
490+
482491
@override
483492
BipProposal get proposal => BipProposal.bip44;
484493

lib/bip/bip/conf/bip44/bip44_conf.dart

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import 'package:blockchain_utils/bip/bip/bip32/bip32_const.dart';
33
import 'package:blockchain_utils/bip/bip/bip32/bip32_key_net_ver.dart';
44
import 'package:blockchain_utils/bip/bip/conf/config/bip_bitcoin_cash_conf.dart';
55
import 'package:blockchain_utils/bip/bip/conf/config/bip_coin_conf.dart';
6-
import 'package:blockchain_utils/bip/bip/conf/const/bip_conf_const.dart';
76
import 'package:blockchain_utils/bip/bip/conf/config/bip_litecoin_conf.dart';
7+
import 'package:blockchain_utils/bip/bip/conf/const/bip_conf_const.dart';
88
import 'package:blockchain_utils/bip/coin_conf/coins_conf.dart';
99
import 'package:blockchain_utils/bip/ecc/curve/elliptic_curve_types.dart';
1010
import 'package:blockchain_utils/bip/slip/slip44/slip44.dart';
@@ -1408,6 +1408,7 @@ class Bip44Conf {
14081408
addressEncoder: ([dynamic kwargs]) => TonAddrEncoder(),
14091409
addrParams: {"workchain": CoinsConf.tonMainnet.params.workchain},
14101410
);
1411+
14111412
static final BipCoinConfig tonTestnet = BipCoinConfig(
14121413
coinNames: CoinsConf.tonTestnet.coinName,
14131414
coinIdx: Slip44.testnet,
@@ -1419,4 +1420,40 @@ class Bip44Conf {
14191420
addressEncoder: ([dynamic kwargs]) => TonAddrEncoder(),
14201421
addrParams: {"workchain": CoinsConf.tonTestnet.params.workchain},
14211422
);
1423+
1424+
/// Configuration for Electra Protocol main net
1425+
static final BipCoinConfig electraProtocolMainNet = BipCoinConfig(
1426+
coinNames: CoinsConf.electraProtocolMainNet.coinName,
1427+
coinIdx: Slip44.electraProtocol,
1428+
isTestnet: false,
1429+
defPath: derPathNonHardenedFull,
1430+
keyNetVer: Bip32KeyNetVersions(
1431+
List<int>.from([0x04, 0x88, 0xb2, 0x1e]),
1432+
List<int>.from([0x04, 0x88, 0xad, 0xe4]),
1433+
),
1434+
wifNetVer: CoinsConf.electraProtocolMainNet.params.wifNetVer,
1435+
type: EllipticCurveTypes.secp256k1,
1436+
addressEncoder: ([dynamic kwargs]) => P2PKHAddrEncoder(),
1437+
addrParams: {
1438+
"net_ver": CoinsConf.electraProtocolMainNet.params.p2pkhNetVer!,
1439+
},
1440+
);
1441+
1442+
/// Configuration for Electra Protocol test net
1443+
static final BipCoinConfig electraProtocolTestNet = BipCoinConfig(
1444+
coinNames: CoinsConf.electraProtocolTestNet.coinName,
1445+
coinIdx: Slip44.electraProtocol,
1446+
isTestnet: true,
1447+
defPath: derPathNonHardenedFull,
1448+
keyNetVer: Bip32KeyNetVersions(
1449+
List<int>.from([0x04, 0x35, 0x87, 0xcf]),
1450+
List<int>.from([0x04, 0x35, 0x83, 0x94]),
1451+
),
1452+
wifNetVer: CoinsConf.electraProtocolTestNet.params.wifNetVer,
1453+
type: EllipticCurveTypes.secp256k1,
1454+
addressEncoder: ([dynamic kwargs]) => P2PKHAddrEncoder(),
1455+
addrParams: {
1456+
"net_ver": CoinsConf.electraProtocolTestNet.params.p2pkhNetVer!,
1457+
},
1458+
);
14221459
}

lib/bip/bip/conf/bip49/bip49_coins.dart

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class Bip49Coins extends BipCoins {
1515
static const Bip49Coins litecoin = Bip49Coins._('litecoin');
1616
static const Bip49Coins zcash = Bip49Coins._('zcash');
1717
static const Bip49Coins pepecoin = Bip49Coins._('pepecoin');
18-
static const Bip49Coins omniXep = Bip49Coins._('omniXep');
18+
static const Bip49Coins electraProtocol = Bip49Coins._('electraProtocol');
1919

2020
// Test nets
2121
static const Bip49Coins bitcoinCashTestnet =
@@ -30,6 +30,8 @@ class Bip49Coins extends BipCoins {
3030
static const Bip49Coins litecoinTestnet = Bip49Coins._('litecoinTestnet');
3131
static const Bip49Coins zcashTestnet = Bip49Coins._('zcashTestnet');
3232
static const Bip49Coins pepecoinTestnet = Bip49Coins._('pepecoinTestnet');
33+
static const Bip49Coins electraProtocolTestnet =
34+
Bip49Coins._('electraProtocolTestnet');
3335

3436
final String name;
3537

@@ -77,7 +79,8 @@ class Bip49Coins extends BipCoins {
7779
Bip49Coins.zcashTestnet: Bip49Conf.zcashTestNet,
7880
Bip49Coins.pepecoin: Bip49Conf.pepeMainnet,
7981
Bip49Coins.pepecoinTestnet: Bip49Conf.pepeTestnet,
80-
Bip49Coins.omniXep: Bip49Conf.omniXepMainNet
82+
Bip49Coins.electraProtocol: Bip49Conf.electraProtocolMainNet,
83+
Bip49Coins.electraProtocolTestnet: Bip49Conf.electraProtocolTestNet,
8184
};
8285

8386
@override

lib/bip/bip/conf/bip49/bip49_conf.dart

Lines changed: 36 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import 'package:blockchain_utils/bip/address/p2sh_addr.dart';
22
import 'package:blockchain_utils/bip/bip/bip32/bip32_key_net_ver.dart';
3-
import 'package:blockchain_utils/bip/bip/conf/const/bip_conf_const.dart';
43
import 'package:blockchain_utils/bip/bip/conf/config/bip_bitcoin_cash_conf.dart';
54
import 'package:blockchain_utils/bip/bip/conf/config/bip_coin_conf.dart';
65
import 'package:blockchain_utils/bip/bip/conf/config/bip_litecoin_conf.dart';
6+
import 'package:blockchain_utils/bip/bip/conf/const/bip_conf_const.dart';
77
import 'package:blockchain_utils/bip/coin_conf/coins_conf.dart';
88
import 'package:blockchain_utils/bip/ecc/curve/elliptic_curve_types.dart';
99
import 'package:blockchain_utils/bip/slip/slip44/slip44.dart';
@@ -411,20 +411,39 @@ class Bip49Conf {
411411
"net_ver": CoinsConf.pepeTestnet.params.p2shNetVer!,
412412
});
413413

414-
/// Configuration for Omni XEP main net
415-
static final BipCoinConfig omniXepMainNet = BipCoinConfig(
416-
coinNames: CoinsConf.omniXepMainNet.coinName,
417-
coinIdx: Slip44.omniXep,
418-
isTestnet: false,
419-
defPath: derPathNonHardenedFull,
420-
keyNetVer: Bip32KeyNetVersions(
421-
List<int>.from([0x04, 0x88, 0xb2, 0x1e]),
422-
List<int>.from([0x04, 0x88, 0xad, 0xe4]),
423-
),
424-
wifNetVer: CoinsConf.omniXepMainNet.params.wifNetVer,
425-
type: EllipticCurveTypes.secp256k1,
426-
addressEncoder: ([dynamic kwargs]) => P2SHAddrEncoder(),
427-
addrParams: {
428-
"net_ver": CoinsConf.omniXepMainNet.params.p2shNetVer!,
429-
});
414+
/// Configuration for Electra Protocol main net
415+
static final BipCoinConfig electraProtocolMainNet = BipCoinConfig(
416+
coinNames: CoinsConf.electraProtocolMainNet.coinName,
417+
coinIdx: Slip44.electraProtocol,
418+
isTestnet: false,
419+
defPath: derPathNonHardenedFull,
420+
keyNetVer: Bip32KeyNetVersions(
421+
List<int>.from([0x04, 0x88, 0xb2, 0x1e]),
422+
List<int>.from([0x04, 0x88, 0xad, 0xe4]),
423+
),
424+
wifNetVer: CoinsConf.electraProtocolMainNet.params.wifNetVer,
425+
type: EllipticCurveTypes.secp256k1,
426+
addressEncoder: ([dynamic kwargs]) => P2SHAddrEncoder(),
427+
addrParams: {
428+
"net_ver": CoinsConf.electraProtocolMainNet.params.p2shNetVer!,
429+
},
430+
);
431+
432+
/// Configuration for Electra Protocol test net
433+
static final BipCoinConfig electraProtocolTestNet = BipCoinConfig(
434+
coinNames: CoinsConf.electraProtocolTestNet.coinName,
435+
coinIdx: Slip44.electraProtocol,
436+
isTestnet: true,
437+
defPath: derPathNonHardenedFull,
438+
keyNetVer: Bip32KeyNetVersions(
439+
List<int>.from([0x04, 0x35, 0x87, 0xcf]),
440+
List<int>.from([0x04, 0x35, 0x83, 0x94]),
441+
),
442+
wifNetVer: CoinsConf.electraProtocolTestNet.params.wifNetVer,
443+
type: EllipticCurveTypes.secp256k1,
444+
addressEncoder: ([dynamic kwargs]) => P2SHAddrEncoder(),
445+
addrParams: {
446+
"net_ver": CoinsConf.electraProtocolTestNet.params.p2shNetVer!,
447+
},
448+
);
430449
}

lib/bip/bip/conf/bip84/bip84_coins.dart

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,15 +62,21 @@ class Bip84Coins extends BipCoins {
6262
// Main nets
6363
static const Bip84Coins bitcoin = Bip84Coins._('bitcoin');
6464
static const Bip84Coins litecoin = Bip84Coins._('litecoin');
65+
static const Bip84Coins electraProtocol = Bip84Coins._('electraProtocol');
6566

6667
// Test nets
6768
static const Bip84Coins bitcoinTestnet = Bip84Coins._('bitcoinTestnet');
6869
static const Bip84Coins litecoinTestnet = Bip84Coins._('litecoinTestnet');
70+
static const Bip84Coins electraProtocolTestnet =
71+
Bip84Coins._('electraProtocolTestnet');
72+
6973
static const List<Bip84Coins> values = [
7074
bitcoin,
7175
litecoin,
76+
electraProtocol,
7277
bitcoinTestnet,
73-
litecoinTestnet
78+
litecoinTestnet,
79+
electraProtocolTestnet,
7480
];
7581
final String name;
7682

@@ -100,6 +106,8 @@ class Bip84Coins extends BipCoins {
100106
Bip84Coins.bitcoinTestnet: Bip84Conf.bitcoinTestNet,
101107
Bip84Coins.litecoin: Bip84Conf.litecoinMainNet,
102108
Bip84Coins.litecoinTestnet: Bip84Conf.litecoinTestNet,
109+
Bip84Coins.electraProtocol: Bip84Conf.electraProtocolMainNet,
110+
Bip84Coins.electraProtocolTestnet: Bip84Conf.electraProtocolTestNet,
103111
};
104112

105113
@override

lib/bip/bip/conf/bip84/bip84_conf.dart

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import 'package:blockchain_utils/bip/address/p2wpkh_addr.dart';
1+
import 'package:blockchain_utils/bip/address/encoders.dart';
22
import 'package:blockchain_utils/bip/bip/bip32/bip32_key_net_ver.dart';
33
import 'package:blockchain_utils/bip/bip/conf/config/bip_coin_conf.dart';
44
import 'package:blockchain_utils/bip/bip/conf/const/bip_conf_const.dart';
@@ -72,4 +72,40 @@ class Bip84Conf {
7272
addrParams: {"hrp": CoinsConf.litecoinTestNet.params.p2wpkhHrp!},
7373
addressEncoder: ([dynamic kwargs]) => P2WPKHAddrEncoder(),
7474
);
75+
76+
/// Configuration for Electra Protocol main net
77+
static final BipCoinConfig electraProtocolMainNet = BipCoinConfig(
78+
coinNames: CoinsConf.electraProtocolMainNet.coinName,
79+
coinIdx: Slip44.electraProtocol,
80+
isTestnet: false,
81+
defPath: derPathNonHardenedFull,
82+
keyNetVer: Bip32KeyNetVersions(
83+
List<int>.from([0x04, 0x88, 0xb2, 0x1e]),
84+
List<int>.from([0x04, 0x88, 0xad, 0xe4]),
85+
),
86+
wifNetVer: CoinsConf.electraProtocolMainNet.params.wifNetVer,
87+
type: EllipticCurveTypes.secp256k1,
88+
addressEncoder: ([dynamic kwargs]) => P2WPKHAddrEncoder(),
89+
addrParams: {
90+
"hrp": CoinsConf.electraProtocolMainNet.params.p2wpkhHrp!,
91+
},
92+
);
93+
94+
/// Configuration for Electra Protocol test net
95+
static final BipCoinConfig electraProtocolTestNet = BipCoinConfig(
96+
coinNames: CoinsConf.electraProtocolTestNet.coinName,
97+
coinIdx: Slip44.electraProtocol,
98+
isTestnet: true,
99+
defPath: derPathNonHardenedFull,
100+
keyNetVer: Bip32KeyNetVersions(
101+
List<int>.from([0x04, 0x35, 0x87, 0xcf]),
102+
List<int>.from([0x04, 0x35, 0x83, 0x94]),
103+
),
104+
wifNetVer: CoinsConf.electraProtocolTestNet.params.wifNetVer,
105+
type: EllipticCurveTypes.secp256k1,
106+
addressEncoder: ([dynamic kwargs]) => P2WPKHAddrEncoder(),
107+
addrParams: {
108+
"hrp": CoinsConf.electraProtocolMainNet.params.p2wpkhHrp!,
109+
},
110+
);
75111
}

lib/bip/coin_conf/coins_conf.dart

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import 'package:blockchain_utils/bip/slip/slip173/slip173.dart';
21
import 'package:blockchain_utils/bip/coin_conf/coins_name.dart';
2+
import 'package:blockchain_utils/bip/slip/slip173/slip173.dart';
33

44
import 'coin_conf.dart';
55

@@ -707,14 +707,25 @@ class CoinsConf {
707707
),
708708
);
709709

710-
/// Configuration for Omni XEP main net
711-
static const CoinConf omniXepMainNet = CoinConf(
712-
coinName: CoinNames("Omni XEP", "OXEP"),
710+
/// Configuration for Electra Protocol main net
711+
static const CoinConf electraProtocolMainNet = CoinConf(
712+
coinName: CoinNames("Electra Protocol", "XEP"),
713713
params: CoinParams(
714714
p2pkhNetVer: [0x37],
715715
p2shNetVer: [0x89],
716716
wifNetVer: [0xa2],
717717
p2wpkhHrp: "ep",
718718
),
719719
);
720+
721+
/// Configuration for Electra Protocol test net
722+
static const CoinConf electraProtocolTestNet = CoinConf(
723+
coinName: CoinNames("Electra Protocol TestNet", "XEP"),
724+
params: CoinParams(
725+
p2pkhNetVer: [0x8d],
726+
p2shNetVer: [0x13],
727+
wifNetVer: [0xef],
728+
p2wpkhHrp: "te",
729+
),
730+
);
720731
}

lib/bip/slip/slip44/slip44.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,5 +103,5 @@ class Slip44 {
103103
static const int celo = 52752;
104104
static const int piNetwork = 314159;
105105
static const int pepecoin = 3434;
106-
static const int omniXep = 597;
106+
static const int electraProtocol = 597;
107107
}

0 commit comments

Comments
 (0)