quantumcoin 6.14.2 → 6.14.4

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.
Files changed (161) hide show
  1. package/README.md +12 -22
  2. package/dist/README.md +1 -1
  3. package/lib.commonjs/_version.js +1 -1
  4. package/lib.commonjs/crypto/signing-key.d.ts +1 -1
  5. package/lib.commonjs/crypto/signing-key.d.ts.map +1 -1
  6. package/lib.commonjs/crypto/signing-key.js +14 -8
  7. package/lib.commonjs/crypto/signing-key.js.map +1 -1
  8. package/lib.commonjs/quantumcoin.d.ts +2 -0
  9. package/lib.commonjs/quantumcoin.d.ts.map +1 -1
  10. package/lib.commonjs/quantumcoin.js +11 -5
  11. package/lib.commonjs/quantumcoin.js.map +1 -1
  12. package/lib.commonjs/transaction/address.d.ts.map +1 -1
  13. package/lib.commonjs/transaction/address.js +8 -3
  14. package/lib.commonjs/transaction/address.js.map +1 -1
  15. package/lib.commonjs/wallet/json-keystore.d.ts.map +1 -1
  16. package/lib.commonjs/wallet/json-keystore.js +7 -7
  17. package/lib.commonjs/wallet/json-keystore.js.map +1 -1
  18. package/lib.commonjs/wallet/wallet.d.ts.map +1 -1
  19. package/lib.commonjs/wallet/wallet.js +2 -2
  20. package/lib.commonjs/wallet/wallet.js.map +1 -1
  21. package/lib.esm/_version.js +1 -1
  22. package/lib.esm/crypto/signing-key.d.ts +1 -1
  23. package/lib.esm/crypto/signing-key.d.ts.map +1 -1
  24. package/lib.esm/crypto/signing-key.js +15 -8
  25. package/lib.esm/crypto/signing-key.js.map +1 -1
  26. package/lib.esm/quantumcoin.d.ts +2 -0
  27. package/lib.esm/quantumcoin.d.ts.map +1 -1
  28. package/lib.esm/quantumcoin.js +6 -0
  29. package/lib.esm/quantumcoin.js.map +1 -1
  30. package/lib.esm/transaction/address.d.ts.map +1 -1
  31. package/lib.esm/transaction/address.js +8 -2
  32. package/lib.esm/transaction/address.js.map +1 -1
  33. package/lib.esm/wallet/json-keystore.d.ts.map +1 -1
  34. package/lib.esm/wallet/json-keystore.js +11 -5
  35. package/lib.esm/wallet/json-keystore.js.map +1 -1
  36. package/lib.esm/wallet/wallet.d.ts.map +1 -1
  37. package/lib.esm/wallet/wallet.js +3 -1
  38. package/lib.esm/wallet/wallet.js.map +1 -1
  39. package/package.json +6 -5
  40. package/src.ts/_version.ts +1 -1
  41. package/src.ts/crypto/signing-key.ts +14 -9
  42. package/src.ts/quantumcoin.ts +10 -2
  43. package/src.ts/transaction/address.ts +7 -3
  44. package/src.ts/wallet/json-keystore.ts +8 -6
  45. package/src.ts/wallet/wallet.ts +2 -3
  46. package/dist/quantumcoin.js +0 -21137
  47. package/dist/quantumcoin.js.map +0 -1
  48. package/dist/quantumcoin.min.js +0 -1
  49. package/dist/quantumcoin.min.js'.gz' +0 -0
  50. package/dist/quantumcoin.umd.js +0 -21316
  51. package/dist/quantumcoin.umd.js.map +0 -1
  52. package/dist/quantumcoin.umd.min.js +0 -1
  53. package/dist/quantumcoin.umd.min.js'.gz' +0 -0
  54. package/dist/wordlists-extra.js +0 -1500
  55. package/dist/wordlists-extra.js.map +0 -1
  56. package/dist/wordlists-extra.min.js +0 -1
  57. package/dist/wordlists-extra.min.js'.gz' +0 -0
  58. package/lib.commonjs/providers/provider-alchemy.d.ts +0 -50
  59. package/lib.commonjs/providers/provider-alchemy.d.ts.map +0 -1
  60. package/lib.commonjs/providers/provider-alchemy.js +0 -151
  61. package/lib.commonjs/providers/provider-alchemy.js.map +0 -1
  62. package/lib.commonjs/providers/provider-ankr.d.ts +0 -61
  63. package/lib.commonjs/providers/provider-ankr.d.ts.map +0 -1
  64. package/lib.commonjs/providers/provider-ankr.js +0 -137
  65. package/lib.commonjs/providers/provider-ankr.js.map +0 -1
  66. package/lib.commonjs/providers/provider-blockscout.d.ts +0 -59
  67. package/lib.commonjs/providers/provider-blockscout.d.ts.map +0 -1
  68. package/lib.commonjs/providers/provider-blockscout.js +0 -145
  69. package/lib.commonjs/providers/provider-blockscout.js.map +0 -1
  70. package/lib.commonjs/providers/provider-chainstack.d.ts +0 -46
  71. package/lib.commonjs/providers/provider-chainstack.d.ts.map +0 -1
  72. package/lib.commonjs/providers/provider-chainstack.js +0 -102
  73. package/lib.commonjs/providers/provider-chainstack.js.map +0 -1
  74. package/lib.commonjs/providers/provider-cloudflare.d.ts +0 -14
  75. package/lib.commonjs/providers/provider-cloudflare.d.ts.map +0 -1
  76. package/lib.commonjs/providers/provider-cloudflare.js +0 -26
  77. package/lib.commonjs/providers/provider-cloudflare.js.map +0 -1
  78. package/lib.commonjs/providers/provider-etherscan.d.ts +0 -147
  79. package/lib.commonjs/providers/provider-etherscan.d.ts.map +0 -1
  80. package/lib.commonjs/providers/provider-etherscan.js +0 -587
  81. package/lib.commonjs/providers/provider-etherscan.js.map +0 -1
  82. package/lib.commonjs/providers/provider-infura.d.ts +0 -101
  83. package/lib.commonjs/providers/provider-infura.d.ts.map +0 -1
  84. package/lib.commonjs/providers/provider-infura.js +0 -206
  85. package/lib.commonjs/providers/provider-infura.js.map +0 -1
  86. package/lib.commonjs/providers/provider-pocket.d.ts +0 -54
  87. package/lib.commonjs/providers/provider-pocket.d.ts.map +0 -1
  88. package/lib.commonjs/providers/provider-pocket.js +0 -109
  89. package/lib.commonjs/providers/provider-pocket.js.map +0 -1
  90. package/lib.commonjs/providers/provider-quicknode.d.ts +0 -59
  91. package/lib.commonjs/providers/provider-quicknode.d.ts.map +0 -1
  92. package/lib.commonjs/providers/provider-quicknode.js +0 -163
  93. package/lib.commonjs/providers/provider-quicknode.js.map +0 -1
  94. package/lib.commonjs/wallet/hdwallet.d.ts +0 -248
  95. package/lib.commonjs/wallet/hdwallet.d.ts.map +0 -1
  96. package/lib.commonjs/wallet/hdwallet.js +0 -505
  97. package/lib.commonjs/wallet/hdwallet.js.map +0 -1
  98. package/lib.commonjs/wallet/json-crowdsale.d.ts +0 -27
  99. package/lib.commonjs/wallet/json-crowdsale.d.ts.map +0 -1
  100. package/lib.commonjs/wallet/json-crowdsale.js +0 -60
  101. package/lib.commonjs/wallet/json-crowdsale.js.map +0 -1
  102. package/lib.commonjs/wallet/mnemonic.d.ts +0 -65
  103. package/lib.commonjs/wallet/mnemonic.d.ts.map +0 -1
  104. package/lib.commonjs/wallet/mnemonic.js +0 -169
  105. package/lib.commonjs/wallet/mnemonic.js.map +0 -1
  106. package/lib.commonjs/wallet/seedwallet.d.ts +0 -4
  107. package/lib.commonjs/wallet/seedwallet.d.ts.map +0 -1
  108. package/lib.commonjs/wallet/seedwallet.js +0 -8
  109. package/lib.commonjs/wallet/seedwallet.js.map +0 -1
  110. package/lib.esm/providers/provider-alchemy.d.ts +0 -50
  111. package/lib.esm/providers/provider-alchemy.d.ts.map +0 -1
  112. package/lib.esm/providers/provider-alchemy.js +0 -147
  113. package/lib.esm/providers/provider-alchemy.js.map +0 -1
  114. package/lib.esm/providers/provider-ankr.d.ts +0 -61
  115. package/lib.esm/providers/provider-ankr.d.ts.map +0 -1
  116. package/lib.esm/providers/provider-ankr.js +0 -133
  117. package/lib.esm/providers/provider-ankr.js.map +0 -1
  118. package/lib.esm/providers/provider-blockscout.d.ts +0 -59
  119. package/lib.esm/providers/provider-blockscout.d.ts.map +0 -1
  120. package/lib.esm/providers/provider-blockscout.js +0 -141
  121. package/lib.esm/providers/provider-blockscout.js.map +0 -1
  122. package/lib.esm/providers/provider-chainstack.d.ts +0 -46
  123. package/lib.esm/providers/provider-chainstack.d.ts.map +0 -1
  124. package/lib.esm/providers/provider-chainstack.js +0 -98
  125. package/lib.esm/providers/provider-chainstack.js.map +0 -1
  126. package/lib.esm/providers/provider-cloudflare.d.ts +0 -14
  127. package/lib.esm/providers/provider-cloudflare.d.ts.map +0 -1
  128. package/lib.esm/providers/provider-cloudflare.js +0 -22
  129. package/lib.esm/providers/provider-cloudflare.js.map +0 -1
  130. package/lib.esm/providers/provider-etherscan.d.ts +0 -147
  131. package/lib.esm/providers/provider-etherscan.d.ts.map +0 -1
  132. package/lib.esm/providers/provider-etherscan.js +0 -584
  133. package/lib.esm/providers/provider-etherscan.js.map +0 -1
  134. package/lib.esm/providers/provider-infura.d.ts +0 -101
  135. package/lib.esm/providers/provider-infura.d.ts.map +0 -1
  136. package/lib.esm/providers/provider-infura.js +0 -201
  137. package/lib.esm/providers/provider-infura.js.map +0 -1
  138. package/lib.esm/providers/provider-pocket.d.ts +0 -54
  139. package/lib.esm/providers/provider-pocket.d.ts.map +0 -1
  140. package/lib.esm/providers/provider-pocket.js +0 -105
  141. package/lib.esm/providers/provider-pocket.js.map +0 -1
  142. package/lib.esm/providers/provider-quicknode.d.ts +0 -59
  143. package/lib.esm/providers/provider-quicknode.d.ts.map +0 -1
  144. package/lib.esm/providers/provider-quicknode.js +0 -159
  145. package/lib.esm/providers/provider-quicknode.js.map +0 -1
  146. package/lib.esm/wallet/hdwallet.d.ts +0 -248
  147. package/lib.esm/wallet/hdwallet.d.ts.map +0 -1
  148. package/lib.esm/wallet/hdwallet.js +0 -498
  149. package/lib.esm/wallet/hdwallet.js.map +0 -1
  150. package/lib.esm/wallet/json-crowdsale.d.ts +0 -27
  151. package/lib.esm/wallet/json-crowdsale.d.ts.map +0 -1
  152. package/lib.esm/wallet/json-crowdsale.js +0 -55
  153. package/lib.esm/wallet/json-crowdsale.js.map +0 -1
  154. package/lib.esm/wallet/mnemonic.d.ts +0 -65
  155. package/lib.esm/wallet/mnemonic.d.ts.map +0 -1
  156. package/lib.esm/wallet/mnemonic.js +0 -165
  157. package/lib.esm/wallet/mnemonic.js.map +0 -1
  158. package/lib.esm/wallet/seedwallet.d.ts +0 -4
  159. package/lib.esm/wallet/seedwallet.d.ts.map +0 -1
  160. package/lib.esm/wallet/seedwallet.js +0 -4
  161. package/lib.esm/wallet/seedwallet.js.map +0 -1
@@ -1,584 +0,0 @@
1
- /**
2
- * [[link-etherscan]] provides a third-party service for connecting to
3
- * various blockchains over a combination of JSON-RPC and custom API
4
- * endpoints.
5
- *
6
- * **Supported Networks**
7
- *
8
- * - Ethereum Mainnet (``mainnet``)
9
- * - Goerli Testnet (``goerli``)
10
- * - Sepolia Testnet (``sepolia``)
11
- * - Holesky Testnet (``holesky``)
12
- * - Arbitrum (``arbitrum``)
13
- * - Arbitrum Goerli Testnet (``arbitrum-goerli``)
14
- * - Base (``base``)
15
- * - Base Sepolia Testnet (``base-sepolia``)
16
- * - BNB Smart Chain Mainnet (``bnb``)
17
- * - BNB Smart Chain Testnet (``bnbt``)
18
- * - Optimism (``optimism``)
19
- * - Optimism Goerli Testnet (``optimism-goerli``)
20
- * - Polygon (``matic``)
21
- * - Polygon Mumbai Testnet (``matic-mumbai``)
22
- * - Polygon Amoy Testnet (``matic-amoy``)
23
- *
24
- * @_subsection api/providers/thirdparty:Etherscan [providers-etherscan]
25
- */
26
- import { AbiCoder } from "../abi/index.js";
27
- import { Contract } from "../contract/index.js";
28
- import { accessListify, Transaction } from "../transaction/index.js";
29
- import { defineProperties, hexlify, toQuantity, FetchRequest, assert, assertArgument, isError,
30
- // parseUnits,
31
- toUtf8String } from "../utils/index.js";
32
- import { AbstractProvider } from "./abstract-provider.js";
33
- import { Network } from "./network.js";
34
- import { NetworkPlugin } from "./plugins-network.js";
35
- import { showThrottleMessage } from "./community.js";
36
- const THROTTLE = 2000;
37
- function isPromise(value) {
38
- return (value && typeof (value.then) === "function");
39
- }
40
- const EtherscanPluginId = "org.ethers.plugins.provider.Etherscan";
41
- /**
42
- * A Network can include an **EtherscanPlugin** to provide
43
- * a custom base URL.
44
- *
45
- * @_docloc: api/providers/thirdparty:Etherscan
46
- */
47
- export class EtherscanPlugin extends NetworkPlugin {
48
- /**
49
- * The Etherscan API base URL.
50
- */
51
- baseUrl;
52
- /**
53
- * Creates a new **EtherscanProvider** which will use
54
- * %%baseUrl%%.
55
- */
56
- constructor(baseUrl) {
57
- super(EtherscanPluginId);
58
- defineProperties(this, { baseUrl });
59
- }
60
- clone() {
61
- return new EtherscanPlugin(this.baseUrl);
62
- }
63
- }
64
- const skipKeys = ["enableCcipRead"];
65
- let nextId = 1;
66
- /**
67
- * The **EtherscanBaseProvider** is the super-class of
68
- * [[EtherscanProvider]], which should generally be used instead.
69
- *
70
- * Since the **EtherscanProvider** includes additional code for
71
- * [[Contract]] access, in //rare cases// that contracts are not
72
- * used, this class can reduce code size.
73
- *
74
- * @_docloc: api/providers/thirdparty:Etherscan
75
- */
76
- export class EtherscanProvider extends AbstractProvider {
77
- /**
78
- * The connected network.
79
- */
80
- network;
81
- /**
82
- * The API key or null if using the community provided bandwidth.
83
- */
84
- apiKey;
85
- #plugin;
86
- /**
87
- * Creates a new **EtherscanBaseProvider**.
88
- */
89
- constructor(_network, _apiKey) {
90
- const apiKey = (_apiKey != null) ? _apiKey : null;
91
- super();
92
- const network = Network.from(_network);
93
- this.#plugin = network.getPlugin(EtherscanPluginId);
94
- defineProperties(this, { apiKey, network });
95
- // Test that the network is supported by Etherscan
96
- this.getBaseUrl();
97
- }
98
- /**
99
- * Returns the base URL.
100
- *
101
- * If an [[EtherscanPlugin]] is configured on the
102
- * [[EtherscanBaseProvider_network]], returns the plugin's
103
- * baseUrl.
104
- */
105
- getBaseUrl() {
106
- if (this.#plugin) {
107
- return this.#plugin.baseUrl;
108
- }
109
- switch (this.network.name) {
110
- case "mainnet":
111
- return "https:/\/api.etherscan.io";
112
- case "goerli":
113
- return "https:/\/api-goerli.etherscan.io";
114
- case "sepolia":
115
- return "https:/\/api-sepolia.etherscan.io";
116
- case "holesky":
117
- return "https:/\/api-holesky.etherscan.io";
118
- case "arbitrum":
119
- return "https:/\/api.arbiscan.io";
120
- case "arbitrum-goerli":
121
- return "https:/\/api-goerli.arbiscan.io";
122
- case "base":
123
- return "https:/\/api.basescan.org";
124
- case "base-sepolia":
125
- return "https:/\/api-sepolia.basescan.org";
126
- case "bnb":
127
- return "https:/\/api.bscscan.com";
128
- case "bnbt":
129
- return "https:/\/api-testnet.bscscan.com";
130
- case "matic":
131
- return "https:/\/api.polygonscan.com";
132
- case "matic-amoy":
133
- return "https:/\/api-amoy.polygonscan.com";
134
- case "matic-mumbai":
135
- return "https:/\/api-testnet.polygonscan.com";
136
- case "optimism":
137
- return "https:/\/api-optimistic.etherscan.io";
138
- case "optimism-goerli":
139
- return "https:/\/api-goerli-optimistic.etherscan.io";
140
- default:
141
- }
142
- assertArgument(false, "unsupported network", "network", this.network);
143
- }
144
- /**
145
- * Returns the URL for the %%module%% and %%params%%.
146
- */
147
- getUrl(module, params) {
148
- const query = Object.keys(params).reduce((accum, key) => {
149
- const value = params[key];
150
- if (value != null) {
151
- accum += `&${key}=${value}`;
152
- }
153
- return accum;
154
- }, "");
155
- const apiKey = ((this.apiKey) ? `&apikey=${this.apiKey}` : "");
156
- return `${this.getBaseUrl()}/api?module=${module}${query}${apiKey}`;
157
- }
158
- /**
159
- * Returns the URL for using POST requests.
160
- */
161
- getPostUrl() {
162
- return `${this.getBaseUrl()}/api`;
163
- }
164
- /**
165
- * Returns the parameters for using POST requests.
166
- */
167
- getPostData(module, params) {
168
- params.module = module;
169
- params.apikey = this.apiKey;
170
- return params;
171
- }
172
- async detectNetwork() {
173
- return this.network;
174
- }
175
- /**
176
- * Resolves to the result of calling %%module%% with %%params%%.
177
- *
178
- * If %%post%%, the request is made as a POST request.
179
- */
180
- async fetch(module, params, post) {
181
- const id = nextId++;
182
- const url = (post ? this.getPostUrl() : this.getUrl(module, params));
183
- const payload = (post ? this.getPostData(module, params) : null);
184
- this.emit("debug", { action: "sendRequest", id, url, payload: payload });
185
- const request = new FetchRequest(url);
186
- request.setThrottleParams({ slotInterval: 1000 });
187
- request.retryFunc = (req, resp, attempt) => {
188
- if (this.isCommunityResource()) {
189
- showThrottleMessage("Etherscan");
190
- }
191
- return Promise.resolve(true);
192
- };
193
- request.processFunc = async (request, response) => {
194
- const result = response.hasBody() ? JSON.parse(toUtf8String(response.body)) : {};
195
- const throttle = ((typeof (result.result) === "string") ? result.result : "").toLowerCase().indexOf("rate limit") >= 0;
196
- if (module === "proxy") {
197
- // This JSON response indicates we are being throttled
198
- if (result && result.status == 0 && result.message == "NOTOK" && throttle) {
199
- this.emit("debug", { action: "receiveError", id, reason: "proxy-NOTOK", error: result });
200
- response.throwThrottleError(result.result, THROTTLE);
201
- }
202
- }
203
- else {
204
- if (throttle) {
205
- this.emit("debug", { action: "receiveError", id, reason: "null result", error: result.result });
206
- response.throwThrottleError(result.result, THROTTLE);
207
- }
208
- }
209
- return response;
210
- };
211
- if (payload) {
212
- request.setHeader("content-type", "application/x-www-form-urlencoded; charset=UTF-8");
213
- request.body = Object.keys(payload).map((k) => `${k}=${payload[k]}`).join("&");
214
- }
215
- const response = await request.send();
216
- try {
217
- response.assertOk();
218
- }
219
- catch (error) {
220
- this.emit("debug", { action: "receiveError", id, error, reason: "assertOk" });
221
- assert(false, "response error", "SERVER_ERROR", { request, response });
222
- }
223
- if (!response.hasBody()) {
224
- this.emit("debug", { action: "receiveError", id, error: "missing body", reason: "null body" });
225
- assert(false, "missing response", "SERVER_ERROR", { request, response });
226
- }
227
- const result = JSON.parse(toUtf8String(response.body));
228
- if (module === "proxy") {
229
- if (result.jsonrpc != "2.0") {
230
- this.emit("debug", { action: "receiveError", id, result, reason: "invalid JSON-RPC" });
231
- assert(false, "invalid JSON-RPC response (missing jsonrpc='2.0')", "SERVER_ERROR", { request, response, info: { result } });
232
- }
233
- if (result.error) {
234
- this.emit("debug", { action: "receiveError", id, result, reason: "JSON-RPC error" });
235
- assert(false, "error response", "SERVER_ERROR", { request, response, info: { result } });
236
- }
237
- this.emit("debug", { action: "receiveRequest", id, result });
238
- return result.result;
239
- }
240
- else {
241
- // getLogs, getHistory have weird success responses
242
- if (result.status == 0 && (result.message === "No records found" || result.message === "No transactions found")) {
243
- this.emit("debug", { action: "receiveRequest", id, result });
244
- return result.result;
245
- }
246
- if (result.status != 1 || (typeof (result.message) === "string" && !result.message.match(/^OK/))) {
247
- this.emit("debug", { action: "receiveError", id, result });
248
- assert(false, "error response", "SERVER_ERROR", { request, response, info: { result } });
249
- }
250
- this.emit("debug", { action: "receiveRequest", id, result });
251
- return result.result;
252
- }
253
- }
254
- /**
255
- * Returns %%transaction%% normalized for the Etherscan API.
256
- */
257
- _getTransactionPostData(transaction) {
258
- const result = {};
259
- for (let key in transaction) {
260
- if (skipKeys.indexOf(key) >= 0) {
261
- continue;
262
- }
263
- if (transaction[key] == null) {
264
- continue;
265
- }
266
- let value = transaction[key];
267
- if (key === "type" && value === 0) {
268
- continue;
269
- }
270
- if (key === "blockTag" && value === "latest") {
271
- continue;
272
- }
273
- // Quantity-types require no leading zero, unless 0
274
- if ({ type: true, gasLimit: true, gasPrice: true, maxFeePerGs: true, maxPriorityFeePerGas: true, nonce: true, value: true }[key]) {
275
- value = toQuantity(value);
276
- }
277
- else if (key === "accessList") {
278
- value = "[" + accessListify(value).map((set) => {
279
- return `{address:"${set.address}",storageKeys:["${set.storageKeys.join('","')}"]}`;
280
- }).join(",") + "]";
281
- }
282
- else if (key === "blobVersionedHashes") {
283
- if (value.length === 0) {
284
- continue;
285
- }
286
- // @TODO: update this once the API supports blobs
287
- assert(false, "Etherscan API does not support blobVersionedHashes", "UNSUPPORTED_OPERATION", {
288
- operation: "_getTransactionPostData",
289
- info: { transaction }
290
- });
291
- }
292
- else {
293
- value = hexlify(value);
294
- }
295
- result[key] = value;
296
- }
297
- return result;
298
- }
299
- /**
300
- * Throws the normalized Etherscan error.
301
- */
302
- _checkError(req, error, transaction) {
303
- // Pull any message out if, possible
304
- let message = "";
305
- if (isError(error, "SERVER_ERROR")) {
306
- // Check for an error emitted by a proxy call
307
- try {
308
- message = error.info.result.error.message;
309
- }
310
- catch (e) { }
311
- if (!message) {
312
- try {
313
- message = error.info.message;
314
- }
315
- catch (e) { }
316
- }
317
- }
318
- if (req.method === "estimateGas") {
319
- if (!message.match(/revert/i) && message.match(/insufficient funds/i)) {
320
- assert(false, "insufficient funds", "INSUFFICIENT_FUNDS", {
321
- transaction: req.transaction
322
- });
323
- }
324
- }
325
- if (req.method === "call" || req.method === "estimateGas") {
326
- if (message.match(/execution reverted/i)) {
327
- let data = "";
328
- try {
329
- data = error.info.result.error.data;
330
- }
331
- catch (error) { }
332
- const e = AbiCoder.getBuiltinCallException(req.method, req.transaction, data);
333
- e.info = { request: req, error };
334
- throw e;
335
- }
336
- }
337
- if (message) {
338
- if (req.method === "broadcastTransaction") {
339
- const transaction = Transaction.from(req.signedTransaction);
340
- if (message.match(/replacement/i) && message.match(/underpriced/i)) {
341
- assert(false, "replacement fee too low", "REPLACEMENT_UNDERPRICED", {
342
- transaction
343
- });
344
- }
345
- if (message.match(/insufficient funds/)) {
346
- assert(false, "insufficient funds for intrinsic transaction cost", "INSUFFICIENT_FUNDS", {
347
- transaction
348
- });
349
- }
350
- if (message.match(/same hash was already imported|transaction nonce is too low|nonce too low/)) {
351
- assert(false, "nonce has already been used", "NONCE_EXPIRED", {
352
- transaction
353
- });
354
- }
355
- }
356
- }
357
- // Something we could not process
358
- throw error;
359
- }
360
- async _detectNetwork() {
361
- return this.network;
362
- }
363
- async _perform(req) {
364
- switch (req.method) {
365
- case "chainId":
366
- return this.network.chainId;
367
- case "getBlockNumber":
368
- return this.fetch("proxy", { action: "eth_blockNumber" });
369
- case "getGasPrice":
370
- return this.fetch("proxy", { action: "eth_gasPrice" });
371
- case "getPriorityFee":
372
- // This is temporary until Etherscan completes support
373
- if (this.network.name === "mainnet") {
374
- return "1000000000";
375
- }
376
- else if (this.network.name === "optimism") {
377
- return "1000000";
378
- }
379
- else {
380
- throw new Error("fallback onto the AbstractProvider default");
381
- }
382
- /* Working with Etherscan to get this added:
383
- try {
384
- const test = await this.fetch("proxy", {
385
- action: "eth_maxPriorityFeePerGas"
386
- });
387
- console.log(test);
388
- return test;
389
- } catch (e) {
390
- console.log("DEBUG", e);
391
- throw e;
392
- }
393
- */
394
- /* This might be safe; but due to rounding neither myself
395
- or Etherscan are necessarily comfortable with this. :)
396
- try {
397
- const result = await this.fetch("gastracker", { action: "gasoracle" });
398
- console.log(result);
399
- const gasPrice = parseUnits(result.SafeGasPrice, "gwei");
400
- const baseFee = parseUnits(result.suggestBaseFee, "gwei");
401
- const priorityFee = gasPrice - baseFee;
402
- if (priorityFee < 0) { throw new Error("negative priority fee; defer to abstract provider default"); }
403
- return priorityFee;
404
- } catch (error) {
405
- console.log("DEBUG", error);
406
- throw error;
407
- }
408
- */
409
- case "getBalance":
410
- // Returns base-10 result
411
- return this.fetch("account", {
412
- action: "balance",
413
- address: req.address,
414
- tag: req.blockTag
415
- });
416
- case "getTransactionCount":
417
- return this.fetch("proxy", {
418
- action: "eth_getTransactionCount",
419
- address: req.address,
420
- tag: req.blockTag
421
- });
422
- case "getCode":
423
- return this.fetch("proxy", {
424
- action: "eth_getCode",
425
- address: req.address,
426
- tag: req.blockTag
427
- });
428
- case "getStorage":
429
- return this.fetch("proxy", {
430
- action: "eth_getStorageAt",
431
- address: req.address,
432
- position: req.position,
433
- tag: req.blockTag
434
- });
435
- case "broadcastTransaction":
436
- return this.fetch("proxy", {
437
- action: "eth_sendRawTransaction",
438
- hex: req.signedTransaction
439
- }, true).catch((error) => {
440
- return this._checkError(req, error, req.signedTransaction);
441
- });
442
- case "getBlock":
443
- if ("blockTag" in req) {
444
- return this.fetch("proxy", {
445
- action: "eth_getBlockByNumber",
446
- tag: req.blockTag,
447
- boolean: (req.includeTransactions ? "true" : "false")
448
- });
449
- }
450
- assert(false, "getBlock by blockHash not supported by Etherscan", "UNSUPPORTED_OPERATION", {
451
- operation: "getBlock(blockHash)"
452
- });
453
- case "getTransaction":
454
- return this.fetch("proxy", {
455
- action: "eth_getTransactionByHash",
456
- txhash: req.hash
457
- });
458
- case "getTransactionReceipt":
459
- return this.fetch("proxy", {
460
- action: "eth_getTransactionReceipt",
461
- txhash: req.hash
462
- });
463
- case "call": {
464
- if (req.blockTag !== "latest") {
465
- throw new Error("EtherscanProvider does not support blockTag for call");
466
- }
467
- const postData = this._getTransactionPostData(req.transaction);
468
- postData.module = "proxy";
469
- postData.action = "eth_call";
470
- try {
471
- return await this.fetch("proxy", postData, true);
472
- }
473
- catch (error) {
474
- return this._checkError(req, error, req.transaction);
475
- }
476
- }
477
- case "estimateGas": {
478
- const postData = this._getTransactionPostData(req.transaction);
479
- postData.module = "proxy";
480
- postData.action = "eth_estimateGas";
481
- try {
482
- return await this.fetch("proxy", postData, true);
483
- }
484
- catch (error) {
485
- return this._checkError(req, error, req.transaction);
486
- }
487
- }
488
- /*
489
- case "getLogs": {
490
- // Needs to complain if more than one address is passed in
491
- const args: Record<string, any> = { action: "getLogs" }
492
-
493
- if (params.filter.fromBlock) {
494
- args.fromBlock = checkLogTag(params.filter.fromBlock);
495
- }
496
-
497
- if (params.filter.toBlock) {
498
- args.toBlock = checkLogTag(params.filter.toBlock);
499
- }
500
-
501
- if (params.filter.address) {
502
- args.address = params.filter.address;
503
- }
504
-
505
- // @TODO: We can handle slightly more complicated logs using the logs API
506
- if (params.filter.topics && params.filter.topics.length > 0) {
507
- if (params.filter.topics.length > 1) {
508
- logger.throwError("unsupported topic count", Logger.Errors.UNSUPPORTED_OPERATION, { topics: params.filter.topics });
509
- }
510
- if (params.filter.topics.length === 1) {
511
- const topic0 = params.filter.topics[0];
512
- if (typeof(topic0) !== "string" || topic0.length !== 66) {
513
- logger.throwError("unsupported topic format", Logger.Errors.UNSUPPORTED_OPERATION, { topic0: topic0 });
514
- }
515
- args.topic0 = topic0;
516
- }
517
- }
518
-
519
- const logs: Array<any> = await this.fetch("logs", args);
520
-
521
- // Cache txHash => blockHash
522
- let blocks: { [tag: string]: string } = {};
523
-
524
- // Add any missing blockHash to the logs
525
- for (let i = 0; i < logs.length; i++) {
526
- const log = logs[i];
527
- if (log.blockHash != null) { continue; }
528
- if (blocks[log.blockNumber] == null) {
529
- const block = await this.getBlock(log.blockNumber);
530
- if (block) {
531
- blocks[log.blockNumber] = block.hash;
532
- }
533
- }
534
-
535
- log.blockHash = blocks[log.blockNumber];
536
- }
537
-
538
- return logs;
539
- }
540
- */
541
- default:
542
- break;
543
- }
544
- return super._perform(req);
545
- }
546
- async getNetwork() {
547
- return this.network;
548
- }
549
- /**
550
- * Resolves to the current price of ether.
551
- *
552
- * This returns ``0`` on any network other than ``mainnet``.
553
- */
554
- async getEtherPrice() {
555
- if (this.network.name !== "mainnet") {
556
- return 0.0;
557
- }
558
- return parseFloat((await this.fetch("stats", { action: "ethprice" })).ethusd);
559
- }
560
- /**
561
- * Resolves to a [Contract]] for %%address%%, using the
562
- * Etherscan API to retreive the Contract ABI.
563
- */
564
- async getContract(_address) {
565
- let address = this._getAddress(_address);
566
- if (isPromise(address)) {
567
- address = await address;
568
- }
569
- try {
570
- const resp = await this.fetch("contract", {
571
- action: "getabi", address
572
- });
573
- const abi = JSON.parse(resp);
574
- return new Contract(address, abi, this);
575
- }
576
- catch (error) {
577
- return null;
578
- }
579
- }
580
- isCommunityResource() {
581
- return (this.apiKey == null);
582
- }
583
- }
584
- //# sourceMappingURL=provider-etherscan.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider-etherscan.js","sourceRoot":"","sources":["../../src.ts/providers/provider-etherscan.ts"],"names":[],"mappings":"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"}