Line data Source code
1 : // ignore_for_file: constant_identifier_names
2 :
3 : import 'dart:typed_data';
4 : import 'package:walletkit_dart/src/crypto/utxo/entities/op_codes.dart';
5 : import 'package:walletkit_dart/src/crypto/network_type.dart';
6 :
7 : const MAX_PUBKEYS_PER_MULTISIG = 20;
8 :
9 : const PUBKEY_SCRIPT_HASH_LENGTH_HEX = "14"; // 20 bytes
10 :
11 : const SIG_HASH_ALL = 0x01;
12 :
13 : const int EXTERNAL_CHAIN_INDEX = 0;
14 : const int INTERNAL_CHAIN_INDEX = 1;
15 :
16 : ///
17 : /// Public Key Prefixes & Suffixes
18 : ///
19 :
20 24 : final p2pkhPrefix = "${OPCODE.OP_DUP}${OPCODE.OP_HASH160}$PUBKEY_SCRIPT_HASH_LENGTH_HEX";
21 24 : final p2pkhPostfix = "${OPCODE.OP_EQUALVERIFY}${OPCODE.OP_CHECKSIG}";
22 12 : final p2wpkhPrefix = "${OPCODE.OP_0}$PUBKEY_SCRIPT_HASH_LENGTH_HEX";
23 12 : final p2shPrefix = "${OPCODE.OP_HASH160}$PUBKEY_SCRIPT_HASH_LENGTH_HEX";
24 12 : final p2shPostfix = "${OPCODE.OP_EQUAL}";
25 :
26 : ///
27 : /// Address Prefixes
28 : ///
29 : const String P2PKH_PREFIX = '1'; // Legacy
30 : const String P2PKH_PREFIX_LTC = 'L'; // Legacy Litecoin
31 : const String P2PKH_PREFIX_ZENIQ = 'm'; // Legacy ZENIQ prefix
32 : const String P2SH_PREFIX = '3'; // Compatibility Address
33 : const String P2SH_PREFIX_LTC = 'M'; // Compatibility Address Litecoin
34 : const String P2WPKH_PREFIX_BTC = 'bc1'; // Native SegWit Bitcoin
35 : const String P2WPKH_PREFIX_LTC = 'ltc1'; // Native SegWit Litecoin
36 : const List<String> P2WPKH_PREFIXES_BCH = ["1q", "qq"]; // Native SegWit Bitcoin Cash
37 : const String P2PKH_PREFIX_EC8 = 'c';
38 :
39 : const BITCOIN_NETWORK_BIP = NetworkBIP(
40 : bip32XpubPrefix: 0x0488b21e,
41 : bip32XprivPrefix: 0x0488ade4,
42 : bip49XpubPrefix: 0x049d7cb2,
43 : bip49XprivPrefix: 0x049d7878,
44 : bip84XpubPrefix: 0x04b24746,
45 : bip84XprivPrefix: 0x04b2430c,
46 : wif: 0x80,
47 : );
48 :
49 : const BITCOIN_SIGHASH_INFO = SighashInfo(
50 : all: 0x01,
51 : none: 0x02,
52 : single: 0x03,
53 : allAnyoneCanPay: 0x81,
54 : noneAnyoneCanPay: 0x82,
55 : singleAnyoneCanPay: 0x83,
56 : );
57 :
58 : const BCH_SIGHASH_INFO = SighashInfo(
59 : all: 0x41,
60 : none: 0x42,
61 : single: 0x43,
62 : allAnyoneCanPay: 0xc1,
63 : noneAnyoneCanPay: 0xc2,
64 : singleAnyoneCanPay: 0xc3,
65 : );
66 :
67 : ///
68 : /// Needed for compatibility with old wallets
69 : ///
70 : const LITECOIN_NETWORK_BIP_WK_COMPATIBILITY = NetworkBIP(
71 : bip32XpubPrefix: 0x0488b21e,
72 : bip32XprivPrefix: 0x0488ade4,
73 : bip49XpubPrefix: 0x0488b21e,
74 : bip49XprivPrefix: 0x0488ade4,
75 : bip84XpubPrefix: 0x0488b21e,
76 : bip84XprivPrefix: 0x0488ade4,
77 : wif: 0xb0,
78 : );
79 :
80 : const LITECOIN_NETWORK_BIP = NetworkBIP(
81 : bip32XpubPrefix: 0x019da462,
82 : bip32XprivPrefix: 0x019d9cfe,
83 : bip49XpubPrefix: 0x01b26ef6,
84 : bip49XprivPrefix: 0x01b26792,
85 : bip84XpubPrefix: 0x01b26ef6,
86 : bip84XprivPrefix: 0x01b26792,
87 : wif: 0xb0,
88 : );
89 :
90 : ///
91 : /// DEV
92 : ///
93 :
94 : const publicTestMnemonicHello = // this mnemonic should be never used for real funds
95 : "hello upon mirror situate cradle execute cute negative sudden city mean square";
96 :
97 6 : Uint8List get helloSeed {
98 12 : return Uint8List.fromList([
99 : 93,
100 : 37,
101 : 243,
102 : 36,
103 : 240,
104 : 76,
105 : 115,
106 : 228,
107 : 64,
108 : 229,
109 : 10,
110 : 179,
111 : 172,
112 : 124,
113 : 11,
114 : 81,
115 : 118,
116 : 191,
117 : 159,
118 : 146,
119 : 181,
120 : 53,
121 : 122,
122 : 123,
123 : 79,
124 : 222,
125 : 13,
126 : 15,
127 : 123,
128 : 239,
129 : 231,
130 : 251,
131 : 113,
132 : 198,
133 : 32,
134 : 189,
135 : 145,
136 : 38,
137 : 116,
138 : 17,
139 : 138,
140 : 110,
141 : 174,
142 : 197,
143 : 113,
144 : 100,
145 : 145,
146 : 118,
147 : 205,
148 : 162,
149 : 109,
150 : 208,
151 : 161,
152 : 231,
153 : 52,
154 : 27,
155 : 203,
156 : 63,
157 : 140,
158 : 145,
159 : 228,
160 : 193,
161 : 46,
162 : 58
163 : ]);
164 : }
165 :
166 : const helloXpub =
167 : "xpub69BsBUCquKCgn1u6cum7syZewx5J2fyJE479qzDRJtB6hSHkhLsPZZW2SBfPfJaidDtE9g6wyH7ZFv8bWTkwuLeRJx3H2Kray9AsvY8EJAP";
168 :
169 : const rejectXpubBip44 =
170 : "xpub69QjKT4D1e69hjobnhYXrjDwcMfgdnt7CtuNKrUjsqpUZEy3zRYhKcHCtwo4csQxL9jua7M43xYYkt79PtVmwBhix2QNoofzqhLUWMEJNsN";
171 :
172 : const rejectXpub =
173 : "xpub69QjKT4D1e67mdLGJDUq45wYdQZrVL7DATQ98dPPHiKwkKsrM1uyhbG4UazWemQvmi8GBV5UCpLGrFe8zUebtkw7Ew3bEKzv8bDPA2Difc8";
174 :
175 : const rejectZpub =
176 : "zpub6o5FvnQ3K1B9A2sZqBtUQ1RJ1CL6Szw8SoT1p962NqZDuFCRAKqLk5Z2GRyC5vUUksiw81Ychf5mXoWGMgfELZRMxcMWvunpQdgvhxiATdL";
177 :
178 : const devLtub = "";
179 :
180 : const devMtub = "";
181 :
182 : const wkDebugXPUB =
183 : "xpub69QjKT4D1e67nyLRRcA76149aJASaFBr9UPJkAW5NVqwJNRmTuzB1t1rYjsKmsFgW5B3uLEcBYe92VJHqwDm2t7zXMsTCwcyrYUGgLGTxtV";
184 :
185 : const wkDebugXPUBHello =
186 : "xpub69BsBUCquKCgooMeNw2a3hW6NBZ9Kwn4kYUxYSjygK6YTa8PRqqAEyAKEwBsNH4GiPpb4BCXZ1QiHDeYCtPJtVJoBWNeF8QFRik7MyUstiZ";
187 :
188 : const rejectLTUB =
189 : "Ltub2Vqqn6GEu5Q81zcCthUpux3miCtRF7dMHjc7xi8VfDAeUhWf12QiXEkVqTWYKApBMvXqmcU23qyexM1FuNk3jgiXY4w3u1kxd5yj4XiYZH3";
190 :
191 : const rejectEVM = "0x05870f1507d820212E921e1f39f14660336231D1";
192 : const spoilEVM = "0x1464935f48CA992D1a0bEAA2358471D7Cb6374E5";
193 :
194 : ///
195 : /// EVM
196 : ///
197 : const etherscanBaseEndpoint = "https://api.etherscan.io/v2/api";
198 : const zeniqScanEnpoint = "https://zeniqscan.com/api";
199 : const zeniqSmartRPCEndpoint = "https://api.zeniq.network";
200 :
201 : ///
202 : /// Arbitrum
203 : ///
204 : const arbitrumTestWallet = "0xA7Fa4bB0bba164F999E8C7B83C9da96A3bE44616";
205 :
206 : ///
207 : /// Staking
208 : ///
209 : const mainnetStakingContract = "0x7561DEAf4ECf96dc9F0d50B4136046979ACdAD3e";
210 : const smartChainStakingContract = "0x97F51eCDeEdecdb740DD1ff6236D013aFff0417d";
211 : const testnetStakingContract = "0x7a74a51adabe43a987f7119036faea420fc470cf";
212 : const zenpassContract = "0x967ce6379d65DB5d5b7027bbCfDd6f03476011ea";
213 :
214 : enum GasLimits {
215 : toApprove(60000),
216 : nftSend(100000),
217 : ethSend(21000),
218 : erc20Send(70000),
219 : toStake(280000),
220 : ethzkSync(187734),
221 : ethArb(100000);
222 :
223 : final int value;
224 :
225 : const GasLimits(this.value);
226 :
227 0 : static BigInt toClaim(int numberOfNFTs) {
228 0 : var result = 150000 + (numberOfNFTs - 1) * 25000;
229 0 : return BigInt.from(result);
230 : }
231 :
232 0 : BigInt get asBigInt => BigInt.from(value);
233 : }
234 :
235 : const TRON_ADDRESS_PREFIX = 0x41; // Base58 address prefix for Tron = 'T'
236 :
237 : const nullAddress = "0x0000000000000000000000000000000000000000";
|