@atomiqlabs/chain-starknet 1.0.3 → 1.0.5

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.
@@ -3,7 +3,7 @@ import { StarknetFees } from "./base/modules/StarknetFees";
3
3
  import { StarknetRetryPolicy } from "./base/StarknetBase";
4
4
  import { BaseTokenType, BitcoinNetwork, BitcoinRpc, ChainData, ChainInitializer } from "@atomiqlabs/base";
5
5
  import { StarknetChainType } from "./StarknetChainType";
6
- export type StarknetAssetsType = BaseTokenType<"ETH" | "STRK">;
6
+ export type StarknetAssetsType = BaseTokenType<"ETH" | "STRK" | "WBTC">;
7
7
  export declare const StarknetAssets: StarknetAssetsType;
8
8
  export type StarknetOptions = {
9
9
  rpcUrl: string | Provider;
@@ -18,6 +18,10 @@ exports.StarknetAssets = {
18
18
  address: "0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d",
19
19
  decimals: 18,
20
20
  displayDecimals: 9
21
+ },
22
+ WBTC: {
23
+ address: "0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac",
24
+ decimals: 8
21
25
  }
22
26
  };
23
27
  function initializeStarknet(options, bitcoinRpc, network) {
@@ -25,8 +25,8 @@ function serializeBlockHeader(e) {
25
25
  const GAS_PER_BLOCKHEADER = 750;
26
26
  const GAS_PER_BLOCKHEADER_FORK = 750;
27
27
  const btcRelayAddreses = {
28
- [starknet_1.constants.StarknetChainId.SN_SEPOLIA]: "0x032afcea912ba13f6a1878fe38af23eaec3e6b4c7db31a3571550d3cf80d3e31",
29
- [starknet_1.constants.StarknetChainId.SN_MAIN]: "0x05cc69b09e8c53520f9e328f6eca72cf02fe46ce290b757d42414e2238001603"
28
+ [starknet_1.constants.StarknetChainId.SN_SEPOLIA]: "0x039840c19fae41675e18c967a2ac13b709657893551eca54e175ee4fdf4b453d",
29
+ [starknet_1.constants.StarknetChainId.SN_MAIN]: "0x057b14a4231b82f1e525ff35a722d893ca3dd2bde0baa6cee97937c5be861dbc"
30
30
  };
31
31
  function serializeCalldata(headers, storedHeader, span) {
32
32
  span.push((0, Utils_1.toHex)(headers.length));
@@ -12,33 +12,6 @@ export declare const EscrowManagerAbi: readonly [{
12
12
  readonly name: "high";
13
13
  readonly type: "core::integer::u128";
14
14
  }];
15
- }, {
16
- readonly type: "struct";
17
- readonly name: "core::array::Span::<core::felt252>";
18
- readonly members: readonly [{
19
- readonly name: "snapshot";
20
- readonly type: "@core::array::Array::<core::felt252>";
21
- }];
22
- }, {
23
- readonly type: "struct";
24
- readonly name: "escrow_manager::structs::contract_call::ContractCall";
25
- readonly members: readonly [{
26
- readonly name: "address";
27
- readonly type: "core::starknet::contract_address::ContractAddress";
28
- }, {
29
- readonly name: "entrypoint";
30
- readonly type: "core::felt252";
31
- }, {
32
- readonly name: "calldata";
33
- readonly type: "core::array::Span::<core::felt252>";
34
- }];
35
- }, {
36
- readonly type: "struct";
37
- readonly name: "core::array::Span::<escrow_manager::structs::contract_call::ContractCall>";
38
- readonly members: readonly [{
39
- readonly name: "snapshot";
40
- readonly type: "@core::array::Array::<escrow_manager::structs::contract_call::ContractCall>";
41
- }];
42
15
  }, {
43
16
  readonly type: "struct";
44
17
  readonly name: "escrow_manager::structs::escrow::EscrowData";
@@ -78,9 +51,13 @@ export declare const EscrowManagerAbi: readonly [{
78
51
  }, {
79
52
  readonly name: "claimer_bounty";
80
53
  readonly type: "core::integer::u256";
81
- }, {
82
- readonly name: "success_action";
83
- readonly type: "core::array::Span::<escrow_manager::structs::contract_call::ContractCall>";
54
+ }];
55
+ }, {
56
+ readonly type: "struct";
57
+ readonly name: "core::array::Span::<core::felt252>";
58
+ readonly members: readonly [{
59
+ readonly name: "snapshot";
60
+ readonly type: "@core::array::Array::<core::felt252>";
84
61
  }];
85
62
  }, {
86
63
  readonly type: "interface";
@@ -293,10 +270,6 @@ export declare const EscrowManagerAbi: readonly [{
293
270
  }];
294
271
  readonly state_mutability: "view";
295
272
  }];
296
- }, {
297
- readonly type: "constructor";
298
- readonly name: "constructor";
299
- readonly inputs: readonly [];
300
273
  }, {
301
274
  readonly type: "event";
302
275
  readonly name: "escrow_manager::components::lp_vault::lp_vault::Event";
@@ -399,15 +372,6 @@ export declare const EscrowManagerAbi: readonly [{
399
372
  readonly type: "core::starknet::contract_address::ContractAddress";
400
373
  readonly kind: "data";
401
374
  }];
402
- }, {
403
- readonly type: "event";
404
- readonly name: "escrow_manager::events::SuccessActionExecuteError";
405
- readonly kind: "struct";
406
- readonly members: readonly [{
407
- readonly name: "error";
408
- readonly type: "core::array::Span::<core::felt252>";
409
- readonly kind: "data";
410
- }];
411
375
  }, {
412
376
  readonly type: "event";
413
377
  readonly name: "escrow_manager::EscrowManager::Event";
@@ -436,10 +400,6 @@ export declare const EscrowManagerAbi: readonly [{
436
400
  readonly name: "Refund";
437
401
  readonly type: "escrow_manager::events::Refund";
438
402
  readonly kind: "nested";
439
- }, {
440
- readonly name: "SuccessActionExecuteError";
441
- readonly type: "escrow_manager::events::SuccessActionExecuteError";
442
- readonly kind: "nested";
443
403
  }];
444
404
  }];
445
405
  export type EscrowManagerAbiType = typeof EscrowManagerAbi;
@@ -21,44 +21,6 @@ exports.EscrowManagerAbi = [
21
21
  }
22
22
  ]
23
23
  },
24
- {
25
- "type": "struct",
26
- "name": "core::array::Span::<core::felt252>",
27
- "members": [
28
- {
29
- "name": "snapshot",
30
- "type": "@core::array::Array::<core::felt252>"
31
- }
32
- ]
33
- },
34
- {
35
- "type": "struct",
36
- "name": "escrow_manager::structs::contract_call::ContractCall",
37
- "members": [
38
- {
39
- "name": "address",
40
- "type": "core::starknet::contract_address::ContractAddress"
41
- },
42
- {
43
- "name": "entrypoint",
44
- "type": "core::felt252"
45
- },
46
- {
47
- "name": "calldata",
48
- "type": "core::array::Span::<core::felt252>"
49
- }
50
- ]
51
- },
52
- {
53
- "type": "struct",
54
- "name": "core::array::Span::<escrow_manager::structs::contract_call::ContractCall>",
55
- "members": [
56
- {
57
- "name": "snapshot",
58
- "type": "@core::array::Array::<escrow_manager::structs::contract_call::ContractCall>"
59
- }
60
- ]
61
- },
62
24
  {
63
25
  "type": "struct",
64
26
  "name": "escrow_manager::structs::escrow::EscrowData",
@@ -110,10 +72,16 @@ exports.EscrowManagerAbi = [
110
72
  {
111
73
  "name": "claimer_bounty",
112
74
  "type": "core::integer::u256"
113
- },
75
+ }
76
+ ]
77
+ },
78
+ {
79
+ "type": "struct",
80
+ "name": "core::array::Span::<core::felt252>",
81
+ "members": [
114
82
  {
115
- "name": "success_action",
116
- "type": "core::array::Span::<escrow_manager::structs::contract_call::ContractCall>"
83
+ "name": "snapshot",
84
+ "type": "@core::array::Array::<core::felt252>"
117
85
  }
118
86
  ]
119
87
  },
@@ -410,11 +378,6 @@ exports.EscrowManagerAbi = [
410
378
  }
411
379
  ]
412
380
  },
413
- {
414
- "type": "constructor",
415
- "name": "constructor",
416
- "inputs": []
417
- },
418
381
  {
419
382
  "type": "event",
420
383
  "name": "escrow_manager::components::lp_vault::lp_vault::Event",
@@ -544,18 +507,6 @@ exports.EscrowManagerAbi = [
544
507
  }
545
508
  ]
546
509
  },
547
- {
548
- "type": "event",
549
- "name": "escrow_manager::events::SuccessActionExecuteError",
550
- "kind": "struct",
551
- "members": [
552
- {
553
- "name": "error",
554
- "type": "core::array::Span::<core::felt252>",
555
- "kind": "data"
556
- }
557
- ]
558
- },
559
510
  {
560
511
  "type": "event",
561
512
  "name": "escrow_manager::EscrowManager::Event",
@@ -590,11 +541,6 @@ exports.EscrowManagerAbi = [
590
541
  "name": "Refund",
591
542
  "type": "escrow_manager::events::Refund",
592
543
  "kind": "nested"
593
- },
594
- {
595
- "name": "SuccessActionExecuteError",
596
- "type": "escrow_manager::events::SuccessActionExecuteError",
597
- "kind": "nested"
598
544
  }
599
545
  ]
600
546
  }
@@ -22,8 +22,8 @@ const ESCROW_STATE_COMMITTED = 1;
22
22
  const ESCROW_STATE_CLAIMED = 2;
23
23
  const ESCROW_STATE_REFUNDED = 3;
24
24
  const swapContractAddreses = {
25
- [starknet_1.constants.StarknetChainId.SN_SEPOLIA]: "0x035e9a06faa09ee78d7c8f4722687e4f3c8d8094860cc5092704b26a50f8a43f",
26
- [starknet_1.constants.StarknetChainId.SN_MAIN]: "0x00b30f3bf0702d2570036c786a4b329816f99eecf36368cf74da0c0dfd67634d"
25
+ [starknet_1.constants.StarknetChainId.SN_SEPOLIA]: "0x06874044dae5bbe712775cdb576d6aef45fc87a22ce629f2b101a7d591d4e7ca",
26
+ [starknet_1.constants.StarknetChainId.SN_MAIN]: "0x04fb26d02d2cf612566cd86cab299716d926272e9f49514670233952ecaf8f0c"
27
27
  };
28
28
  const defaultClaimAddresses = {
29
29
  [starknet_1.constants.StarknetChainId.SN_SEPOLIA]: {
@@ -33,18 +33,18 @@ const defaultClaimAddresses = {
33
33
  [base_1.ChainSwapType.CHAIN_NONCED]: "0x050e50eacd16da414f2c3a7c3570fd5e248974c6fe757d41acbf72d2836fa0a1"
34
34
  },
35
35
  [starknet_1.constants.StarknetChainId.SN_MAIN]: {
36
- [base_1.ChainSwapType.HTLC]: "0x0421c59a5442ccc430288c71ae606f2ca94dda7c8cd7c101f0865fa264853989",
37
- [base_1.ChainSwapType.CHAIN_TXID]: "0x03aad3b184fa6484e3f8dde6a45a2c2512460a3fb4893112694b68645b50ce2e",
38
- [base_1.ChainSwapType.CHAIN]: "0x012a938e57af955a4c96c49900731f572670bf1b7e120f99a7fe7d1f5d75cb8a",
39
- [base_1.ChainSwapType.CHAIN_NONCED]: "0x04a0cad6b9d9ed790ce3eb95bddc22663168f0d50d24adaf7495b344609874a7"
36
+ [base_1.ChainSwapType.HTLC]: "0x07b74b50a883ebee262b6db0e3c0c697670c6f30e3d610e75faf33a89c46aa2a",
37
+ [base_1.ChainSwapType.CHAIN_TXID]: "0x016c2db2b03f39cf4fd7f871035000f66b62307d9983056e33a38315da8a44dc",
38
+ [base_1.ChainSwapType.CHAIN]: "0x02c45a81c4a48d0645a0a199e620061e8a55dcc9c2b5946d050eaeeddba64e9a",
39
+ [base_1.ChainSwapType.CHAIN_NONCED]: "0x0019b5480dd7ed8ded10a09437b0a7a30b8997b4ef139deb24ff8c86f995d84f"
40
40
  }
41
41
  };
42
42
  const defaultRefundAddresses = {
43
43
  [starknet_1.constants.StarknetChainId.SN_SEPOLIA]: {
44
- timelock: "0x0726415752e78da4549e09da7824ae20b45539ca1fca71c93b349887cc0cac0d"
44
+ timelock: "0x034b8f28b3ca979036cb2849cfa3af7f67207459224b6ca5ce2474aa398ec3e7"
45
45
  },
46
46
  [starknet_1.constants.StarknetChainId.SN_MAIN]: {
47
- timelock: "0x014ceb49916bb9228d8179db0c480147fab2dab71e17cfd7eca9c214eeb427e2"
47
+ timelock: "0x06a59659990c2aefbf7239f6d911617b3ae60b79cb3364f3bd242a6ca8f4f4f7"
48
48
  }
49
49
  };
50
50
  class StarknetSwapContract extends StarknetContractBase_1.StarknetContractBase {
@@ -275,7 +275,7 @@ class StarknetSwapContract extends StarknetContractBase_1.StarknetContractBase {
275
275
  //// Swap data initializer
276
276
  createSwapData(type, offerer, claimer, token, amount, paymentHash, sequence, expiry, payIn, payOut, securityDeposit, claimerBounty, depositToken = this.Tokens.getNativeCurrencyAddress()) {
277
277
  return Promise.resolve(new StarknetSwapData_1.StarknetSwapData(offerer, claimer, token, this.timelockRefundHandler.address, this.claimHandlersBySwapType?.[type]?.address, payOut, payIn, payIn, //For now track reputation for all payIn swaps
278
- sequence, "0x" + paymentHash, (0, Utils_1.toHex)(expiry), amount, depositToken, securityDeposit, claimerBounty, type, null, []));
278
+ sequence, "0x" + paymentHash, (0, Utils_1.toHex)(expiry), amount, depositToken, securityDeposit, claimerBounty, type, null));
279
279
  }
280
280
  ////////////////////////////////////////////
281
281
  //// Utils
@@ -4,11 +4,6 @@ import { StringToPrimitiveType } from "abi-wan-kanabi/dist/kanabi";
4
4
  import { EscrowManagerAbi } from "./EscrowManagerAbi";
5
5
  import { IClaimHandler } from "./handlers/claim/ClaimHandlers";
6
6
  export type StarknetSwapDataType = StringToPrimitiveType<typeof EscrowManagerAbi, "escrow_manager::structs::escrow::EscrowData">;
7
- type SerializedContractCall = {
8
- address: string;
9
- entrypoint: string;
10
- calldata: string[];
11
- };
12
7
  export declare class StarknetSwapData extends SwapData {
13
8
  static toFlags(value: number | bigint | string): {
14
9
  payOut: boolean;
@@ -32,10 +27,9 @@ export declare class StarknetSwapData extends SwapData {
32
27
  feeToken: string;
33
28
  securityDeposit: bigint;
34
29
  claimerBounty: bigint;
35
- successAction: SerializedContractCall[];
36
30
  extraData: string;
37
31
  kind: ChainSwapType;
38
- constructor(offerer: string, claimer: string, token: string, refundHandler: string, claimHandler: string, payOut: boolean, payIn: boolean, reputation: boolean, sequence: bigint, claimData: string, refundData: string, amount: bigint, feeToken: string, securityDeposit: bigint, claimerBounty: bigint, kind: ChainSwapType, extraData: string, successAction: SerializedContractCall[]);
32
+ constructor(offerer: string, claimer: string, token: string, refundHandler: string, claimHandler: string, payOut: boolean, payIn: boolean, reputation: boolean, sequence: bigint, claimData: string, refundData: string, amount: bigint, feeToken: string, securityDeposit: bigint, claimerBounty: bigint, kind: ChainSwapType, extraData: string);
39
33
  constructor(data: any);
40
34
  getOfferer(): string;
41
35
  setOfferer(newOfferer: string): void;
@@ -71,4 +65,3 @@ export declare class StarknetSwapData extends SwapData {
71
65
  toEscrowStruct(): StarknetSwapDataType;
72
66
  static fromSerializedFeltArray(span: BigNumberish[], claimHandlerImpl: IClaimHandler<any, any>): StarknetSwapData;
73
67
  }
74
- export {};
@@ -8,32 +8,6 @@ const Utils_1 = require("../../utils/Utils");
8
8
  const FLAG_PAY_OUT = 0x01n;
9
9
  const FLAG_PAY_IN = 0x02n;
10
10
  const FLAG_REPUTATION = 0x04n;
11
- function deserializeContractCalls(span) {
12
- const successActionsLen = Number((0, Utils_1.toBigInt)(span.shift()));
13
- const successActions = [];
14
- for (let i = 0; i < successActionsLen; i++) {
15
- const address = (0, Utils_1.toHex)(span.shift());
16
- const entrypoint = (0, Utils_1.toHex)(span.shift());
17
- const calldataLen = Number((0, Utils_1.toBigInt)(span.shift()));
18
- const calldata = span.splice(0, calldataLen).map(Utils_1.toHex);
19
- successActions.push({
20
- address,
21
- entrypoint,
22
- calldata
23
- });
24
- }
25
- return successActions;
26
- }
27
- function serializeContractCalls(calls, span) {
28
- span.push((0, Utils_1.toHex)(calls.length));
29
- calls.forEach((call) => {
30
- span.push(call.address);
31
- span.push(call.entrypoint);
32
- span.push((0, Utils_1.toHex)(call.calldata.length));
33
- span.push(...call.calldata);
34
- });
35
- return span;
36
- }
37
11
  class StarknetSwapData extends base_1.SwapData {
38
12
  static toFlags(value) {
39
13
  const val = (0, Utils_1.toBigInt)(value);
@@ -50,7 +24,7 @@ class StarknetSwapData extends base_1.SwapData {
50
24
  (this.payIn ? FLAG_PAY_IN : 0n) +
51
25
  (this.reputation ? FLAG_REPUTATION : 0n);
52
26
  }
53
- constructor(offererOrData, claimer, token, refundHandler, claimHandler, payOut, payIn, reputation, sequence, claimData, refundData, amount, feeToken, securityDeposit, claimerBounty, kind, extraData, successAction) {
27
+ constructor(offererOrData, claimer, token, refundHandler, claimHandler, payOut, payIn, reputation, sequence, claimData, refundData, amount, feeToken, securityDeposit, claimerBounty, kind, extraData) {
54
28
  super();
55
29
  if (claimer != null || token != null || refundHandler != null || claimHandler != null ||
56
30
  payOut != null || payIn != null || reputation != null || sequence != null || claimData != null || refundData != null ||
@@ -72,7 +46,6 @@ class StarknetSwapData extends base_1.SwapData {
72
46
  this.claimerBounty = claimerBounty;
73
47
  this.kind = kind;
74
48
  this.extraData = extraData;
75
- this.successAction = successAction;
76
49
  }
77
50
  else {
78
51
  this.offerer = offererOrData.offerer;
@@ -92,11 +65,7 @@ class StarknetSwapData extends base_1.SwapData {
92
65
  this.claimerBounty = offererOrData.claimerBounty == null ? null : BigInt(offererOrData.claimerBounty);
93
66
  this.kind = offererOrData.kind;
94
67
  this.extraData = offererOrData.extraData;
95
- this.successAction = offererOrData.successAction;
96
68
  }
97
- //For now we disallow usage of success actions
98
- if (this.successAction.length > 0)
99
- throw new Error("Success actions are not supported yet!");
100
69
  }
101
70
  getOfferer() {
102
71
  return this.offerer;
@@ -133,8 +102,7 @@ class StarknetSwapData extends base_1.SwapData {
133
102
  securityDeposit: this.securityDeposit == null ? null : this.securityDeposit.toString(10),
134
103
  claimerBounty: this.claimerBounty == null ? null : this.claimerBounty.toString(10),
135
104
  kind: this.kind,
136
- extraData: this.extraData,
137
- successAction: this.successAction
105
+ extraData: this.extraData
138
106
  };
139
107
  }
140
108
  getAmount() {
@@ -177,8 +145,7 @@ class StarknetSwapData extends base_1.SwapData {
177
145
  securityDepositValue.low,
178
146
  securityDepositValue.high,
179
147
  claimerBountyValue.low,
180
- claimerBountyValue.high,
181
- ...serializeContractCalls(this.successAction, []).slice(1) //Remove length prefix
148
+ claimerBountyValue.high
182
149
  ]);
183
150
  if (escrowHash.startsWith("0x"))
184
151
  escrowHash = escrowHash.slice(2);
@@ -291,8 +258,7 @@ class StarknetSwapData extends base_1.SwapData {
291
258
  amount: starknet_1.cairo.uint256((0, Utils_1.toBigInt)(this.amount)),
292
259
  fee_token: this.feeToken,
293
260
  security_deposit: starknet_1.cairo.uint256((0, Utils_1.toBigInt)(this.securityDeposit)),
294
- claimer_bounty: starknet_1.cairo.uint256((0, Utils_1.toBigInt)(this.claimerBounty)),
295
- success_action: this.successAction
261
+ claimer_bounty: starknet_1.cairo.uint256((0, Utils_1.toBigInt)(this.claimerBounty))
296
262
  };
297
263
  }
298
264
  static fromSerializedFeltArray(span, claimHandlerImpl) {
@@ -308,8 +274,7 @@ class StarknetSwapData extends base_1.SwapData {
308
274
  const feeToken = (0, Utils_1.toHex)(span.shift());
309
275
  const securityDeposit = (0, Utils_1.toBigInt)({ low: span.shift(), high: span.shift() });
310
276
  const claimerBounty = (0, Utils_1.toBigInt)({ low: span.shift(), high: span.shift() });
311
- const successActions = deserializeContractCalls(span);
312
- return new StarknetSwapData(offerer, claimer, token, refundHandler, claimHandler, payOut, payIn, reputation, sequence, claimData, refundData, amount, feeToken, securityDeposit, claimerBounty, claimHandlerImpl.getType(), null, successActions);
277
+ return new StarknetSwapData(offerer, claimer, token, refundHandler, claimHandler, payOut, payIn, reputation, sequence, claimData, refundData, amount, feeToken, securityDeposit, claimerBounty, claimHandlerImpl.getType(), null);
313
278
  }
314
279
  }
315
280
  exports.StarknetSwapData = StarknetSwapData;
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.StarknetKeypairWallet = void 0;
4
4
  const starknet_1 = require("starknet");
5
5
  const Utils_1 = require("../../utils/Utils");
6
- const OZaccountClassHash = '0x061dac032f228abef9c6626f995015233097ae253a7f72d68552db02f2971b8f';
6
+ const OZaccountClassHash = '0x06e3042fbc368d30508ae7f51a7632f0fcf14a662c60f00f5e438839abcb53ee';
7
7
  //Openzeppelin Account wallet
8
8
  class StarknetKeypairWallet extends starknet_1.Account {
9
9
  constructor(provider, privateKey) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atomiqlabs/chain-starknet",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "Starknet specific base implementation",
5
5
  "main": "./dist/index.js",
6
6
  "types:": "./dist/index.d.ts",
@@ -8,7 +8,7 @@ import {BaseTokenType, BitcoinNetwork, BitcoinRpc, ChainData, ChainInitializer}
8
8
  import {StarknetChainType} from "./StarknetChainType";
9
9
  import {StarknetSwapData} from "./swaps/StarknetSwapData";
10
10
 
11
- export type StarknetAssetsType = BaseTokenType<"ETH" | "STRK">;
11
+ export type StarknetAssetsType = BaseTokenType<"ETH" | "STRK" | "WBTC">;
12
12
  export const StarknetAssets: StarknetAssetsType = {
13
13
  ETH: {
14
14
  address: "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7",
@@ -19,6 +19,10 @@ export const StarknetAssets: StarknetAssetsType = {
19
19
  address: "0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d",
20
20
  decimals: 18,
21
21
  displayDecimals: 9
22
+ },
23
+ WBTC: {
24
+ address: "0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac",
25
+ decimals: 8
22
26
  }
23
27
  } as const;
24
28
 
@@ -33,8 +33,8 @@ const GAS_PER_BLOCKHEADER = 750;
33
33
  const GAS_PER_BLOCKHEADER_FORK = 750;
34
34
 
35
35
  const btcRelayAddreses = {
36
- [constants.StarknetChainId.SN_SEPOLIA]: "0x032afcea912ba13f6a1878fe38af23eaec3e6b4c7db31a3571550d3cf80d3e31",
37
- [constants.StarknetChainId.SN_MAIN]: "0x05cc69b09e8c53520f9e328f6eca72cf02fe46ce290b757d42414e2238001603"
36
+ [constants.StarknetChainId.SN_SEPOLIA]: "0x039840c19fae41675e18c967a2ac13b709657893551eca54e175ee4fdf4b453d",
37
+ [constants.StarknetChainId.SN_MAIN]: "0x057b14a4231b82f1e525ff35a722d893ca3dd2bde0baa6cee97937c5be861dbc"
38
38
  };
39
39
 
40
40
  function serializeCalldata(headers: StarknetBtcHeader[], storedHeader: StarknetBtcStoredHeader, span: BigNumberish[]) {
@@ -18,44 +18,6 @@ export const EscrowManagerAbi = [
18
18
  }
19
19
  ]
20
20
  },
21
- {
22
- "type": "struct",
23
- "name": "core::array::Span::<core::felt252>",
24
- "members": [
25
- {
26
- "name": "snapshot",
27
- "type": "@core::array::Array::<core::felt252>"
28
- }
29
- ]
30
- },
31
- {
32
- "type": "struct",
33
- "name": "escrow_manager::structs::contract_call::ContractCall",
34
- "members": [
35
- {
36
- "name": "address",
37
- "type": "core::starknet::contract_address::ContractAddress"
38
- },
39
- {
40
- "name": "entrypoint",
41
- "type": "core::felt252"
42
- },
43
- {
44
- "name": "calldata",
45
- "type": "core::array::Span::<core::felt252>"
46
- }
47
- ]
48
- },
49
- {
50
- "type": "struct",
51
- "name": "core::array::Span::<escrow_manager::structs::contract_call::ContractCall>",
52
- "members": [
53
- {
54
- "name": "snapshot",
55
- "type": "@core::array::Array::<escrow_manager::structs::contract_call::ContractCall>"
56
- }
57
- ]
58
- },
59
21
  {
60
22
  "type": "struct",
61
23
  "name": "escrow_manager::structs::escrow::EscrowData",
@@ -107,10 +69,16 @@ export const EscrowManagerAbi = [
107
69
  {
108
70
  "name": "claimer_bounty",
109
71
  "type": "core::integer::u256"
110
- },
72
+ }
73
+ ]
74
+ },
75
+ {
76
+ "type": "struct",
77
+ "name": "core::array::Span::<core::felt252>",
78
+ "members": [
111
79
  {
112
- "name": "success_action",
113
- "type": "core::array::Span::<escrow_manager::structs::contract_call::ContractCall>"
80
+ "name": "snapshot",
81
+ "type": "@core::array::Array::<core::felt252>"
114
82
  }
115
83
  ]
116
84
  },
@@ -407,11 +375,6 @@ export const EscrowManagerAbi = [
407
375
  }
408
376
  ]
409
377
  },
410
- {
411
- "type": "constructor",
412
- "name": "constructor",
413
- "inputs": []
414
- },
415
378
  {
416
379
  "type": "event",
417
380
  "name": "escrow_manager::components::lp_vault::lp_vault::Event",
@@ -541,18 +504,6 @@ export const EscrowManagerAbi = [
541
504
  }
542
505
  ]
543
506
  },
544
- {
545
- "type": "event",
546
- "name": "escrow_manager::events::SuccessActionExecuteError",
547
- "kind": "struct",
548
- "members": [
549
- {
550
- "name": "error",
551
- "type": "core::array::Span::<core::felt252>",
552
- "kind": "data"
553
- }
554
- ]
555
- },
556
507
  {
557
508
  "type": "event",
558
509
  "name": "escrow_manager::EscrowManager::Event",
@@ -587,11 +538,6 @@ export const EscrowManagerAbi = [
587
538
  "name": "Refund",
588
539
  "type": "escrow_manager::events::Refund",
589
540
  "kind": "nested"
590
- },
591
- {
592
- "name": "SuccessActionExecuteError",
593
- "type": "escrow_manager::events::SuccessActionExecuteError",
594
- "kind": "nested"
595
541
  }
596
542
  ]
597
543
  }
@@ -35,8 +35,8 @@ const ESCROW_STATE_CLAIMED = 2;
35
35
  const ESCROW_STATE_REFUNDED = 3;
36
36
 
37
37
  const swapContractAddreses = {
38
- [constants.StarknetChainId.SN_SEPOLIA]: "0x035e9a06faa09ee78d7c8f4722687e4f3c8d8094860cc5092704b26a50f8a43f",
39
- [constants.StarknetChainId.SN_MAIN]: "0x00b30f3bf0702d2570036c786a4b329816f99eecf36368cf74da0c0dfd67634d"
38
+ [constants.StarknetChainId.SN_SEPOLIA]: "0x06874044dae5bbe712775cdb576d6aef45fc87a22ce629f2b101a7d591d4e7ca",
39
+ [constants.StarknetChainId.SN_MAIN]: "0x04fb26d02d2cf612566cd86cab299716d926272e9f49514670233952ecaf8f0c"
40
40
  };
41
41
 
42
42
  const defaultClaimAddresses = {
@@ -47,19 +47,19 @@ const defaultClaimAddresses = {
47
47
  [ChainSwapType.CHAIN_NONCED]: "0x050e50eacd16da414f2c3a7c3570fd5e248974c6fe757d41acbf72d2836fa0a1"
48
48
  },
49
49
  [constants.StarknetChainId.SN_MAIN]: {
50
- [ChainSwapType.HTLC]: "0x0421c59a5442ccc430288c71ae606f2ca94dda7c8cd7c101f0865fa264853989",
51
- [ChainSwapType.CHAIN_TXID]: "0x03aad3b184fa6484e3f8dde6a45a2c2512460a3fb4893112694b68645b50ce2e",
52
- [ChainSwapType.CHAIN]: "0x012a938e57af955a4c96c49900731f572670bf1b7e120f99a7fe7d1f5d75cb8a",
53
- [ChainSwapType.CHAIN_NONCED]: "0x04a0cad6b9d9ed790ce3eb95bddc22663168f0d50d24adaf7495b344609874a7"
50
+ [ChainSwapType.HTLC]: "0x07b74b50a883ebee262b6db0e3c0c697670c6f30e3d610e75faf33a89c46aa2a",
51
+ [ChainSwapType.CHAIN_TXID]: "0x016c2db2b03f39cf4fd7f871035000f66b62307d9983056e33a38315da8a44dc",
52
+ [ChainSwapType.CHAIN]: "0x02c45a81c4a48d0645a0a199e620061e8a55dcc9c2b5946d050eaeeddba64e9a",
53
+ [ChainSwapType.CHAIN_NONCED]: "0x0019b5480dd7ed8ded10a09437b0a7a30b8997b4ef139deb24ff8c86f995d84f"
54
54
  }
55
55
  }
56
56
 
57
57
  const defaultRefundAddresses = {
58
58
  [constants.StarknetChainId.SN_SEPOLIA]: {
59
- timelock: "0x0726415752e78da4549e09da7824ae20b45539ca1fca71c93b349887cc0cac0d"
59
+ timelock: "0x034b8f28b3ca979036cb2849cfa3af7f67207459224b6ca5ce2474aa398ec3e7"
60
60
  },
61
61
  [constants.StarknetChainId.SN_MAIN]: {
62
- timelock: "0x014ceb49916bb9228d8179db0c480147fab2dab71e17cfd7eca9c214eeb427e2"
62
+ timelock: "0x06a59659990c2aefbf7239f6d911617b3ae60b79cb3364f3bd242a6ca8f4f4f7"
63
63
  }
64
64
  }
65
65
 
@@ -377,8 +377,7 @@ export class StarknetSwapContract
377
377
  securityDeposit,
378
378
  claimerBounty,
379
379
  type,
380
- null,
381
- []
380
+ null
382
381
  ));
383
382
  }
384
383
 
@@ -14,40 +14,6 @@ const FLAG_REPUTATION: bigint = 0x04n;
14
14
 
15
15
  export type StarknetSwapDataType = StringToPrimitiveType<typeof EscrowManagerAbi, "escrow_manager::structs::escrow::EscrowData">;
16
16
 
17
- type SerializedContractCall = {
18
- address: string,
19
- entrypoint: string,
20
- calldata: string[]
21
- };
22
-
23
- function deserializeContractCalls(span: BigNumberish[]): SerializedContractCall[] {
24
- const successActionsLen = Number(toBigInt(span.shift()));
25
- const successActions: SerializedContractCall[] = [];
26
- for(let i=0; i<successActionsLen; i++) {
27
- const address = toHex(span.shift());
28
- const entrypoint = toHex(span.shift());
29
- const calldataLen = Number(toBigInt(span.shift()));
30
- const calldata = span.splice(0, calldataLen).map(toHex);
31
- successActions.push({
32
- address,
33
- entrypoint,
34
- calldata
35
- });
36
- }
37
- return successActions;
38
- }
39
-
40
- function serializeContractCalls(calls: SerializedContractCall[], span: BigNumberish[]): BigNumberish[] {
41
- span.push(toHex(calls.length));
42
- calls.forEach((call) => {
43
- span.push(call.address);
44
- span.push(call.entrypoint);
45
- span.push(toHex(call.calldata.length));
46
- span.push(...call.calldata);
47
- });
48
- return span;
49
- }
50
-
51
17
  export class StarknetSwapData extends SwapData {
52
18
 
53
19
  static toFlags(value: number | bigint | string): {payOut: boolean, payIn: boolean, reputation: boolean, sequence: bigint} {
@@ -89,8 +55,6 @@ export class StarknetSwapData extends SwapData {
89
55
  securityDeposit: bigint;
90
56
  claimerBounty: bigint;
91
57
 
92
- successAction: SerializedContractCall[];
93
-
94
58
  extraData: string;
95
59
 
96
60
  kind: ChainSwapType;
@@ -112,8 +76,7 @@ export class StarknetSwapData extends SwapData {
112
76
  securityDeposit: bigint,
113
77
  claimerBounty: bigint,
114
78
  kind: ChainSwapType,
115
- extraData: string,
116
- successAction: SerializedContractCall[]
79
+ extraData: string
117
80
  );
118
81
 
119
82
  constructor(data: any);
@@ -135,8 +98,7 @@ export class StarknetSwapData extends SwapData {
135
98
  securityDeposit?: bigint,
136
99
  claimerBounty?: bigint,
137
100
  kind?: ChainSwapType,
138
- extraData?: string,
139
- successAction?: SerializedContractCall[]
101
+ extraData?: string
140
102
  ) {
141
103
  super();
142
104
  if(claimer!=null || token!=null || refundHandler!=null || claimHandler!=null ||
@@ -159,7 +121,6 @@ export class StarknetSwapData extends SwapData {
159
121
  this.claimerBounty = claimerBounty;
160
122
  this.kind = kind;
161
123
  this.extraData = extraData;
162
- this.successAction = successAction;
163
124
  } else {
164
125
  this.offerer = offererOrData.offerer;
165
126
  this.claimer = offererOrData.claimer;
@@ -178,10 +139,7 @@ export class StarknetSwapData extends SwapData {
178
139
  this.claimerBounty = offererOrData.claimerBounty==null ? null : BigInt(offererOrData.claimerBounty);
179
140
  this.kind = offererOrData.kind;
180
141
  this.extraData = offererOrData.extraData;
181
- this.successAction = offererOrData.successAction;
182
142
  }
183
- //For now we disallow usage of success actions
184
- if(this.successAction.length>0) throw new Error("Success actions are not supported yet!");
185
143
  }
186
144
 
187
145
  getOfferer(): string {
@@ -223,8 +181,7 @@ export class StarknetSwapData extends SwapData {
223
181
  securityDeposit: this.securityDeposit==null ? null : this.securityDeposit.toString(10),
224
182
  claimerBounty: this.claimerBounty==null ? null : this.claimerBounty.toString(10),
225
183
  kind: this.kind,
226
- extraData: this.extraData,
227
- successAction: this.successAction
184
+ extraData: this.extraData
228
185
  }
229
186
  }
230
187
 
@@ -275,8 +232,7 @@ export class StarknetSwapData extends SwapData {
275
232
  securityDepositValue.low,
276
233
  securityDepositValue.high,
277
234
  claimerBountyValue.low,
278
- claimerBountyValue.high,
279
- ...serializeContractCalls(this.successAction, []).slice(1) //Remove length prefix
235
+ claimerBountyValue.high
280
236
  ]);
281
237
  if(escrowHash.startsWith("0x")) escrowHash = escrowHash.slice(2);
282
238
  return escrowHash.padStart(64, "0");
@@ -394,8 +350,7 @@ export class StarknetSwapData extends SwapData {
394
350
  amount: cairo.uint256(toBigInt(this.amount)),
395
351
  fee_token: this.feeToken,
396
352
  security_deposit: cairo.uint256(toBigInt(this.securityDeposit)),
397
- claimer_bounty: cairo.uint256(toBigInt(this.claimerBounty)),
398
- success_action: this.successAction
353
+ claimer_bounty: cairo.uint256(toBigInt(this.claimerBounty))
399
354
  }
400
355
  }
401
356
 
@@ -412,7 +367,6 @@ export class StarknetSwapData extends SwapData {
412
367
  const feeToken = toHex(span.shift());
413
368
  const securityDeposit = toBigInt({low: span.shift(), high: span.shift()});
414
369
  const claimerBounty = toBigInt({low: span.shift(), high: span.shift()});
415
- const successActions: SerializedContractCall[] = deserializeContractCalls(span)
416
370
 
417
371
  return new StarknetSwapData(
418
372
  offerer,
@@ -431,8 +385,7 @@ export class StarknetSwapData extends SwapData {
431
385
  securityDeposit,
432
386
  claimerBounty,
433
387
  claimHandlerImpl.getType(),
434
- null,
435
- successActions
388
+ null
436
389
  );
437
390
  }
438
391
 
@@ -1,7 +1,7 @@
1
1
  import {Account, CallData, DeployAccountContractPayload, ec, hash, Provider} from "starknet";
2
2
  import {toHex} from "../../utils/Utils";
3
3
 
4
- const OZaccountClassHash = '0x061dac032f228abef9c6626f995015233097ae253a7f72d68552db02f2971b8f';
4
+ const OZaccountClassHash = '0x06e3042fbc368d30508ae7f51a7632f0fcf14a662c60f00f5e438839abcb53ee';
5
5
 
6
6
  //Openzeppelin Account wallet
7
7
  export class StarknetKeypairWallet extends Account {