@atomiqlabs/chain-starknet 6.0.0-beta.1 → 6.0.0-beta.2

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.
@@ -61,7 +61,7 @@ export declare class StarknetBtcRelay<B extends BtcBlock> extends StarknetContra
61
61
  }, requiredBlockheight?: number): Promise<{
62
62
  header: StarknetBtcStoredHeader;
63
63
  height: number;
64
- } | null>;
64
+ }>;
65
65
  /**
66
66
  * Retrieves blockheader data by blockheader's commit hash,
67
67
  *
@@ -49,7 +49,18 @@ class StarknetChainEventsBrowser {
49
49
  */
50
50
  getSwapDataGetter(event, claimHandler) {
51
51
  return async () => {
52
- const trace = await this.provider.getTransactionTrace(event.txHash);
52
+ let trace;
53
+ try {
54
+ trace = await this.provider.getTransactionTrace(event.txHash);
55
+ }
56
+ catch (e) {
57
+ this.logger.warn("getSwapDataGetter(): getter: starknet_traceTransaction not supported by the RPC: ", e);
58
+ const blockTraces = await this.provider.getBlockTransactionsTraces(event.blockHash);
59
+ const foundTrace = blockTraces.find(val => (0, Utils_1.toHex)(val.transaction_hash) === (0, Utils_1.toHex)(event.txHash));
60
+ if (foundTrace == null)
61
+ throw new Error(`Cannot find ${event.txHash} in the block traces, block: ${event.blockHash}`);
62
+ trace = foundTrace.trace_root;
63
+ }
53
64
  if (trace == null)
54
65
  return null;
55
66
  if (trace.execute_invocation.revert_reason != null)
@@ -147,7 +147,7 @@ export declare class StarknetSwapContract extends StarknetContractBase<typeof Es
147
147
  txid: string;
148
148
  hex: string;
149
149
  height: number;
150
- }, requiredConfirmations: number, vout: number, commitedHeader?: StarknetBtcStoredHeader, synchronizer?: RelaySynchronizer<StarknetBtcStoredHeader, StarknetTx, any>, initAta?: boolean, feeRate?: string): Promise<StarknetTx[] | null>;
150
+ }, requiredConfirmations: number, vout: number, commitedHeader?: StarknetBtcStoredHeader, synchronizer?: RelaySynchronizer<StarknetBtcStoredHeader, StarknetTx, any>, initAta?: boolean, feeRate?: string): Promise<StarknetTx[]>;
151
151
  txsRefund(signer: string, swapData: StarknetSwapData, check?: boolean, initAta?: boolean, feeRate?: string): Promise<StarknetTx[]>;
152
152
  txsRefundWithAuthorization(signer: string, swapData: StarknetSwapData, { timeout, prefix, signature }: {
153
153
  timeout: any;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atomiqlabs/chain-starknet",
3
- "version": "6.0.0-beta.1",
3
+ "version": "6.0.0-beta.2",
4
4
  "description": "Starknet specific base implementation",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -222,7 +222,7 @@ export class StarknetBtcRelay<B extends BtcBlock>
222
222
  public async retrieveLogAndBlockheight(blockData: {blockhash: string}, requiredBlockheight?: number): Promise<{
223
223
  header: StarknetBtcStoredHeader,
224
224
  height: number
225
- } | null> {
225
+ }> {
226
226
  //TODO: we can fetch the blockheight and events in parallel
227
227
  const blockHeight = await this.getBlockHeight();
228
228
  if(requiredBlockheight!=null && blockHeight < requiredBlockheight) {
@@ -100,7 +100,16 @@ export class StarknetChainEventsBrowser implements ChainEvents<StarknetSwapData>
100
100
  claimHandler: IClaimHandler<any, any>
101
101
  ): () => Promise<StarknetSwapData> {
102
102
  return async () => {
103
- const trace: any = await this.provider.getTransactionTrace(event.txHash);
103
+ let trace: any;
104
+ try {
105
+ trace = await this.provider.getTransactionTrace(event.txHash);
106
+ } catch (e) {
107
+ this.logger.warn("getSwapDataGetter(): getter: starknet_traceTransaction not supported by the RPC: ", e);
108
+ const blockTraces: any[] = await this.provider.getBlockTransactionsTraces(event.blockHash);
109
+ const foundTrace = blockTraces.find(val => toHex(val.transaction_hash)===toHex(event.txHash));
110
+ if(foundTrace==null) throw new Error(`Cannot find ${event.txHash} in the block traces, block: ${event.blockHash}`);
111
+ trace = foundTrace.trace_root;
112
+ }
104
113
  if(trace==null) return null;
105
114
  if(trace.execute_invocation.revert_reason!=null) return null;
106
115
  return this.findInitSwapData(trace.execute_invocation as any, event.params.escrow_hash, claimHandler);
@@ -464,7 +464,7 @@ export class StarknetSwapContract
464
464
  synchronizer?: RelaySynchronizer<StarknetBtcStoredHeader, StarknetTx, any>,
465
465
  initAta?: boolean,
466
466
  feeRate?: string
467
- ): Promise<StarknetTx[] | null> {
467
+ ): Promise<StarknetTx[]> {
468
468
  return this.Claim.txsClaimWithTxData(
469
469
  typeof(signer)==="string" ? signer : signer.getAddress(),
470
470
  swapData,