@across-protocol/sdk 4.3.153 → 4.3.154
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/src/coingecko/Coingecko.js +22 -15
- package/dist/cjs/src/coingecko/Coingecko.js.map +1 -1
- package/dist/cjs/src/coingecko/CoingeckoErrors.d.ts +12 -0
- package/dist/cjs/src/coingecko/CoingeckoErrors.js +17 -0
- package/dist/cjs/src/coingecko/CoingeckoErrors.js.map +1 -0
- package/dist/cjs/src/coingecko/index.d.ts +1 -0
- package/dist/cjs/src/coingecko/index.js +1 -0
- package/dist/cjs/src/coingecko/index.js.map +1 -1
- package/dist/cjs/src/gasPriceOracle/adapters/solana.js +17 -7
- package/dist/cjs/src/gasPriceOracle/adapters/solana.js.map +1 -1
- package/dist/cjs/src/gasPriceOracle/errors.d.ts +5 -0
- package/dist/cjs/src/gasPriceOracle/errors.js +11 -0
- package/dist/cjs/src/gasPriceOracle/errors.js.map +1 -0
- package/dist/cjs/src/gasPriceOracle/index.d.ts +1 -0
- package/dist/cjs/src/gasPriceOracle/index.js +3 -1
- package/dist/cjs/src/gasPriceOracle/index.js.map +1 -1
- package/dist/esm/src/coingecko/Coingecko.js +22 -15
- package/dist/esm/src/coingecko/Coingecko.js.map +1 -1
- package/dist/esm/src/coingecko/CoingeckoErrors.d.ts +18 -0
- package/dist/esm/src/coingecko/CoingeckoErrors.js +13 -0
- package/dist/esm/src/coingecko/CoingeckoErrors.js.map +1 -0
- package/dist/esm/src/coingecko/index.d.ts +1 -0
- package/dist/esm/src/coingecko/index.js +1 -0
- package/dist/esm/src/coingecko/index.js.map +1 -1
- package/dist/esm/src/gasPriceOracle/adapters/solana.js +25 -9
- package/dist/esm/src/gasPriceOracle/adapters/solana.js.map +1 -1
- package/dist/esm/src/gasPriceOracle/errors.d.ts +13 -0
- package/dist/esm/src/gasPriceOracle/errors.js +15 -0
- package/dist/esm/src/gasPriceOracle/errors.js.map +1 -0
- package/dist/esm/src/gasPriceOracle/index.d.ts +1 -0
- package/dist/esm/src/gasPriceOracle/index.js +1 -0
- package/dist/esm/src/gasPriceOracle/index.js.map +1 -1
- package/dist/types/src/coingecko/Coingecko.d.ts.map +1 -1
- package/dist/types/src/coingecko/CoingeckoErrors.d.ts +19 -0
- package/dist/types/src/coingecko/CoingeckoErrors.d.ts.map +1 -0
- package/dist/types/src/coingecko/index.d.ts +1 -0
- package/dist/types/src/coingecko/index.d.ts.map +1 -1
- package/dist/types/src/gasPriceOracle/adapters/solana.d.ts.map +1 -1
- package/dist/types/src/gasPriceOracle/errors.d.ts +14 -0
- package/dist/types/src/gasPriceOracle/errors.d.ts.map +1 -0
- package/dist/types/src/gasPriceOracle/index.d.ts +1 -0
- package/dist/types/src/gasPriceOracle/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/coingecko/Coingecko.ts +30 -17
- package/src/coingecko/CoingeckoErrors.ts +24 -0
- package/src/coingecko/index.ts +1 -0
- package/src/gasPriceOracle/adapters/solana.ts +31 -11
- package/src/gasPriceOracle/errors.ts +14 -0
- package/src/gasPriceOracle/index.ts +1 -0
|
@@ -5,6 +5,7 @@ exports.msToS = msToS;
|
|
|
5
5
|
const tslib_1 = require("tslib");
|
|
6
6
|
const assert_1 = tslib_1.__importDefault(require("assert"));
|
|
7
7
|
const utils_1 = require("../utils");
|
|
8
|
+
const CoingeckoErrors_1 = require("./CoingeckoErrors");
|
|
8
9
|
function msToS(ms) {
|
|
9
10
|
return Math.floor(ms / 1000);
|
|
10
11
|
}
|
|
@@ -116,7 +117,7 @@ class Coingecko {
|
|
|
116
117
|
(0, assert_1.default)(to, "requires to timestamp");
|
|
117
118
|
const _from = msToS(from);
|
|
118
119
|
const _to = msToS(to);
|
|
119
|
-
const result = await this.call(`coins/ethereum/contract/${contract.toLowerCase()}/market_chart/range/?vs_currency=${currency}&from=${_from}&to=${_to}`);
|
|
120
|
+
const result = await this.call(`coins/ethereum/contract/${encodeURIComponent(contract.toLowerCase())}/market_chart/range/?vs_currency=${encodeURIComponent(currency)}&from=${_from}&to=${_to}`);
|
|
120
121
|
if (result.prices)
|
|
121
122
|
return result.prices;
|
|
122
123
|
throw new Error("Something went wrong fetching coingecko prices!");
|
|
@@ -124,7 +125,7 @@ class Coingecko {
|
|
|
124
125
|
async getContractHistoricDayPrice(contractAddress, date, currency = "usd", chainId = 1) {
|
|
125
126
|
const coingeckoTokenIdentifier = await this.getCoingeckoTokenId(contractAddress, chainId);
|
|
126
127
|
(0, assert_1.default)(date, "Requires date string");
|
|
127
|
-
const url = `coins/${coingeckoTokenIdentifier}/history`;
|
|
128
|
+
const url = `coins/${encodeURIComponent(coingeckoTokenIdentifier)}/history`;
|
|
128
129
|
const queryParams = {
|
|
129
130
|
date,
|
|
130
131
|
localization: "false",
|
|
@@ -135,7 +136,7 @@ class Coingecko {
|
|
|
135
136
|
return price;
|
|
136
137
|
}
|
|
137
138
|
getContractDetails(contract_address, platform_id = "ethereum") {
|
|
138
|
-
return this.call(`coins/${platform_id}/contract/${contract_address.toLowerCase()}`);
|
|
139
|
+
return this.call(`coins/${encodeURIComponent(platform_id)}/contract/${encodeURIComponent(contract_address.toLowerCase())}`);
|
|
139
140
|
}
|
|
140
141
|
async getCurrentPriceByContract(contractAddress, currency = "usd", chainId = 1) {
|
|
141
142
|
const platform_id = await this.getPlatformId(chainId);
|
|
@@ -145,7 +146,9 @@ class Coingecko {
|
|
|
145
146
|
await this.getContractPrices([contractAddress], currency, platform_id);
|
|
146
147
|
tokenPrice = priceCache[contractAddress];
|
|
147
148
|
}
|
|
148
|
-
|
|
149
|
+
if (tokenPrice === undefined) {
|
|
150
|
+
throw new CoingeckoErrors_1.CoingeckoPriceNotFoundError({ identifier: contractAddress, currency, lookupType: "address" });
|
|
151
|
+
}
|
|
149
152
|
return [tokenPrice.timestamp.toString(), tokenPrice.price];
|
|
150
153
|
}
|
|
151
154
|
async getCurrentPriceById(contractAddress, currency = "usd", chainId = 1) {
|
|
@@ -154,43 +157,45 @@ class Coingecko {
|
|
|
154
157
|
let tokenPrice = this.getCachedAddressPrice(contractAddress, currency, platform_id);
|
|
155
158
|
if (tokenPrice === undefined) {
|
|
156
159
|
const coingeckoId = await this.getCoingeckoTokenId(contractAddress, chainId);
|
|
157
|
-
const result = await this.call(`simple/price?ids=${coingeckoId}&vs_currencies=${currency}&include_last_updated_at=true`);
|
|
160
|
+
const result = await this.call(`simple/price?ids=${encodeURIComponent(coingeckoId)}&vs_currencies=${encodeURIComponent(currency)}&include_last_updated_at=true`);
|
|
158
161
|
const cgPrice = result?.[coingeckoId];
|
|
159
162
|
if (cgPrice === undefined || !cgPrice?.[currency]) {
|
|
160
|
-
const errMsg = `No price found for ${coingeckoId}`;
|
|
161
163
|
this.logger.debug({
|
|
162
164
|
at: "Coingecko#getCurrentPriceById",
|
|
163
|
-
message:
|
|
165
|
+
message: `No Coingecko price found for id '${coingeckoId}' in ${currency}`,
|
|
164
166
|
});
|
|
165
|
-
throw new
|
|
167
|
+
throw new CoingeckoErrors_1.CoingeckoPriceNotFoundError({ identifier: coingeckoId, currency, lookupType: "id" });
|
|
166
168
|
}
|
|
167
169
|
else {
|
|
168
170
|
this.updatePriceCache(cgPrice, contractAddress, currency, platform_id);
|
|
169
171
|
}
|
|
170
172
|
}
|
|
171
173
|
tokenPrice = priceCache[contractAddress];
|
|
172
|
-
|
|
174
|
+
if (tokenPrice === undefined) {
|
|
175
|
+
throw new CoingeckoErrors_1.CoingeckoPriceNotFoundError({ identifier: contractAddress, currency, lookupType: "address" });
|
|
176
|
+
}
|
|
173
177
|
return [tokenPrice.timestamp.toString(), tokenPrice.price];
|
|
174
178
|
}
|
|
175
179
|
async getCurrentPriceBySymbol(symbol, currency = "usd") {
|
|
176
180
|
let tokenPrice = this.getCachedSymbolPrice(symbol, currency);
|
|
177
181
|
if (tokenPrice === undefined) {
|
|
178
|
-
const result = await this.call(`simple/price?symbols=${symbol}&vs_currencies=${currency}&include_last_updated_at=true`);
|
|
182
|
+
const result = await this.call(`simple/price?symbols=${encodeURIComponent(symbol)}&vs_currencies=${encodeURIComponent(currency)}&include_last_updated_at=true`);
|
|
179
183
|
const cgPrice = result?.[symbol.toLowerCase()] || result?.[symbol.toUpperCase()];
|
|
180
184
|
if (cgPrice === undefined || !cgPrice?.[currency]) {
|
|
181
|
-
const errMsg = `Failed to retrieve ${symbol}/${currency} price via Coingecko API`;
|
|
182
185
|
this.logger.debug({
|
|
183
186
|
at: "Coingecko#getCurrentPriceBySymbol",
|
|
184
|
-
message:
|
|
187
|
+
message: `No Coingecko price found for symbol '${symbol}' in ${currency}`,
|
|
185
188
|
});
|
|
186
|
-
throw new
|
|
189
|
+
throw new CoingeckoErrors_1.CoingeckoPriceNotFoundError({ identifier: symbol, currency, lookupType: "symbol" });
|
|
187
190
|
}
|
|
188
191
|
else {
|
|
189
192
|
this.updatePriceCacheBySymbol(cgPrice, symbol, currency);
|
|
190
193
|
}
|
|
191
194
|
}
|
|
192
195
|
tokenPrice = this.getCachedSymbolPrice(symbol, currency);
|
|
193
|
-
|
|
196
|
+
if (tokenPrice === undefined) {
|
|
197
|
+
throw new CoingeckoErrors_1.CoingeckoPriceNotFoundError({ identifier: symbol, currency, lookupType: "symbol" });
|
|
198
|
+
}
|
|
194
199
|
return [tokenPrice.timestamp.toString(), tokenPrice.price];
|
|
195
200
|
}
|
|
196
201
|
async getContractPrices(addresses, currency = "usd", platform_id = "ethereum") {
|
|
@@ -209,7 +214,9 @@ class Coingecko {
|
|
|
209
214
|
});
|
|
210
215
|
let result = {};
|
|
211
216
|
try {
|
|
212
|
-
result = await this.call(`simple/token_price/${platform_id}?contract_addresses=${contract_addresses
|
|
217
|
+
result = await this.call(`simple/token_price/${encodeURIComponent(platform_id)}?contract_addresses=${contract_addresses
|
|
218
|
+
.map((addr) => encodeURIComponent(addr))
|
|
219
|
+
.join("%2C")}&vs_currencies=${encodeURIComponent(currency)}&include_last_updated_at=true`);
|
|
213
220
|
}
|
|
214
221
|
catch (err) {
|
|
215
222
|
const errMsg = `Failed to retrieve ${platform_id}/${currency} prices (${err})`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Coingecko.js","sourceRoot":"","sources":["../../../../src/coingecko/Coingecko.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Coingecko.js","sourceRoot":"","sources":["../../../../src/coingecko/Coingecko.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type CoingeckoLookupType = "symbol" | "address" | "id";
|
|
2
|
+
export declare class CoingeckoPriceNotFoundError extends Error {
|
|
3
|
+
readonly identifier: string;
|
|
4
|
+
readonly currency: string;
|
|
5
|
+
readonly lookupType: CoingeckoLookupType;
|
|
6
|
+
constructor(args: {
|
|
7
|
+
identifier: string;
|
|
8
|
+
currency: string;
|
|
9
|
+
lookupType: CoingeckoLookupType;
|
|
10
|
+
cause?: unknown;
|
|
11
|
+
});
|
|
12
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CoingeckoPriceNotFoundError = void 0;
|
|
4
|
+
class CoingeckoPriceNotFoundError extends Error {
|
|
5
|
+
identifier;
|
|
6
|
+
currency;
|
|
7
|
+
lookupType;
|
|
8
|
+
constructor(args) {
|
|
9
|
+
super(`No Coingecko price found for ${args.lookupType} '${args.identifier}' in ${args.currency}`, args.cause !== undefined ? { cause: args.cause } : undefined);
|
|
10
|
+
this.name = "CoingeckoPriceNotFoundError";
|
|
11
|
+
this.identifier = args.identifier;
|
|
12
|
+
this.currency = args.currency;
|
|
13
|
+
this.lookupType = args.lookupType;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.CoingeckoPriceNotFoundError = CoingeckoPriceNotFoundError;
|
|
17
|
+
//# sourceMappingURL=CoingeckoErrors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CoingeckoErrors.js","sourceRoot":"","sources":["../../../../src/coingecko/CoingeckoErrors.ts"],"names":[],"mappings":";;;AAQA,MAAa,2BAA4B,SAAQ,KAAK;IAC3C,UAAU,CAAS;IACnB,QAAQ,CAAS;IACjB,UAAU,CAAsB;IAEzC,YAAY,IAAgG;QAC1G,KAAK,CACH,gCAAgC,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,QAAQ,IAAI,CAAC,QAAQ,EAAE,EAC1F,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAC7D,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACpC,CAAC;CACF;AAfD,kEAeC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/coingecko/index.ts"],"names":[],"mappings":";;;AAAA,sDAA4B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/coingecko/index.ts"],"names":[],"mappings":";;;AAAA,sDAA4B;AAC5B,4DAAkC"}
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.messageFee = messageFee;
|
|
4
4
|
const utils_1 = require("../../utils");
|
|
5
|
+
const errors_1 = require("../errors");
|
|
5
6
|
const kit_1 = require("@solana/kit");
|
|
7
|
+
const MAX_BASE_FEE_ATTEMPTS = 2;
|
|
6
8
|
async function messageFee(provider, opts) {
|
|
7
9
|
const { unsignedTx: _unsignedTx } = opts;
|
|
8
10
|
const unsignedTx = _unsignedTx;
|
|
9
|
-
const
|
|
10
|
-
const encodedTransactionMessage = Buffer.from(compiledTransaction.messageBytes).toString("base64");
|
|
11
|
-
const baseFeeResponse = await provider.getFeeForMessage(encodedTransactionMessage).send();
|
|
11
|
+
const baseFee = await getBaseFee(provider, unsignedTx);
|
|
12
12
|
const instructionAddresses = (0, utils_1.dedupArray)(unsignedTx.instructions.map((instruction) => instruction.programAddress));
|
|
13
13
|
const recentPriorityFees = await provider.getRecentPrioritizationFees(instructionAddresses).send();
|
|
14
14
|
const nonzeroPrioritizationFees = recentPriorityFees
|
|
@@ -17,9 +17,19 @@ async function messageFee(provider, opts) {
|
|
|
17
17
|
.filter((fee) => fee > 0);
|
|
18
18
|
const totalPrioritizationFees = nonzeroPrioritizationFees.reduce((acc, fee) => acc + fee, BigInt(0));
|
|
19
19
|
const microLamportsPerComputeUnit = (0, utils_1.toBN)(totalPrioritizationFees / BigInt(Math.max(nonzeroPrioritizationFees.length, 1)));
|
|
20
|
-
return {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
return { baseFee, microLamportsPerComputeUnit };
|
|
21
|
+
}
|
|
22
|
+
async function getBaseFee(provider, tx) {
|
|
23
|
+
for (let attempt = 0; attempt < MAX_BASE_FEE_ATTEMPTS; attempt++) {
|
|
24
|
+
const { value: confirmedBlockhash } = await provider.getLatestBlockhash({ commitment: "confirmed" }).send();
|
|
25
|
+
const refreshedTx = (0, kit_1.setTransactionMessageLifetimeUsingBlockhash)(confirmedBlockhash, tx);
|
|
26
|
+
const compiled = (0, kit_1.compileTransaction)(refreshedTx);
|
|
27
|
+
const encoded = Buffer.from(compiled.messageBytes).toString("base64");
|
|
28
|
+
const { value } = await provider.getFeeForMessage(encoded).send();
|
|
29
|
+
if (value !== null && value !== undefined) {
|
|
30
|
+
return (0, utils_1.toBN)(value);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
throw new errors_1.SvmGasPriceUnavailableError("Solana getFeeForMessage returned null even after retrying with a confirmed blockhash");
|
|
24
34
|
}
|
|
25
35
|
//# sourceMappingURL=solana.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../../../src/gasPriceOracle/adapters/solana.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../../../src/gasPriceOracle/adapters/solana.ts"],"names":[],"mappings":";;AAmBA,gCAwBC;AA1CD,uCAAmD;AAGnD,sCAAwD;AACxD,qCAMqB;AAErB,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAMzB,KAAK,UAAU,UAAU,CAAC,QAAqB,EAAE,IAA6B;IACnF,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAGzC,MAAM,UAAU,GAAG,WAAkE,CAAC;IAEtF,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAGvD,MAAM,oBAAoB,GAAG,IAAA,kBAAU,EAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC;IAClH,MAAM,kBAAkB,GAAG,MAAM,QAAQ,CAAC,2BAA2B,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,CAAC;IAGnG,MAAM,yBAAyB,GAAG,kBAAkB;SACjD,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC;SACvC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC5B,MAAM,uBAAuB,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAErG,MAAM,2BAA2B,GAAG,IAAA,YAAI,EACtC,uBAAuB,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAChF,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;AAClD,CAAC;AASD,KAAK,UAAU,UAAU,CAAC,QAAqB,EAAE,EAAuD;IACtG,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,qBAAqB,EAAE,OAAO,EAAE,EAAE,CAAC;QACjE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,MAAM,QAAQ,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5G,MAAM,WAAW,GAAG,IAAA,iDAA2C,EAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;QACxF,MAAM,QAAQ,GAAG,IAAA,wBAAkB,EAAC,WAAW,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAkC,CAAC;QACvG,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAClE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1C,OAAO,IAAA,YAAI,EAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,MAAM,IAAI,oCAA2B,CACnC,sFAAsF,CACvF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SvmGasPriceUnavailableError = void 0;
|
|
4
|
+
class SvmGasPriceUnavailableError extends Error {
|
|
5
|
+
constructor(message, opts) {
|
|
6
|
+
super(message, opts?.cause !== undefined ? { cause: opts.cause } : undefined);
|
|
7
|
+
this.name = "SvmGasPriceUnavailableError";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.SvmGasPriceUnavailableError = SvmGasPriceUnavailableError;
|
|
11
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/gasPriceOracle/errors.ts"],"names":[],"mappings":";;;AAQA,MAAa,2BAA4B,SAAQ,KAAK;IACpD,YAAY,OAAe,EAAE,IAA0B;QACrD,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC9E,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC5C,CAAC;CACF;AALD,kEAKC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getGasPriceEstimate = void 0;
|
|
3
|
+
exports.SvmGasPriceUnavailableError = exports.getGasPriceEstimate = void 0;
|
|
4
4
|
var oracle_1 = require("./oracle");
|
|
5
5
|
Object.defineProperty(exports, "getGasPriceEstimate", { enumerable: true, get: function () { return oracle_1.getGasPriceEstimate; } });
|
|
6
|
+
var errors_1 = require("./errors");
|
|
7
|
+
Object.defineProperty(exports, "SvmGasPriceUnavailableError", { enumerable: true, get: function () { return errors_1.SvmGasPriceUnavailableError; } });
|
|
6
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/gasPriceOracle/index.ts"],"names":[],"mappings":";;;AAAA,mCAAwE;AAA/D,6GAAA,mBAAmB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/gasPriceOracle/index.ts"],"names":[],"mappings":";;;AAAA,mCAAwE;AAA/D,6GAAA,mBAAmB,OAAA;AAE5B,mCAAuD;AAA9C,qHAAA,2BAA2B,OAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import assert from "assert";
|
|
2
2
|
import { fetchWithTimeout, getCoingeckoTokenIdByAddress, retry } from "../utils";
|
|
3
|
+
import { CoingeckoPriceNotFoundError } from "./CoingeckoErrors";
|
|
3
4
|
export function msToS(ms) {
|
|
4
5
|
return Math.floor(ms / 1000);
|
|
5
6
|
}
|
|
@@ -117,7 +118,7 @@ export class Coingecko {
|
|
|
117
118
|
assert(to, "requires to timestamp");
|
|
118
119
|
const _from = msToS(from);
|
|
119
120
|
const _to = msToS(to);
|
|
120
|
-
const result = await this.call(`coins/ethereum/contract/${contract.toLowerCase()}/market_chart/range/?vs_currency=${currency}&from=${_from}&to=${_to}`);
|
|
121
|
+
const result = await this.call(`coins/ethereum/contract/${encodeURIComponent(contract.toLowerCase())}/market_chart/range/?vs_currency=${encodeURIComponent(currency)}&from=${_from}&to=${_to}`);
|
|
121
122
|
// fyi timestamps are returned in ms in contrast to the current price endpoint
|
|
122
123
|
if (result.prices)
|
|
123
124
|
return result.prices;
|
|
@@ -135,7 +136,7 @@ export class Coingecko {
|
|
|
135
136
|
const coingeckoTokenIdentifier = await this.getCoingeckoTokenId(contractAddress, chainId);
|
|
136
137
|
assert(date, "Requires date string");
|
|
137
138
|
// Build the path for the Coingecko API request
|
|
138
|
-
const url = `coins/${coingeckoTokenIdentifier}/history`;
|
|
139
|
+
const url = `coins/${encodeURIComponent(coingeckoTokenIdentifier)}/history`;
|
|
139
140
|
// Build the query parameters for the Coingecko API request
|
|
140
141
|
const queryParams = {
|
|
141
142
|
date,
|
|
@@ -148,7 +149,7 @@ export class Coingecko {
|
|
|
148
149
|
return price;
|
|
149
150
|
}
|
|
150
151
|
getContractDetails(contract_address, platform_id = "ethereum") {
|
|
151
|
-
return this.call(`coins/${platform_id}/contract/${contract_address.toLowerCase()}`);
|
|
152
|
+
return this.call(`coins/${encodeURIComponent(platform_id)}/contract/${encodeURIComponent(contract_address.toLowerCase())}`);
|
|
152
153
|
}
|
|
153
154
|
async getCurrentPriceByContract(contractAddress, currency = "usd", chainId = 1) {
|
|
154
155
|
const platform_id = await this.getPlatformId(chainId);
|
|
@@ -158,7 +159,9 @@ export class Coingecko {
|
|
|
158
159
|
await this.getContractPrices([contractAddress], currency, platform_id);
|
|
159
160
|
tokenPrice = priceCache[contractAddress];
|
|
160
161
|
}
|
|
161
|
-
|
|
162
|
+
if (tokenPrice === undefined) {
|
|
163
|
+
throw new CoingeckoPriceNotFoundError({ identifier: contractAddress, currency, lookupType: "address" });
|
|
164
|
+
}
|
|
162
165
|
return [tokenPrice.timestamp.toString(), tokenPrice.price];
|
|
163
166
|
}
|
|
164
167
|
async getCurrentPriceById(contractAddress, currency = "usd", chainId = 1) {
|
|
@@ -168,43 +171,45 @@ export class Coingecko {
|
|
|
168
171
|
if (tokenPrice === undefined) {
|
|
169
172
|
const coingeckoId = await this.getCoingeckoTokenId(contractAddress, chainId);
|
|
170
173
|
// Build the path for the Coingecko API request
|
|
171
|
-
const result = await this.call(`simple/price?ids=${coingeckoId}&vs_currencies=${currency}&include_last_updated_at=true`);
|
|
174
|
+
const result = await this.call(`simple/price?ids=${encodeURIComponent(coingeckoId)}&vs_currencies=${encodeURIComponent(currency)}&include_last_updated_at=true`);
|
|
172
175
|
const cgPrice = result?.[coingeckoId];
|
|
173
176
|
if (cgPrice === undefined || !cgPrice?.[currency]) {
|
|
174
|
-
const errMsg = `No price found for ${coingeckoId}`;
|
|
175
177
|
this.logger.debug({
|
|
176
178
|
at: "Coingecko#getCurrentPriceById",
|
|
177
|
-
message:
|
|
179
|
+
message: `No Coingecko price found for id '${coingeckoId}' in ${currency}`,
|
|
178
180
|
});
|
|
179
|
-
throw new
|
|
181
|
+
throw new CoingeckoPriceNotFoundError({ identifier: coingeckoId, currency, lookupType: "id" });
|
|
180
182
|
}
|
|
181
183
|
else {
|
|
182
184
|
this.updatePriceCache(cgPrice, contractAddress, currency, platform_id);
|
|
183
185
|
}
|
|
184
186
|
}
|
|
185
187
|
tokenPrice = priceCache[contractAddress];
|
|
186
|
-
|
|
188
|
+
if (tokenPrice === undefined) {
|
|
189
|
+
throw new CoingeckoPriceNotFoundError({ identifier: contractAddress, currency, lookupType: "address" });
|
|
190
|
+
}
|
|
187
191
|
return [tokenPrice.timestamp.toString(), tokenPrice.price];
|
|
188
192
|
}
|
|
189
193
|
async getCurrentPriceBySymbol(symbol, currency = "usd") {
|
|
190
194
|
let tokenPrice = this.getCachedSymbolPrice(symbol, currency);
|
|
191
195
|
if (tokenPrice === undefined) {
|
|
192
|
-
const result = await this.call(`simple/price?symbols=${symbol}&vs_currencies=${currency}&include_last_updated_at=true`);
|
|
196
|
+
const result = await this.call(`simple/price?symbols=${encodeURIComponent(symbol)}&vs_currencies=${encodeURIComponent(currency)}&include_last_updated_at=true`);
|
|
193
197
|
const cgPrice = result?.[symbol.toLowerCase()] || result?.[symbol.toUpperCase()];
|
|
194
198
|
if (cgPrice === undefined || !cgPrice?.[currency]) {
|
|
195
|
-
const errMsg = `Failed to retrieve ${symbol}/${currency} price via Coingecko API`;
|
|
196
199
|
this.logger.debug({
|
|
197
200
|
at: "Coingecko#getCurrentPriceBySymbol",
|
|
198
|
-
message:
|
|
201
|
+
message: `No Coingecko price found for symbol '${symbol}' in ${currency}`,
|
|
199
202
|
});
|
|
200
|
-
throw new
|
|
203
|
+
throw new CoingeckoPriceNotFoundError({ identifier: symbol, currency, lookupType: "symbol" });
|
|
201
204
|
}
|
|
202
205
|
else {
|
|
203
206
|
this.updatePriceCacheBySymbol(cgPrice, symbol, currency);
|
|
204
207
|
}
|
|
205
208
|
}
|
|
206
209
|
tokenPrice = this.getCachedSymbolPrice(symbol, currency);
|
|
207
|
-
|
|
210
|
+
if (tokenPrice === undefined) {
|
|
211
|
+
throw new CoingeckoPriceNotFoundError({ identifier: symbol, currency, lookupType: "symbol" });
|
|
212
|
+
}
|
|
208
213
|
return [tokenPrice.timestamp.toString(), tokenPrice.price];
|
|
209
214
|
}
|
|
210
215
|
// Return an array of spot prices for an array of collateral addresses in one async call. Note we might in future
|
|
@@ -228,7 +233,9 @@ export class Coingecko {
|
|
|
228
233
|
let result = {};
|
|
229
234
|
try {
|
|
230
235
|
// Coingecko expects a comma-delimited (%2c) list.
|
|
231
|
-
result = await this.call(`simple/token_price/${platform_id}?contract_addresses=${contract_addresses
|
|
236
|
+
result = await this.call(`simple/token_price/${encodeURIComponent(platform_id)}?contract_addresses=${contract_addresses
|
|
237
|
+
.map((addr) => encodeURIComponent(addr))
|
|
238
|
+
.join("%2C")}&vs_currencies=${encodeURIComponent(currency)}&include_last_updated_at=true`);
|
|
232
239
|
}
|
|
233
240
|
catch (err) {
|
|
234
241
|
const errMsg = `Failed to retrieve ${platform_id}/${currency} prices (${err})`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Coingecko.js","sourceRoot":"","sources":["../../../../src/coingecko/Coingecko.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Coingecko.js","sourceRoot":"","sources":["../../../../src/coingecko/Coingecko.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thrown when a price lookup against the Coingecko API does not return a
|
|
3
|
+
* usable price for the requested identifier. Callers can use `instanceof` to
|
|
4
|
+
* map this to a 404 / not-found response without needing to string-match
|
|
5
|
+
* the underlying message.
|
|
6
|
+
*/
|
|
7
|
+
export type CoingeckoLookupType = "symbol" | "address" | "id";
|
|
8
|
+
export declare class CoingeckoPriceNotFoundError extends Error {
|
|
9
|
+
readonly identifier: string;
|
|
10
|
+
readonly currency: string;
|
|
11
|
+
readonly lookupType: CoingeckoLookupType;
|
|
12
|
+
constructor(args: {
|
|
13
|
+
identifier: string;
|
|
14
|
+
currency: string;
|
|
15
|
+
lookupType: CoingeckoLookupType;
|
|
16
|
+
cause?: unknown;
|
|
17
|
+
});
|
|
18
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export class CoingeckoPriceNotFoundError extends Error {
|
|
2
|
+
identifier;
|
|
3
|
+
currency;
|
|
4
|
+
lookupType;
|
|
5
|
+
constructor(args) {
|
|
6
|
+
super(`No Coingecko price found for ${args.lookupType} '${args.identifier}' in ${args.currency}`, args.cause !== undefined ? { cause: args.cause } : undefined);
|
|
7
|
+
this.name = "CoingeckoPriceNotFoundError";
|
|
8
|
+
this.identifier = args.identifier;
|
|
9
|
+
this.currency = args.currency;
|
|
10
|
+
this.lookupType = args.lookupType;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=CoingeckoErrors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CoingeckoErrors.js","sourceRoot":"","sources":["../../../../src/coingecko/CoingeckoErrors.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IAC3C,UAAU,CAAS;IACnB,QAAQ,CAAS;IACjB,UAAU,CAAsB;IAEzC,YAAY,IAAgG;QAC1G,KAAK,CACH,gCAAgC,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,QAAQ,IAAI,CAAC,QAAQ,EAAE,EAC1F,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAC7D,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACpC,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/coingecko/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/coingecko/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { toBN, dedupArray } from "../../utils";
|
|
2
|
-
import {
|
|
2
|
+
import { SvmGasPriceUnavailableError } from "../errors";
|
|
3
|
+
import { compileTransaction, setTransactionMessageLifetimeUsingBlockhash, } from "@solana/kit";
|
|
4
|
+
const MAX_BASE_FEE_ATTEMPTS = 2;
|
|
3
5
|
/**
|
|
4
6
|
* @notice Returns result of getFeeForMessage and getRecentPrioritizationFees RPC calls.
|
|
5
7
|
* @returns GasPriceEstimate
|
|
@@ -8,10 +10,7 @@ export async function messageFee(provider, opts) {
|
|
|
8
10
|
const { unsignedTx: _unsignedTx } = opts;
|
|
9
11
|
// Cast the opaque unsignedTx type to a solana-kit TransactionMessage with fee payer.
|
|
10
12
|
const unsignedTx = _unsignedTx;
|
|
11
|
-
const
|
|
12
|
-
// Get this base fee. This should result in LAMPORTS_PER_SIGNATURE * nSignatures.
|
|
13
|
-
const encodedTransactionMessage = Buffer.from(compiledTransaction.messageBytes).toString("base64");
|
|
14
|
-
const baseFeeResponse = await provider.getFeeForMessage(encodedTransactionMessage).send();
|
|
13
|
+
const baseFee = await getBaseFee(provider, unsignedTx);
|
|
15
14
|
// Get the priority fee by calling `getRecentPrioritzationFees` on all the addresses in the transaction's instruction array.
|
|
16
15
|
const instructionAddresses = dedupArray(unsignedTx.instructions.map((instruction) => instruction.programAddress));
|
|
17
16
|
const recentPriorityFees = await provider.getRecentPrioritizationFees(instructionAddresses).send();
|
|
@@ -22,9 +21,26 @@ export async function messageFee(provider, opts) {
|
|
|
22
21
|
.filter((fee) => fee > 0);
|
|
23
22
|
const totalPrioritizationFees = nonzeroPrioritizationFees.reduce((acc, fee) => acc + fee, BigInt(0));
|
|
24
23
|
const microLamportsPerComputeUnit = toBN(totalPrioritizationFees / BigInt(Math.max(nonzeroPrioritizationFees.length, 1)));
|
|
25
|
-
return {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
return { baseFee, microLamportsPerComputeUnit };
|
|
25
|
+
}
|
|
26
|
+
// `getFeeForMessage` returns `{ value: null }` when the cluster has not yet recognised
|
|
27
|
+
// the blockhash referenced by the message. With a load-balanced RPC pool, this happens
|
|
28
|
+
// when the request lands on a node that hasn't seen the blockhash from an earlier
|
|
29
|
+
// `getLatestBlockhash` call. We side-step the race by always refreshing to a `confirmed`
|
|
30
|
+
// blockhash before each attempt — by definition propagated to all healthy nodes — and
|
|
31
|
+
// retrying once if a fee call still comes back null. Fee estimation is never sent
|
|
32
|
+
// on-chain, so blockhash freshness doesn't matter.
|
|
33
|
+
async function getBaseFee(provider, tx) {
|
|
34
|
+
for (let attempt = 0; attempt < MAX_BASE_FEE_ATTEMPTS; attempt++) {
|
|
35
|
+
const { value: confirmedBlockhash } = await provider.getLatestBlockhash({ commitment: "confirmed" }).send();
|
|
36
|
+
const refreshedTx = setTransactionMessageLifetimeUsingBlockhash(confirmedBlockhash, tx);
|
|
37
|
+
const compiled = compileTransaction(refreshedTx);
|
|
38
|
+
const encoded = Buffer.from(compiled.messageBytes).toString("base64");
|
|
39
|
+
const { value } = await provider.getFeeForMessage(encoded).send();
|
|
40
|
+
if (value !== null && value !== undefined) {
|
|
41
|
+
return toBN(value);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
throw new SvmGasPriceUnavailableError("Solana getFeeForMessage returned null even after retrying with a confirmed blockhash");
|
|
29
45
|
}
|
|
30
46
|
//# sourceMappingURL=solana.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../../../src/gasPriceOracle/adapters/solana.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../../../src/gasPriceOracle/adapters/solana.ts"],"names":[],"mappings":"AACA,OAAO,EAAM,IAAI,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAIL,kBAAkB,EAClB,2CAA2C,GAC5C,MAAM,aAAa,CAAC;AAErB,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEhC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAqB,EAAE,IAA6B;IACnF,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAEzC,qFAAqF;IACrF,MAAM,UAAU,GAAG,WAAkE,CAAC;IAEtF,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAEvD,4HAA4H;IAC5H,MAAM,oBAAoB,GAAG,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC;IAClH,MAAM,kBAAkB,GAAG,MAAM,QAAQ,CAAC,2BAA2B,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,CAAC;IAEnG,mFAAmF;IACnF,MAAM,yBAAyB,GAAG,kBAAkB;SACjD,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC;SACvC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC5B,MAAM,uBAAuB,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAErG,MAAM,2BAA2B,GAAG,IAAI,CACtC,uBAAuB,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAChF,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;AAClD,CAAC;AAED,uFAAuF;AACvF,uFAAuF;AACvF,kFAAkF;AAClF,yFAAyF;AACzF,sFAAsF;AACtF,kFAAkF;AAClF,mDAAmD;AACnD,KAAK,UAAU,UAAU,CAAC,QAAqB,EAAE,EAAuD;IACtG,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,qBAAqB,EAAE,OAAO,EAAE,EAAE,CAAC;QACjE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,MAAM,QAAQ,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5G,MAAM,WAAW,GAAG,2CAA2C,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;QACxF,MAAM,QAAQ,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAkC,CAAC;QACvG,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAClE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,MAAM,IAAI,2BAA2B,CACnC,sFAAsF,CACvF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thrown when the SVM gas-price oracle cannot determine a base fee for the
|
|
3
|
+
* supplied message — most commonly because Solana's `getFeeForMessage` RPC
|
|
4
|
+
* returned `{ value: null }` even after retrying with a confirmed blockhash.
|
|
5
|
+
*
|
|
6
|
+
* Callers can use `instanceof` to map this to a transient upstream-RPC error
|
|
7
|
+
* (e.g. HTTP 502 / 503) rather than treating it as an unhandled exception.
|
|
8
|
+
*/
|
|
9
|
+
export declare class SvmGasPriceUnavailableError extends Error {
|
|
10
|
+
constructor(message: string, opts?: {
|
|
11
|
+
cause?: unknown;
|
|
12
|
+
});
|
|
13
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thrown when the SVM gas-price oracle cannot determine a base fee for the
|
|
3
|
+
* supplied message — most commonly because Solana's `getFeeForMessage` RPC
|
|
4
|
+
* returned `{ value: null }` even after retrying with a confirmed blockhash.
|
|
5
|
+
*
|
|
6
|
+
* Callers can use `instanceof` to map this to a transient upstream-RPC error
|
|
7
|
+
* (e.g. HTTP 502 / 503) rather than treating it as an unhandled exception.
|
|
8
|
+
*/
|
|
9
|
+
export class SvmGasPriceUnavailableError extends Error {
|
|
10
|
+
constructor(message, opts) {
|
|
11
|
+
super(message, opts?.cause !== undefined ? { cause: opts.cause } : undefined);
|
|
12
|
+
this.name = "SvmGasPriceUnavailableError";
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/gasPriceOracle/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IACpD,YAAY,OAAe,EAAE,IAA0B;QACrD,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC9E,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC5C,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/gasPriceOracle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAA2B,MAAM,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/gasPriceOracle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAA2B,MAAM,UAAU,CAAC;AAExE,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Coingecko.d.ts","sourceRoot":"","sources":["../../../../src/coingecko/Coingecko.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"Coingecko.d.ts","sourceRoot":"","sources":["../../../../src/coingecko/Coingecko.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thrown when a price lookup against the Coingecko API does not return a
|
|
3
|
+
* usable price for the requested identifier. Callers can use `instanceof` to
|
|
4
|
+
* map this to a 404 / not-found response without needing to string-match
|
|
5
|
+
* the underlying message.
|
|
6
|
+
*/
|
|
7
|
+
export type CoingeckoLookupType = "symbol" | "address" | "id";
|
|
8
|
+
export declare class CoingeckoPriceNotFoundError extends Error {
|
|
9
|
+
readonly identifier: string;
|
|
10
|
+
readonly currency: string;
|
|
11
|
+
readonly lookupType: CoingeckoLookupType;
|
|
12
|
+
constructor(args: {
|
|
13
|
+
identifier: string;
|
|
14
|
+
currency: string;
|
|
15
|
+
lookupType: CoingeckoLookupType;
|
|
16
|
+
cause?: unknown;
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=CoingeckoErrors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CoingeckoErrors.d.ts","sourceRoot":"","sources":["../../../../src/coingecko/CoingeckoErrors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAC;AAE9D,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;gBAE7B,IAAI,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,mBAAmB,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAU7G"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/coingecko/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/coingecko/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solana.d.ts","sourceRoot":"","sources":["../../../../../src/gasPriceOracle/adapters/solana.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"solana.d.ts","sourceRoot":"","sources":["../../../../../src/gasPriceOracle/adapters/solana.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAYpD;;;GAGG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAwBnH"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thrown when the SVM gas-price oracle cannot determine a base fee for the
|
|
3
|
+
* supplied message — most commonly because Solana's `getFeeForMessage` RPC
|
|
4
|
+
* returned `{ value: null }` even after retrying with a confirmed blockhash.
|
|
5
|
+
*
|
|
6
|
+
* Callers can use `instanceof` to map this to a transient upstream-RPC error
|
|
7
|
+
* (e.g. HTTP 502 / 503) rather than treating it as an unhandled exception.
|
|
8
|
+
*/
|
|
9
|
+
export declare class SvmGasPriceUnavailableError extends Error {
|
|
10
|
+
constructor(message: string, opts?: {
|
|
11
|
+
cause?: unknown;
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/gasPriceOracle/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,qBAAa,2BAA4B,SAAQ,KAAK;gBACxC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAIxD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/gasPriceOracle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/gasPriceOracle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AACrF,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import assert from "assert";
|
|
2
2
|
import { fetchWithTimeout, getCoingeckoTokenIdByAddress, retry } from "../utils";
|
|
3
3
|
import { Logger } from "../relayFeeCalculator";
|
|
4
|
+
import { CoingeckoPriceNotFoundError } from "./CoingeckoErrors";
|
|
4
5
|
|
|
5
6
|
export function msToS(ms: number) {
|
|
6
7
|
return Math.floor(ms / 1000);
|
|
@@ -206,7 +207,9 @@ export class Coingecko {
|
|
|
206
207
|
const _from = msToS(from);
|
|
207
208
|
const _to = msToS(to);
|
|
208
209
|
const result = await this.call<HistoricPriceChartData>(
|
|
209
|
-
`coins/ethereum/contract/${
|
|
210
|
+
`coins/ethereum/contract/${encodeURIComponent(
|
|
211
|
+
contract.toLowerCase()
|
|
212
|
+
)}/market_chart/range/?vs_currency=${encodeURIComponent(currency)}&from=${_from}&to=${_to}`
|
|
210
213
|
);
|
|
211
214
|
// fyi timestamps are returned in ms in contrast to the current price endpoint
|
|
212
215
|
if (result.prices) return result.prices;
|
|
@@ -230,7 +233,7 @@ export class Coingecko {
|
|
|
230
233
|
const coingeckoTokenIdentifier = await this.getCoingeckoTokenId(contractAddress, chainId);
|
|
231
234
|
assert(date, "Requires date string");
|
|
232
235
|
// Build the path for the Coingecko API request
|
|
233
|
-
const url = `coins/${coingeckoTokenIdentifier}/history`;
|
|
236
|
+
const url = `coins/${encodeURIComponent(coingeckoTokenIdentifier)}/history`;
|
|
234
237
|
// Build the query parameters for the Coingecko API request
|
|
235
238
|
const queryParams = {
|
|
236
239
|
date,
|
|
@@ -244,7 +247,9 @@ export class Coingecko {
|
|
|
244
247
|
}
|
|
245
248
|
|
|
246
249
|
getContractDetails(contract_address: string, platform_id = "ethereum") {
|
|
247
|
-
return this.call(
|
|
250
|
+
return this.call(
|
|
251
|
+
`coins/${encodeURIComponent(platform_id)}/contract/${encodeURIComponent(contract_address.toLowerCase())}`
|
|
252
|
+
);
|
|
248
253
|
}
|
|
249
254
|
|
|
250
255
|
async getCurrentPriceByContract(contractAddress: string, currency = "usd", chainId = 1): Promise<[string, number]> {
|
|
@@ -256,7 +261,9 @@ export class Coingecko {
|
|
|
256
261
|
tokenPrice = priceCache[contractAddress];
|
|
257
262
|
}
|
|
258
263
|
|
|
259
|
-
|
|
264
|
+
if (tokenPrice === undefined) {
|
|
265
|
+
throw new CoingeckoPriceNotFoundError({ identifier: contractAddress, currency, lookupType: "address" });
|
|
266
|
+
}
|
|
260
267
|
return [tokenPrice.timestamp.toString(), tokenPrice.price];
|
|
261
268
|
}
|
|
262
269
|
|
|
@@ -268,22 +275,25 @@ export class Coingecko {
|
|
|
268
275
|
const coingeckoId = await this.getCoingeckoTokenId(contractAddress, chainId);
|
|
269
276
|
// Build the path for the Coingecko API request
|
|
270
277
|
const result = await this.call<Record<string, CGTokenPrice>>(
|
|
271
|
-
`simple/price?ids=${coingeckoId}&vs_currencies=${
|
|
278
|
+
`simple/price?ids=${encodeURIComponent(coingeckoId)}&vs_currencies=${encodeURIComponent(
|
|
279
|
+
currency
|
|
280
|
+
)}&include_last_updated_at=true`
|
|
272
281
|
);
|
|
273
282
|
const cgPrice = result?.[coingeckoId];
|
|
274
283
|
if (cgPrice === undefined || !cgPrice?.[currency]) {
|
|
275
|
-
const errMsg = `No price found for ${coingeckoId}`;
|
|
276
284
|
this.logger.debug({
|
|
277
285
|
at: "Coingecko#getCurrentPriceById",
|
|
278
|
-
message:
|
|
286
|
+
message: `No Coingecko price found for id '${coingeckoId}' in ${currency}`,
|
|
279
287
|
});
|
|
280
|
-
throw new
|
|
288
|
+
throw new CoingeckoPriceNotFoundError({ identifier: coingeckoId, currency, lookupType: "id" });
|
|
281
289
|
} else {
|
|
282
290
|
this.updatePriceCache(cgPrice, contractAddress, currency, platform_id);
|
|
283
291
|
}
|
|
284
292
|
}
|
|
285
293
|
tokenPrice = priceCache[contractAddress];
|
|
286
|
-
|
|
294
|
+
if (tokenPrice === undefined) {
|
|
295
|
+
throw new CoingeckoPriceNotFoundError({ identifier: contractAddress, currency, lookupType: "address" });
|
|
296
|
+
}
|
|
287
297
|
return [tokenPrice.timestamp.toString(), tokenPrice.price];
|
|
288
298
|
}
|
|
289
299
|
|
|
@@ -291,22 +301,25 @@ export class Coingecko {
|
|
|
291
301
|
let tokenPrice = this.getCachedSymbolPrice(symbol, currency);
|
|
292
302
|
if (tokenPrice === undefined) {
|
|
293
303
|
const result = await this.call<Record<string, CGTokenPrice>>(
|
|
294
|
-
`simple/price?symbols=${symbol}&vs_currencies=${
|
|
304
|
+
`simple/price?symbols=${encodeURIComponent(symbol)}&vs_currencies=${encodeURIComponent(
|
|
305
|
+
currency
|
|
306
|
+
)}&include_last_updated_at=true`
|
|
295
307
|
);
|
|
296
308
|
const cgPrice = result?.[symbol.toLowerCase()] || result?.[symbol.toUpperCase()];
|
|
297
309
|
if (cgPrice === undefined || !cgPrice?.[currency]) {
|
|
298
|
-
const errMsg = `Failed to retrieve ${symbol}/${currency} price via Coingecko API`;
|
|
299
310
|
this.logger.debug({
|
|
300
311
|
at: "Coingecko#getCurrentPriceBySymbol",
|
|
301
|
-
message:
|
|
312
|
+
message: `No Coingecko price found for symbol '${symbol}' in ${currency}`,
|
|
302
313
|
});
|
|
303
|
-
throw new
|
|
314
|
+
throw new CoingeckoPriceNotFoundError({ identifier: symbol, currency, lookupType: "symbol" });
|
|
304
315
|
} else {
|
|
305
316
|
this.updatePriceCacheBySymbol(cgPrice, symbol, currency);
|
|
306
317
|
}
|
|
307
318
|
}
|
|
308
319
|
tokenPrice = this.getCachedSymbolPrice(symbol, currency);
|
|
309
|
-
|
|
320
|
+
if (tokenPrice === undefined) {
|
|
321
|
+
throw new CoingeckoPriceNotFoundError({ identifier: symbol, currency, lookupType: "symbol" });
|
|
322
|
+
}
|
|
310
323
|
return [tokenPrice.timestamp.toString(), tokenPrice.price];
|
|
311
324
|
}
|
|
312
325
|
|
|
@@ -344,9 +357,9 @@ export class Coingecko {
|
|
|
344
357
|
try {
|
|
345
358
|
// Coingecko expects a comma-delimited (%2c) list.
|
|
346
359
|
result = await this.call(
|
|
347
|
-
`simple/token_price/${platform_id}?contract_addresses=${contract_addresses
|
|
348
|
-
|
|
349
|
-
|
|
360
|
+
`simple/token_price/${encodeURIComponent(platform_id)}?contract_addresses=${contract_addresses
|
|
361
|
+
.map((addr) => encodeURIComponent(addr))
|
|
362
|
+
.join("%2C")}&vs_currencies=${encodeURIComponent(currency)}&include_last_updated_at=true`
|
|
350
363
|
);
|
|
351
364
|
} catch (err) {
|
|
352
365
|
const errMsg = `Failed to retrieve ${platform_id}/${currency} prices (${err})`;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thrown when a price lookup against the Coingecko API does not return a
|
|
3
|
+
* usable price for the requested identifier. Callers can use `instanceof` to
|
|
4
|
+
* map this to a 404 / not-found response without needing to string-match
|
|
5
|
+
* the underlying message.
|
|
6
|
+
*/
|
|
7
|
+
export type CoingeckoLookupType = "symbol" | "address" | "id";
|
|
8
|
+
|
|
9
|
+
export class CoingeckoPriceNotFoundError extends Error {
|
|
10
|
+
readonly identifier: string;
|
|
11
|
+
readonly currency: string;
|
|
12
|
+
readonly lookupType: CoingeckoLookupType;
|
|
13
|
+
|
|
14
|
+
constructor(args: { identifier: string; currency: string; lookupType: CoingeckoLookupType; cause?: unknown }) {
|
|
15
|
+
super(
|
|
16
|
+
`No Coingecko price found for ${args.lookupType} '${args.identifier}' in ${args.currency}`,
|
|
17
|
+
args.cause !== undefined ? { cause: args.cause } : undefined
|
|
18
|
+
);
|
|
19
|
+
this.name = "CoingeckoPriceNotFoundError";
|
|
20
|
+
this.identifier = args.identifier;
|
|
21
|
+
this.currency = args.currency;
|
|
22
|
+
this.lookupType = args.lookupType;
|
|
23
|
+
}
|
|
24
|
+
}
|
package/src/coingecko/index.ts
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import { SVMProvider } from "../../arch/svm";
|
|
2
|
-
import { toBN, dedupArray } from "../../utils";
|
|
2
|
+
import { BN, toBN, dedupArray } from "../../utils";
|
|
3
3
|
import { SvmGasPriceEstimate } from "../types";
|
|
4
4
|
import { GasPriceEstimateOptions } from "../oracle";
|
|
5
|
+
import { SvmGasPriceUnavailableError } from "../errors";
|
|
5
6
|
import {
|
|
6
7
|
TransactionMessage,
|
|
7
8
|
TransactionMessageBytesBase64,
|
|
8
9
|
TransactionMessageWithFeePayer,
|
|
9
10
|
compileTransaction,
|
|
11
|
+
setTransactionMessageLifetimeUsingBlockhash,
|
|
10
12
|
} from "@solana/kit";
|
|
11
13
|
|
|
14
|
+
const MAX_BASE_FEE_ATTEMPTS = 2;
|
|
15
|
+
|
|
12
16
|
/**
|
|
13
17
|
* @notice Returns result of getFeeForMessage and getRecentPrioritizationFees RPC calls.
|
|
14
18
|
* @returns GasPriceEstimate
|
|
@@ -18,13 +22,8 @@ export async function messageFee(provider: SVMProvider, opts: GasPriceEstimateOp
|
|
|
18
22
|
|
|
19
23
|
// Cast the opaque unsignedTx type to a solana-kit TransactionMessage with fee payer.
|
|
20
24
|
const unsignedTx = _unsignedTx as TransactionMessage & TransactionMessageWithFeePayer;
|
|
21
|
-
const compiledTransaction = compileTransaction(unsignedTx);
|
|
22
25
|
|
|
23
|
-
|
|
24
|
-
const encodedTransactionMessage = Buffer.from(compiledTransaction.messageBytes).toString(
|
|
25
|
-
"base64"
|
|
26
|
-
) as TransactionMessageBytesBase64;
|
|
27
|
-
const baseFeeResponse = await provider.getFeeForMessage(encodedTransactionMessage).send();
|
|
26
|
+
const baseFee = await getBaseFee(provider, unsignedTx);
|
|
28
27
|
|
|
29
28
|
// Get the priority fee by calling `getRecentPrioritzationFees` on all the addresses in the transaction's instruction array.
|
|
30
29
|
const instructionAddresses = dedupArray(unsignedTx.instructions.map((instruction) => instruction.programAddress));
|
|
@@ -40,8 +39,29 @@ export async function messageFee(provider: SVMProvider, opts: GasPriceEstimateOp
|
|
|
40
39
|
const microLamportsPerComputeUnit = toBN(
|
|
41
40
|
totalPrioritizationFees / BigInt(Math.max(nonzeroPrioritizationFees.length, 1))
|
|
42
41
|
);
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
42
|
+
|
|
43
|
+
return { baseFee, microLamportsPerComputeUnit };
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// `getFeeForMessage` returns `{ value: null }` when the cluster has not yet recognised
|
|
47
|
+
// the blockhash referenced by the message. With a load-balanced RPC pool, this happens
|
|
48
|
+
// when the request lands on a node that hasn't seen the blockhash from an earlier
|
|
49
|
+
// `getLatestBlockhash` call. We side-step the race by always refreshing to a `confirmed`
|
|
50
|
+
// blockhash before each attempt — by definition propagated to all healthy nodes — and
|
|
51
|
+
// retrying once if a fee call still comes back null. Fee estimation is never sent
|
|
52
|
+
// on-chain, so blockhash freshness doesn't matter.
|
|
53
|
+
async function getBaseFee(provider: SVMProvider, tx: TransactionMessage & TransactionMessageWithFeePayer): Promise<BN> {
|
|
54
|
+
for (let attempt = 0; attempt < MAX_BASE_FEE_ATTEMPTS; attempt++) {
|
|
55
|
+
const { value: confirmedBlockhash } = await provider.getLatestBlockhash({ commitment: "confirmed" }).send();
|
|
56
|
+
const refreshedTx = setTransactionMessageLifetimeUsingBlockhash(confirmedBlockhash, tx);
|
|
57
|
+
const compiled = compileTransaction(refreshedTx);
|
|
58
|
+
const encoded = Buffer.from(compiled.messageBytes).toString("base64") as TransactionMessageBytesBase64;
|
|
59
|
+
const { value } = await provider.getFeeForMessage(encoded).send();
|
|
60
|
+
if (value !== null && value !== undefined) {
|
|
61
|
+
return toBN(value);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
throw new SvmGasPriceUnavailableError(
|
|
65
|
+
"Solana getFeeForMessage returned null even after retrying with a confirmed blockhash"
|
|
66
|
+
);
|
|
47
67
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thrown when the SVM gas-price oracle cannot determine a base fee for the
|
|
3
|
+
* supplied message — most commonly because Solana's `getFeeForMessage` RPC
|
|
4
|
+
* returned `{ value: null }` even after retrying with a confirmed blockhash.
|
|
5
|
+
*
|
|
6
|
+
* Callers can use `instanceof` to map this to a transient upstream-RPC error
|
|
7
|
+
* (e.g. HTTP 502 / 503) rather than treating it as an unhandled exception.
|
|
8
|
+
*/
|
|
9
|
+
export class SvmGasPriceUnavailableError extends Error {
|
|
10
|
+
constructor(message: string, opts?: { cause?: unknown }) {
|
|
11
|
+
super(message, opts?.cause !== undefined ? { cause: opts.cause } : undefined);
|
|
12
|
+
this.name = "SvmGasPriceUnavailableError";
|
|
13
|
+
}
|
|
14
|
+
}
|