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
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* [[link-ankr]] provides a third-party service for connecting to
|
|
3
|
-
* various blockchains over JSON-RPC.
|
|
4
|
-
*
|
|
5
|
-
* **Supported Networks**
|
|
6
|
-
*
|
|
7
|
-
* - Ethereum Mainnet (``mainnet``)
|
|
8
|
-
* - Goerli Testnet (``goerli``)
|
|
9
|
-
* - Sepolia Testnet (``sepolia``)
|
|
10
|
-
* - Arbitrum (``arbitrum``)
|
|
11
|
-
* - Base (``base``)
|
|
12
|
-
* - Base Goerlia Testnet (``base-goerli``)
|
|
13
|
-
* - Base Sepolia Testnet (``base-sepolia``)
|
|
14
|
-
* - BNB (``bnb``)
|
|
15
|
-
* - BNB Testnet (``bnbt``)
|
|
16
|
-
* - Optimism (``optimism``)
|
|
17
|
-
* - Optimism Goerli Testnet (``optimism-goerli``)
|
|
18
|
-
* - Optimism Sepolia Testnet (``optimism-sepolia``)
|
|
19
|
-
* - Polygon (``matic``)
|
|
20
|
-
* - Polygon Mumbai Testnet (``matic-mumbai``)
|
|
21
|
-
*
|
|
22
|
-
* @_subsection: api/providers/thirdparty:Ankr [providers-ankr]
|
|
23
|
-
*/
|
|
24
|
-
import { defineProperties, FetchRequest, assertArgument } from "../utils/index.js";
|
|
25
|
-
import { showThrottleMessage } from "./community.js";
|
|
26
|
-
import { Network } from "./network.js";
|
|
27
|
-
import { JsonRpcProvider } from "./provider-jsonrpc.js";
|
|
28
|
-
const defaultApiKey = "9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972";
|
|
29
|
-
function getHost(name) {
|
|
30
|
-
switch (name) {
|
|
31
|
-
case "mainnet":
|
|
32
|
-
return "rpc.ankr.com/eth";
|
|
33
|
-
case "goerli":
|
|
34
|
-
return "rpc.ankr.com/eth_goerli";
|
|
35
|
-
case "sepolia":
|
|
36
|
-
return "rpc.ankr.com/eth_sepolia";
|
|
37
|
-
case "arbitrum":
|
|
38
|
-
return "rpc.ankr.com/arbitrum";
|
|
39
|
-
case "base":
|
|
40
|
-
return "rpc.ankr.com/base";
|
|
41
|
-
case "base-goerli":
|
|
42
|
-
return "rpc.ankr.com/base_goerli";
|
|
43
|
-
case "base-sepolia":
|
|
44
|
-
return "rpc.ankr.com/base_sepolia";
|
|
45
|
-
case "bnb":
|
|
46
|
-
return "rpc.ankr.com/bsc";
|
|
47
|
-
case "bnbt":
|
|
48
|
-
return "rpc.ankr.com/bsc_testnet_chapel";
|
|
49
|
-
case "matic":
|
|
50
|
-
return "rpc.ankr.com/polygon";
|
|
51
|
-
case "matic-mumbai":
|
|
52
|
-
return "rpc.ankr.com/polygon_mumbai";
|
|
53
|
-
case "optimism":
|
|
54
|
-
return "rpc.ankr.com/optimism";
|
|
55
|
-
case "optimism-goerli":
|
|
56
|
-
return "rpc.ankr.com/optimism_testnet";
|
|
57
|
-
case "optimism-sepolia":
|
|
58
|
-
return "rpc.ankr.com/optimism_sepolia";
|
|
59
|
-
}
|
|
60
|
-
assertArgument(false, "unsupported network", "network", name);
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* The **AnkrProvider** connects to the [[link-ankr]]
|
|
64
|
-
* JSON-RPC end-points.
|
|
65
|
-
*
|
|
66
|
-
* By default, a highly-throttled API key is used, which is
|
|
67
|
-
* appropriate for quick prototypes and simple scripts. To
|
|
68
|
-
* gain access to an increased rate-limit, it is highly
|
|
69
|
-
* recommended to [sign up here](link-ankr-signup).
|
|
70
|
-
*/
|
|
71
|
-
export class AnkrProvider extends JsonRpcProvider {
|
|
72
|
-
/**
|
|
73
|
-
* The API key for the Ankr connection.
|
|
74
|
-
*/
|
|
75
|
-
apiKey;
|
|
76
|
-
/**
|
|
77
|
-
* Create a new **AnkrProvider**.
|
|
78
|
-
*
|
|
79
|
-
* By default connecting to ``mainnet`` with a highly throttled
|
|
80
|
-
* API key.
|
|
81
|
-
*/
|
|
82
|
-
constructor(_network, apiKey) {
|
|
83
|
-
if (_network == null) {
|
|
84
|
-
_network = "mainnet";
|
|
85
|
-
}
|
|
86
|
-
const network = Network.from(_network);
|
|
87
|
-
if (apiKey == null) {
|
|
88
|
-
apiKey = defaultApiKey;
|
|
89
|
-
}
|
|
90
|
-
// Ankr does not support filterId, so we force polling
|
|
91
|
-
const options = { polling: true, staticNetwork: network };
|
|
92
|
-
const request = AnkrProvider.getRequest(network, apiKey);
|
|
93
|
-
super(request, network, options);
|
|
94
|
-
defineProperties(this, { apiKey });
|
|
95
|
-
}
|
|
96
|
-
_getProvider(chainId) {
|
|
97
|
-
try {
|
|
98
|
-
return new AnkrProvider(chainId, this.apiKey);
|
|
99
|
-
}
|
|
100
|
-
catch (error) { }
|
|
101
|
-
return super._getProvider(chainId);
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Returns a prepared request for connecting to %%network%% with
|
|
105
|
-
* %%apiKey%%.
|
|
106
|
-
*/
|
|
107
|
-
static getRequest(network, apiKey) {
|
|
108
|
-
if (apiKey == null) {
|
|
109
|
-
apiKey = defaultApiKey;
|
|
110
|
-
}
|
|
111
|
-
const request = new FetchRequest(`https:/\/${getHost(network.name)}/${apiKey}`);
|
|
112
|
-
request.allowGzip = true;
|
|
113
|
-
if (apiKey === defaultApiKey) {
|
|
114
|
-
request.retryFunc = async (request, response, attempt) => {
|
|
115
|
-
showThrottleMessage("AnkrProvider");
|
|
116
|
-
return true;
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
return request;
|
|
120
|
-
}
|
|
121
|
-
getRpcError(payload, error) {
|
|
122
|
-
if (payload.method === "eth_sendRawTransaction") {
|
|
123
|
-
if (error && error.error && error.error.message === "INTERNAL_ERROR: could not replace existing tx") {
|
|
124
|
-
error.error.message = "replacement transaction underpriced";
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
return super.getRpcError(payload, error);
|
|
128
|
-
}
|
|
129
|
-
isCommunityResource() {
|
|
130
|
-
return (this.apiKey === defaultApiKey);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
//# sourceMappingURL=provider-ankr.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provider-ankr.js","sourceRoot":"","sources":["../../src.ts/providers/provider-ankr.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* [[link-blockscout]] provides a third-party service for connecting to
|
|
3
|
-
* various blockchains over JSON-RPC.
|
|
4
|
-
*
|
|
5
|
-
* **Supported Networks**
|
|
6
|
-
*
|
|
7
|
-
* - Ethereum Mainnet (``mainnet``)
|
|
8
|
-
* - Sepolia Testnet (``sepolia``)
|
|
9
|
-
* - Holesky Testnet (``holesky``)
|
|
10
|
-
* - Ethereum Classic (``classic``)
|
|
11
|
-
* - Arbitrum (``arbitrum``)
|
|
12
|
-
* - Base (``base``)
|
|
13
|
-
* - Base Sepolia Testnet (``base-sepolia``)
|
|
14
|
-
* - Gnosis (``xdai``)
|
|
15
|
-
* - Optimism (``optimism``)
|
|
16
|
-
* - Optimism Sepolia Testnet (``optimism-sepolia``)
|
|
17
|
-
* - Polygon (``matic``)
|
|
18
|
-
*
|
|
19
|
-
* @_subsection: api/providers/thirdparty:Blockscout [providers-blockscout]
|
|
20
|
-
*/
|
|
21
|
-
import { FetchRequest } from "../utils/index.js";
|
|
22
|
-
import { Network } from "./network.js";
|
|
23
|
-
import { JsonRpcProvider } from "./provider-jsonrpc.js";
|
|
24
|
-
import type { AbstractProvider, PerformActionRequest } from "./abstract-provider.js";
|
|
25
|
-
import type { CommunityResourcable } from "./community.js";
|
|
26
|
-
import type { Networkish } from "./network.js";
|
|
27
|
-
import type { JsonRpcPayload, JsonRpcError } from "./provider-jsonrpc.js";
|
|
28
|
-
/**
|
|
29
|
-
* The **BlockscoutProvider** connects to the [[link-blockscout]]
|
|
30
|
-
* JSON-RPC end-points.
|
|
31
|
-
*
|
|
32
|
-
* By default, a highly-throttled API key is used, which is
|
|
33
|
-
* appropriate for quick prototypes and simple scripts. To
|
|
34
|
-
* gain access to an increased rate-limit, it is highly
|
|
35
|
-
* recommended to [sign up here](link-blockscout).
|
|
36
|
-
*/
|
|
37
|
-
export declare class BlockscoutProvider extends JsonRpcProvider implements CommunityResourcable {
|
|
38
|
-
/**
|
|
39
|
-
* The API key.
|
|
40
|
-
*/
|
|
41
|
-
readonly apiKey: null | string;
|
|
42
|
-
/**
|
|
43
|
-
* Creates a new **BlockscoutProvider**.
|
|
44
|
-
*/
|
|
45
|
-
constructor(_network?: Networkish, apiKey?: null | string);
|
|
46
|
-
_getProvider(chainId: number): AbstractProvider;
|
|
47
|
-
isCommunityResource(): boolean;
|
|
48
|
-
getRpcRequest(req: PerformActionRequest): null | {
|
|
49
|
-
method: string;
|
|
50
|
-
args: Array<any>;
|
|
51
|
-
};
|
|
52
|
-
getRpcError(payload: JsonRpcPayload, _error: JsonRpcError): Error;
|
|
53
|
-
/**
|
|
54
|
-
* Returns a prepared request for connecting to %%network%%
|
|
55
|
-
* with %%apiKey%%.
|
|
56
|
-
*/
|
|
57
|
-
static getRequest(network: Network): FetchRequest;
|
|
58
|
-
}
|
|
59
|
-
//# sourceMappingURL=provider-blockscout.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provider-blockscout.d.ts","sourceRoot":"","sources":["../../src.ts/providers/provider-blockscout.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAC+B,YAAY,EACjD,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAuC1E;;;;;;;;GAQG;AACH,qBAAa,kBAAmB,SAAQ,eAAgB,YAAW,oBAAoB;IACnF;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAG,IAAI,GAAG,MAAM,CAAC;IAEhC;;OAEG;gBACS,QAAQ,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,IAAI,GAAG,MAAM;IAYzD,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB;IAO/C,mBAAmB,IAAI,OAAO;IAI9B,aAAa,CAAC,GAAG,EAAE,oBAAoB,GAAG,IAAI,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;KAAE;IAUrF,WAAW,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,GAAG,KAAK;IAoCjE;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY;CAKpD"}
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* [[link-blockscout]] provides a third-party service for connecting to
|
|
3
|
-
* various blockchains over JSON-RPC.
|
|
4
|
-
*
|
|
5
|
-
* **Supported Networks**
|
|
6
|
-
*
|
|
7
|
-
* - Ethereum Mainnet (``mainnet``)
|
|
8
|
-
* - Sepolia Testnet (``sepolia``)
|
|
9
|
-
* - Holesky Testnet (``holesky``)
|
|
10
|
-
* - Ethereum Classic (``classic``)
|
|
11
|
-
* - Arbitrum (``arbitrum``)
|
|
12
|
-
* - Base (``base``)
|
|
13
|
-
* - Base Sepolia Testnet (``base-sepolia``)
|
|
14
|
-
* - Gnosis (``xdai``)
|
|
15
|
-
* - Optimism (``optimism``)
|
|
16
|
-
* - Optimism Sepolia Testnet (``optimism-sepolia``)
|
|
17
|
-
* - Polygon (``matic``)
|
|
18
|
-
*
|
|
19
|
-
* @_subsection: api/providers/thirdparty:Blockscout [providers-blockscout]
|
|
20
|
-
*/
|
|
21
|
-
import { assertArgument, defineProperties, FetchRequest, isHexString } from "../utils/index.js";
|
|
22
|
-
import { Network } from "./network.js";
|
|
23
|
-
import { JsonRpcProvider } from "./provider-jsonrpc.js";
|
|
24
|
-
function getUrl(name) {
|
|
25
|
-
switch (name) {
|
|
26
|
-
case "mainnet":
|
|
27
|
-
return "https:/\/eth.blockscout.com/api/eth-rpc";
|
|
28
|
-
case "sepolia":
|
|
29
|
-
return "https:/\/eth-sepolia.blockscout.com/api/eth-rpc";
|
|
30
|
-
case "holesky":
|
|
31
|
-
return "https:/\/eth-holesky.blockscout.com/api/eth-rpc";
|
|
32
|
-
case "classic":
|
|
33
|
-
return "https:/\/etc.blockscout.com/api/eth-rpc";
|
|
34
|
-
case "arbitrum":
|
|
35
|
-
return "https:/\/arbitrum.blockscout.com/api/eth-rpc";
|
|
36
|
-
case "base":
|
|
37
|
-
return "https:/\/base.blockscout.com/api/eth-rpc";
|
|
38
|
-
case "base-sepolia":
|
|
39
|
-
return "https:/\/base-sepolia.blockscout.com/api/eth-rpc";
|
|
40
|
-
case "matic":
|
|
41
|
-
return "https:/\/polygon.blockscout.com/api/eth-rpc";
|
|
42
|
-
case "optimism":
|
|
43
|
-
return "https:/\/optimism.blockscout.com/api/eth-rpc";
|
|
44
|
-
case "optimism-sepolia":
|
|
45
|
-
return "https:/\/optimism-sepolia.blockscout.com/api/eth-rpc";
|
|
46
|
-
case "xdai":
|
|
47
|
-
return "https:/\/gnosis.blockscout.com/api/eth-rpc";
|
|
48
|
-
}
|
|
49
|
-
assertArgument(false, "unsupported network", "network", name);
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* The **BlockscoutProvider** connects to the [[link-blockscout]]
|
|
53
|
-
* JSON-RPC end-points.
|
|
54
|
-
*
|
|
55
|
-
* By default, a highly-throttled API key is used, which is
|
|
56
|
-
* appropriate for quick prototypes and simple scripts. To
|
|
57
|
-
* gain access to an increased rate-limit, it is highly
|
|
58
|
-
* recommended to [sign up here](link-blockscout).
|
|
59
|
-
*/
|
|
60
|
-
export class BlockscoutProvider extends JsonRpcProvider {
|
|
61
|
-
/**
|
|
62
|
-
* The API key.
|
|
63
|
-
*/
|
|
64
|
-
apiKey;
|
|
65
|
-
/**
|
|
66
|
-
* Creates a new **BlockscoutProvider**.
|
|
67
|
-
*/
|
|
68
|
-
constructor(_network, apiKey) {
|
|
69
|
-
if (_network == null) {
|
|
70
|
-
_network = "mainnet";
|
|
71
|
-
}
|
|
72
|
-
const network = Network.from(_network);
|
|
73
|
-
if (apiKey == null) {
|
|
74
|
-
apiKey = null;
|
|
75
|
-
}
|
|
76
|
-
const request = BlockscoutProvider.getRequest(network);
|
|
77
|
-
super(request, network, { staticNetwork: network });
|
|
78
|
-
defineProperties(this, { apiKey });
|
|
79
|
-
}
|
|
80
|
-
_getProvider(chainId) {
|
|
81
|
-
try {
|
|
82
|
-
return new BlockscoutProvider(chainId, this.apiKey);
|
|
83
|
-
}
|
|
84
|
-
catch (error) { }
|
|
85
|
-
return super._getProvider(chainId);
|
|
86
|
-
}
|
|
87
|
-
isCommunityResource() {
|
|
88
|
-
return (this.apiKey === null);
|
|
89
|
-
}
|
|
90
|
-
getRpcRequest(req) {
|
|
91
|
-
// Blockscout enforces the TAG argument for estimateGas
|
|
92
|
-
const resp = super.getRpcRequest(req);
|
|
93
|
-
if (resp && resp.method === "eth_estimateGas" && resp.args.length == 1) {
|
|
94
|
-
resp.args = resp.args.slice();
|
|
95
|
-
resp.args.push("latest");
|
|
96
|
-
}
|
|
97
|
-
return resp;
|
|
98
|
-
}
|
|
99
|
-
getRpcError(payload, _error) {
|
|
100
|
-
const error = _error ? _error.error : null;
|
|
101
|
-
// Blockscout currently drops the VM result and replaces it with a
|
|
102
|
-
// human-readable string, so we need to make it machine-readable.
|
|
103
|
-
if (error && error.code === -32015 && !isHexString(error.data || "", true)) {
|
|
104
|
-
const panicCodes = {
|
|
105
|
-
"assert(false)": "01",
|
|
106
|
-
"arithmetic underflow or overflow": "11",
|
|
107
|
-
"division or modulo by zero": "12",
|
|
108
|
-
"out-of-bounds array access; popping on an empty array": "31",
|
|
109
|
-
"out-of-bounds access of an array or bytesN": "32"
|
|
110
|
-
};
|
|
111
|
-
let panicCode = "";
|
|
112
|
-
if (error.message === "VM execution error.") {
|
|
113
|
-
// eth_call passes this message
|
|
114
|
-
panicCode = panicCodes[error.data] || "";
|
|
115
|
-
}
|
|
116
|
-
else if (panicCodes[error.message || ""]) {
|
|
117
|
-
panicCode = panicCodes[error.message || ""];
|
|
118
|
-
}
|
|
119
|
-
if (panicCode) {
|
|
120
|
-
error.message += ` (reverted: ${error.data})`;
|
|
121
|
-
error.data = "0x4e487b7100000000000000000000000000000000000000000000000000000000000000" + panicCode;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
else if (error && error.code === -32000) {
|
|
125
|
-
if (error.message === "wrong transaction nonce") {
|
|
126
|
-
error.message += " (nonce too low)";
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
return super.getRpcError(payload, _error);
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Returns a prepared request for connecting to %%network%%
|
|
133
|
-
* with %%apiKey%%.
|
|
134
|
-
*/
|
|
135
|
-
static getRequest(network) {
|
|
136
|
-
const request = new FetchRequest(getUrl(network.name));
|
|
137
|
-
request.allowGzip = true;
|
|
138
|
-
return request;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
//# sourceMappingURL=provider-blockscout.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provider-blockscout.js","sourceRoot":"","sources":["../../src.ts/providers/provider-blockscout.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* [[link-chainstack]] provides a third-party service for connecting to
|
|
3
|
-
* various blockchains over JSON-RPC.
|
|
4
|
-
*
|
|
5
|
-
* **Supported Networks**
|
|
6
|
-
*
|
|
7
|
-
* - Ethereum Mainnet (``mainnet``)
|
|
8
|
-
* - Arbitrum (``arbitrum``)
|
|
9
|
-
* - BNB Smart Chain Mainnet (``bnb``)
|
|
10
|
-
* - Polygon (``matic``)
|
|
11
|
-
*
|
|
12
|
-
* @_subsection: api/providers/thirdparty:Chainstack [providers-chainstack]
|
|
13
|
-
*/
|
|
14
|
-
import { FetchRequest } from "../utils/index.js";
|
|
15
|
-
import { Network } from "./network.js";
|
|
16
|
-
import { JsonRpcProvider } from "./provider-jsonrpc.js";
|
|
17
|
-
import type { AbstractProvider } from "./abstract-provider.js";
|
|
18
|
-
import type { CommunityResourcable } from "./community.js";
|
|
19
|
-
import type { Networkish } from "./network.js";
|
|
20
|
-
/**
|
|
21
|
-
* The **ChainstackProvider** connects to the [[link-chainstack]]
|
|
22
|
-
* JSON-RPC end-points.
|
|
23
|
-
*
|
|
24
|
-
* By default, a highly-throttled API key is used, which is
|
|
25
|
-
* appropriate for quick prototypes and simple scripts. To
|
|
26
|
-
* gain access to an increased rate-limit, it is highly
|
|
27
|
-
* recommended to [sign up here](link-chainstack).
|
|
28
|
-
*/
|
|
29
|
-
export declare class ChainstackProvider extends JsonRpcProvider implements CommunityResourcable {
|
|
30
|
-
/**
|
|
31
|
-
* The API key for the Chainstack connection.
|
|
32
|
-
*/
|
|
33
|
-
readonly apiKey: string;
|
|
34
|
-
/**
|
|
35
|
-
* Creates a new **ChainstackProvider**.
|
|
36
|
-
*/
|
|
37
|
-
constructor(_network?: Networkish, apiKey?: null | string);
|
|
38
|
-
_getProvider(chainId: number): AbstractProvider;
|
|
39
|
-
isCommunityResource(): boolean;
|
|
40
|
-
/**
|
|
41
|
-
* Returns a prepared request for connecting to %%network%%
|
|
42
|
-
* with %%apiKey%% and %%projectSecret%%.
|
|
43
|
-
*/
|
|
44
|
-
static getRequest(network: Network, apiKey?: null | string): FetchRequest;
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=provider-chainstack.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provider-chainstack.d.ts","sourceRoot":"","sources":["../../src.ts/providers/provider-chainstack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EACe,YAAY,EACjC,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AA6B/C;;;;;;;;GAQG;AACH,qBAAa,kBAAmB,SAAQ,eAAgB,YAAW,oBAAoB;IACnF;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAG,MAAM,CAAC;IAEzB;;OAEG;gBACS,QAAQ,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,IAAI,GAAG,MAAM;IAYzD,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB;IAO/C,mBAAmB,IAAI,OAAO;IAI9B;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,YAAY;CAe5E"}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* [[link-chainstack]] provides a third-party service for connecting to
|
|
3
|
-
* various blockchains over JSON-RPC.
|
|
4
|
-
*
|
|
5
|
-
* **Supported Networks**
|
|
6
|
-
*
|
|
7
|
-
* - Ethereum Mainnet (``mainnet``)
|
|
8
|
-
* - Arbitrum (``arbitrum``)
|
|
9
|
-
* - BNB Smart Chain Mainnet (``bnb``)
|
|
10
|
-
* - Polygon (``matic``)
|
|
11
|
-
*
|
|
12
|
-
* @_subsection: api/providers/thirdparty:Chainstack [providers-chainstack]
|
|
13
|
-
*/
|
|
14
|
-
import { defineProperties, FetchRequest, assertArgument } from "../utils/index.js";
|
|
15
|
-
import { showThrottleMessage } from "./community.js";
|
|
16
|
-
import { Network } from "./network.js";
|
|
17
|
-
import { JsonRpcProvider } from "./provider-jsonrpc.js";
|
|
18
|
-
function getApiKey(name) {
|
|
19
|
-
switch (name) {
|
|
20
|
-
case "mainnet": return "39f1d67cedf8b7831010a665328c9197";
|
|
21
|
-
case "arbitrum": return "0550c209db33c3abf4cc927e1e18cea1";
|
|
22
|
-
case "bnb": return "98b5a77e531614387366f6fc5da097f8";
|
|
23
|
-
case "matic": return "cd9d4d70377471aa7c142ec4a4205249";
|
|
24
|
-
}
|
|
25
|
-
assertArgument(false, "unsupported network", "network", name);
|
|
26
|
-
}
|
|
27
|
-
function getHost(name) {
|
|
28
|
-
switch (name) {
|
|
29
|
-
case "mainnet":
|
|
30
|
-
return "ethereum-mainnet.core.chainstack.com";
|
|
31
|
-
case "arbitrum":
|
|
32
|
-
return "arbitrum-mainnet.core.chainstack.com";
|
|
33
|
-
case "bnb":
|
|
34
|
-
return "bsc-mainnet.core.chainstack.com";
|
|
35
|
-
case "matic":
|
|
36
|
-
return "polygon-mainnet.core.chainstack.com";
|
|
37
|
-
}
|
|
38
|
-
assertArgument(false, "unsupported network", "network", name);
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* The **ChainstackProvider** connects to the [[link-chainstack]]
|
|
42
|
-
* JSON-RPC end-points.
|
|
43
|
-
*
|
|
44
|
-
* By default, a highly-throttled API key is used, which is
|
|
45
|
-
* appropriate for quick prototypes and simple scripts. To
|
|
46
|
-
* gain access to an increased rate-limit, it is highly
|
|
47
|
-
* recommended to [sign up here](link-chainstack).
|
|
48
|
-
*/
|
|
49
|
-
export class ChainstackProvider extends JsonRpcProvider {
|
|
50
|
-
/**
|
|
51
|
-
* The API key for the Chainstack connection.
|
|
52
|
-
*/
|
|
53
|
-
apiKey;
|
|
54
|
-
/**
|
|
55
|
-
* Creates a new **ChainstackProvider**.
|
|
56
|
-
*/
|
|
57
|
-
constructor(_network, apiKey) {
|
|
58
|
-
if (_network == null) {
|
|
59
|
-
_network = "mainnet";
|
|
60
|
-
}
|
|
61
|
-
const network = Network.from(_network);
|
|
62
|
-
if (apiKey == null) {
|
|
63
|
-
apiKey = getApiKey(network.name);
|
|
64
|
-
}
|
|
65
|
-
const request = ChainstackProvider.getRequest(network, apiKey);
|
|
66
|
-
super(request, network, { staticNetwork: network });
|
|
67
|
-
defineProperties(this, { apiKey });
|
|
68
|
-
}
|
|
69
|
-
_getProvider(chainId) {
|
|
70
|
-
try {
|
|
71
|
-
return new ChainstackProvider(chainId, this.apiKey);
|
|
72
|
-
}
|
|
73
|
-
catch (error) { }
|
|
74
|
-
return super._getProvider(chainId);
|
|
75
|
-
}
|
|
76
|
-
isCommunityResource() {
|
|
77
|
-
return (this.apiKey === getApiKey(this._network.name));
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Returns a prepared request for connecting to %%network%%
|
|
81
|
-
* with %%apiKey%% and %%projectSecret%%.
|
|
82
|
-
*/
|
|
83
|
-
static getRequest(network, apiKey) {
|
|
84
|
-
if (apiKey == null) {
|
|
85
|
-
apiKey = getApiKey(network.name);
|
|
86
|
-
}
|
|
87
|
-
const request = new FetchRequest(`https:/\/${getHost(network.name)}/${apiKey}`);
|
|
88
|
-
request.allowGzip = true;
|
|
89
|
-
if (apiKey === getApiKey(network.name)) {
|
|
90
|
-
request.retryFunc = async (request, response, attempt) => {
|
|
91
|
-
showThrottleMessage("ChainstackProvider");
|
|
92
|
-
return true;
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
return request;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
//# sourceMappingURL=provider-chainstack.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provider-chainstack.js","sourceRoot":"","sources":["../../src.ts/providers/provider-chainstack.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* About Cloudflare
|
|
3
|
-
*
|
|
4
|
-
* @_subsection: api/providers/thirdparty:Cloudflare [providers-cloudflare]
|
|
5
|
-
*/
|
|
6
|
-
import { JsonRpcProvider } from "./provider-jsonrpc.js";
|
|
7
|
-
import type { Networkish } from "./network.js";
|
|
8
|
-
/**
|
|
9
|
-
* About Cloudflare...
|
|
10
|
-
*/
|
|
11
|
-
export declare class CloudflareProvider extends JsonRpcProvider {
|
|
12
|
-
constructor(_network?: Networkish);
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=provider-cloudflare.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provider-cloudflare.d.ts","sourceRoot":"","sources":["../../src.ts/providers/provider-cloudflare.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,eAAe;gBACvC,QAAQ,CAAC,EAAE,UAAU;CAMpC"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* About Cloudflare
|
|
3
|
-
*
|
|
4
|
-
* @_subsection: api/providers/thirdparty:Cloudflare [providers-cloudflare]
|
|
5
|
-
*/
|
|
6
|
-
import { assertArgument } from "../utils/index.js";
|
|
7
|
-
import { Network } from "./network.js";
|
|
8
|
-
import { JsonRpcProvider } from "./provider-jsonrpc.js";
|
|
9
|
-
/**
|
|
10
|
-
* About Cloudflare...
|
|
11
|
-
*/
|
|
12
|
-
export class CloudflareProvider extends JsonRpcProvider {
|
|
13
|
-
constructor(_network) {
|
|
14
|
-
if (_network == null) {
|
|
15
|
-
_network = "mainnet";
|
|
16
|
-
}
|
|
17
|
-
const network = Network.from(_network);
|
|
18
|
-
assertArgument(network.name === "mainnet", "unsupported network", "network", _network);
|
|
19
|
-
super("https:/\/cloudflare-eth.com/", network, { staticNetwork: network });
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=provider-cloudflare.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provider-cloudflare.js","sourceRoot":"","sources":["../../src.ts/providers/provider-cloudflare.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIxD;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,eAAe;IACnD,YAAY,QAAqB;QAC7B,IAAI,QAAQ,IAAI,IAAI,EAAE;YAAE,QAAQ,GAAG,SAAS,CAAC;SAAE;QAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvC,cAAc,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,qBAAqB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACvF,KAAK,CAAC,8BAA8B,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/E,CAAC;CACJ"}
|