@atomiqlabs/chain-starknet 5.0.2 → 5.1.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.
Files changed (68) hide show
  1. package/dist/starknet/StarknetInitializer.d.ts +9 -1
  2. package/dist/starknet/StarknetInitializer.js +8 -3
  3. package/dist/starknet/btcrelay/StarknetBtcRelay.js +5 -5
  4. package/dist/starknet/chain/StarknetAction.d.ts +2 -10
  5. package/dist/starknet/chain/StarknetAction.js +21 -21
  6. package/dist/starknet/chain/modules/StarknetAccounts.js +1 -1
  7. package/dist/starknet/chain/modules/StarknetFees.d.ts +30 -8
  8. package/dist/starknet/chain/modules/StarknetFees.js +40 -26
  9. package/dist/starknet/chain/modules/StarknetSignatures.js +1 -1
  10. package/dist/starknet/chain/modules/StarknetTokens.d.ts +6 -4
  11. package/dist/starknet/chain/modules/StarknetTokens.js +2 -2
  12. package/dist/starknet/chain/modules/StarknetTransactions.js +2 -2
  13. package/dist/starknet/events/StarknetChainEventsBrowser.d.ts +1 -2
  14. package/dist/starknet/events/StarknetChainEventsBrowser.js +1 -3
  15. package/dist/starknet/spv_swap/StarknetSpvVaultContract.js +8 -8
  16. package/dist/starknet/spv_swap/StarknetSpvVaultData.js +1 -0
  17. package/dist/starknet/swaps/EscrowManagerAbi.d.ts +26 -0
  18. package/dist/starknet/swaps/EscrowManagerAbi.js +36 -0
  19. package/dist/starknet/swaps/StarknetSwapContract.d.ts +1 -1
  20. package/dist/starknet/swaps/StarknetSwapContract.js +3 -3
  21. package/dist/starknet/swaps/StarknetSwapData.js +9 -1
  22. package/dist/starknet/swaps/handlers/IHandler.d.ts +1 -1
  23. package/dist/starknet/swaps/handlers/claim/ClaimHandlers.d.ts +1 -1
  24. package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.d.ts +1 -1
  25. package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.js +1 -1
  26. package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.d.ts +1 -1
  27. package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.js +1 -1
  28. package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.d.ts +1 -1
  29. package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.js +1 -1
  30. package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.d.ts +1 -1
  31. package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.js +1 -1
  32. package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.d.ts +1 -1
  33. package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.js +1 -1
  34. package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.d.ts +1 -1
  35. package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.js +1 -1
  36. package/dist/starknet/swaps/modules/StarknetLpVault.js +2 -2
  37. package/dist/starknet/swaps/modules/StarknetSwapClaim.js +8 -8
  38. package/dist/starknet/swaps/modules/StarknetSwapInit.js +64 -6
  39. package/dist/starknet/swaps/modules/StarknetSwapRefund.js +4 -4
  40. package/dist/utils/Utils.js +12 -8
  41. package/package.json +2 -2
  42. package/src/starknet/StarknetInitializer.ts +17 -4
  43. package/src/starknet/btcrelay/StarknetBtcRelay.ts +9 -6
  44. package/src/starknet/chain/StarknetAction.ts +15 -20
  45. package/src/starknet/chain/modules/StarknetAccounts.ts +1 -1
  46. package/src/starknet/chain/modules/StarknetFees.ts +53 -31
  47. package/src/starknet/chain/modules/StarknetSignatures.ts +5 -4
  48. package/src/starknet/chain/modules/StarknetTokens.ts +2 -2
  49. package/src/starknet/chain/modules/StarknetTransactions.ts +2 -2
  50. package/src/starknet/events/StarknetChainEventsBrowser.ts +1 -3
  51. package/src/starknet/spv_swap/StarknetSpvVaultContract.ts +8 -8
  52. package/src/starknet/spv_swap/StarknetSpvVaultData.ts +1 -0
  53. package/src/starknet/swaps/EscrowManagerAbi.ts +36 -0
  54. package/src/starknet/swaps/StarknetSwapContract.ts +4 -4
  55. package/src/starknet/swaps/StarknetSwapData.ts +10 -2
  56. package/src/starknet/swaps/handlers/IHandler.ts +1 -1
  57. package/src/starknet/swaps/handlers/claim/ClaimHandlers.ts +1 -1
  58. package/src/starknet/swaps/handlers/claim/HashlockClaimHandler.ts +2 -2
  59. package/src/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.ts +2 -2
  60. package/src/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.ts +2 -2
  61. package/src/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.ts +2 -2
  62. package/src/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.ts +2 -2
  63. package/src/starknet/swaps/handlers/refund/TimelockRefundHandler.ts +3 -3
  64. package/src/starknet/swaps/modules/StarknetLpVault.ts +2 -2
  65. package/src/starknet/swaps/modules/StarknetSwapClaim.ts +10 -10
  66. package/src/starknet/swaps/modules/StarknetSwapInit.ts +64 -7
  67. package/src/starknet/swaps/modules/StarknetSwapRefund.ts +6 -7
  68. package/src/utils/Utils.ts +10 -6
@@ -4,7 +4,7 @@ import {Buffer} from "buffer";
4
4
  import {StarknetSwapData} from "../StarknetSwapData";
5
5
  import {StarknetAction} from "../../chain/StarknetAction";
6
6
  import {StarknetSwapModule} from "../StarknetSwapModule";
7
- import {BigNumberish} from "starknet";
7
+ import {BigNumberish, cairo} from "starknet";
8
8
  import {StarknetSigner} from "../../wallet/StarknetSigner";
9
9
  import {StarknetFees} from "../../chain/modules/StarknetFees";
10
10
  import {StarknetTx} from "../../chain/modules/StarknetTransactions";
@@ -15,14 +15,27 @@ export type StarknetPreFetchVerification = {
15
15
 
16
16
  const Initialize = [
17
17
  { name: 'Swap hash', type: 'felt' },
18
- { name: 'Timeout', type: 'timestamp' }
18
+ { name: 'Offerer', type: 'ContractAddress'},
19
+ { name: 'Claimer', type: 'ContractAddress'},
20
+ { name: 'Token amount', type: 'TokenAmount'},
21
+ { name: 'Pay in', type: 'bool'},
22
+ { name: 'Pay out', type: 'bool'},
23
+ { name: 'Tracking reputation', type: 'bool'},
24
+ { name: 'Claim handler', type: 'ContractAddress'},
25
+ { name: 'Claim data', type: 'felt'},
26
+ { name: 'Refund handler', type: 'ContractAddress'},
27
+ { name: 'Refund data', type: 'felt'},
28
+ { name: 'Security deposit', type: 'TokenAmount'},
29
+ { name: 'Claimer bounty', type: 'TokenAmount'},
30
+ { name: 'Claim action hash', type: 'felt'},
31
+ { name: 'Deadline', type: 'timestamp' }
19
32
  ];
20
33
 
21
34
  export class StarknetSwapInit extends StarknetSwapModule {
22
35
 
23
36
  private static readonly GasCosts = {
24
- INIT: {l1: 500, l2: 0},
25
- INIT_PAY_IN: {l1: 1000, l2: 0},
37
+ INIT: {l1DataGas: 750, l2Gas: 8_000_000, l1Gas: 0},
38
+ INIT_PAY_IN: {l1DataGas: 500, l2Gas: 4_800_000, l1Gas: 0},
26
39
  };
27
40
 
28
41
  /**
@@ -82,7 +95,29 @@ export class StarknetSwapInit extends StarknetSwapModule {
82
95
 
83
96
  const signature = await this.root.Signatures.signTypedMessage(signer, Initialize, "Initialize", {
84
97
  "Swap hash": "0x"+swapData.getEscrowHash(),
85
- "Timeout": toHex(authTimeout)
98
+ "Offerer": swapData.offerer,
99
+ "Claimer": swapData.claimer,
100
+ "Token amount": {
101
+ token_address: swapData.token,
102
+ amount: cairo.uint256(swapData.amount)
103
+ },
104
+ "Pay in": swapData.isPayIn(),
105
+ "Pay out": swapData.isPayOut(),
106
+ "Tracking reputation": swapData.reputation,
107
+ "Refund handler": swapData.refundHandler,
108
+ "Claim handler": swapData.claimHandler,
109
+ "Claim data": "0x"+swapData.getClaimHash(),
110
+ "Refund data": swapData.refundData.startsWith("0x") ? swapData.refundData : "0x"+swapData.refundData,
111
+ "Security deposit": {
112
+ token_address: swapData.feeToken,
113
+ amount: cairo.uint256(swapData.securityDeposit)
114
+ },
115
+ "Claimer bounty": {
116
+ token_address: swapData.feeToken,
117
+ amount: cairo.uint256(swapData.claimerBounty)
118
+ },
119
+ "Claim action hash": 0n,
120
+ "Deadline": toHex(authTimeout)
86
121
  });
87
122
 
88
123
  return {
@@ -129,7 +164,29 @@ export class StarknetSwapInit extends StarknetSwapModule {
129
164
 
130
165
  const valid = await this.root.Signatures.isValidSignature(signature, signer, Initialize, "Initialize", {
131
166
  "Swap hash": "0x"+swapData.getEscrowHash(),
132
- "Timeout": toHex(timeoutBN)
167
+ "Offerer": swapData.offerer,
168
+ "Claimer": swapData.claimer,
169
+ "Token amount": {
170
+ token_address: swapData.token,
171
+ amount: cairo.uint256(swapData.amount)
172
+ },
173
+ "Pay in": swapData.isPayIn(),
174
+ "Pay out": swapData.isPayOut(),
175
+ "Tracking reputation": swapData.reputation,
176
+ "Refund handler": swapData.refundHandler,
177
+ "Claim handler": swapData.claimHandler,
178
+ "Claim data": "0x"+swapData.getClaimHash(),
179
+ "Refund data": swapData.refundData.startsWith("0x") ? swapData.refundData : "0x"+swapData.refundData,
180
+ "Security deposit": {
181
+ token_address: swapData.feeToken,
182
+ amount: cairo.uint256(swapData.securityDeposit)
183
+ },
184
+ "Claimer bounty": {
185
+ token_address: swapData.feeToken,
186
+ amount: cairo.uint256(swapData.claimerBounty)
187
+ },
188
+ "Claim action hash": 0n,
189
+ "Deadline": toHex(timeoutBN)
133
190
  });
134
191
 
135
192
  if(!valid) throw new SignatureVerificationError("Invalid signature!");
@@ -224,6 +281,6 @@ export class StarknetSwapInit extends StarknetSwapModule {
224
281
  */
225
282
  async getInitFee(swapData?: StarknetSwapData, feeRate?: string): Promise<bigint> {
226
283
  feeRate ??= await this.root.Fees.getFeeRate();
227
- return StarknetFees.getGasFee(swapData.payIn ? StarknetSwapInit.GasCosts.INIT_PAY_IN.l1 : StarknetSwapInit.GasCosts.INIT.l1, feeRate);
284
+ return StarknetFees.getGasFee(swapData.payIn ? StarknetSwapInit.GasCosts.INIT_PAY_IN : StarknetSwapInit.GasCosts.INIT, feeRate);
228
285
  }
229
286
  }
@@ -2,13 +2,12 @@ import {SignatureVerificationError, SwapDataVerificationError} from "@atomiqlabs
2
2
  import {toHex, tryWithRetries} from "../../../utils/Utils";
3
3
  import {StarknetSwapModule} from "../StarknetSwapModule";
4
4
  import {StarknetSwapData} from "../StarknetSwapData";
5
- import {StarknetAction, StarknetGas, sumStarknetGas} from "../../chain/StarknetAction";
6
- import {StarknetSwapContract} from "../StarknetSwapContract";
5
+ import {StarknetAction} from "../../chain/StarknetAction";
7
6
  import {IHandler} from "../handlers/IHandler";
8
7
  import {BigNumberish} from "starknet";
9
8
  import {StarknetTx} from "../../chain/modules/StarknetTransactions";
10
9
  import {StarknetSigner} from "../../wallet/StarknetSigner";
11
- import {StarknetFees} from "../../chain/modules/StarknetFees";
10
+ import {StarknetFees, StarknetGas, starknetGasAdd} from "../../chain/modules/StarknetFees";
12
11
 
13
12
  const Refund = [
14
13
  { name: 'Swap hash', type: 'felt' },
@@ -18,8 +17,8 @@ const Refund = [
18
17
  export class StarknetSwapRefund extends StarknetSwapModule {
19
18
 
20
19
  private static readonly GasCosts = {
21
- REFUND: {l1: 750, l2: 0},
22
- REFUND_PAY_OUT: {l1: 1250, l2: 0}
20
+ REFUND: {l1DataGas: 750, l2Gas: 4_000_000, l1Gas: 0},
21
+ REFUND_PAY_OUT: {l1DataGas: 900, l2Gas: 6_000_000, l1Gas: 0}
23
22
  };
24
23
 
25
24
  /**
@@ -40,7 +39,7 @@ export class StarknetSwapRefund extends StarknetSwapModule {
40
39
  ): StarknetAction {
41
40
  return new StarknetAction(signer, this.root,
42
41
  this.swapContract.populateTransaction.refund(swapData.toEscrowStruct(), witness),
43
- sumStarknetGas(swapData.payIn ? StarknetSwapRefund.GasCosts.REFUND_PAY_OUT : StarknetSwapRefund.GasCosts.REFUND, handlerGas)
42
+ starknetGasAdd(swapData.payIn ? StarknetSwapRefund.GasCosts.REFUND_PAY_OUT : StarknetSwapRefund.GasCosts.REFUND, handlerGas)
44
43
  );
45
44
  }
46
45
 
@@ -192,7 +191,7 @@ export class StarknetSwapRefund extends StarknetSwapModule {
192
191
  */
193
192
  async getRefundFee(swapData: StarknetSwapData, feeRate?: string): Promise<bigint> {
194
193
  feeRate ??= await this.root.Fees.getFeeRate();
195
- return StarknetFees.getGasFee(swapData.payIn ? StarknetSwapRefund.GasCosts.REFUND_PAY_OUT.l1 : StarknetSwapRefund.GasCosts.REFUND.l1, feeRate);
194
+ return StarknetFees.getGasFee(swapData.payIn ? StarknetSwapRefund.GasCosts.REFUND_PAY_OUT : StarknetSwapRefund.GasCosts.REFUND, feeRate);
196
195
  }
197
196
 
198
197
  }
@@ -1,4 +1,4 @@
1
- import {EDAMode} from "starknet-types-07";
1
+ import {EDAMode} from "@starknet-io/starknet-types-08";
2
2
  import {BigNumberish, CallData, hash, Uint256} from "starknet";
3
3
  import {StarknetTx} from "../starknet/chain/modules/StarknetTransactions";
4
4
  import {Buffer} from "buffer";
@@ -34,10 +34,14 @@ export function onceAsync<T>(executor: () => Promise<T>): () => Promise<T> {
34
34
 
35
35
  export function getLogger(prefix: string) {
36
36
  return {
37
- debug: (msg, ...args) => console.debug(prefix+msg, ...args),
38
- info: (msg, ...args) => console.info(prefix+msg, ...args),
39
- warn: (msg, ...args) => console.warn(prefix+msg, ...args),
40
- error: (msg, ...args) => console.error(prefix+msg, ...args)
37
+ // @ts-ignore
38
+ debug: (msg, ...args) => global.atomiqLogLevel >= 3 && console.debug(prefix+msg, ...args),
39
+ // @ts-ignore
40
+ info: (msg, ...args) => global.atomiqLogLevel >= 2 && console.info(prefix+msg, ...args),
41
+ // @ts-ignore
42
+ warn: (msg, ...args) => (global.atomiqLogLevel==null || global.atomiqLogLevel >= 1) && console.warn(prefix+msg, ...args),
43
+ // @ts-ignore
44
+ error: (msg, ...args) => (global.atomiqLogLevel==null || global.atomiqLogLevel >= 0) && console.error(prefix+msg, ...args)
41
45
  };
42
46
  }
43
47
 
@@ -79,7 +83,7 @@ export function toHex(value: number | bigint | string | Buffer, length: number =
79
83
  switch(typeof(value)) {
80
84
  case "string":
81
85
  if(value.startsWith("0x")) {
82
- return "0x"+value.slice(2).padStart(length, "0");
86
+ return "0x"+value.slice(2).padStart(length, "0").toLowerCase();
83
87
  } else {
84
88
  return "0x"+BigInt(value).toString(16).padStart(length, "0");
85
89
  }