quantumcoin 6.14.2 → 6.14.5
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/CHANGELOG.md +442 -442
- package/FUNDING.json +10 -10
- package/LICENSE.md +21 -21
- package/README.md +132 -142
- package/SECURITY.md +34 -34
- package/dist/README.md +22 -22
- package/dist/quantumcoin.js +1127 -1324
- package/dist/quantumcoin.js.map +1 -1
- package/dist/quantumcoin.min.js +1 -1
- package/dist/quantumcoin.umd.js +1128 -1327
- package/dist/quantumcoin.umd.js.map +1 -1
- package/dist/quantumcoin.umd.min.js +1 -1
- package/dist/wordlists-extra.js +1 -1
- package/dist/wordlists-extra.js.map +1 -1
- package/dist/wordlists-extra.min.js +1 -1
- package/lib.commonjs/README.md +16 -16
- package/lib.commonjs/_version.js +1 -1
- package/lib.commonjs/crypto/signature.d.ts +3 -76
- package/lib.commonjs/crypto/signature.d.ts.map +1 -1
- package/lib.commonjs/crypto/signature.js +15 -199
- package/lib.commonjs/crypto/signature.js.map +1 -1
- package/lib.commonjs/crypto/signing-key.d.ts +1 -1
- package/lib.commonjs/crypto/signing-key.d.ts.map +1 -1
- package/lib.commonjs/crypto/signing-key.js +19 -10
- package/lib.commonjs/crypto/signing-key.js.map +1 -1
- package/lib.commonjs/package.json +12 -12
- package/lib.commonjs/providers/provider-jsonrpc.d.ts +0 -1
- package/lib.commonjs/providers/provider-jsonrpc.d.ts.map +1 -1
- package/lib.commonjs/providers/provider-jsonrpc.js +0 -1
- package/lib.commonjs/providers/provider-jsonrpc.js.map +1 -1
- package/lib.commonjs/quantumcoin.d.ts +2 -0
- package/lib.commonjs/quantumcoin.d.ts.map +1 -1
- package/lib.commonjs/quantumcoin.js +11 -5
- package/lib.commonjs/quantumcoin.js.map +1 -1
- package/lib.commonjs/transaction/address.d.ts.map +1 -1
- package/lib.commonjs/transaction/address.js +8 -3
- package/lib.commonjs/transaction/address.js.map +1 -1
- package/lib.commonjs/transaction/transaction.d.ts.map +1 -1
- package/lib.commonjs/transaction/transaction.js +7 -40
- package/lib.commonjs/transaction/transaction.js.map +1 -1
- package/lib.commonjs/wallet/json-keystore.d.ts.map +1 -1
- package/lib.commonjs/wallet/json-keystore.js +7 -7
- package/lib.commonjs/wallet/json-keystore.js.map +1 -1
- package/lib.commonjs/wallet/wallet.d.ts.map +1 -1
- package/lib.commonjs/wallet/wallet.js +2 -2
- package/lib.commonjs/wallet/wallet.js.map +1 -1
- package/lib.esm/README.md +16 -16
- package/lib.esm/_version.js +1 -1
- package/lib.esm/crypto/signature.d.ts +3 -76
- package/lib.esm/crypto/signature.d.ts.map +1 -1
- package/lib.esm/crypto/signature.js +16 -202
- package/lib.esm/crypto/signature.js.map +1 -1
- package/lib.esm/crypto/signing-key.d.ts +1 -1
- package/lib.esm/crypto/signing-key.d.ts.map +1 -1
- package/lib.esm/crypto/signing-key.js +20 -9
- package/lib.esm/crypto/signing-key.js.map +1 -1
- package/lib.esm/package.json +12 -12
- package/lib.esm/providers/provider-jsonrpc.d.ts +0 -1
- package/lib.esm/providers/provider-jsonrpc.d.ts.map +1 -1
- package/lib.esm/providers/provider-jsonrpc.js +0 -1
- package/lib.esm/providers/provider-jsonrpc.js.map +1 -1
- package/lib.esm/quantumcoin.d.ts +2 -0
- package/lib.esm/quantumcoin.d.ts.map +1 -1
- package/lib.esm/quantumcoin.js +6 -0
- package/lib.esm/quantumcoin.js.map +1 -1
- package/lib.esm/transaction/address.d.ts.map +1 -1
- package/lib.esm/transaction/address.js +8 -2
- package/lib.esm/transaction/address.js.map +1 -1
- package/lib.esm/transaction/transaction.d.ts.map +1 -1
- package/lib.esm/transaction/transaction.js +7 -40
- package/lib.esm/transaction/transaction.js.map +1 -1
- package/lib.esm/wallet/json-keystore.d.ts.map +1 -1
- package/lib.esm/wallet/json-keystore.js +11 -5
- package/lib.esm/wallet/json-keystore.js.map +1 -1
- package/lib.esm/wallet/wallet.d.ts.map +1 -1
- package/lib.esm/wallet/wallet.js +3 -1
- package/lib.esm/wallet/wallet.js.map +1 -1
- package/package.json +6 -5
- package/rollup.config.mjs +50 -50
- package/src.ts/_version.ts +1 -1
- package/src.ts/abi/abi-coder.ts +237 -237
- package/src.ts/abi/bytes32.ts +45 -45
- package/src.ts/abi/coders/abstract-coder.ts +541 -541
- package/src.ts/abi/coders/address.ts +36 -36
- package/src.ts/abi/coders/anonymous.ts +29 -29
- package/src.ts/abi/coders/array.ts +199 -199
- package/src.ts/abi/coders/boolean.ts +27 -27
- package/src.ts/abi/coders/bytes.ts +43 -43
- package/src.ts/abi/coders/fixed-bytes.ts +37 -37
- package/src.ts/abi/coders/null.ts +28 -28
- package/src.ts/abi/coders/number.ts +63 -63
- package/src.ts/abi/coders/string.ts +29 -29
- package/src.ts/abi/coders/tuple.ts +69 -69
- package/src.ts/abi/fragments.ts +1617 -1617
- package/src.ts/abi/index.ts +41 -41
- package/src.ts/abi/interface.ts +1271 -1271
- package/src.ts/abi/typed.ts +796 -796
- package/src.ts/address/address.ts +148 -148
- package/src.ts/address/checks.ts +123 -123
- package/src.ts/address/contract-address.ts +80 -80
- package/src.ts/address/index.ts +57 -57
- package/src.ts/constants/addresses.ts +8 -8
- package/src.ts/constants/hashes.ts +7 -7
- package/src.ts/constants/index.ts +16 -16
- package/src.ts/constants/numbers.ts +35 -35
- package/src.ts/constants/strings.ts +16 -16
- package/src.ts/contract/contract.ts +1120 -1120
- package/src.ts/contract/factory.ts +143 -143
- package/src.ts/contract/index.ts +31 -31
- package/src.ts/contract/types.ts +236 -236
- package/src.ts/contract/wrappers.ts +225 -225
- package/src.ts/crypto/crypto-browser.ts +64 -64
- package/src.ts/crypto/crypto.ts +4 -4
- package/src.ts/crypto/hmac.ts +51 -51
- package/src.ts/crypto/index.ts +59 -59
- package/src.ts/crypto/keccak.ts +54 -54
- package/src.ts/crypto/pbkdf2.ts +55 -55
- package/src.ts/crypto/random.ts +36 -36
- package/src.ts/crypto/ripemd160.ts +43 -43
- package/src.ts/crypto/scrypt.ts +114 -114
- package/src.ts/crypto/sha2.ts +78 -78
- package/src.ts/crypto/signature.ts +145 -349
- package/src.ts/crypto/signing-key.ts +126 -118
- package/src.ts/hash/authorization.ts +38 -38
- package/src.ts/hash/id.ts +17 -17
- package/src.ts/hash/index.ts +18 -18
- package/src.ts/hash/message.ts +51 -51
- package/src.ts/hash/namehash.ts +101 -101
- package/src.ts/hash/solidity.ts +117 -117
- package/src.ts/hash/typed-data.ts +658 -658
- package/src.ts/index.ts +12 -12
- package/src.ts/providers/abstract-provider.ts +1761 -1761
- package/src.ts/providers/abstract-signer.ts +314 -314
- package/src.ts/providers/community.ts +49 -49
- package/src.ts/providers/contracts.ts +42 -42
- package/src.ts/providers/default-provider.ts +96 -96
- package/src.ts/providers/ens-resolver.ts +606 -606
- package/src.ts/providers/format.ts +320 -320
- package/src.ts/providers/formatting.ts +418 -418
- package/src.ts/providers/index.ts +125 -125
- package/src.ts/providers/network.ts +327 -327
- package/src.ts/providers/pagination.ts +8 -8
- package/src.ts/providers/plugin-fallback.ts +35 -35
- package/src.ts/providers/plugins-network.ts +281 -281
- package/src.ts/providers/provider-browser.ts +334 -334
- package/src.ts/providers/provider-fallback.ts +801 -801
- package/src.ts/providers/provider-ipcsocket-browser.ts +3 -3
- package/src.ts/providers/provider-ipcsocket.ts +81 -81
- package/src.ts/providers/provider-jsonrpc.ts +1334 -1335
- package/src.ts/providers/provider-socket.ts +352 -352
- package/src.ts/providers/provider-websocket.ts +103 -103
- package/src.ts/providers/provider.ts +2136 -2136
- package/src.ts/providers/signer-noncemanager.ts +98 -98
- package/src.ts/providers/signer.ts +166 -166
- package/src.ts/providers/subscriber-connection.ts +74 -74
- package/src.ts/providers/subscriber-filterid.ts +199 -199
- package/src.ts/providers/subscriber-polling.ts +321 -321
- package/src.ts/providers/ws-browser.ts +11 -11
- package/src.ts/providers/ws.ts +3 -3
- package/src.ts/quantumcoin.ts +219 -211
- package/src.ts/thirdparty.d.ts +16 -16
- package/src.ts/transaction/accesslist.ts +43 -43
- package/src.ts/transaction/address.ts +35 -31
- package/src.ts/transaction/authorization.ts +14 -14
- package/src.ts/transaction/index.ts +51 -51
- package/src.ts/transaction/transaction.ts +1349 -1379
- package/src.ts/utils/base58.ts +73 -73
- package/src.ts/utils/base64-browser.ts +25 -25
- package/src.ts/utils/base64.ts +56 -56
- package/src.ts/utils/data.ts +199 -199
- package/src.ts/utils/errors.ts +793 -793
- package/src.ts/utils/events.ts +105 -105
- package/src.ts/utils/fetch.ts +970 -970
- package/src.ts/utils/fixednumber.ts +643 -643
- package/src.ts/utils/geturl-browser.ts +81 -81
- package/src.ts/utils/geturl.ts +134 -134
- package/src.ts/utils/index.ts +95 -95
- package/src.ts/utils/maths.ts +240 -240
- package/src.ts/utils/properties.ts +60 -60
- package/src.ts/utils/rlp-decode.ts +104 -104
- package/src.ts/utils/rlp-encode.ts +64 -64
- package/src.ts/utils/rlp.ts +20 -20
- package/src.ts/utils/units.ts +91 -91
- package/src.ts/utils/utf8.ts +325 -325
- package/src.ts/utils/uuid.ts +36 -36
- package/src.ts/wallet/base-wallet.ts +160 -160
- package/src.ts/wallet/index.ts +32 -32
- package/src.ts/wallet/json-keystore.ts +108 -106
- package/src.ts/wallet/utils.ts +147 -147
- package/src.ts/wallet/wallet.ts +138 -139
- package/src.ts/wordlists/bit-reader.ts +35 -35
- package/src.ts/wordlists/decode-owl.ts +58 -58
- package/src.ts/wordlists/decode-owla.ts +33 -33
- package/src.ts/wordlists/generation/encode-latin.ts +370 -370
- package/src.ts/wordlists/index.ts +26 -26
- package/src.ts/wordlists/lang-cz.ts +33 -33
- package/src.ts/wordlists/lang-en.ts +33 -33
- package/src.ts/wordlists/lang-es.ts +35 -35
- package/src.ts/wordlists/lang-fr.ts +34 -34
- package/src.ts/wordlists/lang-it.ts +33 -33
- package/src.ts/wordlists/lang-ja.ts +181 -181
- package/src.ts/wordlists/lang-ko.ts +104 -104
- package/src.ts/wordlists/lang-pt.ts +34 -34
- package/src.ts/wordlists/lang-zh.ts +112 -112
- package/src.ts/wordlists/wordlist-owl.ts +77 -77
- package/src.ts/wordlists/wordlist-owla.ts +41 -41
- package/src.ts/wordlists/wordlist.ts +59 -59
- package/src.ts/wordlists/wordlists-browser.ts +8 -8
- package/src.ts/wordlists/wordlists-extra.ts +9 -9
- package/src.ts/wordlists/wordlists.ts +38 -38
- package/dist/quantumcoin.min.js'.gz' +0 -0
- package/dist/quantumcoin.umd.min.js'.gz' +0 -0
- package/dist/wordlists-extra.min.js'.gz' +0 -0
- package/lib.commonjs/providers/provider-alchemy.d.ts +0 -50
- package/lib.commonjs/providers/provider-alchemy.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-alchemy.js +0 -151
- package/lib.commonjs/providers/provider-alchemy.js.map +0 -1
- package/lib.commonjs/providers/provider-ankr.d.ts +0 -61
- package/lib.commonjs/providers/provider-ankr.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-ankr.js +0 -137
- package/lib.commonjs/providers/provider-ankr.js.map +0 -1
- package/lib.commonjs/providers/provider-blockscout.d.ts +0 -59
- package/lib.commonjs/providers/provider-blockscout.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-blockscout.js +0 -145
- package/lib.commonjs/providers/provider-blockscout.js.map +0 -1
- package/lib.commonjs/providers/provider-chainstack.d.ts +0 -46
- package/lib.commonjs/providers/provider-chainstack.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-chainstack.js +0 -102
- package/lib.commonjs/providers/provider-chainstack.js.map +0 -1
- package/lib.commonjs/providers/provider-cloudflare.d.ts +0 -14
- package/lib.commonjs/providers/provider-cloudflare.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-cloudflare.js +0 -26
- package/lib.commonjs/providers/provider-cloudflare.js.map +0 -1
- package/lib.commonjs/providers/provider-etherscan.d.ts +0 -147
- package/lib.commonjs/providers/provider-etherscan.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-etherscan.js +0 -587
- package/lib.commonjs/providers/provider-etherscan.js.map +0 -1
- package/lib.commonjs/providers/provider-infura.d.ts +0 -101
- package/lib.commonjs/providers/provider-infura.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-infura.js +0 -206
- package/lib.commonjs/providers/provider-infura.js.map +0 -1
- package/lib.commonjs/providers/provider-pocket.d.ts +0 -54
- package/lib.commonjs/providers/provider-pocket.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-pocket.js +0 -109
- package/lib.commonjs/providers/provider-pocket.js.map +0 -1
- package/lib.commonjs/providers/provider-quicknode.d.ts +0 -59
- package/lib.commonjs/providers/provider-quicknode.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-quicknode.js +0 -163
- package/lib.commonjs/providers/provider-quicknode.js.map +0 -1
- package/lib.commonjs/wallet/hdwallet.d.ts +0 -248
- package/lib.commonjs/wallet/hdwallet.d.ts.map +0 -1
- package/lib.commonjs/wallet/hdwallet.js +0 -505
- package/lib.commonjs/wallet/hdwallet.js.map +0 -1
- package/lib.commonjs/wallet/json-crowdsale.d.ts +0 -27
- package/lib.commonjs/wallet/json-crowdsale.d.ts.map +0 -1
- package/lib.commonjs/wallet/json-crowdsale.js +0 -60
- package/lib.commonjs/wallet/json-crowdsale.js.map +0 -1
- package/lib.commonjs/wallet/mnemonic.d.ts +0 -65
- package/lib.commonjs/wallet/mnemonic.d.ts.map +0 -1
- package/lib.commonjs/wallet/mnemonic.js +0 -169
- package/lib.commonjs/wallet/mnemonic.js.map +0 -1
- package/lib.commonjs/wallet/seedwallet.d.ts +0 -4
- package/lib.commonjs/wallet/seedwallet.d.ts.map +0 -1
- package/lib.commonjs/wallet/seedwallet.js +0 -8
- package/lib.commonjs/wallet/seedwallet.js.map +0 -1
- package/lib.esm/providers/provider-alchemy.d.ts +0 -50
- package/lib.esm/providers/provider-alchemy.d.ts.map +0 -1
- package/lib.esm/providers/provider-alchemy.js +0 -147
- package/lib.esm/providers/provider-alchemy.js.map +0 -1
- package/lib.esm/providers/provider-ankr.d.ts +0 -61
- package/lib.esm/providers/provider-ankr.d.ts.map +0 -1
- package/lib.esm/providers/provider-ankr.js +0 -133
- package/lib.esm/providers/provider-ankr.js.map +0 -1
- package/lib.esm/providers/provider-blockscout.d.ts +0 -59
- package/lib.esm/providers/provider-blockscout.d.ts.map +0 -1
- package/lib.esm/providers/provider-blockscout.js +0 -141
- package/lib.esm/providers/provider-blockscout.js.map +0 -1
- package/lib.esm/providers/provider-chainstack.d.ts +0 -46
- package/lib.esm/providers/provider-chainstack.d.ts.map +0 -1
- package/lib.esm/providers/provider-chainstack.js +0 -98
- package/lib.esm/providers/provider-chainstack.js.map +0 -1
- package/lib.esm/providers/provider-cloudflare.d.ts +0 -14
- package/lib.esm/providers/provider-cloudflare.d.ts.map +0 -1
- package/lib.esm/providers/provider-cloudflare.js +0 -22
- package/lib.esm/providers/provider-cloudflare.js.map +0 -1
- package/lib.esm/providers/provider-etherscan.d.ts +0 -147
- package/lib.esm/providers/provider-etherscan.d.ts.map +0 -1
- package/lib.esm/providers/provider-etherscan.js +0 -584
- package/lib.esm/providers/provider-etherscan.js.map +0 -1
- package/lib.esm/providers/provider-infura.d.ts +0 -101
- package/lib.esm/providers/provider-infura.d.ts.map +0 -1
- package/lib.esm/providers/provider-infura.js +0 -201
- package/lib.esm/providers/provider-infura.js.map +0 -1
- package/lib.esm/providers/provider-pocket.d.ts +0 -54
- package/lib.esm/providers/provider-pocket.d.ts.map +0 -1
- package/lib.esm/providers/provider-pocket.js +0 -105
- package/lib.esm/providers/provider-pocket.js.map +0 -1
- package/lib.esm/providers/provider-quicknode.d.ts +0 -59
- package/lib.esm/providers/provider-quicknode.d.ts.map +0 -1
- package/lib.esm/providers/provider-quicknode.js +0 -159
- package/lib.esm/providers/provider-quicknode.js.map +0 -1
- package/lib.esm/wallet/hdwallet.d.ts +0 -248
- package/lib.esm/wallet/hdwallet.d.ts.map +0 -1
- package/lib.esm/wallet/hdwallet.js +0 -498
- package/lib.esm/wallet/hdwallet.js.map +0 -1
- package/lib.esm/wallet/json-crowdsale.d.ts +0 -27
- package/lib.esm/wallet/json-crowdsale.d.ts.map +0 -1
- package/lib.esm/wallet/json-crowdsale.js +0 -55
- package/lib.esm/wallet/json-crowdsale.js.map +0 -1
- package/lib.esm/wallet/mnemonic.d.ts +0 -65
- package/lib.esm/wallet/mnemonic.d.ts.map +0 -1
- package/lib.esm/wallet/mnemonic.js +0 -165
- package/lib.esm/wallet/mnemonic.js.map +0 -1
- package/lib.esm/wallet/seedwallet.d.ts +0 -4
- package/lib.esm/wallet/seedwallet.d.ts.map +0 -1
- package/lib.esm/wallet/seedwallet.js +0 -4
- package/lib.esm/wallet/seedwallet.js.map +0 -1
package/src.ts/utils/base58.ts
CHANGED
|
@@ -1,73 +1,73 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The [Base58 Encoding](link-base58) scheme allows a **numeric** value
|
|
3
|
-
* to be encoded as a compact string using a radix of 58 using only
|
|
4
|
-
* alpha-numeric characters. Confusingly similar characters are omitted
|
|
5
|
-
* (i.e. ``"l0O"``).
|
|
6
|
-
*
|
|
7
|
-
* Note that Base58 encodes a **numeric** value, not arbitrary bytes,
|
|
8
|
-
* since any zero-bytes on the left would get removed. To mitigate this
|
|
9
|
-
* issue most schemes that use Base58 choose specific high-order values
|
|
10
|
-
* to ensure non-zero prefixes.
|
|
11
|
-
*
|
|
12
|
-
* @_subsection: api/utils:Base58 Encoding [about-base58]
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
import { getBytes } from "./data.js";
|
|
16
|
-
import { assertArgument } from "./errors.js";
|
|
17
|
-
import { toBigInt } from "./maths.js";
|
|
18
|
-
|
|
19
|
-
import type { BytesLike } from "./index.js";
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const Alphabet = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
|
|
23
|
-
let Lookup: null | Record<string, bigint> = null;
|
|
24
|
-
|
|
25
|
-
function getAlpha(letter: string): bigint {
|
|
26
|
-
if (Lookup == null) {
|
|
27
|
-
Lookup = { };
|
|
28
|
-
for (let i = 0; i < Alphabet.length; i++) {
|
|
29
|
-
Lookup[Alphabet[i]] = BigInt(i);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
const result = Lookup[letter];
|
|
33
|
-
assertArgument(result != null, `invalid base58 value`, "letter", letter);
|
|
34
|
-
return result;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
const BN_0 = BigInt(0);
|
|
39
|
-
const BN_58 = BigInt(58);
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Encode %%value%% as a Base58-encoded string.
|
|
43
|
-
*/
|
|
44
|
-
export function encodeBase58(_value: BytesLike): string {
|
|
45
|
-
const bytes = getBytes(_value);
|
|
46
|
-
|
|
47
|
-
let value = toBigInt(bytes);
|
|
48
|
-
let result = "";
|
|
49
|
-
while (value) {
|
|
50
|
-
result = Alphabet[Number(value % BN_58)] + result;
|
|
51
|
-
value /= BN_58;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// Account for leading padding zeros
|
|
55
|
-
for (let i = 0; i < bytes.length; i++) {
|
|
56
|
-
if (bytes[i]) { break; }
|
|
57
|
-
result = Alphabet[0] + result;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
return result;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Decode the Base58-encoded %%value%%.
|
|
65
|
-
*/
|
|
66
|
-
export function decodeBase58(value: string): bigint {
|
|
67
|
-
let result = BN_0;
|
|
68
|
-
for (let i = 0; i < value.length; i++) {
|
|
69
|
-
result *= BN_58;
|
|
70
|
-
result += getAlpha(value[i]);
|
|
71
|
-
}
|
|
72
|
-
return result;
|
|
73
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* The [Base58 Encoding](link-base58) scheme allows a **numeric** value
|
|
3
|
+
* to be encoded as a compact string using a radix of 58 using only
|
|
4
|
+
* alpha-numeric characters. Confusingly similar characters are omitted
|
|
5
|
+
* (i.e. ``"l0O"``).
|
|
6
|
+
*
|
|
7
|
+
* Note that Base58 encodes a **numeric** value, not arbitrary bytes,
|
|
8
|
+
* since any zero-bytes on the left would get removed. To mitigate this
|
|
9
|
+
* issue most schemes that use Base58 choose specific high-order values
|
|
10
|
+
* to ensure non-zero prefixes.
|
|
11
|
+
*
|
|
12
|
+
* @_subsection: api/utils:Base58 Encoding [about-base58]
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { getBytes } from "./data.js";
|
|
16
|
+
import { assertArgument } from "./errors.js";
|
|
17
|
+
import { toBigInt } from "./maths.js";
|
|
18
|
+
|
|
19
|
+
import type { BytesLike } from "./index.js";
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
const Alphabet = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
|
|
23
|
+
let Lookup: null | Record<string, bigint> = null;
|
|
24
|
+
|
|
25
|
+
function getAlpha(letter: string): bigint {
|
|
26
|
+
if (Lookup == null) {
|
|
27
|
+
Lookup = { };
|
|
28
|
+
for (let i = 0; i < Alphabet.length; i++) {
|
|
29
|
+
Lookup[Alphabet[i]] = BigInt(i);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
const result = Lookup[letter];
|
|
33
|
+
assertArgument(result != null, `invalid base58 value`, "letter", letter);
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
const BN_0 = BigInt(0);
|
|
39
|
+
const BN_58 = BigInt(58);
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Encode %%value%% as a Base58-encoded string.
|
|
43
|
+
*/
|
|
44
|
+
export function encodeBase58(_value: BytesLike): string {
|
|
45
|
+
const bytes = getBytes(_value);
|
|
46
|
+
|
|
47
|
+
let value = toBigInt(bytes);
|
|
48
|
+
let result = "";
|
|
49
|
+
while (value) {
|
|
50
|
+
result = Alphabet[Number(value % BN_58)] + result;
|
|
51
|
+
value /= BN_58;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Account for leading padding zeros
|
|
55
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
56
|
+
if (bytes[i]) { break; }
|
|
57
|
+
result = Alphabet[0] + result;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Decode the Base58-encoded %%value%%.
|
|
65
|
+
*/
|
|
66
|
+
export function decodeBase58(value: string): bigint {
|
|
67
|
+
let result = BN_0;
|
|
68
|
+
for (let i = 0; i < value.length; i++) {
|
|
69
|
+
result *= BN_58;
|
|
70
|
+
result += getAlpha(value[i]);
|
|
71
|
+
}
|
|
72
|
+
return result;
|
|
73
|
+
}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
// utils/base64-browser
|
|
3
|
-
|
|
4
|
-
import { getBytes } from "./data.js";
|
|
5
|
-
|
|
6
|
-
import type { BytesLike } from "./data.js";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export function decodeBase64(textData: string): Uint8Array {
|
|
10
|
-
textData = atob(textData);
|
|
11
|
-
const data = new Uint8Array(textData.length);
|
|
12
|
-
for (let i = 0; i < textData.length; i++) {
|
|
13
|
-
data[i] = textData.charCodeAt(i);
|
|
14
|
-
}
|
|
15
|
-
return getBytes(data);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export function encodeBase64(_data: BytesLike): string {
|
|
19
|
-
const data = getBytes(_data);
|
|
20
|
-
let textData = "";
|
|
21
|
-
for (let i = 0; i < data.length; i++) {
|
|
22
|
-
textData += String.fromCharCode(data[i]);
|
|
23
|
-
}
|
|
24
|
-
return btoa(textData);
|
|
25
|
-
}
|
|
1
|
+
|
|
2
|
+
// utils/base64-browser
|
|
3
|
+
|
|
4
|
+
import { getBytes } from "./data.js";
|
|
5
|
+
|
|
6
|
+
import type { BytesLike } from "./data.js";
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
export function decodeBase64(textData: string): Uint8Array {
|
|
10
|
+
textData = atob(textData);
|
|
11
|
+
const data = new Uint8Array(textData.length);
|
|
12
|
+
for (let i = 0; i < textData.length; i++) {
|
|
13
|
+
data[i] = textData.charCodeAt(i);
|
|
14
|
+
}
|
|
15
|
+
return getBytes(data);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export function encodeBase64(_data: BytesLike): string {
|
|
19
|
+
const data = getBytes(_data);
|
|
20
|
+
let textData = "";
|
|
21
|
+
for (let i = 0; i < data.length; i++) {
|
|
22
|
+
textData += String.fromCharCode(data[i]);
|
|
23
|
+
}
|
|
24
|
+
return btoa(textData);
|
|
25
|
+
}
|
package/src.ts/utils/base64.ts
CHANGED
|
@@ -1,56 +1,56 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* [Base64 encoding](link-wiki-base64) using 6-bit words to encode
|
|
3
|
-
* arbitrary bytes into a string using 65 printable symbols, the
|
|
4
|
-
* upper-case and lower-case alphabet, the digits ``0`` through ``9``,
|
|
5
|
-
* ``"+"`` and ``"/"`` with the ``"="`` used for padding.
|
|
6
|
-
*
|
|
7
|
-
* @_subsection: api/utils:Base64 Encoding [about-base64]
|
|
8
|
-
*/
|
|
9
|
-
import { getBytes, getBytesCopy } from "./data.js";
|
|
10
|
-
|
|
11
|
-
import type { BytesLike } from "./data.js";
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Decodes the base-64 encoded %%value%%.
|
|
16
|
-
*
|
|
17
|
-
* @example:
|
|
18
|
-
* // The decoded value is always binary data...
|
|
19
|
-
* result = decodeBase64("SGVsbG8gV29ybGQhIQ==")
|
|
20
|
-
* //_result:
|
|
21
|
-
*
|
|
22
|
-
* // ...use toUtf8String to convert it to a string.
|
|
23
|
-
* toUtf8String(result)
|
|
24
|
-
* //_result:
|
|
25
|
-
*
|
|
26
|
-
* // Decoding binary data
|
|
27
|
-
* decodeBase64("EjQ=")
|
|
28
|
-
* //_result:
|
|
29
|
-
*/
|
|
30
|
-
export function decodeBase64(value: string): Uint8Array {
|
|
31
|
-
return getBytesCopy(Buffer.from(value, "base64"));
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Encodes %%data%% as a base-64 encoded string.
|
|
36
|
-
*
|
|
37
|
-
* @example:
|
|
38
|
-
* // Encoding binary data as a hexstring
|
|
39
|
-
* encodeBase64("0x1234")
|
|
40
|
-
* //_result:
|
|
41
|
-
*
|
|
42
|
-
* // Encoding binary data as a Uint8Array
|
|
43
|
-
* encodeBase64(new Uint8Array([ 0x12, 0x34 ]))
|
|
44
|
-
* //_result:
|
|
45
|
-
*
|
|
46
|
-
* // The input MUST be data...
|
|
47
|
-
* encodeBase64("Hello World!!")
|
|
48
|
-
* //_error:
|
|
49
|
-
*
|
|
50
|
-
* // ...use toUtf8Bytes for this.
|
|
51
|
-
* encodeBase64(toUtf8Bytes("Hello World!!"))
|
|
52
|
-
* //_result:
|
|
53
|
-
*/
|
|
54
|
-
export function encodeBase64(data: BytesLike): string {
|
|
55
|
-
return Buffer.from(getBytes(data)).toString("base64");
|
|
56
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* [Base64 encoding](link-wiki-base64) using 6-bit words to encode
|
|
3
|
+
* arbitrary bytes into a string using 65 printable symbols, the
|
|
4
|
+
* upper-case and lower-case alphabet, the digits ``0`` through ``9``,
|
|
5
|
+
* ``"+"`` and ``"/"`` with the ``"="`` used for padding.
|
|
6
|
+
*
|
|
7
|
+
* @_subsection: api/utils:Base64 Encoding [about-base64]
|
|
8
|
+
*/
|
|
9
|
+
import { getBytes, getBytesCopy } from "./data.js";
|
|
10
|
+
|
|
11
|
+
import type { BytesLike } from "./data.js";
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Decodes the base-64 encoded %%value%%.
|
|
16
|
+
*
|
|
17
|
+
* @example:
|
|
18
|
+
* // The decoded value is always binary data...
|
|
19
|
+
* result = decodeBase64("SGVsbG8gV29ybGQhIQ==")
|
|
20
|
+
* //_result:
|
|
21
|
+
*
|
|
22
|
+
* // ...use toUtf8String to convert it to a string.
|
|
23
|
+
* toUtf8String(result)
|
|
24
|
+
* //_result:
|
|
25
|
+
*
|
|
26
|
+
* // Decoding binary data
|
|
27
|
+
* decodeBase64("EjQ=")
|
|
28
|
+
* //_result:
|
|
29
|
+
*/
|
|
30
|
+
export function decodeBase64(value: string): Uint8Array {
|
|
31
|
+
return getBytesCopy(Buffer.from(value, "base64"));
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Encodes %%data%% as a base-64 encoded string.
|
|
36
|
+
*
|
|
37
|
+
* @example:
|
|
38
|
+
* // Encoding binary data as a hexstring
|
|
39
|
+
* encodeBase64("0x1234")
|
|
40
|
+
* //_result:
|
|
41
|
+
*
|
|
42
|
+
* // Encoding binary data as a Uint8Array
|
|
43
|
+
* encodeBase64(new Uint8Array([ 0x12, 0x34 ]))
|
|
44
|
+
* //_result:
|
|
45
|
+
*
|
|
46
|
+
* // The input MUST be data...
|
|
47
|
+
* encodeBase64("Hello World!!")
|
|
48
|
+
* //_error:
|
|
49
|
+
*
|
|
50
|
+
* // ...use toUtf8Bytes for this.
|
|
51
|
+
* encodeBase64(toUtf8Bytes("Hello World!!"))
|
|
52
|
+
* //_result:
|
|
53
|
+
*/
|
|
54
|
+
export function encodeBase64(data: BytesLike): string {
|
|
55
|
+
return Buffer.from(getBytes(data)).toString("base64");
|
|
56
|
+
}
|