@across-protocol/sdk 3.3.23 → 3.3.24
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/dist/cjs/providers/retryProvider.d.ts +2 -1
- package/dist/cjs/providers/retryProvider.js +28 -24
- package/dist/cjs/providers/retryProvider.js.map +1 -1
- package/dist/esm/providers/retryProvider.d.ts +2 -1
- package/dist/esm/providers/retryProvider.js +36 -28
- package/dist/esm/providers/retryProvider.js.map +1 -1
- package/dist/types/providers/retryProvider.d.ts +2 -1
- package/dist/types/providers/retryProvider.d.ts.map +1 -1
- package/package.json +17 -3
- package/src/providers/retryProvider.ts +33 -29
|
@@ -6,8 +6,9 @@ export declare class RetryProvider extends ethers.providers.StaticJsonRpcProvide
|
|
|
6
6
|
readonly retries: number;
|
|
7
7
|
readonly delay: number;
|
|
8
8
|
readonly maxConcurrency: number;
|
|
9
|
+
readonly logger?: Logger | undefined;
|
|
9
10
|
readonly providers: ethers.providers.StaticJsonRpcProvider[];
|
|
10
|
-
constructor(params: ConstructorParameters<typeof ethers.providers.StaticJsonRpcProvider>[], chainId: number, nodeQuorumThreshold: number, retries: number, delay: number, maxConcurrency: number, providerCacheNamespace: string, pctRpcCallsLogged: number, redisClient?: CachingMechanismInterface, standardTtlBlockDistance?: number, noTtlBlockDistance?: number, providerCacheTtl?: number, logger?: Logger);
|
|
11
|
+
constructor(params: ConstructorParameters<typeof ethers.providers.StaticJsonRpcProvider>[], chainId: number, nodeQuorumThreshold: number, retries: number, delay: number, maxConcurrency: number, providerCacheNamespace: string, pctRpcCallsLogged: number, redisClient?: CachingMechanismInterface, standardTtlBlockDistance?: number, noTtlBlockDistance?: number, providerCacheTtl?: number, logger?: Logger | undefined);
|
|
11
12
|
send(method: string, params: Array<unknown>): Promise<unknown>;
|
|
12
13
|
_validateResponse(method: string, _: Array<unknown>, response: unknown): boolean;
|
|
13
14
|
_sendAndValidate(provider: ethers.providers.StaticJsonRpcProvider, method: string, params: Array<unknown>): Promise<unknown>;
|
|
@@ -3,21 +3,23 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.RetryProvider = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var ethers_1 = require("ethers");
|
|
6
|
+
var constants_1 = require("../constants");
|
|
6
7
|
var utils_1 = require("../utils");
|
|
7
8
|
var NetworkUtils_1 = require("../utils/NetworkUtils");
|
|
8
9
|
var cachedProvider_1 = require("./cachedProvider");
|
|
9
10
|
var utils_2 = require("./utils");
|
|
10
|
-
var
|
|
11
|
+
var constants_2 = require("./constants");
|
|
11
12
|
var types_1 = require("./types");
|
|
12
13
|
var RetryProvider = (function (_super) {
|
|
13
14
|
tslib_1.__extends(RetryProvider, _super);
|
|
14
15
|
function RetryProvider(params, chainId, nodeQuorumThreshold, retries, delay, maxConcurrency, providerCacheNamespace, pctRpcCallsLogged, redisClient, standardTtlBlockDistance, noTtlBlockDistance, providerCacheTtl, logger) {
|
|
15
|
-
if (providerCacheTtl === void 0) { providerCacheTtl =
|
|
16
|
+
if (providerCacheTtl === void 0) { providerCacheTtl = constants_2.PROVIDER_CACHE_TTL; }
|
|
16
17
|
var _this = _super.call(this, undefined, chainId) || this;
|
|
17
18
|
_this.nodeQuorumThreshold = nodeQuorumThreshold;
|
|
18
19
|
_this.retries = retries;
|
|
19
20
|
_this.delay = delay;
|
|
20
21
|
_this.maxConcurrency = maxConcurrency;
|
|
22
|
+
_this.logger = logger;
|
|
21
23
|
_this.providers = params.map(function (inputs) {
|
|
22
24
|
return new (cachedProvider_1.CacheProvider.bind.apply(cachedProvider_1.CacheProvider, tslib_1.__spreadArray([void 0, providerCacheNamespace,
|
|
23
25
|
redisClient,
|
|
@@ -28,16 +30,10 @@ var RetryProvider = (function (_super) {
|
|
|
28
30
|
pctRpcCallsLogged,
|
|
29
31
|
logger], inputs, false)))();
|
|
30
32
|
});
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
logger === null || logger === void 0 ? void 0 : logger.debug({
|
|
36
|
-
at: "RetryProvider",
|
|
37
|
-
message: "Dropped ".concat(url, " pollingInterval ").concat(pollingInterval, " -> ").concat(provider.pollingInterval, "."),
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
_this.pollingInterval = 1000;
|
|
33
|
+
if (chainId !== constants_1.CHAIN_IDs.MAINNET) {
|
|
34
|
+
_this.pollingInterval = 1000;
|
|
35
|
+
_this.providers.forEach(function (provider) { return (provider.pollingInterval = _this.pollingInterval); });
|
|
36
|
+
}
|
|
41
37
|
if (_this.nodeQuorumThreshold < 1 || !Number.isInteger(_this.nodeQuorumThreshold)) {
|
|
42
38
|
throw new Error("nodeQuorum,Threshold cannot be < 1 and must be an integer. Currently set to ".concat(_this.nodeQuorumThreshold));
|
|
43
39
|
}
|
|
@@ -98,25 +94,26 @@ var RetryProvider = (function (_super) {
|
|
|
98
94
|
return [2, values[0][1]];
|
|
99
95
|
}
|
|
100
96
|
getMismatchedProviders = function (values) {
|
|
101
|
-
return
|
|
97
|
+
return values
|
|
102
98
|
.filter(function (_a) {
|
|
103
99
|
var result = _a[1];
|
|
104
100
|
return !(0, utils_2.compareRpcResults)(method, result, quorumResult);
|
|
105
101
|
})
|
|
106
102
|
.map(function (_a) {
|
|
107
|
-
var provider = _a[0]
|
|
108
|
-
return
|
|
109
|
-
})
|
|
103
|
+
var provider = _a[0];
|
|
104
|
+
return provider.connection.url;
|
|
105
|
+
});
|
|
110
106
|
};
|
|
111
107
|
logQuorumMismatchOrFailureDetails = function (method, params, quorumProviders, mismatchedProviders, errors) {
|
|
112
|
-
|
|
108
|
+
var _a;
|
|
109
|
+
(_a = _this.logger) === null || _a === void 0 ? void 0 : _a.warn({
|
|
113
110
|
at: "ProviderUtils",
|
|
114
111
|
message: "Some providers mismatched with the quorum result or failed 🚸",
|
|
115
112
|
notificationPath: "across-warn",
|
|
116
113
|
method: method,
|
|
117
114
|
params: JSON.stringify(params),
|
|
118
115
|
quorumProviders: quorumProviders,
|
|
119
|
-
mismatchedProviders:
|
|
116
|
+
mismatchedProviders: mismatchedProviders,
|
|
120
117
|
erroringProviders: errors.map(function (_a) {
|
|
121
118
|
var provider = _a[0], errorText = _a[1];
|
|
122
119
|
return (0, utils_2.formatProviderError)(provider, errorText);
|
|
@@ -186,7 +183,7 @@ var RetryProvider = (function (_super) {
|
|
|
186
183
|
var provider = _a[0];
|
|
187
184
|
return provider.connection.url;
|
|
188
185
|
});
|
|
189
|
-
if (
|
|
186
|
+
if (mismatchedProviders.length > 0 || errors.length > 0) {
|
|
190
187
|
logQuorumMismatchOrFailureDetails(method, params, quorumProviders, mismatchedProviders, errors);
|
|
191
188
|
}
|
|
192
189
|
return [2, quorumResult];
|
|
@@ -198,15 +195,16 @@ var RetryProvider = (function (_super) {
|
|
|
198
195
|
return (0, utils_1.isDefined)(response) || method === "eth_getTransactionReceipt";
|
|
199
196
|
};
|
|
200
197
|
RetryProvider.prototype._sendAndValidate = function (provider, method, params) {
|
|
198
|
+
var _a;
|
|
201
199
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
202
200
|
var response;
|
|
203
|
-
return tslib_1.__generator(this, function (
|
|
204
|
-
switch (
|
|
201
|
+
return tslib_1.__generator(this, function (_b) {
|
|
202
|
+
switch (_b.label) {
|
|
205
203
|
case 0: return [4, provider.send(method, params)];
|
|
206
204
|
case 1:
|
|
207
|
-
response =
|
|
205
|
+
response = _b.sent();
|
|
208
206
|
if (!this._validateResponse(method, params, response)) {
|
|
209
|
-
|
|
207
|
+
(_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug({
|
|
210
208
|
at: "ProviderUtils",
|
|
211
209
|
message: "Provider returned invalid response",
|
|
212
210
|
provider: (0, NetworkUtils_1.getOriginFromURL)(provider.connection.url),
|
|
@@ -232,7 +230,13 @@ var RetryProvider = (function (_super) {
|
|
|
232
230
|
catch (_a) {
|
|
233
231
|
return false;
|
|
234
232
|
}
|
|
235
|
-
|
|
233
|
+
if (!types_1.JsonRpcError.is(response)) {
|
|
234
|
+
return false;
|
|
235
|
+
}
|
|
236
|
+
if (response.error.code >= -32768 && response.error.code <= -32100) {
|
|
237
|
+
return false;
|
|
238
|
+
}
|
|
239
|
+
return response.error.message.toLowerCase().includes("revert");
|
|
236
240
|
};
|
|
237
241
|
RetryProvider.prototype._trySend = function (provider, method, params) {
|
|
238
242
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retryProvider.js","sourceRoot":"","sources":["../../../src/providers/retryProvider.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"retryProvider.js","sourceRoot":"","sources":["../../../src/providers/retryProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,9 @@ export declare class RetryProvider extends ethers.providers.StaticJsonRpcProvide
|
|
|
6
6
|
readonly retries: number;
|
|
7
7
|
readonly delay: number;
|
|
8
8
|
readonly maxConcurrency: number;
|
|
9
|
+
readonly logger?: Logger | undefined;
|
|
9
10
|
readonly providers: ethers.providers.StaticJsonRpcProvider[];
|
|
10
|
-
constructor(params: ConstructorParameters<typeof ethers.providers.StaticJsonRpcProvider>[], chainId: number, nodeQuorumThreshold: number, retries: number, delay: number, maxConcurrency: number, providerCacheNamespace: string, pctRpcCallsLogged: number, redisClient?: CachingMechanismInterface, standardTtlBlockDistance?: number, noTtlBlockDistance?: number, providerCacheTtl?: number, logger?: Logger);
|
|
11
|
+
constructor(params: ConstructorParameters<typeof ethers.providers.StaticJsonRpcProvider>[], chainId: number, nodeQuorumThreshold: number, retries: number, delay: number, maxConcurrency: number, providerCacheNamespace: string, pctRpcCallsLogged: number, redisClient?: CachingMechanismInterface, standardTtlBlockDistance?: number, noTtlBlockDistance?: number, providerCacheTtl?: number, logger?: Logger | undefined);
|
|
11
12
|
send(method: string, params: Array<unknown>): Promise<unknown>;
|
|
12
13
|
_validateResponse(method: string, _: Array<unknown>, response: unknown): boolean;
|
|
13
14
|
_sendAndValidate(provider: ethers.providers.StaticJsonRpcProvider, method: string, params: Array<unknown>): Promise<unknown>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { __awaiter, __extends, __generator, __spreadArray } from "tslib";
|
|
2
|
-
import { ethers
|
|
2
|
+
import { ethers } from "ethers";
|
|
3
|
+
import { CHAIN_IDs } from "../constants";
|
|
3
4
|
import { delay, isDefined, isPromiseFulfilled, isPromiseRejected } from "../utils";
|
|
4
5
|
import { getOriginFromURL } from "../utils/NetworkUtils";
|
|
5
6
|
import { CacheProvider } from "./cachedProvider";
|
|
@@ -18,6 +19,7 @@ var RetryProvider = /** @class */ (function (_super) {
|
|
|
18
19
|
_this.retries = retries;
|
|
19
20
|
_this.delay = delay;
|
|
20
21
|
_this.maxConcurrency = maxConcurrency;
|
|
22
|
+
_this.logger = logger;
|
|
21
23
|
_this.providers = params.map(function (inputs) {
|
|
22
24
|
return new (CacheProvider.bind.apply(CacheProvider, __spreadArray([void 0, providerCacheNamespace,
|
|
23
25
|
redisClient,
|
|
@@ -28,17 +30,10 @@ var RetryProvider = /** @class */ (function (_super) {
|
|
|
28
30
|
pctRpcCallsLogged,
|
|
29
31
|
logger], inputs, false)))();
|
|
30
32
|
});
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
provider.pollingInterval = 1000;
|
|
36
|
-
logger === null || logger === void 0 ? void 0 : logger.debug({
|
|
37
|
-
at: "RetryProvider",
|
|
38
|
-
message: "Dropped ".concat(url, " pollingInterval ").concat(pollingInterval, " -> ").concat(provider.pollingInterval, "."),
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
_this.pollingInterval = 1000;
|
|
33
|
+
if (chainId !== CHAIN_IDs.MAINNET) {
|
|
34
|
+
_this.pollingInterval = 1000;
|
|
35
|
+
_this.providers.forEach(function (provider) { return (provider.pollingInterval = _this.pollingInterval); });
|
|
36
|
+
}
|
|
42
37
|
if (_this.nodeQuorumThreshold < 1 || !Number.isInteger(_this.nodeQuorumThreshold)) {
|
|
43
38
|
throw new Error("nodeQuorum,Threshold cannot be < 1 and must be an integer. Currently set to ".concat(_this.nodeQuorumThreshold));
|
|
44
39
|
}
|
|
@@ -110,25 +105,26 @@ var RetryProvider = /** @class */ (function (_super) {
|
|
|
110
105
|
return [2 /*return*/, values[0][1]];
|
|
111
106
|
}
|
|
112
107
|
getMismatchedProviders = function (values) {
|
|
113
|
-
return
|
|
108
|
+
return values
|
|
114
109
|
.filter(function (_a) {
|
|
115
110
|
var result = _a[1];
|
|
116
111
|
return !compareRpcResults(method, result, quorumResult);
|
|
117
112
|
})
|
|
118
113
|
.map(function (_a) {
|
|
119
|
-
var provider = _a[0]
|
|
120
|
-
return
|
|
121
|
-
})
|
|
114
|
+
var provider = _a[0];
|
|
115
|
+
return provider.connection.url;
|
|
116
|
+
});
|
|
122
117
|
};
|
|
123
118
|
logQuorumMismatchOrFailureDetails = function (method, params, quorumProviders, mismatchedProviders, errors) {
|
|
124
|
-
|
|
119
|
+
var _a;
|
|
120
|
+
(_a = _this.logger) === null || _a === void 0 ? void 0 : _a.warn({
|
|
125
121
|
at: "ProviderUtils",
|
|
126
122
|
message: "Some providers mismatched with the quorum result or failed 🚸",
|
|
127
123
|
notificationPath: "across-warn",
|
|
128
124
|
method: method,
|
|
129
125
|
params: JSON.stringify(params),
|
|
130
126
|
quorumProviders: quorumProviders,
|
|
131
|
-
mismatchedProviders:
|
|
127
|
+
mismatchedProviders: mismatchedProviders,
|
|
132
128
|
erroringProviders: errors.map(function (_a) {
|
|
133
129
|
var provider = _a[0], errorText = _a[1];
|
|
134
130
|
return formatProviderError(provider, errorText);
|
|
@@ -205,7 +201,7 @@ var RetryProvider = /** @class */ (function (_super) {
|
|
|
205
201
|
var provider = _a[0];
|
|
206
202
|
return provider.connection.url;
|
|
207
203
|
});
|
|
208
|
-
if (
|
|
204
|
+
if (mismatchedProviders.length > 0 || errors.length > 0) {
|
|
209
205
|
logQuorumMismatchOrFailureDetails(method, params, quorumProviders, mismatchedProviders, errors);
|
|
210
206
|
}
|
|
211
207
|
return [2 /*return*/, quorumResult];
|
|
@@ -220,16 +216,17 @@ var RetryProvider = /** @class */ (function (_super) {
|
|
|
220
216
|
return isDefined(response) || method === "eth_getTransactionReceipt";
|
|
221
217
|
};
|
|
222
218
|
RetryProvider.prototype._sendAndValidate = function (provider, method, params) {
|
|
219
|
+
var _a;
|
|
223
220
|
return __awaiter(this, void 0, void 0, function () {
|
|
224
221
|
var response;
|
|
225
|
-
return __generator(this, function (
|
|
226
|
-
switch (
|
|
222
|
+
return __generator(this, function (_b) {
|
|
223
|
+
switch (_b.label) {
|
|
227
224
|
case 0: return [4 /*yield*/, provider.send(method, params)];
|
|
228
225
|
case 1:
|
|
229
|
-
response =
|
|
226
|
+
response = _b.sent();
|
|
230
227
|
if (!this._validateResponse(method, params, response)) {
|
|
231
228
|
// Not a warning to avoid spam since this could trigger a lot.
|
|
232
|
-
logger.debug({
|
|
229
|
+
(_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug({
|
|
233
230
|
at: "ProviderUtils",
|
|
234
231
|
message: "Provider returned invalid response",
|
|
235
232
|
provider: getOriginFromURL(provider.connection.url),
|
|
@@ -244,22 +241,33 @@ var RetryProvider = /** @class */ (function (_super) {
|
|
|
244
241
|
});
|
|
245
242
|
});
|
|
246
243
|
};
|
|
247
|
-
// For an error emitted in response to an eth_call or eth_estimateGas request, determine
|
|
248
|
-
// indicates that the call reverted during execution.
|
|
249
|
-
// reliably included both the code (typically 3 on revert) and the error message indicating "execution reverted".
|
|
250
|
-
// This is consistent with section 5.1 of the JSON-RPC spec (https://www.jsonrpc.org/specification).
|
|
244
|
+
// For an error emitted in response to an eth_call or eth_estimateGas request, determine
|
|
245
|
+
// whether the response body indicates that the call reverted during execution.
|
|
251
246
|
RetryProvider.prototype.callReverted = function (method, error) {
|
|
252
247
|
if (!(method === "eth_call" || method === "eth_estimateGas") || !RpcError.is(error)) {
|
|
253
248
|
return false;
|
|
254
249
|
}
|
|
255
250
|
var response;
|
|
256
251
|
try {
|
|
252
|
+
// The exact RPC responses returned can vary, but `error.body` has reliably included both
|
|
253
|
+
// the code (typically 3 on revert) and the error message indicating "execution reverted".
|
|
257
254
|
response = JSON.parse(error.body);
|
|
258
255
|
}
|
|
259
256
|
catch (_a) {
|
|
260
257
|
return false;
|
|
261
258
|
}
|
|
262
|
-
|
|
259
|
+
if (!JsonRpcError.is(response)) {
|
|
260
|
+
return false;
|
|
261
|
+
}
|
|
262
|
+
// [-32768, -32100] is reserved by the JSON-RPC spec.
|
|
263
|
+
// [-32099, -32000] is allocated for implementation-defined responses.
|
|
264
|
+
// Everything else is available for use by the application space.
|
|
265
|
+
// Most node implementations return 3 for an eth_call revert, but some return -32000.
|
|
266
|
+
// See also https://www.jsonrpc.org/specification
|
|
267
|
+
if (response.error.code >= -32768 && response.error.code <= -32100) {
|
|
268
|
+
return false;
|
|
269
|
+
}
|
|
270
|
+
return response.error.message.toLowerCase().includes("revert");
|
|
263
271
|
};
|
|
264
272
|
RetryProvider.prototype._trySend = function (provider, method, params) {
|
|
265
273
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retryProvider.js","sourceRoot":"","sources":["../../../src/providers/retryProvider.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"retryProvider.js","sourceRoot":"","sources":["../../../src/providers/retryProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,9 @@ export declare class RetryProvider extends ethers.providers.StaticJsonRpcProvide
|
|
|
6
6
|
readonly retries: number;
|
|
7
7
|
readonly delay: number;
|
|
8
8
|
readonly maxConcurrency: number;
|
|
9
|
+
readonly logger?: Logger | undefined;
|
|
9
10
|
readonly providers: ethers.providers.StaticJsonRpcProvider[];
|
|
10
|
-
constructor(params: ConstructorParameters<typeof ethers.providers.StaticJsonRpcProvider>[], chainId: number, nodeQuorumThreshold: number, retries: number, delay: number, maxConcurrency: number, providerCacheNamespace: string, pctRpcCallsLogged: number, redisClient?: CachingMechanismInterface, standardTtlBlockDistance?: number, noTtlBlockDistance?: number, providerCacheTtl?: number, logger?: Logger);
|
|
11
|
+
constructor(params: ConstructorParameters<typeof ethers.providers.StaticJsonRpcProvider>[], chainId: number, nodeQuorumThreshold: number, retries: number, delay: number, maxConcurrency: number, providerCacheNamespace: string, pctRpcCallsLogged: number, redisClient?: CachingMechanismInterface, standardTtlBlockDistance?: number, noTtlBlockDistance?: number, providerCacheTtl?: number, logger?: Logger | undefined);
|
|
11
12
|
send(method: string, params: Array<unknown>): Promise<unknown>;
|
|
12
13
|
_validateResponse(method: string, _: Array<unknown>, response: unknown): boolean;
|
|
13
14
|
_sendAndValidate(provider: ethers.providers.StaticJsonRpcProvider, method: string, params: Array<unknown>): Promise<unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retryProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/retryProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"retryProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/retryProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAQ1D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,qBAAa,aAAc,SAAQ,MAAM,CAAC,SAAS,CAAC,qBAAqB;IAKrE,QAAQ,CAAC,mBAAmB,EAAE,MAAM;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,cAAc,EAAE,MAAM;IAO/B,QAAQ,CAAC,MAAM,CAAC;IAdlB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC;gBAE3D,MAAM,EAAE,qBAAqB,CAAC,OAAO,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,EAAE,EAC9E,OAAO,EAAE,MAAM,EACN,mBAAmB,EAAE,MAAM,EAC3B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,EAC/B,sBAAsB,EAAE,MAAM,EAC9B,iBAAiB,EAAE,MAAM,EACzB,WAAW,CAAC,EAAE,yBAAyB,EACvC,wBAAwB,CAAC,EAAE,MAAM,EACjC,kBAAkB,CAAC,EAAE,MAAM,EAC3B,gBAAgB,SAAqB,EAC5B,MAAM,CAAC,oBAAQ;IA2CX,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAmK7E,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO;IAO1E,gBAAgB,CACpB,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,qBAAqB,EAChD,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GACrB,OAAO,CAAC,OAAO,CAAC;IAmBnB,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO;IA8BzD,QAAQ,CACZ,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,qBAAqB,EAChD,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GACrB,OAAO,CAAC,OAAO,CAAC;IAiBnB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,MAAM;CAqB3D"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@across-protocol/sdk",
|
|
3
3
|
"author": "UMA Team",
|
|
4
|
-
"version": "3.3.
|
|
4
|
+
"version": "3.3.24",
|
|
5
5
|
"license": "AGPL-3.0",
|
|
6
6
|
"homepage": "https://docs.across.to/reference/sdk",
|
|
7
7
|
"files": [
|
|
@@ -100,12 +100,12 @@
|
|
|
100
100
|
"dependencies": {
|
|
101
101
|
"@across-protocol/across-token": "^1.0.0",
|
|
102
102
|
"@across-protocol/constants": "^3.1.20",
|
|
103
|
-
"@across-protocol/contracts": "^3.0.
|
|
103
|
+
"@across-protocol/contracts": "^3.0.17",
|
|
104
104
|
"@eth-optimism/sdk": "^3.3.1",
|
|
105
105
|
"@ethersproject/bignumber": "^5.7.0",
|
|
106
106
|
"@pinata/sdk": "^2.1.0",
|
|
107
107
|
"@types/mocha": "^10.0.1",
|
|
108
|
-
"@uma/sdk": "^0.34.
|
|
108
|
+
"@uma/sdk": "^0.34.10",
|
|
109
109
|
"arweave": "^1.14.4",
|
|
110
110
|
"async": "^3.2.5",
|
|
111
111
|
"axios": "^0.27.2",
|
|
@@ -144,5 +144,19 @@
|
|
|
144
144
|
"require": "./dist/cjs/*.js",
|
|
145
145
|
"import": "./dist/esm/*.js"
|
|
146
146
|
}
|
|
147
|
+
},
|
|
148
|
+
"resolutions": {
|
|
149
|
+
"**/eccrypto/secp256k1": "3.8.1",
|
|
150
|
+
"**/eth-crypto/secp256k1": "5.0.1",
|
|
151
|
+
"**/libp2p-crypto/secp256k1": "4.0.4",
|
|
152
|
+
"**/ethereum-cryptography/secp256k1": "4.0.4",
|
|
153
|
+
"**/arbundles/secp256k1": "4.0.4",
|
|
154
|
+
"**/ganache/secp256k1": "4.0.4",
|
|
155
|
+
"**/ethereumjs-util/secp256k1": "3.8.1"
|
|
156
|
+
},
|
|
157
|
+
"overrides": {
|
|
158
|
+
"secp256k1@3.7.1": "3.8.1",
|
|
159
|
+
"secp256k1@4.0.3": "4.0.4",
|
|
160
|
+
"secp256k1@5.0.0": "5.0.1"
|
|
147
161
|
}
|
|
148
162
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { ethers
|
|
1
|
+
import { ethers } from "ethers";
|
|
2
2
|
import { CachingMechanismInterface } from "../interfaces";
|
|
3
|
+
import { CHAIN_IDs } from "../constants";
|
|
3
4
|
import { delay, isDefined, isPromiseFulfilled, isPromiseRejected } from "../utils";
|
|
4
5
|
import { getOriginFromURL } from "../utils/NetworkUtils";
|
|
5
6
|
import { CacheProvider } from "./cachedProvider";
|
|
@@ -23,7 +24,7 @@ export class RetryProvider extends ethers.providers.StaticJsonRpcProvider {
|
|
|
23
24
|
standardTtlBlockDistance?: number,
|
|
24
25
|
noTtlBlockDistance?: number,
|
|
25
26
|
providerCacheTtl = PROVIDER_CACHE_TTL,
|
|
26
|
-
logger?: Logger
|
|
27
|
+
readonly logger?: Logger
|
|
27
28
|
) {
|
|
28
29
|
// Initialize the super just with the chainId, which stops it from trying to immediately send out a .send before
|
|
29
30
|
// this derived class is initialized.
|
|
@@ -43,18 +44,10 @@ export class RetryProvider extends ethers.providers.StaticJsonRpcProvider {
|
|
|
43
44
|
)
|
|
44
45
|
);
|
|
45
46
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
provider.pollingInterval = 1000;
|
|
51
|
-
logger?.debug({
|
|
52
|
-
at: "RetryProvider",
|
|
53
|
-
message: `Dropped ${url} pollingInterval ${pollingInterval} -> ${provider.pollingInterval}.`,
|
|
54
|
-
});
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
this.pollingInterval = 1000;
|
|
47
|
+
if (chainId !== CHAIN_IDs.MAINNET) {
|
|
48
|
+
this.pollingInterval = 1000;
|
|
49
|
+
this.providers.forEach((provider) => (provider.pollingInterval = this.pollingInterval));
|
|
50
|
+
}
|
|
58
51
|
|
|
59
52
|
if (this.nodeQuorumThreshold < 1 || !Number.isInteger(this.nodeQuorumThreshold)) {
|
|
60
53
|
throw new Error(
|
|
@@ -135,28 +128,26 @@ export class RetryProvider extends ethers.providers.StaticJsonRpcProvider {
|
|
|
135
128
|
}
|
|
136
129
|
|
|
137
130
|
const getMismatchedProviders = (values: [ethers.providers.StaticJsonRpcProvider, unknown][]) => {
|
|
138
|
-
return
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
.map(([provider, result]) => [provider.connection.url, result])
|
|
142
|
-
);
|
|
131
|
+
return values
|
|
132
|
+
.filter(([, result]) => !compareRpcResults(method, result, quorumResult))
|
|
133
|
+
.map(([provider]) => provider.connection.url);
|
|
143
134
|
};
|
|
144
135
|
|
|
145
136
|
const logQuorumMismatchOrFailureDetails = (
|
|
146
137
|
method: string,
|
|
147
138
|
params: Array<unknown>,
|
|
148
139
|
quorumProviders: string[],
|
|
149
|
-
mismatchedProviders:
|
|
140
|
+
mismatchedProviders: string[],
|
|
150
141
|
errors: [ethers.providers.StaticJsonRpcProvider, string][]
|
|
151
142
|
) => {
|
|
152
|
-
logger
|
|
143
|
+
this.logger?.warn({
|
|
153
144
|
at: "ProviderUtils",
|
|
154
145
|
message: "Some providers mismatched with the quorum result or failed 🚸",
|
|
155
146
|
notificationPath: "across-warn",
|
|
156
147
|
method,
|
|
157
148
|
params: JSON.stringify(params),
|
|
158
149
|
quorumProviders,
|
|
159
|
-
mismatchedProviders
|
|
150
|
+
mismatchedProviders,
|
|
160
151
|
erroringProviders: errors.map(([provider, errorText]) => formatProviderError(provider, errorText)),
|
|
161
152
|
});
|
|
162
153
|
};
|
|
@@ -232,7 +223,7 @@ export class RetryProvider extends ethers.providers.StaticJsonRpcProvider {
|
|
|
232
223
|
const quorumProviders = [...values, ...fallbackValues]
|
|
233
224
|
.filter(([, result]) => compareRpcResults(method, result, quorumResult))
|
|
234
225
|
.map(([provider]) => provider.connection.url);
|
|
235
|
-
if (
|
|
226
|
+
if (mismatchedProviders.length > 0 || errors.length > 0) {
|
|
236
227
|
logQuorumMismatchOrFailureDetails(method, params, quorumProviders, mismatchedProviders, errors);
|
|
237
228
|
}
|
|
238
229
|
|
|
@@ -254,7 +245,7 @@ export class RetryProvider extends ethers.providers.StaticJsonRpcProvider {
|
|
|
254
245
|
const response = await provider.send(method, params);
|
|
255
246
|
if (!this._validateResponse(method, params, response)) {
|
|
256
247
|
// Not a warning to avoid spam since this could trigger a lot.
|
|
257
|
-
logger
|
|
248
|
+
this.logger?.debug({
|
|
258
249
|
at: "ProviderUtils",
|
|
259
250
|
message: "Provider returned invalid response",
|
|
260
251
|
provider: getOriginFromURL(provider.connection.url),
|
|
@@ -267,10 +258,8 @@ export class RetryProvider extends ethers.providers.StaticJsonRpcProvider {
|
|
|
267
258
|
return response;
|
|
268
259
|
}
|
|
269
260
|
|
|
270
|
-
// For an error emitted in response to an eth_call or eth_estimateGas request, determine
|
|
271
|
-
// indicates that the call reverted during execution.
|
|
272
|
-
// reliably included both the code (typically 3 on revert) and the error message indicating "execution reverted".
|
|
273
|
-
// This is consistent with section 5.1 of the JSON-RPC spec (https://www.jsonrpc.org/specification).
|
|
261
|
+
// For an error emitted in response to an eth_call or eth_estimateGas request, determine
|
|
262
|
+
// whether the response body indicates that the call reverted during execution.
|
|
274
263
|
protected callReverted(method: string, error: unknown): boolean {
|
|
275
264
|
if (!(method === "eth_call" || method === "eth_estimateGas") || !RpcError.is(error)) {
|
|
276
265
|
return false;
|
|
@@ -278,12 +267,27 @@ export class RetryProvider extends ethers.providers.StaticJsonRpcProvider {
|
|
|
278
267
|
|
|
279
268
|
let response: unknown;
|
|
280
269
|
try {
|
|
270
|
+
// The exact RPC responses returned can vary, but `error.body` has reliably included both
|
|
271
|
+
// the code (typically 3 on revert) and the error message indicating "execution reverted".
|
|
281
272
|
response = JSON.parse(error.body);
|
|
282
273
|
} catch {
|
|
283
274
|
return false;
|
|
284
275
|
}
|
|
285
276
|
|
|
286
|
-
|
|
277
|
+
if (!JsonRpcError.is(response)) {
|
|
278
|
+
return false;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
// [-32768, -32100] is reserved by the JSON-RPC spec.
|
|
282
|
+
// [-32099, -32000] is allocated for implementation-defined responses.
|
|
283
|
+
// Everything else is available for use by the application space.
|
|
284
|
+
// Most node implementations return 3 for an eth_call revert, but some return -32000.
|
|
285
|
+
// See also https://www.jsonrpc.org/specification
|
|
286
|
+
if (response.error.code >= -32768 && response.error.code <= -32100) {
|
|
287
|
+
return false;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
return response.error.message.toLowerCase().includes("revert");
|
|
287
291
|
}
|
|
288
292
|
|
|
289
293
|
async _trySend(
|