@atomiqlabs/chain-starknet 4.0.0-dev.9 → 5.0.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 (74) hide show
  1. package/dist/starknet/StarknetInitializer.d.ts +1 -9
  2. package/dist/starknet/StarknetInitializer.js +3 -8
  3. package/dist/starknet/btcrelay/StarknetBtcRelay.js +5 -5
  4. package/dist/starknet/chain/StarknetAction.d.ts +10 -2
  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 +8 -30
  8. package/dist/starknet/chain/modules/StarknetFees.js +26 -40
  9. package/dist/starknet/chain/modules/StarknetSignatures.js +1 -1
  10. package/dist/starknet/chain/modules/StarknetTokens.d.ts +4 -6
  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 +2 -1
  14. package/dist/starknet/events/StarknetChainEventsBrowser.js +5 -1
  15. package/dist/starknet/spv_swap/StarknetSpvVaultContract.d.ts +2 -3
  16. package/dist/starknet/spv_swap/StarknetSpvVaultContract.js +8 -14
  17. package/dist/starknet/spv_swap/StarknetSpvVaultData.js +0 -1
  18. package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.d.ts +0 -1
  19. package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.js +0 -11
  20. package/dist/starknet/swaps/EscrowManagerAbi.d.ts +0 -26
  21. package/dist/starknet/swaps/EscrowManagerAbi.js +0 -36
  22. package/dist/starknet/swaps/StarknetSwapContract.d.ts +2 -3
  23. package/dist/starknet/swaps/StarknetSwapContract.js +19 -6
  24. package/dist/starknet/swaps/StarknetSwapData.d.ts +1 -8
  25. package/dist/starknet/swaps/StarknetSwapData.js +7 -51
  26. package/dist/starknet/swaps/handlers/IHandler.d.ts +1 -1
  27. package/dist/starknet/swaps/handlers/claim/ClaimHandlers.d.ts +1 -1
  28. package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.d.ts +1 -1
  29. package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.js +1 -1
  30. package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.d.ts +1 -1
  31. package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.js +1 -1
  32. package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.d.ts +1 -1
  33. package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.js +1 -1
  34. package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.d.ts +1 -1
  35. package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.js +1 -1
  36. package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.d.ts +1 -1
  37. package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.js +1 -1
  38. package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.d.ts +1 -1
  39. package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.js +1 -1
  40. package/dist/starknet/swaps/modules/StarknetLpVault.js +2 -2
  41. package/dist/starknet/swaps/modules/StarknetSwapClaim.js +8 -8
  42. package/dist/starknet/swaps/modules/StarknetSwapInit.d.ts +0 -2
  43. package/dist/starknet/swaps/modules/StarknetSwapInit.js +10 -70
  44. package/dist/starknet/swaps/modules/StarknetSwapRefund.js +4 -4
  45. package/dist/utils/Utils.js +8 -12
  46. package/package.json +3 -3
  47. package/src/starknet/StarknetInitializer.ts +4 -17
  48. package/src/starknet/btcrelay/StarknetBtcRelay.ts +6 -9
  49. package/src/starknet/chain/StarknetAction.ts +20 -15
  50. package/src/starknet/chain/modules/StarknetAccounts.ts +1 -1
  51. package/src/starknet/chain/modules/StarknetFees.ts +31 -53
  52. package/src/starknet/chain/modules/StarknetSignatures.ts +4 -5
  53. package/src/starknet/chain/modules/StarknetTokens.ts +2 -2
  54. package/src/starknet/chain/modules/StarknetTransactions.ts +2 -2
  55. package/src/starknet/events/StarknetChainEventsBrowser.ts +4 -1
  56. package/src/starknet/spv_swap/StarknetSpvVaultContract.ts +8 -14
  57. package/src/starknet/spv_swap/StarknetSpvVaultData.ts +0 -1
  58. package/src/starknet/spv_swap/StarknetSpvWithdrawalData.ts +2 -13
  59. package/src/starknet/swaps/EscrowManagerAbi.ts +0 -36
  60. package/src/starknet/swaps/StarknetSwapContract.ts +23 -8
  61. package/src/starknet/swaps/StarknetSwapData.ts +9 -70
  62. package/src/starknet/swaps/handlers/IHandler.ts +1 -1
  63. package/src/starknet/swaps/handlers/claim/ClaimHandlers.ts +1 -1
  64. package/src/starknet/swaps/handlers/claim/HashlockClaimHandler.ts +2 -2
  65. package/src/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.ts +2 -2
  66. package/src/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.ts +2 -2
  67. package/src/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.ts +2 -2
  68. package/src/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.ts +2 -2
  69. package/src/starknet/swaps/handlers/refund/TimelockRefundHandler.ts +3 -3
  70. package/src/starknet/swaps/modules/StarknetLpVault.ts +2 -2
  71. package/src/starknet/swaps/modules/StarknetSwapClaim.ts +10 -10
  72. package/src/starknet/swaps/modules/StarknetSwapInit.ts +12 -71
  73. package/src/starknet/swaps/modules/StarknetSwapRefund.ts +7 -6
  74. package/src/utils/Utils.ts +6 -10
@@ -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, cairo} from "starknet";
7
+ import {BigNumberish} 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,45 +15,31 @@ export type StarknetPreFetchVerification = {
15
15
 
16
16
  const Initialize = [
17
17
  { name: 'Swap hash', type: 'felt' },
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' }
18
+ { name: 'Timeout', type: 'timestamp' }
32
19
  ];
33
20
 
34
21
  export class StarknetSwapInit extends StarknetSwapModule {
35
22
 
36
23
  private static readonly GasCosts = {
37
- INIT: {l1DataGas: 750, l2Gas: 8_000_000, l1Gas: 0},
38
- INIT_PAY_IN: {l1DataGas: 500, l2Gas: 4_800_000, l1Gas: 0},
24
+ INIT: {l1: 500, l2: 0},
25
+ INIT_PAY_IN: {l1: 1000, l2: 0},
39
26
  };
40
27
 
41
28
  /**
42
29
  * bare Init action based on the data passed in swapData
43
30
  *
44
- * @param signer
45
31
  * @param swapData
46
32
  * @param timeout
47
33
  * @param signature
48
34
  * @private
49
35
  */
50
- private Init(signer: string, swapData: StarknetSwapData, timeout: bigint, signature: BigNumberish[]): StarknetAction {
36
+ private Init(swapData: StarknetSwapData, timeout: bigint, signature: BigNumberish[]): StarknetAction {
51
37
  return new StarknetAction(
52
- signer,
38
+ swapData.payIn ? swapData.offerer : swapData.claimer,
53
39
  this.root,
54
40
  this.swapContract.populateTransaction.initialize(
55
41
  swapData.toEscrowStruct(),
56
- signature ?? [],
42
+ signature,
57
43
  timeout,
58
44
  swapData.extraData==null || swapData.extraData==="" ? [] : bufferToBytes31Span(Buffer.from(swapData.extraData, "hex")).map(toHex)
59
45
  ),
@@ -96,29 +82,7 @@ export class StarknetSwapInit extends StarknetSwapModule {
96
82
 
97
83
  const signature = await this.root.Signatures.signTypedMessage(signer, Initialize, "Initialize", {
98
84
  "Swap hash": "0x"+swapData.getEscrowHash(),
99
- "Offerer": swapData.offerer,
100
- "Claimer": swapData.claimer,
101
- "Token amount": {
102
- token_address: swapData.token,
103
- amount: cairo.uint256(swapData.amount)
104
- },
105
- "Pay in": swapData.isPayIn(),
106
- "Pay out": swapData.isPayOut(),
107
- "Tracking reputation": swapData.reputation,
108
- "Refund handler": swapData.refundHandler,
109
- "Claim handler": swapData.claimHandler,
110
- "Claim data": "0x"+swapData.getClaimHash(),
111
- "Refund data": swapData.refundData.startsWith("0x") ? swapData.refundData : "0x"+swapData.refundData,
112
- "Security deposit": {
113
- token_address: swapData.feeToken,
114
- amount: cairo.uint256(swapData.securityDeposit)
115
- },
116
- "Claimer bounty": {
117
- token_address: swapData.feeToken,
118
- amount: cairo.uint256(swapData.claimerBounty)
119
- },
120
- "Claim action hash": 0n,
121
- "Deadline": toHex(authTimeout)
85
+ "Timeout": toHex(authTimeout)
122
86
  });
123
87
 
124
88
  return {
@@ -131,7 +95,6 @@ export class StarknetSwapInit extends StarknetSwapModule {
131
95
  /**
132
96
  * Checks whether the provided signature data is valid, using preFetchedData if provided and still valid
133
97
  *
134
- * @param sender
135
98
  * @param swapData
136
99
  * @param timeout
137
100
  * @param prefix
@@ -166,29 +129,7 @@ export class StarknetSwapInit extends StarknetSwapModule {
166
129
 
167
130
  const valid = await this.root.Signatures.isValidSignature(signature, signer, Initialize, "Initialize", {
168
131
  "Swap hash": "0x"+swapData.getEscrowHash(),
169
- "Offerer": swapData.offerer,
170
- "Claimer": swapData.claimer,
171
- "Token amount": {
172
- token_address: swapData.token,
173
- amount: cairo.uint256(swapData.amount)
174
- },
175
- "Pay in": swapData.isPayIn(),
176
- "Pay out": swapData.isPayOut(),
177
- "Tracking reputation": swapData.reputation,
178
- "Refund handler": swapData.refundHandler,
179
- "Claim handler": swapData.claimHandler,
180
- "Claim data": "0x"+swapData.getClaimHash(),
181
- "Refund data": swapData.refundData.startsWith("0x") ? swapData.refundData : "0x"+swapData.refundData,
182
- "Security deposit": {
183
- token_address: swapData.feeToken,
184
- amount: cairo.uint256(swapData.securityDeposit)
185
- },
186
- "Claimer bounty": {
187
- token_address: swapData.feeToken,
188
- amount: cairo.uint256(swapData.claimerBounty)
189
- },
190
- "Claim action hash": 0n,
191
- "Deadline": toHex(timeoutBN)
132
+ "Timeout": toHex(timeoutBN)
192
133
  });
193
134
 
194
135
  if(!valid) throw new SignatureVerificationError("Invalid signature!");
@@ -252,7 +193,7 @@ export class StarknetSwapInit extends StarknetSwapModule {
252
193
  ): Promise<StarknetTx[]> {
253
194
  if(!skipChecks) {
254
195
  const [_, payStatus] = await Promise.all([
255
- swapData.isOfferer(sender) && !swapData.reputation ? Promise.resolve() : tryWithRetries(
196
+ tryWithRetries(
256
197
  () => this.isSignatureValid(sender, swapData, timeout, prefix, signature),
257
198
  this.retryPolicy, (e) => e instanceof SignatureVerificationError
258
199
  ),
@@ -263,7 +204,7 @@ export class StarknetSwapInit extends StarknetSwapModule {
263
204
 
264
205
  feeRate ??= await this.root.Fees.getFeeRate();
265
206
 
266
- const initAction = this.Init(sender, swapData, BigInt(timeout), JSON.parse(signature));
207
+ const initAction = this.Init(swapData, BigInt(timeout), JSON.parse(signature));
267
208
  if(swapData.payIn && swapData.isOfferer(sender)) initAction.addAction(
268
209
  this.root.Tokens.Approve(sender, this.swapContract.address, swapData.token, swapData.amount), 0
269
210
  ); //Add erc20 approve
@@ -283,6 +224,6 @@ export class StarknetSwapInit extends StarknetSwapModule {
283
224
  */
284
225
  async getInitFee(swapData?: StarknetSwapData, feeRate?: string): Promise<bigint> {
285
226
  feeRate ??= await this.root.Fees.getFeeRate();
286
- return StarknetFees.getGasFee(swapData.payIn ? StarknetSwapInit.GasCosts.INIT_PAY_IN : StarknetSwapInit.GasCosts.INIT, feeRate);
227
+ return StarknetFees.getGasFee(swapData.payIn ? StarknetSwapInit.GasCosts.INIT_PAY_IN.l1 : StarknetSwapInit.GasCosts.INIT.l1, feeRate);
287
228
  }
288
229
  }
@@ -2,12 +2,13 @@ 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} from "../../chain/StarknetAction";
5
+ import {StarknetAction, StarknetGas, sumStarknetGas} from "../../chain/StarknetAction";
6
+ import {StarknetSwapContract} from "../StarknetSwapContract";
6
7
  import {IHandler} from "../handlers/IHandler";
7
8
  import {BigNumberish} from "starknet";
8
9
  import {StarknetTx} from "../../chain/modules/StarknetTransactions";
9
10
  import {StarknetSigner} from "../../wallet/StarknetSigner";
10
- import {StarknetFees, StarknetGas, starknetGasAdd} from "../../chain/modules/StarknetFees";
11
+ import {StarknetFees} from "../../chain/modules/StarknetFees";
11
12
 
12
13
  const Refund = [
13
14
  { name: 'Swap hash', type: 'felt' },
@@ -17,8 +18,8 @@ const Refund = [
17
18
  export class StarknetSwapRefund extends StarknetSwapModule {
18
19
 
19
20
  private static readonly GasCosts = {
20
- REFUND: {l1DataGas: 750, l2Gas: 4_000_000, l1Gas: 0},
21
- REFUND_PAY_OUT: {l1DataGas: 900, l2Gas: 6_000_000, l1Gas: 0}
21
+ REFUND: {l1: 750, l2: 0},
22
+ REFUND_PAY_OUT: {l1: 1250, l2: 0}
22
23
  };
23
24
 
24
25
  /**
@@ -39,7 +40,7 @@ export class StarknetSwapRefund extends StarknetSwapModule {
39
40
  ): StarknetAction {
40
41
  return new StarknetAction(signer, this.root,
41
42
  this.swapContract.populateTransaction.refund(swapData.toEscrowStruct(), witness),
42
- starknetGasAdd(swapData.payIn ? StarknetSwapRefund.GasCosts.REFUND_PAY_OUT : StarknetSwapRefund.GasCosts.REFUND, handlerGas)
43
+ sumStarknetGas(swapData.payIn ? StarknetSwapRefund.GasCosts.REFUND_PAY_OUT : StarknetSwapRefund.GasCosts.REFUND, handlerGas)
43
44
  );
44
45
  }
45
46
 
@@ -191,7 +192,7 @@ export class StarknetSwapRefund extends StarknetSwapModule {
191
192
  */
192
193
  async getRefundFee(swapData: StarknetSwapData, feeRate?: string): Promise<bigint> {
193
194
  feeRate ??= await this.root.Fees.getFeeRate();
194
- return StarknetFees.getGasFee(swapData.payIn ? StarknetSwapRefund.GasCosts.REFUND_PAY_OUT : StarknetSwapRefund.GasCosts.REFUND, feeRate);
195
+ return StarknetFees.getGasFee(swapData.payIn ? StarknetSwapRefund.GasCosts.REFUND_PAY_OUT.l1 : StarknetSwapRefund.GasCosts.REFUND.l1, feeRate);
195
196
  }
196
197
 
197
198
  }
@@ -1,4 +1,4 @@
1
- import {EDAMode} from "@starknet-io/starknet-types-08";
1
+ import {EDAMode} from "starknet-types-07";
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,14 +34,10 @@ export function onceAsync<T>(executor: () => Promise<T>): () => Promise<T> {
34
34
 
35
35
  export function getLogger(prefix: string) {
36
36
  return {
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)
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)
45
41
  };
46
42
  }
47
43
 
@@ -83,7 +79,7 @@ export function toHex(value: number | bigint | string | Buffer, length: number =
83
79
  switch(typeof(value)) {
84
80
  case "string":
85
81
  if(value.startsWith("0x")) {
86
- return "0x"+value.slice(2).padStart(length, "0").toLowerCase();
82
+ return "0x"+value.slice(2).padStart(length, "0");
87
83
  } else {
88
84
  return "0x"+BigInt(value).toString(16).padStart(length, "0");
89
85
  }