quantumcoin 6.14.1 → 6.14.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/quantumcoin.js +2697 -7812
- package/dist/quantumcoin.js.map +1 -1
- package/dist/quantumcoin.min.js +1 -1
- package/dist/quantumcoin.min.js'.gz' +0 -0
- package/dist/quantumcoin.umd.js +2698 -7835
- package/dist/quantumcoin.umd.js.map +1 -1
- package/dist/quantumcoin.umd.min.js +1 -1
- package/dist/quantumcoin.umd.min.js'.gz' +0 -0
- package/dist/wordlists-extra.min.js'.gz' +0 -0
- package/lib.commonjs/address/address.d.ts +1 -21
- package/lib.commonjs/address/address.d.ts.map +1 -1
- package/lib.commonjs/address/address.js +2 -30
- package/lib.commonjs/address/address.js.map +1 -1
- package/lib.commonjs/address/index.d.ts +1 -1
- package/lib.commonjs/address/index.d.ts.map +1 -1
- package/lib.commonjs/address/index.js +1 -2
- package/lib.commonjs/address/index.js.map +1 -1
- package/lib.commonjs/crypto/signature.d.ts +4 -17
- package/lib.commonjs/crypto/signature.d.ts.map +1 -1
- package/lib.commonjs/crypto/signature.js +57 -60
- package/lib.commonjs/crypto/signature.js.map +1 -1
- package/lib.commonjs/crypto/signing-key.d.ts +5 -64
- package/lib.commonjs/crypto/signing-key.d.ts.map +1 -1
- package/lib.commonjs/crypto/signing-key.js +27 -101
- package/lib.commonjs/crypto/signing-key.js.map +1 -1
- package/lib.commonjs/providers/default-provider.d.ts +0 -8
- package/lib.commonjs/providers/default-provider.d.ts.map +1 -1
- package/lib.commonjs/providers/default-provider.js +0 -108
- package/lib.commonjs/providers/default-provider.js.map +1 -1
- package/lib.commonjs/providers/index.d.ts +0 -9
- package/lib.commonjs/providers/index.d.ts.map +1 -1
- package/lib.commonjs/providers/index.js +1 -21
- package/lib.commonjs/providers/index.js.map +1 -1
- package/lib.commonjs/providers/network.js +1 -99
- package/lib.commonjs/providers/network.js.map +1 -1
- package/lib.commonjs/quantumcoin.d.ts +4 -4
- package/lib.commonjs/quantumcoin.d.ts.map +1 -1
- package/lib.commonjs/quantumcoin.js +4 -26
- package/lib.commonjs/quantumcoin.js.map +1 -1
- package/lib.commonjs/transaction/address.d.ts +1 -1
- package/lib.commonjs/transaction/address.d.ts.map +1 -1
- package/lib.commonjs/transaction/address.js +9 -5
- package/lib.commonjs/transaction/address.js.map +1 -1
- package/lib.commonjs/wallet/hdwallet.d.ts.map +1 -1
- package/lib.commonjs/wallet/hdwallet.js +4 -5
- package/lib.commonjs/wallet/hdwallet.js.map +1 -1
- package/lib.commonjs/wallet/index.d.ts +2 -6
- package/lib.commonjs/wallet/index.d.ts.map +1 -1
- package/lib.commonjs/wallet/index.js +1 -14
- package/lib.commonjs/wallet/index.js.map +1 -1
- package/lib.commonjs/wallet/json-keystore.d.ts +3 -52
- package/lib.commonjs/wallet/json-keystore.d.ts.map +1 -1
- package/lib.commonjs/wallet/json-keystore.js +41 -246
- package/lib.commonjs/wallet/json-keystore.js.map +1 -1
- package/lib.commonjs/wallet/seedwallet.d.ts +4 -0
- package/lib.commonjs/wallet/seedwallet.d.ts.map +1 -0
- package/lib.commonjs/wallet/seedwallet.js +8 -0
- package/lib.commonjs/wallet/seedwallet.js.map +1 -0
- package/lib.commonjs/wallet/wallet.d.ts +5 -14
- package/lib.commonjs/wallet/wallet.d.ts.map +1 -1
- package/lib.commonjs/wallet/wallet.js +12 -51
- package/lib.commonjs/wallet/wallet.js.map +1 -1
- package/lib.esm/address/address.d.ts +1 -21
- package/lib.esm/address/address.d.ts.map +1 -1
- package/lib.esm/address/address.js +1 -28
- package/lib.esm/address/address.js.map +1 -1
- package/lib.esm/address/index.d.ts +1 -1
- package/lib.esm/address/index.d.ts.map +1 -1
- package/lib.esm/address/index.js +1 -1
- package/lib.esm/address/index.js.map +1 -1
- package/lib.esm/crypto/signature.d.ts +4 -17
- package/lib.esm/crypto/signature.d.ts.map +1 -1
- package/lib.esm/crypto/signature.js +45 -46
- package/lib.esm/crypto/signature.js.map +1 -1
- package/lib.esm/crypto/signing-key.d.ts +5 -64
- package/lib.esm/crypto/signing-key.d.ts.map +1 -1
- package/lib.esm/crypto/signing-key.js +26 -102
- package/lib.esm/crypto/signing-key.js.map +1 -1
- package/lib.esm/providers/default-provider.d.ts +0 -8
- package/lib.esm/providers/default-provider.d.ts.map +1 -1
- package/lib.esm/providers/default-provider.js +0 -108
- package/lib.esm/providers/default-provider.js.map +1 -1
- package/lib.esm/providers/index.d.ts +0 -9
- package/lib.esm/providers/index.d.ts.map +1 -1
- package/lib.esm/providers/index.js +0 -9
- package/lib.esm/providers/index.js.map +1 -1
- package/lib.esm/providers/network.js +3 -101
- package/lib.esm/providers/network.js.map +1 -1
- package/lib.esm/quantumcoin.d.ts +4 -4
- package/lib.esm/quantumcoin.d.ts.map +1 -1
- package/lib.esm/quantumcoin.js +3 -3
- package/lib.esm/quantumcoin.js.map +1 -1
- package/lib.esm/transaction/address.d.ts +1 -1
- package/lib.esm/transaction/address.d.ts.map +1 -1
- package/lib.esm/transaction/address.js +7 -4
- package/lib.esm/transaction/address.js.map +1 -1
- package/lib.esm/wallet/hdwallet.d.ts.map +1 -1
- package/lib.esm/wallet/hdwallet.js +4 -5
- package/lib.esm/wallet/hdwallet.js.map +1 -1
- package/lib.esm/wallet/index.d.ts +2 -6
- package/lib.esm/wallet/index.d.ts.map +1 -1
- package/lib.esm/wallet/index.js +1 -4
- package/lib.esm/wallet/index.js.map +1 -1
- package/lib.esm/wallet/json-keystore.d.ts +3 -52
- package/lib.esm/wallet/json-keystore.d.ts.map +1 -1
- package/lib.esm/wallet/json-keystore.js +32 -241
- package/lib.esm/wallet/json-keystore.js.map +1 -1
- package/lib.esm/wallet/seedwallet.d.ts +4 -0
- package/lib.esm/wallet/seedwallet.d.ts.map +1 -0
- package/lib.esm/wallet/seedwallet.js +4 -0
- package/lib.esm/wallet/seedwallet.js.map +1 -0
- package/lib.esm/wallet/wallet.d.ts +5 -14
- package/lib.esm/wallet/wallet.d.ts.map +1 -1
- package/lib.esm/wallet/wallet.js +12 -53
- package/lib.esm/wallet/wallet.js.map +1 -1
- package/package.json +5 -2
- package/src.ts/address/address.ts +2 -27
- package/src.ts/address/index.ts +1 -1
- package/src.ts/crypto/signature.ts +31 -45
- package/src.ts/crypto/signing-key.ts +31 -109
- package/src.ts/providers/default-provider.ts +0 -106
- package/src.ts/providers/index.ts +0 -10
- package/src.ts/providers/network.ts +3 -111
- package/src.ts/quantumcoin.ts +7 -17
- package/src.ts/transaction/address.ts +8 -5
- package/src.ts/wallet/index.ts +2 -17
- package/src.ts/wallet/json-keystore.ts +42 -325
- package/src.ts/wallet/wallet.ts +23 -47
- package/src.ts/providers/provider-alchemy.ts +0 -166
- package/src.ts/providers/provider-ankr.ts +0 -153
- package/src.ts/providers/provider-blockscout.ts +0 -167
- package/src.ts/providers/provider-chainstack.ts +0 -113
- package/src.ts/providers/provider-cloudflare.ts +0 -24
- package/src.ts/providers/provider-etherscan.ts +0 -671
- package/src.ts/providers/provider-infura.ts +0 -220
- package/src.ts/providers/provider-pocket.ts +0 -121
- package/src.ts/providers/provider-quicknode.ts +0 -177
- package/src.ts/wallet/hdwallet.ts +0 -586
- package/src.ts/wallet/json-crowdsale.ts +0 -74
- package/src.ts/wallet/mnemonic.ts +0 -203
|
@@ -8,14 +8,14 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @_subsection: api/wallet:JSON Wallets [json-wallets]
|
|
10
10
|
*/
|
|
11
|
-
import { CTR } from "aes-js";
|
|
12
|
-
import { getAddress } from "../address/index.js";
|
|
13
|
-
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
|
|
17
|
-
import {
|
|
18
|
-
|
|
11
|
+
//import { CTR } from "aes-js";
|
|
12
|
+
//import { getAddress } from "../address/index.js";
|
|
13
|
+
//randomBytes, scrypt, scryptSync, uuidV4
|
|
14
|
+
//import { keccak256 } from "../crypto/index.js";
|
|
15
|
+
//import { computeAddress } from "../transaction/index.js";
|
|
16
|
+
//concat, assert, assertArgument,
|
|
17
|
+
import { getBytes, hexlify, toUtf8String } from "../utils/index.js";
|
|
18
|
+
import { SigningKey } from "../crypto/signing-key";
|
|
19
19
|
/**
|
|
20
20
|
* Returns true if %%json%% is a valid JSON Keystore Wallet.
|
|
21
21
|
*/
|
|
@@ -30,104 +30,6 @@ export function isKeystoreJson(json) {
|
|
|
30
30
|
catch (error) { }
|
|
31
31
|
return false;
|
|
32
32
|
}
|
|
33
|
-
function decrypt(data, key, ciphertext) {
|
|
34
|
-
const cipher = spelunk(data, "crypto.cipher:string");
|
|
35
|
-
if (cipher === "aes-128-ctr") {
|
|
36
|
-
const iv = spelunk(data, "crypto.cipherparams.iv:data!");
|
|
37
|
-
const aesCtr = new CTR(key, iv);
|
|
38
|
-
return hexlify(aesCtr.decrypt(ciphertext));
|
|
39
|
-
}
|
|
40
|
-
assert(false, "unsupported cipher", "UNSUPPORTED_OPERATION", {
|
|
41
|
-
operation: "decrypt"
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
function getAccount(data, _key) {
|
|
45
|
-
const key = getBytes(_key);
|
|
46
|
-
const ciphertext = spelunk(data, "crypto.ciphertext:data!");
|
|
47
|
-
const computedMAC = hexlify(keccak256(concat([key.slice(16, 32), ciphertext]))).substring(2);
|
|
48
|
-
assertArgument(computedMAC === spelunk(data, "crypto.mac:string!").toLowerCase(), "incorrect password", "password", "[ REDACTED ]");
|
|
49
|
-
const privateKey = decrypt(data, key.slice(0, 16), ciphertext);
|
|
50
|
-
const address = computeAddress(privateKey);
|
|
51
|
-
if (data.address) {
|
|
52
|
-
let check = data.address.toLowerCase();
|
|
53
|
-
if (!check.startsWith("0x")) {
|
|
54
|
-
check = "0x" + check;
|
|
55
|
-
}
|
|
56
|
-
assertArgument(getAddress(check) === address, "keystore address/privateKey mismatch", "address", data.address);
|
|
57
|
-
}
|
|
58
|
-
const account = { address, privateKey };
|
|
59
|
-
// Version 0.1 x-ethers metadata must contain an encrypted mnemonic phrase
|
|
60
|
-
const version = spelunk(data, "x-ethers.version:string");
|
|
61
|
-
if (version === "0.1") {
|
|
62
|
-
const mnemonicKey = key.slice(32, 64);
|
|
63
|
-
const mnemonicCiphertext = spelunk(data, "x-ethers.mnemonicCiphertext:data!");
|
|
64
|
-
const mnemonicIv = spelunk(data, "x-ethers.mnemonicCounter:data!");
|
|
65
|
-
const mnemonicAesCtr = new CTR(mnemonicKey, mnemonicIv);
|
|
66
|
-
account.mnemonic = {
|
|
67
|
-
path: (spelunk(data, "x-ethers.path:string") || defaultPath),
|
|
68
|
-
locale: (spelunk(data, "x-ethers.locale:string") || "en"),
|
|
69
|
-
entropy: hexlify(getBytes(mnemonicAesCtr.decrypt(mnemonicCiphertext)))
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
return account;
|
|
73
|
-
}
|
|
74
|
-
function getDecryptKdfParams(data) {
|
|
75
|
-
const kdf = spelunk(data, "crypto.kdf:string");
|
|
76
|
-
if (kdf && typeof (kdf) === "string") {
|
|
77
|
-
if (kdf.toLowerCase() === "scrypt") {
|
|
78
|
-
const salt = spelunk(data, "crypto.kdfparams.salt:data!");
|
|
79
|
-
const N = spelunk(data, "crypto.kdfparams.n:int!");
|
|
80
|
-
const r = spelunk(data, "crypto.kdfparams.r:int!");
|
|
81
|
-
const p = spelunk(data, "crypto.kdfparams.p:int!");
|
|
82
|
-
// Make sure N is a power of 2
|
|
83
|
-
assertArgument(N > 0 && (N & (N - 1)) === 0, "invalid kdf.N", "kdf.N", N);
|
|
84
|
-
assertArgument(r > 0 && p > 0, "invalid kdf", "kdf", kdf);
|
|
85
|
-
const dkLen = spelunk(data, "crypto.kdfparams.dklen:int!");
|
|
86
|
-
assertArgument(dkLen === 32, "invalid kdf.dklen", "kdf.dflen", dkLen);
|
|
87
|
-
return { name: "scrypt", salt, N, r, p, dkLen: 64 };
|
|
88
|
-
}
|
|
89
|
-
else if (kdf.toLowerCase() === "pbkdf2") {
|
|
90
|
-
const salt = spelunk(data, "crypto.kdfparams.salt:data!");
|
|
91
|
-
const prf = spelunk(data, "crypto.kdfparams.prf:string!");
|
|
92
|
-
const algorithm = prf.split("-").pop();
|
|
93
|
-
assertArgument(algorithm === "sha256" || algorithm === "sha512", "invalid kdf.pdf", "kdf.pdf", prf);
|
|
94
|
-
const count = spelunk(data, "crypto.kdfparams.c:int!");
|
|
95
|
-
const dkLen = spelunk(data, "crypto.kdfparams.dklen:int!");
|
|
96
|
-
assertArgument(dkLen === 32, "invalid kdf.dklen", "kdf.dklen", dkLen);
|
|
97
|
-
return { name: "pbkdf2", salt, count, dkLen, algorithm };
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
assertArgument(false, "unsupported key-derivation function", "kdf", kdf);
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Returns the account details for the JSON Keystore Wallet %%json%%
|
|
104
|
-
* using %%password%%.
|
|
105
|
-
*
|
|
106
|
-
* It is preferred to use the [async version](decryptKeystoreJson)
|
|
107
|
-
* instead, which allows a [[ProgressCallback]] to keep the user informed
|
|
108
|
-
* as to the decryption status.
|
|
109
|
-
*
|
|
110
|
-
* This method will block the event loop (freezing all UI) until decryption
|
|
111
|
-
* is complete, which can take quite some time, depending on the wallet
|
|
112
|
-
* paramters and platform.
|
|
113
|
-
*/
|
|
114
|
-
export function decryptKeystoreJsonSync(json, _password) {
|
|
115
|
-
const data = JSON.parse(json);
|
|
116
|
-
const password = getPassword(_password);
|
|
117
|
-
const params = getDecryptKdfParams(data);
|
|
118
|
-
if (params.name === "pbkdf2") {
|
|
119
|
-
const { salt, count, dkLen, algorithm } = params;
|
|
120
|
-
const key = pbkdf2(password, salt, count, dkLen, algorithm);
|
|
121
|
-
return getAccount(data, key);
|
|
122
|
-
}
|
|
123
|
-
assert(params.name === "scrypt", "cannot be reached", "UNKNOWN_ERROR", { params });
|
|
124
|
-
const { salt, N, r, p, dkLen } = params;
|
|
125
|
-
const key = scryptSync(password, salt, N, r, p, dkLen);
|
|
126
|
-
return getAccount(data, key);
|
|
127
|
-
}
|
|
128
|
-
function stall(duration) {
|
|
129
|
-
return new Promise((resolve) => { setTimeout(() => { resolve(); }, duration); });
|
|
130
|
-
}
|
|
131
33
|
/**
|
|
132
34
|
* Resolves to the decrypted JSON Keystore Wallet %%json%% using the
|
|
133
35
|
* %%password%%.
|
|
@@ -135,136 +37,22 @@ function stall(duration) {
|
|
|
135
37
|
* If provided, %%progress%% will be called periodically during the
|
|
136
38
|
* decrpytion to provide feedback, and if the function returns
|
|
137
39
|
* ``false`` will halt decryption.
|
|
138
|
-
*
|
|
139
|
-
* The %%progressCallback%% will **always** receive ``0`` before
|
|
140
|
-
* decryption begins and ``1`` when complete.
|
|
141
40
|
*/
|
|
142
|
-
export
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
if (params.name === "pbkdf2") {
|
|
147
|
-
if (progress) {
|
|
148
|
-
progress(0);
|
|
149
|
-
await stall(0);
|
|
150
|
-
}
|
|
151
|
-
const { salt, count, dkLen, algorithm } = params;
|
|
152
|
-
const key = pbkdf2(password, salt, count, dkLen, algorithm);
|
|
153
|
-
if (progress) {
|
|
154
|
-
progress(1);
|
|
155
|
-
await stall(0);
|
|
156
|
-
}
|
|
157
|
-
return getAccount(data, key);
|
|
41
|
+
export function decryptKeystoreJsonSync(json, _password) {
|
|
42
|
+
let pass;
|
|
43
|
+
if (typeof _password === 'string') {
|
|
44
|
+
pass = _password;
|
|
158
45
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
const key = await scrypt(password, salt, N, r, p, dkLen, progress);
|
|
162
|
-
return getAccount(data, key);
|
|
163
|
-
}
|
|
164
|
-
function getEncryptKdfParams(options) {
|
|
165
|
-
// Check/generate the salt
|
|
166
|
-
const salt = (options.salt != null) ? getBytes(options.salt, "options.salt") : randomBytes(32);
|
|
167
|
-
// Override the scrypt password-based key derivation function parameters
|
|
168
|
-
let N = (1 << 17), r = 8, p = 1;
|
|
169
|
-
if (options.scrypt) {
|
|
170
|
-
if (options.scrypt.N) {
|
|
171
|
-
N = options.scrypt.N;
|
|
172
|
-
}
|
|
173
|
-
if (options.scrypt.r) {
|
|
174
|
-
r = options.scrypt.r;
|
|
175
|
-
}
|
|
176
|
-
if (options.scrypt.p) {
|
|
177
|
-
p = options.scrypt.p;
|
|
178
|
-
}
|
|
46
|
+
else {
|
|
47
|
+
pass = toUtf8String(_password);
|
|
179
48
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
function _encryptKeystore(key, kdf, account, options) {
|
|
186
|
-
const privateKey = getBytes(account.privateKey, "privateKey");
|
|
187
|
-
// Override initialization vector
|
|
188
|
-
const iv = (options.iv != null) ? getBytes(options.iv, "options.iv") : randomBytes(16);
|
|
189
|
-
assertArgument(iv.length === 16, "invalid options.iv length", "options.iv", options.iv);
|
|
190
|
-
// Override the uuid
|
|
191
|
-
const uuidRandom = (options.uuid != null) ? getBytes(options.uuid, "options.uuid") : randomBytes(16);
|
|
192
|
-
assertArgument(uuidRandom.length === 16, "invalid options.uuid length", "options.uuid", options.iv);
|
|
193
|
-
// This will be used to encrypt the wallet (as per Web3 secret storage)
|
|
194
|
-
// - 32 bytes As normal for the Web3 secret storage (derivedKey, macPrefix)
|
|
195
|
-
// - 32 bytes AES key to encrypt mnemonic with (required here to be Ethers Wallet)
|
|
196
|
-
const derivedKey = key.slice(0, 16);
|
|
197
|
-
const macPrefix = key.slice(16, 32);
|
|
198
|
-
// Encrypt the private key
|
|
199
|
-
const aesCtr = new CTR(derivedKey, iv);
|
|
200
|
-
const ciphertext = getBytes(aesCtr.encrypt(privateKey));
|
|
201
|
-
// Compute the message authentication code, used to check the password
|
|
202
|
-
const mac = keccak256(concat([macPrefix, ciphertext]));
|
|
203
|
-
// See: https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition
|
|
204
|
-
const data = {
|
|
205
|
-
address: account.address.substring(2).toLowerCase(),
|
|
206
|
-
id: uuidV4(uuidRandom),
|
|
207
|
-
version: 3,
|
|
208
|
-
Crypto: {
|
|
209
|
-
cipher: "aes-128-ctr",
|
|
210
|
-
cipherparams: {
|
|
211
|
-
iv: hexlify(iv).substring(2),
|
|
212
|
-
},
|
|
213
|
-
ciphertext: hexlify(ciphertext).substring(2),
|
|
214
|
-
kdf: "scrypt",
|
|
215
|
-
kdfparams: {
|
|
216
|
-
salt: hexlify(kdf.salt).substring(2),
|
|
217
|
-
n: kdf.N,
|
|
218
|
-
dklen: 32,
|
|
219
|
-
p: kdf.p,
|
|
220
|
-
r: kdf.r
|
|
221
|
-
},
|
|
222
|
-
mac: mac.substring(2)
|
|
223
|
-
}
|
|
49
|
+
let wal = qcsdk.deserializeEncryptedWallet(json, pass);
|
|
50
|
+
let privKey = wal.privateKey;
|
|
51
|
+
let ks = {
|
|
52
|
+
address: wal.address,
|
|
53
|
+
privateKey: hexlify(privKey)
|
|
224
54
|
};
|
|
225
|
-
|
|
226
|
-
if (account.mnemonic) {
|
|
227
|
-
const client = (options.client != null) ? options.client : `ethers/${version}`;
|
|
228
|
-
const path = account.mnemonic.path || defaultPath;
|
|
229
|
-
const locale = account.mnemonic.locale || "en";
|
|
230
|
-
const mnemonicKey = key.slice(32, 64);
|
|
231
|
-
const entropy = getBytes(account.mnemonic.entropy, "account.mnemonic.entropy");
|
|
232
|
-
const mnemonicIv = randomBytes(16);
|
|
233
|
-
const mnemonicAesCtr = new CTR(mnemonicKey, mnemonicIv);
|
|
234
|
-
const mnemonicCiphertext = getBytes(mnemonicAesCtr.encrypt(entropy));
|
|
235
|
-
const now = new Date();
|
|
236
|
-
const timestamp = (now.getUTCFullYear() + "-" +
|
|
237
|
-
zpad(now.getUTCMonth() + 1, 2) + "-" +
|
|
238
|
-
zpad(now.getUTCDate(), 2) + "T" +
|
|
239
|
-
zpad(now.getUTCHours(), 2) + "-" +
|
|
240
|
-
zpad(now.getUTCMinutes(), 2) + "-" +
|
|
241
|
-
zpad(now.getUTCSeconds(), 2) + ".0Z");
|
|
242
|
-
const gethFilename = ("UTC--" + timestamp + "--" + data.address);
|
|
243
|
-
data["x-ethers"] = {
|
|
244
|
-
client, gethFilename, path, locale,
|
|
245
|
-
mnemonicCounter: hexlify(mnemonicIv).substring(2),
|
|
246
|
-
mnemonicCiphertext: hexlify(mnemonicCiphertext).substring(2),
|
|
247
|
-
version: "0.1"
|
|
248
|
-
};
|
|
249
|
-
}
|
|
250
|
-
return JSON.stringify(data);
|
|
251
|
-
}
|
|
252
|
-
/**
|
|
253
|
-
* Return the JSON Keystore Wallet for %%account%% encrypted with
|
|
254
|
-
* %%password%%.
|
|
255
|
-
*
|
|
256
|
-
* The %%options%% can be used to tune the password-based key
|
|
257
|
-
* derivation function parameters, explicitly set the random values
|
|
258
|
-
* used. Any provided [[ProgressCallback]] is ignord.
|
|
259
|
-
*/
|
|
260
|
-
export function encryptKeystoreJsonSync(account, password, options) {
|
|
261
|
-
if (options == null) {
|
|
262
|
-
options = {};
|
|
263
|
-
}
|
|
264
|
-
const passwordBytes = getPassword(password);
|
|
265
|
-
const kdf = getEncryptKdfParams(options);
|
|
266
|
-
const key = scryptSync(passwordBytes, kdf.salt, kdf.N, kdf.r, kdf.p, 64);
|
|
267
|
-
return _encryptKeystore(getBytes(key), kdf, account, options);
|
|
55
|
+
return ks;
|
|
268
56
|
}
|
|
269
57
|
/**
|
|
270
58
|
* Resolved to the JSON Keystore Wallet for %%account%% encrypted
|
|
@@ -272,16 +60,19 @@ export function encryptKeystoreJsonSync(account, password, options) {
|
|
|
272
60
|
*
|
|
273
61
|
* The %%options%% can be used to tune the password-based key
|
|
274
62
|
* derivation function parameters, explicitly set the random values
|
|
275
|
-
* used
|
|
276
|
-
* on the completion status..
|
|
63
|
+
* used.
|
|
277
64
|
*/
|
|
278
|
-
export
|
|
279
|
-
|
|
280
|
-
|
|
65
|
+
export function encryptKeystoreJsonSync(account, password) {
|
|
66
|
+
const signingKey = new SigningKey(account.privateKey);
|
|
67
|
+
const privateKey = getBytes(signingKey.privateKey);
|
|
68
|
+
const publicKey = getBytes(signingKey.publicKey);
|
|
69
|
+
const wal = new qcsdk.Wallet(account.address, privateKey, publicKey);
|
|
70
|
+
if (typeof password === 'string') {
|
|
71
|
+
return qcsdk.serializeEncryptedWallet(wal, password);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
let passPhrase = toUtf8String(password);
|
|
75
|
+
return qcsdk.serializeEncryptedWallet(wal, passPhrase);
|
|
281
76
|
}
|
|
282
|
-
const passwordBytes = getPassword(password);
|
|
283
|
-
const kdf = getEncryptKdfParams(options);
|
|
284
|
-
const key = await scrypt(passwordBytes, kdf.salt, kdf.N, kdf.r, kdf.p, 64, options.progressCallback);
|
|
285
|
-
return _encryptKeystore(getBytes(key), kdf, account, options);
|
|
286
77
|
}
|
|
287
78
|
//# sourceMappingURL=json-keystore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-keystore.js","sourceRoot":"","sources":["../../src.ts/wallet/json-keystore.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"json-keystore.js","sourceRoot":"","sources":["../../src.ts/wallet/json-keystore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,+BAA+B;AAE/B,mDAAmD;AACnD,yCAAyC;AACzC,kDAAkD;AAClD,2DAA2D;AAC3D,iCAAiC;AACjC,OAAO,EACH,QAAQ,EAAE,OAAO,EAAE,YAAY,EAClC,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAA;AAuBhD;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACvC,IAAI;QACA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,IAAI,OAAO,KAAK,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;SAAE;KACtC;IAAC,OAAO,KAAK,EAAE,GAAG;IACnB,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAY,EAAE,SAA8B;IAChF,IAAI,IAAY,CAAC;IACjB,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;QAC/B,IAAI,GAAG,SAAS,CAAC;KACpB;SAAM;QACH,IAAI,GAAI,YAAY,CAAC,SAAS,CAAC,CAAC;KACnC;IAED,IAAI,GAAG,GAAG,KAAK,CAAC,0BAA0B,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvD,IAAI,OAAO,GAAQ,GAAG,CAAC,UAAU,CAAC;IAElC,IAAI,EAAE,GAAoB;QACtB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC;KAC/B,CAAC;IAEF,OAAO,EAAE,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAwB,EAAE,QAA6B;IAC3F,MAAM,UAAU,GAAe,IAAI,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAClE,MAAM,UAAU,GAAQ,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACxD,MAAM,SAAS,GAAQ,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IAErE,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;QAC9B,OAAO,KAAK,CAAC,wBAAwB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;KACxD;SAAM;QACH,IAAI,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QACxC,OAAO,KAAK,CAAC,wBAAwB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;KAC1D;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seedwallet.d.ts","sourceRoot":"","sources":["../../src.ts/wallet/seedwallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,qBAAa,YAAa,SAAQ,UAAU;CAE3C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seedwallet.js","sourceRoot":"","sources":["../../src.ts/wallet/seedwallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,OAAO,YAAa,SAAQ,UAAU;CAE3C"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { SigningKey } from "../crypto/index.js";
|
|
2
2
|
import { BaseWallet } from "./base-wallet.js";
|
|
3
|
-
import { HDNodeWallet } from "./hdwallet.js";
|
|
4
|
-
import type { ProgressCallback } from "../crypto/index.js";
|
|
5
3
|
import type { Provider } from "../providers/index.js";
|
|
6
4
|
/**
|
|
7
5
|
* A **Wallet** manages a single private key which is used to sign
|
|
@@ -28,7 +26,7 @@ export declare class Wallet extends BaseWallet {
|
|
|
28
26
|
* If %%progressCallback%% is specified, it will receive periodic
|
|
29
27
|
* updates as the encryption process progreses.
|
|
30
28
|
*/
|
|
31
|
-
encrypt(password: Uint8Array | string
|
|
29
|
+
encrypt(password: Uint8Array | string): Promise<string>;
|
|
32
30
|
/**
|
|
33
31
|
* Returns a [JSON Keystore Wallet](json-wallets) encryped with
|
|
34
32
|
* %%password%%.
|
|
@@ -43,11 +41,8 @@ export declare class Wallet extends BaseWallet {
|
|
|
43
41
|
/**
|
|
44
42
|
* Creates (asynchronously) a **Wallet** by decrypting the %%json%%
|
|
45
43
|
* with %%password%%.
|
|
46
|
-
*
|
|
47
|
-
* If %%progress%% is provided, it is called periodically during
|
|
48
|
-
* decryption so that any UI can be updated.
|
|
49
44
|
*/
|
|
50
|
-
static fromEncryptedJson(json: string, password: Uint8Array | string
|
|
45
|
+
static fromEncryptedJson(json: string, password: Uint8Array | string): Promise<Wallet>;
|
|
51
46
|
/**
|
|
52
47
|
* Creates a **Wallet** by decrypting the %%json%% with %%password%%.
|
|
53
48
|
*
|
|
@@ -55,17 +50,13 @@ export declare class Wallet extends BaseWallet {
|
|
|
55
50
|
* will lock up and freeze the UI during decryption, which may take
|
|
56
51
|
* some time.
|
|
57
52
|
*/
|
|
58
|
-
static fromEncryptedJsonSync(json: string, password: Uint8Array | string):
|
|
53
|
+
static fromEncryptedJsonSync(json: string, password: Uint8Array | string): Wallet;
|
|
59
54
|
/**
|
|
60
|
-
* Creates a new random [[
|
|
55
|
+
* Creates a new random [[Wallet]] using the available
|
|
61
56
|
* [cryptographic random source](randomBytes).
|
|
62
57
|
*
|
|
63
58
|
* If there is no crytographic random source, this will throw.
|
|
64
59
|
*/
|
|
65
|
-
static createRandom(provider?: null | Provider):
|
|
66
|
-
/**
|
|
67
|
-
* Creates a [[HDNodeWallet]] for %%phrase%%.
|
|
68
|
-
*/
|
|
69
|
-
static fromPhrase(phrase: string, provider?: Provider): HDNodeWallet;
|
|
60
|
+
static createRandom(provider?: null | Provider): Wallet;
|
|
70
61
|
}
|
|
71
62
|
//# sourceMappingURL=wallet.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src.ts/wallet/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src.ts/wallet/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAW9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAKtD;;;;;;;;;GASG;AACH,qBAAa,MAAO,SAAQ,UAAU;;IAElC;;;OAGG;gBACS,GAAG,EAAE,MAAM,GAAG,UAAU,EAAE,QAAQ,CAAC,EAAE,IAAI,GAAG,QAAQ;IAShE,OAAO,CAAC,QAAQ,EAAE,IAAI,GAAG,QAAQ,GAAG,MAAM;IAI1C;;;;;;OAMG;IACG,OAAO,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK7D;;;;;;;;;OASG;IACH,WAAW,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM;IAgBlD;;;OAGG;WACU,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAU5F;;;;;;OAMG;IACH,MAAM,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM;IAWjF;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,QAAQ,GAAG,MAAM;CAc1D"}
|
package/lib.esm/wallet/wallet.js
CHANGED
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
import { SigningKey } from "../crypto/index.js";
|
|
2
|
-
import { assertArgument } from "../utils/index.js";
|
|
2
|
+
import { assertArgument, hexlify } from "../utils/index.js";
|
|
3
3
|
import { BaseWallet } from "./base-wallet.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { Mnemonic } from "./mnemonic.js";
|
|
8
|
-
function stall(duration) {
|
|
9
|
-
return new Promise((resolve) => { setTimeout(() => { resolve(); }, duration); });
|
|
10
|
-
}
|
|
4
|
+
//import { decryptCrowdsaleJson, isCrowdsaleJson } from "./json-crowdsale.js";
|
|
5
|
+
import { decryptKeystoreJsonSync, encryptKeystoreJsonSync, isKeystoreJson } from "./json-keystore.js";
|
|
6
|
+
//import {newWallet} from "quantum-coin-js-sdk";
|
|
11
7
|
/**
|
|
12
8
|
* A **Wallet** manages a single private key which is used to sign
|
|
13
9
|
* transactions, messages and other common payloads.
|
|
@@ -40,9 +36,9 @@ export class Wallet extends BaseWallet {
|
|
|
40
36
|
* If %%progressCallback%% is specified, it will receive periodic
|
|
41
37
|
* updates as the encryption process progreses.
|
|
42
38
|
*/
|
|
43
|
-
async encrypt(password
|
|
39
|
+
async encrypt(password) {
|
|
44
40
|
const account = { address: this.address, privateKey: this.privateKey };
|
|
45
|
-
return
|
|
41
|
+
return encryptKeystoreJsonSync(account, password);
|
|
46
42
|
}
|
|
47
43
|
/**
|
|
48
44
|
* Returns a [JSON Keystore Wallet](json-wallets) encryped with
|
|
@@ -60,14 +56,6 @@ export class Wallet extends BaseWallet {
|
|
|
60
56
|
}
|
|
61
57
|
static #fromAccount(account) {
|
|
62
58
|
assertArgument(account, "invalid JSON wallet", "json", "[ REDACTED ]");
|
|
63
|
-
if ("mnemonic" in account && account.mnemonic && account.mnemonic.locale === "en") {
|
|
64
|
-
const mnemonic = Mnemonic.fromEntropy(account.mnemonic.entropy);
|
|
65
|
-
const wallet = HDNodeWallet.fromMnemonic(mnemonic, account.mnemonic.path);
|
|
66
|
-
if (wallet.address === account.address && wallet.privateKey === account.privateKey) {
|
|
67
|
-
return wallet;
|
|
68
|
-
}
|
|
69
|
-
console.log("WARNING: JSON mismatch address/privateKey != mnemonic; fallback onto private key");
|
|
70
|
-
}
|
|
71
59
|
const wallet = new Wallet(account.privateKey);
|
|
72
60
|
assertArgument(wallet.address === account.address, "address/privateKey mismatch", "json", "[ REDACTED ]");
|
|
73
61
|
return wallet;
|
|
@@ -75,25 +63,11 @@ export class Wallet extends BaseWallet {
|
|
|
75
63
|
/**
|
|
76
64
|
* Creates (asynchronously) a **Wallet** by decrypting the %%json%%
|
|
77
65
|
* with %%password%%.
|
|
78
|
-
*
|
|
79
|
-
* If %%progress%% is provided, it is called periodically during
|
|
80
|
-
* decryption so that any UI can be updated.
|
|
81
66
|
*/
|
|
82
|
-
static async fromEncryptedJson(json, password
|
|
67
|
+
static async fromEncryptedJson(json, password) {
|
|
83
68
|
let account = null;
|
|
84
69
|
if (isKeystoreJson(json)) {
|
|
85
|
-
account =
|
|
86
|
-
}
|
|
87
|
-
else if (isCrowdsaleJson(json)) {
|
|
88
|
-
if (progress) {
|
|
89
|
-
progress(0);
|
|
90
|
-
await stall(0);
|
|
91
|
-
}
|
|
92
|
-
account = decryptCrowdsaleJson(json, password);
|
|
93
|
-
if (progress) {
|
|
94
|
-
progress(1);
|
|
95
|
-
await stall(0);
|
|
96
|
-
}
|
|
70
|
+
account = decryptKeystoreJsonSync(json, password);
|
|
97
71
|
}
|
|
98
72
|
return Wallet.#fromAccount(account);
|
|
99
73
|
}
|
|
@@ -109,36 +83,21 @@ export class Wallet extends BaseWallet {
|
|
|
109
83
|
if (isKeystoreJson(json)) {
|
|
110
84
|
account = decryptKeystoreJsonSync(json, password);
|
|
111
85
|
}
|
|
112
|
-
else if (isCrowdsaleJson(json)) {
|
|
113
|
-
account = decryptCrowdsaleJson(json, password);
|
|
114
|
-
}
|
|
115
86
|
else {
|
|
116
87
|
assertArgument(false, "invalid JSON wallet", "json", "[ REDACTED ]");
|
|
117
88
|
}
|
|
118
89
|
return Wallet.#fromAccount(account);
|
|
119
90
|
}
|
|
120
91
|
/**
|
|
121
|
-
* Creates a new random [[
|
|
92
|
+
* Creates a new random [[Wallet]] using the available
|
|
122
93
|
* [cryptographic random source](randomBytes).
|
|
123
94
|
*
|
|
124
95
|
* If there is no crytographic random source, this will throw.
|
|
125
96
|
*/
|
|
126
97
|
static createRandom(provider) {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
}
|
|
131
|
-
return wallet;
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Creates a [[HDNodeWallet]] for %%phrase%%.
|
|
135
|
-
*/
|
|
136
|
-
static fromPhrase(phrase, provider) {
|
|
137
|
-
const wallet = HDNodeWallet.fromPhrase(phrase);
|
|
138
|
-
if (provider) {
|
|
139
|
-
return wallet.connect(provider);
|
|
140
|
-
}
|
|
141
|
-
return wallet;
|
|
98
|
+
let wal = qcsdk.newWallet();
|
|
99
|
+
let privKey = wal.privateKey;
|
|
100
|
+
return new Wallet(hexlify(privKey));
|
|
142
101
|
}
|
|
143
102
|
}
|
|
144
103
|
//# sourceMappingURL=wallet.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src.ts/wallet/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src.ts/wallet/wallet.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
"@noble/hashes": "1.3.2",
|
|
15
15
|
"@types/node": "22.7.5",
|
|
16
16
|
"aes-js": "4.0.0-beta.5",
|
|
17
|
+
"seed-words": "^1.0.2",
|
|
17
18
|
"tslib": "2.7.0",
|
|
18
19
|
"ws": "8.17.1"
|
|
19
20
|
},
|
|
@@ -24,6 +25,8 @@
|
|
|
24
25
|
"@types/semver": "7.5.8",
|
|
25
26
|
"c8": "7.12.0",
|
|
26
27
|
"mocha": "10.7.3",
|
|
28
|
+
"quantum-coin-pqc-js-sdk": "^1.0.5",
|
|
29
|
+
"quantum-coin-js-sdk": "^1.0.20",
|
|
27
30
|
"rollup": "4.24.0",
|
|
28
31
|
"semver": "7.6.3",
|
|
29
32
|
"typescript": "5.0.4",
|
|
@@ -105,7 +108,7 @@
|
|
|
105
108
|
},
|
|
106
109
|
"scripts": {
|
|
107
110
|
"_build-dist": "rollup -c && uglifyjs ./dist/quantumcoin.js -o ./dist/quantumcoin.min.js && uglifyjs ./dist/quantumcoin.umd.js -o ./dist/quantumcoin.umd.min.js && uglifyjs ./dist/wordlists-extra.js -o ./dist/wordlists-extra.min.js",
|
|
108
|
-
"_dist-stats": "gzip -k9f -S '.gz' ./dist/quantumcoin.min.js && gzip -k9f -S '.gz' ./dist/quantumcoin.umd.min.js && gzip -k9f -S '.gz' ./dist/wordlists-extra.min.js
|
|
111
|
+
"_dist-stats": "gzip -k9f -S '.gz' ./dist/quantumcoin.min.js && gzip -k9f -S '.gz' ./dist/quantumcoin.umd.min.js && gzip -k9f -S '.gz' ./dist/wordlists-extra.min.js",
|
|
109
112
|
"auto-build": "npm run build -- -w",
|
|
110
113
|
"build": "tsc --project tsconfig.esm.json",
|
|
111
114
|
"build-all": "npm run build && npm run build-commonjs",
|
|
@@ -122,5 +125,5 @@
|
|
|
122
125
|
"test-esm": "mocha --trace-warnings --reporter ./reporter.cjs ./lib.esm/_tests/test-*.js"
|
|
123
126
|
},
|
|
124
127
|
"sideEffects": false,
|
|
125
|
-
"version": "6.14.
|
|
128
|
+
"version": "6.14.2"
|
|
126
129
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { keccak256 } from "../crypto/index.js";
|
|
2
2
|
import { getBytes, assertArgument } from "../utils/index.js";
|
|
3
3
|
|
|
4
|
-
|
|
5
4
|
const BN_0 = BigInt(0);
|
|
6
5
|
const BN_36 = BigInt(36);
|
|
7
6
|
|
|
@@ -83,8 +82,7 @@ function fromBase36(value: string): bigint {
|
|
|
83
82
|
|
|
84
83
|
/**
|
|
85
84
|
* Returns a normalized and checksumed address for %%address%%.
|
|
86
|
-
* This accepts non-checksum addresses, checksum addresses
|
|
87
|
-
* [[getIcapAddress]] formats.
|
|
85
|
+
* This accepts non-checksum addresses, checksum addresses formats.
|
|
88
86
|
*
|
|
89
87
|
* The checksum in Ethereum uses the capitalization (upper-case
|
|
90
88
|
* vs lower-case) of the characters within an address to encode
|
|
@@ -147,27 +145,4 @@ export function getAddress(address: string): string {
|
|
|
147
145
|
assertArgument(false, "invalid address", "address", address);
|
|
148
146
|
}
|
|
149
147
|
|
|
150
|
-
|
|
151
|
-
* The [ICAP Address format](link-icap) format is an early checksum
|
|
152
|
-
* format which attempts to be compatible with the banking
|
|
153
|
-
* industry [IBAN format](link-wiki-iban) for bank accounts.
|
|
154
|
-
*
|
|
155
|
-
* It is no longer common or a recommended format.
|
|
156
|
-
*
|
|
157
|
-
* @example:
|
|
158
|
-
* getIcapAddress("0x8ba1f109551bd432803012645ac136ddd64dba72");
|
|
159
|
-
* //_result:
|
|
160
|
-
*
|
|
161
|
-
* getIcapAddress("XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36");
|
|
162
|
-
* //_result:
|
|
163
|
-
*
|
|
164
|
-
* // Throws an error if the ICAP checksum is wrong
|
|
165
|
-
* getIcapAddress("XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK37");
|
|
166
|
-
* //_error:
|
|
167
|
-
*/
|
|
168
|
-
export function getIcapAddress(address: string): string {
|
|
169
|
-
//let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();
|
|
170
|
-
let base36 = BigInt(getAddress(address)).toString(36).toUpperCase();
|
|
171
|
-
while (base36.length < 30) { base36 = "0" + base36; }
|
|
172
|
-
return "XE" + ibanChecksum("XE00" + base36) + base36;
|
|
173
|
-
}
|
|
148
|
+
|
package/src.ts/address/index.ts
CHANGED
|
@@ -49,7 +49,7 @@ export interface NameResolver {
|
|
|
49
49
|
resolveName(name: string): Promise<null | string>;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
export { getAddress
|
|
52
|
+
export { getAddress } from "./address.js";
|
|
53
53
|
|
|
54
54
|
export { getCreateAddress, getCreate2Address } from "./contract-address.js";
|
|
55
55
|
|