@atomiqlabs/chain-starknet 1.0.9 → 2.0.0-beta.0
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/index.d.ts +13 -9
- package/dist/index.js +13 -9
- package/dist/starknet/StarknetChainType.d.ts +6 -2
- package/dist/starknet/StarknetInitializer.d.ts +3 -2
- package/dist/starknet/StarknetInitializer.js +17 -6
- package/dist/starknet/btcrelay/StarknetBtcRelay.d.ts +28 -7
- package/dist/starknet/btcrelay/StarknetBtcRelay.js +75 -20
- package/dist/starknet/{base → chain}/StarknetAction.d.ts +2 -2
- package/dist/starknet/chain/StarknetChainInterface.d.ts +52 -0
- package/dist/starknet/chain/StarknetChainInterface.js +91 -0
- package/dist/starknet/{base → chain}/StarknetModule.d.ts +3 -3
- package/dist/starknet/{base → chain}/modules/StarknetAddresses.d.ts +1 -1
- package/dist/starknet/{base → chain}/modules/StarknetAddresses.js +1 -1
- package/dist/starknet/{base → chain}/modules/StarknetSignatures.d.ts +2 -2
- package/dist/starknet/{base → chain}/modules/StarknetTokens.js +2 -1
- package/dist/starknet/{base → chain}/modules/StarknetTransactions.d.ts +7 -1
- package/dist/starknet/{base → chain}/modules/StarknetTransactions.js +45 -16
- package/dist/starknet/contract/StarknetContractBase.d.ts +5 -5
- package/dist/starknet/contract/StarknetContractBase.js +5 -7
- package/dist/starknet/contract/StarknetContractModule.d.ts +8 -0
- package/dist/starknet/contract/StarknetContractModule.js +11 -0
- package/dist/starknet/contract/modules/StarknetContractEvents.d.ts +15 -4
- package/dist/starknet/contract/modules/StarknetContractEvents.js +26 -6
- package/dist/starknet/events/StarknetChainEvents.d.ts +3 -1
- package/dist/starknet/events/StarknetChainEvents.js +9 -9
- package/dist/starknet/events/StarknetChainEventsBrowser.d.ts +23 -6
- package/dist/starknet/events/StarknetChainEventsBrowser.js +106 -13
- package/dist/starknet/provider/RpcProviderWithRetries.d.ts +21 -0
- package/dist/starknet/provider/RpcProviderWithRetries.js +32 -0
- package/dist/starknet/spv_swap/SpvVaultContractAbi.d.ts +488 -0
- package/dist/starknet/spv_swap/SpvVaultContractAbi.js +656 -0
- package/dist/starknet/spv_swap/StarknetSpvVaultContract.d.ts +65 -0
- package/dist/starknet/spv_swap/StarknetSpvVaultContract.js +372 -0
- package/dist/starknet/spv_swap/StarknetSpvVaultData.d.ts +49 -0
- package/dist/starknet/spv_swap/StarknetSpvVaultData.js +144 -0
- package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.d.ts +24 -0
- package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.js +61 -0
- package/dist/starknet/swaps/StarknetSwapContract.d.ts +4 -22
- package/dist/starknet/swaps/StarknetSwapContract.js +23 -80
- package/dist/starknet/swaps/StarknetSwapModule.d.ts +6 -5
- package/dist/starknet/swaps/StarknetSwapModule.js +5 -6
- package/dist/starknet/swaps/handlers/IHandler.d.ts +2 -2
- package/dist/starknet/swaps/handlers/claim/ClaimHandlers.d.ts +1 -1
- package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.d.ts +2 -2
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.d.ts +2 -2
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.d.ts +2 -2
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.d.ts +2 -2
- package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.d.ts +2 -21
- package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.js +7 -41
- package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.d.ts +2 -2
- package/dist/starknet/swaps/modules/StarknetLpVault.d.ts +1 -1
- package/dist/starknet/swaps/modules/StarknetLpVault.js +9 -9
- package/dist/starknet/swaps/modules/StarknetSwapClaim.d.ts +1 -1
- package/dist/starknet/swaps/modules/StarknetSwapClaim.js +8 -8
- package/dist/starknet/swaps/modules/StarknetSwapInit.d.ts +1 -1
- package/dist/starknet/swaps/modules/StarknetSwapInit.js +9 -9
- package/dist/starknet/swaps/modules/StarknetSwapRefund.d.ts +1 -3
- package/dist/starknet/swaps/modules/StarknetSwapRefund.js +8 -11
- package/dist/starknet/wallet/StarknetSigner.js +1 -1
- package/dist/utils/Utils.d.ts +2 -2
- package/dist/utils/Utils.js +3 -1
- package/package.json +2 -2
- package/src/index.ts +15 -9
- package/src/starknet/StarknetChainType.ts +10 -2
- package/src/starknet/StarknetInitializer.ts +23 -7
- package/src/starknet/btcrelay/StarknetBtcRelay.ts +104 -30
- package/src/starknet/{base → chain}/StarknetAction.ts +3 -3
- package/src/starknet/chain/StarknetChainInterface.ts +149 -0
- package/src/starknet/{base → chain}/StarknetModule.ts +3 -3
- package/src/starknet/{base → chain}/modules/StarknetAddresses.ts +1 -1
- package/src/starknet/{base → chain}/modules/StarknetSignatures.ts +2 -2
- package/src/starknet/{base → chain}/modules/StarknetTokens.ts +2 -1
- package/src/starknet/{base → chain}/modules/StarknetTransactions.ts +43 -18
- package/src/starknet/contract/StarknetContractBase.ts +9 -12
- package/src/starknet/contract/StarknetContractModule.ts +16 -0
- package/src/starknet/contract/modules/StarknetContractEvents.ts +33 -7
- package/src/starknet/events/StarknetChainEvents.ts +15 -11
- package/src/starknet/events/StarknetChainEventsBrowser.ts +159 -26
- package/src/starknet/provider/RpcProviderWithRetries.ts +43 -0
- package/src/starknet/spv_swap/SpvVaultContractAbi.ts +656 -0
- package/src/starknet/spv_swap/StarknetSpvVaultContract.ts +475 -0
- package/src/starknet/spv_swap/StarknetSpvVaultData.ts +194 -0
- package/src/starknet/spv_swap/StarknetSpvWithdrawalData.ts +68 -0
- package/src/starknet/swaps/StarknetSwapContract.ts +28 -116
- package/src/starknet/swaps/StarknetSwapModule.ts +8 -8
- package/src/starknet/swaps/handlers/IHandler.ts +2 -2
- package/src/starknet/swaps/handlers/claim/ClaimHandlers.ts +1 -1
- package/src/starknet/swaps/handlers/claim/HashlockClaimHandler.ts +2 -2
- package/src/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.ts +2 -2
- package/src/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.ts +2 -2
- package/src/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.ts +2 -2
- package/src/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.ts +12 -61
- package/src/starknet/swaps/handlers/refund/TimelockRefundHandler.ts +2 -2
- package/src/starknet/swaps/modules/StarknetLpVault.ts +10 -10
- package/src/starknet/swaps/modules/StarknetSwapClaim.ts +9 -9
- package/src/starknet/swaps/modules/StarknetSwapInit.ts +10 -10
- package/src/starknet/swaps/modules/StarknetSwapRefund.ts +9 -13
- package/src/starknet/wallet/StarknetSigner.ts +1 -1
- package/src/utils/Utils.ts +4 -3
- package/dist/starknet/base/StarknetBase.d.ts +0 -34
- package/dist/starknet/base/StarknetBase.js +0 -29
- package/src/starknet/base/StarknetBase.ts +0 -56
- /package/dist/starknet/{base → chain}/StarknetAction.js +0 -0
- /package/dist/starknet/{base → chain}/StarknetModule.js +0 -0
- /package/dist/starknet/{base → chain}/modules/ERC20Abi.d.ts +0 -0
- /package/dist/starknet/{base → chain}/modules/ERC20Abi.js +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetAccounts.d.ts +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetAccounts.js +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetBlocks.d.ts +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetBlocks.js +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetEvents.d.ts +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetEvents.js +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetFees.d.ts +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetFees.js +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetSignatures.js +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetTokens.d.ts +0 -0
- /package/src/starknet/{base → chain}/modules/ERC20Abi.ts +0 -0
- /package/src/starknet/{base → chain}/modules/StarknetAccounts.ts +0 -0
- /package/src/starknet/{base → chain}/modules/StarknetBlocks.ts +0 -0
- /package/src/starknet/{base → chain}/modules/StarknetEvents.ts +0 -0
- /package/src/starknet/{base → chain}/modules/StarknetFees.ts +0 -0
|
@@ -10,14 +10,15 @@ const starknet_1 = require("starknet");
|
|
|
10
10
|
* rely purely on events
|
|
11
11
|
*/
|
|
12
12
|
class StarknetChainEventsBrowser {
|
|
13
|
-
constructor(starknetSwapContract, pollIntervalSeconds = 5) {
|
|
13
|
+
constructor(chainInterface, starknetSwapContract, starknetSpvVaultContract, pollIntervalSeconds = 5) {
|
|
14
14
|
this.listeners = [];
|
|
15
15
|
this.eventListeners = [];
|
|
16
16
|
this.logger = (0, Utils_1.getLogger)("StarknetChainEventsBrowser: ");
|
|
17
17
|
this.initFunctionName = "initialize";
|
|
18
18
|
this.initEntryPointSelector = BigInt(starknet_1.hash.starknetKeccak(this.initFunctionName));
|
|
19
|
-
this.provider =
|
|
19
|
+
this.provider = chainInterface.provider;
|
|
20
20
|
this.starknetSwapContract = starknetSwapContract;
|
|
21
|
+
this.starknetSpvVaultContract = starknetSpvVaultContract;
|
|
21
22
|
this.pollIntervalSeconds = pollIntervalSeconds;
|
|
22
23
|
}
|
|
23
24
|
findInitSwapData(call, escrowHash, claimHandler) {
|
|
@@ -90,6 +91,55 @@ class StarknetChainEventsBrowser {
|
|
|
90
91
|
" witnessResult: " + witnessResult + " escrowHash: " + escrowHash);
|
|
91
92
|
return new base_1.ClaimEvent(escrowHash, witnessResult);
|
|
92
93
|
}
|
|
94
|
+
parseSpvOpenEvent(event) {
|
|
95
|
+
const owner = (0, Utils_1.toHex)(event.params.owner);
|
|
96
|
+
const vaultId = (0, Utils_1.toBigInt)(event.params.vault_id);
|
|
97
|
+
const btcTxId = (0, Utils_1.bigNumberishToBuffer)(event.params.btc_tx_hash, 32).reverse().toString("hex");
|
|
98
|
+
const vout = Number((0, Utils_1.toBigInt)(event.params.vout));
|
|
99
|
+
this.logger.debug("SpvOpenEvent owner: " + owner + " vaultId: " + vaultId + " utxo: " + btcTxId + ":" + vout);
|
|
100
|
+
return new base_1.SpvVaultOpenEvent(owner, vaultId, btcTxId, vout);
|
|
101
|
+
}
|
|
102
|
+
parseSpvDepositEvent(event) {
|
|
103
|
+
const owner = (0, Utils_1.toHex)(event.params.owner);
|
|
104
|
+
const vaultId = (0, Utils_1.toBigInt)(event.params.vault_id);
|
|
105
|
+
const amounts = [(0, Utils_1.toBigInt)(event.params.amounts["0"]), (0, Utils_1.toBigInt)(event.params.amounts["1"])];
|
|
106
|
+
const depositCount = Number((0, Utils_1.toBigInt)(event.params.deposit_count));
|
|
107
|
+
this.logger.debug("SpvDepositEvent owner: " + owner + " vaultId: " + vaultId + " depositCount: " + depositCount + " amounts: ", amounts);
|
|
108
|
+
return new base_1.SpvVaultDepositEvent(owner, vaultId, amounts, depositCount);
|
|
109
|
+
}
|
|
110
|
+
parseSpvFrontEvent(event) {
|
|
111
|
+
const owner = (0, Utils_1.toHex)(event.params.owner);
|
|
112
|
+
const vaultId = (0, Utils_1.toBigInt)(event.params.vault_id);
|
|
113
|
+
const btcTxId = (0, Utils_1.bigNumberishToBuffer)(event.params.btc_tx_hash, 32).reverse().toString("hex");
|
|
114
|
+
const recipient = (0, Utils_1.toHex)(event.params.recipient);
|
|
115
|
+
const executionHash = (0, Utils_1.toHex)(event.params.execution_hash);
|
|
116
|
+
const amounts = [(0, Utils_1.toBigInt)(event.params.amounts["0"]), (0, Utils_1.toBigInt)(event.params.amounts["1"])];
|
|
117
|
+
const frontingAddress = (0, Utils_1.toHex)(event.params.caller);
|
|
118
|
+
this.logger.debug("SpvFrontEvent owner: " + owner + " vaultId: " + vaultId + " btcTxId: " + btcTxId +
|
|
119
|
+
" recipient: " + recipient + " frontedBy: " + frontingAddress + " amounts: ", amounts);
|
|
120
|
+
return new base_1.SpvVaultFrontEvent(owner, vaultId, btcTxId, recipient, executionHash, amounts, frontingAddress);
|
|
121
|
+
}
|
|
122
|
+
parseSpvClaimEvent(event) {
|
|
123
|
+
const owner = (0, Utils_1.toHex)(event.params.owner);
|
|
124
|
+
const vaultId = (0, Utils_1.toBigInt)(event.params.vault_id);
|
|
125
|
+
const btcTxId = (0, Utils_1.bigNumberishToBuffer)(event.params.btc_tx_hash, 32).reverse().toString("hex");
|
|
126
|
+
const recipient = (0, Utils_1.toHex)(event.params.recipient);
|
|
127
|
+
const executionHash = (0, Utils_1.toHex)(event.params.execution_hash);
|
|
128
|
+
const amounts = [(0, Utils_1.toBigInt)(event.params.amounts["0"]), (0, Utils_1.toBigInt)(event.params.amounts["1"])];
|
|
129
|
+
const caller = (0, Utils_1.toHex)(event.params.caller);
|
|
130
|
+
const frontingAddress = (0, Utils_1.toHex)(event.params.fronting_address);
|
|
131
|
+
const withdrawCount = Number((0, Utils_1.toBigInt)(event.params.withdraw_count));
|
|
132
|
+
this.logger.debug("SpvClaimEvent owner: " + owner + " vaultId: " + vaultId + " btcTxId: " + btcTxId + " withdrawCount: " + withdrawCount +
|
|
133
|
+
" recipient: " + recipient + " frontedBy: " + frontingAddress + " claimedBy: " + caller + " amounts: ", amounts);
|
|
134
|
+
return new base_1.SpvVaultClaimEvent(owner, vaultId, btcTxId, recipient, executionHash, amounts, caller, frontingAddress, withdrawCount);
|
|
135
|
+
}
|
|
136
|
+
parseSpvCloseEvent(event) {
|
|
137
|
+
const owner = (0, Utils_1.toHex)(event.params.owner);
|
|
138
|
+
const vaultId = (0, Utils_1.toBigInt)(event.params.vault_id);
|
|
139
|
+
const btcTxId = (0, Utils_1.bigNumberishToBuffer)(event.params.btc_tx_hash, 32).reverse().toString("hex");
|
|
140
|
+
const error = (0, Utils_1.bigNumberishToBuffer)(event.params.error).toString();
|
|
141
|
+
return new base_1.SpvVaultCloseEvent(owner, vaultId, btcTxId, error);
|
|
142
|
+
}
|
|
93
143
|
/**
|
|
94
144
|
* Processes event as received from the chain, parses it & calls event listeners
|
|
95
145
|
*
|
|
@@ -121,6 +171,21 @@ class StarknetChainEventsBrowser {
|
|
|
121
171
|
case "escrow_manager::events::Initialize":
|
|
122
172
|
parsedEvent = this.parseInitializeEvent(event);
|
|
123
173
|
break;
|
|
174
|
+
case "spv_swap_vault::events::Opened":
|
|
175
|
+
parsedEvent = this.parseSpvOpenEvent(event);
|
|
176
|
+
break;
|
|
177
|
+
case "spv_swap_vault::events::Deposited":
|
|
178
|
+
parsedEvent = this.parseSpvDepositEvent(event);
|
|
179
|
+
break;
|
|
180
|
+
case "spv_swap_vault::events::Fronted":
|
|
181
|
+
parsedEvent = this.parseSpvFrontEvent(event);
|
|
182
|
+
break;
|
|
183
|
+
case "spv_swap_vault::events::Claimed":
|
|
184
|
+
parsedEvent = this.parseSpvClaimEvent(event);
|
|
185
|
+
break;
|
|
186
|
+
case "spv_swap_vault::events::Closed":
|
|
187
|
+
parsedEvent = this.parseSpvCloseEvent(event);
|
|
188
|
+
break;
|
|
124
189
|
}
|
|
125
190
|
const timestamp = event.blockNumber == null ? pendingEventTime : await getBlockTimestamp(event.blockNumber);
|
|
126
191
|
parsedEvent.meta = {
|
|
@@ -134,26 +199,54 @@ class StarknetChainEventsBrowser {
|
|
|
134
199
|
await listener(parsedEvents);
|
|
135
200
|
}
|
|
136
201
|
}
|
|
137
|
-
async
|
|
138
|
-
const
|
|
202
|
+
async checkEventsEcrowManager(lastTxHash, lastBlockNumber, currentBlock) {
|
|
203
|
+
const currentBlockNumber = currentBlock.block_number;
|
|
204
|
+
lastBlockNumber ?? (lastBlockNumber = currentBlockNumber);
|
|
205
|
+
const logStartHeight = currentBlockNumber > lastBlockNumber ? lastBlockNumber + 1 : lastBlockNumber;
|
|
206
|
+
this.logger.debug("checkEvents(EscrowManager): Requesting logs: " + logStartHeight + "...pending");
|
|
207
|
+
let events = await this.starknetSwapContract.Events.getContractBlockEvents(["escrow_manager::events::Initialize", "escrow_manager::events::Claim", "escrow_manager::events::Refund"], [], logStartHeight, null);
|
|
208
|
+
if (lastTxHash != null) {
|
|
209
|
+
const latestProcessedEventIndex = (0, Utils_1.findLastIndex)(events, val => val.txHash === lastTxHash);
|
|
210
|
+
if (latestProcessedEventIndex !== -1) {
|
|
211
|
+
events.splice(0, latestProcessedEventIndex + 1);
|
|
212
|
+
this.logger.debug("checkEvents(EscrowManager): Splicing processed events, resulting size: " + events.length);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
if (events.length > 0) {
|
|
216
|
+
await this.processEvents(events, currentBlock?.block_number, currentBlock?.timestamp, Math.floor(Date.now() / 1000));
|
|
217
|
+
lastTxHash = events[events.length - 1].txHash;
|
|
218
|
+
}
|
|
219
|
+
return lastTxHash;
|
|
220
|
+
}
|
|
221
|
+
async checkEventsSpvVaults(lastTxHash, lastBlockNumber, currentBlock) {
|
|
139
222
|
const currentBlockNumber = currentBlock.block_number;
|
|
140
223
|
lastBlockNumber ?? (lastBlockNumber = currentBlockNumber);
|
|
141
224
|
const logStartHeight = currentBlockNumber > lastBlockNumber ? lastBlockNumber + 1 : lastBlockNumber;
|
|
142
|
-
this.logger.debug("checkEvents(): Requesting logs: " + logStartHeight + "...pending");
|
|
143
|
-
|
|
225
|
+
this.logger.debug("checkEvents(SpvVaults): Requesting logs: " + logStartHeight + "...pending");
|
|
226
|
+
let events = await this.starknetSpvVaultContract.Events.getContractBlockEvents(["spv_swap_vault::events::Opened", "spv_swap_vault::events::Deposited", "spv_swap_vault::events::Closed", "spv_swap_vault::events::Fronted", "spv_swap_vault::events::Claimed"], [], logStartHeight, null);
|
|
144
227
|
if (lastTxHash != null) {
|
|
145
228
|
const latestProcessedEventIndex = (0, Utils_1.findLastIndex)(events, val => val.txHash === lastTxHash);
|
|
146
229
|
if (latestProcessedEventIndex !== -1) {
|
|
147
230
|
events.splice(0, latestProcessedEventIndex + 1);
|
|
148
|
-
this.logger.debug("checkEvents(): Splicing processed events, resulting size: " + events.length);
|
|
231
|
+
this.logger.debug("checkEvents(SpvVaults): Splicing processed events, resulting size: " + events.length);
|
|
149
232
|
}
|
|
150
233
|
}
|
|
151
234
|
if (events.length > 0) {
|
|
152
|
-
await this.processEvents(events,
|
|
235
|
+
await this.processEvents(events, currentBlock?.block_number, currentBlock?.timestamp, Math.floor(Date.now() / 1000));
|
|
153
236
|
lastTxHash = events[events.length - 1].txHash;
|
|
154
237
|
}
|
|
238
|
+
return lastTxHash;
|
|
239
|
+
}
|
|
240
|
+
async checkEvents(lastBlockNumber, lastTxHashes) {
|
|
241
|
+
lastTxHashes ?? (lastTxHashes = []);
|
|
242
|
+
const currentBlock = await this.provider.getBlockWithTxHashes("latest");
|
|
243
|
+
const currentBlockNumber = currentBlock.block_number;
|
|
244
|
+
if (lastBlockNumber != null && currentBlockNumber > lastBlockNumber) {
|
|
245
|
+
lastTxHashes[0] = await this.checkEventsEcrowManager(lastTxHashes[0], lastBlockNumber, currentBlock);
|
|
246
|
+
lastTxHashes[1] = await this.checkEventsSpvVaults(lastTxHashes[1], lastBlockNumber, currentBlock);
|
|
247
|
+
}
|
|
155
248
|
return {
|
|
156
|
-
|
|
249
|
+
txHashes: lastTxHashes,
|
|
157
250
|
blockNumber: currentBlockNumber
|
|
158
251
|
};
|
|
159
252
|
}
|
|
@@ -162,15 +255,15 @@ class StarknetChainEventsBrowser {
|
|
|
162
255
|
*
|
|
163
256
|
* @protected
|
|
164
257
|
*/
|
|
165
|
-
async setupPoll(lastBlockNumber,
|
|
258
|
+
async setupPoll(lastBlockNumber, lastTxHashes, saveLatestProcessedBlockNumber) {
|
|
166
259
|
this.stopped = false;
|
|
167
260
|
let func;
|
|
168
261
|
func = async () => {
|
|
169
|
-
await this.checkEvents(lastBlockNumber,
|
|
262
|
+
await this.checkEvents(lastBlockNumber, lastTxHashes).then(({ blockNumber, txHashes }) => {
|
|
170
263
|
lastBlockNumber = blockNumber;
|
|
171
|
-
|
|
264
|
+
lastTxHashes = txHashes;
|
|
172
265
|
if (saveLatestProcessedBlockNumber != null)
|
|
173
|
-
return saveLatestProcessedBlockNumber(blockNumber,
|
|
266
|
+
return saveLatestProcessedBlockNumber(blockNumber, lastTxHashes);
|
|
174
267
|
}).catch(e => {
|
|
175
268
|
this.logger.error("setupPoll(): Failed to fetch starknet log: ", e);
|
|
176
269
|
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { RpcChannel, RpcProvider, RpcProviderOptions } from "starknet";
|
|
2
|
+
export declare class RpcChannelWithRetries extends RpcChannel {
|
|
3
|
+
readonly retryPolicy?: {
|
|
4
|
+
maxRetries?: number;
|
|
5
|
+
delay?: number;
|
|
6
|
+
exponential?: boolean;
|
|
7
|
+
};
|
|
8
|
+
constructor(options?: RpcProviderOptions, retryPolicy?: {
|
|
9
|
+
maxRetries?: number;
|
|
10
|
+
delay?: number;
|
|
11
|
+
exponential?: boolean;
|
|
12
|
+
});
|
|
13
|
+
protected fetchEndpoint(method: any, params?: any): Promise<any>;
|
|
14
|
+
}
|
|
15
|
+
export declare class RpcProviderWithRetries extends RpcProvider {
|
|
16
|
+
constructor(options?: RpcProviderOptions, retryPolicy?: {
|
|
17
|
+
maxRetries?: number;
|
|
18
|
+
delay?: number;
|
|
19
|
+
exponential?: boolean;
|
|
20
|
+
});
|
|
21
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RpcProviderWithRetries = exports.RpcChannelWithRetries = void 0;
|
|
4
|
+
const starknet_1 = require("starknet");
|
|
5
|
+
const Utils_1 = require("../../utils/Utils");
|
|
6
|
+
class RpcChannelWithRetries extends starknet_1.RpcChannel {
|
|
7
|
+
constructor(options, retryPolicy) {
|
|
8
|
+
super(options);
|
|
9
|
+
this.retryPolicy = retryPolicy;
|
|
10
|
+
}
|
|
11
|
+
fetchEndpoint(method, params) {
|
|
12
|
+
return (0, Utils_1.tryWithRetries)(() => super.fetchEndpoint(method, params), this.retryPolicy, e => {
|
|
13
|
+
if (!e.message.startsWith("RPC: "))
|
|
14
|
+
return false;
|
|
15
|
+
const arr = e.message.split("\n");
|
|
16
|
+
const errorCode = parseInt(arr[arr.length - 1]);
|
|
17
|
+
if (isNaN(errorCode))
|
|
18
|
+
return false;
|
|
19
|
+
if (errorCode < 0)
|
|
20
|
+
return false; //Not defined error, e.g. Rate limit (-32097)
|
|
21
|
+
return true;
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.RpcChannelWithRetries = RpcChannelWithRetries;
|
|
26
|
+
class RpcProviderWithRetries extends starknet_1.RpcProvider {
|
|
27
|
+
constructor(options, retryPolicy) {
|
|
28
|
+
super(options);
|
|
29
|
+
this.channel = new RpcChannelWithRetries({ ...options, waitMode: false }, retryPolicy);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.RpcProviderWithRetries = RpcProviderWithRetries;
|