@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.
- package/dist/starknet/StarknetInitializer.d.ts +1 -9
- package/dist/starknet/StarknetInitializer.js +3 -8
- package/dist/starknet/btcrelay/StarknetBtcRelay.js +5 -5
- package/dist/starknet/chain/StarknetAction.d.ts +10 -2
- package/dist/starknet/chain/StarknetAction.js +21 -21
- package/dist/starknet/chain/modules/StarknetAccounts.js +1 -1
- package/dist/starknet/chain/modules/StarknetFees.d.ts +8 -30
- package/dist/starknet/chain/modules/StarknetFees.js +26 -40
- package/dist/starknet/chain/modules/StarknetSignatures.js +1 -1
- package/dist/starknet/chain/modules/StarknetTokens.d.ts +4 -6
- package/dist/starknet/chain/modules/StarknetTokens.js +2 -2
- package/dist/starknet/chain/modules/StarknetTransactions.js +2 -2
- package/dist/starknet/events/StarknetChainEventsBrowser.d.ts +2 -1
- package/dist/starknet/events/StarknetChainEventsBrowser.js +5 -1
- package/dist/starknet/spv_swap/StarknetSpvVaultContract.d.ts +2 -3
- package/dist/starknet/spv_swap/StarknetSpvVaultContract.js +8 -14
- package/dist/starknet/spv_swap/StarknetSpvVaultData.js +0 -1
- package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.d.ts +0 -1
- package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.js +0 -11
- package/dist/starknet/swaps/EscrowManagerAbi.d.ts +0 -26
- package/dist/starknet/swaps/EscrowManagerAbi.js +0 -36
- package/dist/starknet/swaps/StarknetSwapContract.d.ts +2 -3
- package/dist/starknet/swaps/StarknetSwapContract.js +19 -6
- package/dist/starknet/swaps/StarknetSwapData.d.ts +1 -8
- package/dist/starknet/swaps/StarknetSwapData.js +7 -51
- package/dist/starknet/swaps/handlers/IHandler.d.ts +1 -1
- package/dist/starknet/swaps/handlers/claim/ClaimHandlers.d.ts +1 -1
- package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.d.ts +1 -1
- package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.js +1 -1
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.d.ts +1 -1
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.js +1 -1
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.d.ts +1 -1
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.js +1 -1
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.d.ts +1 -1
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.js +1 -1
- package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.d.ts +1 -1
- package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.js +1 -1
- package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.d.ts +1 -1
- package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.js +1 -1
- package/dist/starknet/swaps/modules/StarknetLpVault.js +2 -2
- package/dist/starknet/swaps/modules/StarknetSwapClaim.js +8 -8
- package/dist/starknet/swaps/modules/StarknetSwapInit.d.ts +0 -2
- package/dist/starknet/swaps/modules/StarknetSwapInit.js +10 -70
- package/dist/starknet/swaps/modules/StarknetSwapRefund.js +4 -4
- package/dist/utils/Utils.js +8 -12
- package/package.json +3 -3
- package/src/starknet/StarknetInitializer.ts +4 -17
- package/src/starknet/btcrelay/StarknetBtcRelay.ts +6 -9
- package/src/starknet/chain/StarknetAction.ts +20 -15
- package/src/starknet/chain/modules/StarknetAccounts.ts +1 -1
- package/src/starknet/chain/modules/StarknetFees.ts +31 -53
- package/src/starknet/chain/modules/StarknetSignatures.ts +4 -5
- package/src/starknet/chain/modules/StarknetTokens.ts +2 -2
- package/src/starknet/chain/modules/StarknetTransactions.ts +2 -2
- package/src/starknet/events/StarknetChainEventsBrowser.ts +4 -1
- package/src/starknet/spv_swap/StarknetSpvVaultContract.ts +8 -14
- package/src/starknet/spv_swap/StarknetSpvVaultData.ts +0 -1
- package/src/starknet/spv_swap/StarknetSpvWithdrawalData.ts +2 -13
- package/src/starknet/swaps/EscrowManagerAbi.ts +0 -36
- package/src/starknet/swaps/StarknetSwapContract.ts +23 -8
- package/src/starknet/swaps/StarknetSwapData.ts +9 -70
- package/src/starknet/swaps/handlers/IHandler.ts +1 -1
- 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 +2 -2
- package/src/starknet/swaps/handlers/refund/TimelockRefundHandler.ts +3 -3
- package/src/starknet/swaps/modules/StarknetLpVault.ts +2 -2
- package/src/starknet/swaps/modules/StarknetSwapClaim.ts +10 -10
- package/src/starknet/swaps/modules/StarknetSwapInit.ts +12 -71
- package/src/starknet/swaps/modules/StarknetSwapRefund.ts +7 -6
- 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
|
|
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: '
|
|
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: {
|
|
38
|
-
INIT_PAY_IN: {
|
|
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(
|
|
36
|
+
private Init(swapData: StarknetSwapData, timeout: bigint, signature: BigNumberish[]): StarknetAction {
|
|
51
37
|
return new StarknetAction(
|
|
52
|
-
|
|
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
|
-
"
|
|
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
|
-
"
|
|
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
|
-
|
|
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(
|
|
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
|
|
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: {
|
|
21
|
-
REFUND_PAY_OUT: {
|
|
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
|
-
|
|
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
|
}
|
package/src/utils/Utils.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {EDAMode} from "
|
|
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
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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")
|
|
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
|
}
|