@atomiqlabs/chain-starknet 1.0.9 → 2.0.0-beta.1
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 +104 -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 +157 -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,52 @@ class StarknetChainEventsBrowser {
|
|
|
134
199
|
await listener(parsedEvents);
|
|
135
200
|
}
|
|
136
201
|
}
|
|
137
|
-
async
|
|
138
|
-
const currentBlock = await this.provider.getBlockWithTxHashes("latest");
|
|
202
|
+
async checkEventsEcrowManager(lastTxHash, lastBlockNumber, currentBlock) {
|
|
139
203
|
const currentBlockNumber = currentBlock.block_number;
|
|
140
204
|
lastBlockNumber ?? (lastBlockNumber = currentBlockNumber);
|
|
141
205
|
const logStartHeight = currentBlockNumber > lastBlockNumber ? lastBlockNumber + 1 : lastBlockNumber;
|
|
142
|
-
this.logger.debug("checkEvents(): Requesting logs: " + logStartHeight + "...pending");
|
|
143
|
-
|
|
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);
|
|
144
208
|
if (lastTxHash != null) {
|
|
145
209
|
const latestProcessedEventIndex = (0, Utils_1.findLastIndex)(events, val => val.txHash === lastTxHash);
|
|
146
210
|
if (latestProcessedEventIndex !== -1) {
|
|
147
211
|
events.splice(0, latestProcessedEventIndex + 1);
|
|
148
|
-
this.logger.debug("checkEvents(): Splicing processed events, resulting size: " + events.length);
|
|
212
|
+
this.logger.debug("checkEvents(EscrowManager): Splicing processed events, resulting size: " + events.length);
|
|
149
213
|
}
|
|
150
214
|
}
|
|
151
215
|
if (events.length > 0) {
|
|
152
|
-
await this.processEvents(events,
|
|
216
|
+
await this.processEvents(events, currentBlock?.block_number, currentBlock?.timestamp, Math.floor(Date.now() / 1000));
|
|
153
217
|
lastTxHash = events[events.length - 1].txHash;
|
|
154
218
|
}
|
|
219
|
+
return lastTxHash;
|
|
220
|
+
}
|
|
221
|
+
async checkEventsSpvVaults(lastTxHash, lastBlockNumber, currentBlock) {
|
|
222
|
+
const currentBlockNumber = currentBlock.block_number;
|
|
223
|
+
lastBlockNumber ?? (lastBlockNumber = currentBlockNumber);
|
|
224
|
+
const logStartHeight = currentBlockNumber > lastBlockNumber ? lastBlockNumber + 1 : lastBlockNumber;
|
|
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);
|
|
227
|
+
if (lastTxHash != null) {
|
|
228
|
+
const latestProcessedEventIndex = (0, Utils_1.findLastIndex)(events, val => val.txHash === lastTxHash);
|
|
229
|
+
if (latestProcessedEventIndex !== -1) {
|
|
230
|
+
events.splice(0, latestProcessedEventIndex + 1);
|
|
231
|
+
this.logger.debug("checkEvents(SpvVaults): Splicing processed events, resulting size: " + events.length);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
if (events.length > 0) {
|
|
235
|
+
await this.processEvents(events, currentBlock?.block_number, currentBlock?.timestamp, Math.floor(Date.now() / 1000));
|
|
236
|
+
lastTxHash = events[events.length - 1].txHash;
|
|
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
|
+
lastTxHashes[0] = await this.checkEventsEcrowManager(lastTxHashes[0], lastBlockNumber, currentBlock);
|
|
245
|
+
lastTxHashes[1] = await this.checkEventsSpvVaults(lastTxHashes[1], lastBlockNumber, currentBlock);
|
|
155
246
|
return {
|
|
156
|
-
|
|
247
|
+
txHashes: lastTxHashes,
|
|
157
248
|
blockNumber: currentBlockNumber
|
|
158
249
|
};
|
|
159
250
|
}
|
|
@@ -162,15 +253,15 @@ class StarknetChainEventsBrowser {
|
|
|
162
253
|
*
|
|
163
254
|
* @protected
|
|
164
255
|
*/
|
|
165
|
-
async setupPoll(lastBlockNumber,
|
|
256
|
+
async setupPoll(lastBlockNumber, lastTxHashes, saveLatestProcessedBlockNumber) {
|
|
166
257
|
this.stopped = false;
|
|
167
258
|
let func;
|
|
168
259
|
func = async () => {
|
|
169
|
-
await this.checkEvents(lastBlockNumber,
|
|
260
|
+
await this.checkEvents(lastBlockNumber, lastTxHashes).then(({ blockNumber, txHashes }) => {
|
|
170
261
|
lastBlockNumber = blockNumber;
|
|
171
|
-
|
|
262
|
+
lastTxHashes = txHashes;
|
|
172
263
|
if (saveLatestProcessedBlockNumber != null)
|
|
173
|
-
return saveLatestProcessedBlockNumber(blockNumber,
|
|
264
|
+
return saveLatestProcessedBlockNumber(blockNumber, lastTxHashes);
|
|
174
265
|
}).catch(e => {
|
|
175
266
|
this.logger.error("setupPoll(): Failed to fetch starknet log: ", e);
|
|
176
267
|
});
|
|
@@ -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;
|