@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.
- package/dist/starknet/StarknetInitializer.d.ts +9 -1
- package/dist/starknet/StarknetInitializer.js +8 -3
- package/dist/starknet/btcrelay/StarknetBtcRelay.js +5 -5
- package/dist/starknet/chain/StarknetAction.d.ts +2 -10
- 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 +30 -8
- package/dist/starknet/chain/modules/StarknetFees.js +40 -26
- package/dist/starknet/chain/modules/StarknetSignatures.js +1 -1
- package/dist/starknet/chain/modules/StarknetTokens.d.ts +6 -4
- 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 +1 -2
- package/dist/starknet/events/StarknetChainEventsBrowser.js +1 -3
- package/dist/starknet/spv_swap/StarknetSpvVaultContract.js +8 -8
- package/dist/starknet/spv_swap/StarknetSpvVaultData.js +1 -0
- package/dist/starknet/swaps/EscrowManagerAbi.d.ts +26 -0
- package/dist/starknet/swaps/EscrowManagerAbi.js +36 -0
- package/dist/starknet/swaps/StarknetSwapContract.d.ts +1 -1
- package/dist/starknet/swaps/StarknetSwapContract.js +3 -3
- package/dist/starknet/swaps/StarknetSwapData.js +9 -1
- 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.js +64 -6
- package/dist/starknet/swaps/modules/StarknetSwapRefund.js +4 -4
- package/dist/utils/Utils.js +12 -8
- package/package.json +2 -2
- package/src/starknet/StarknetInitializer.ts +17 -4
- package/src/starknet/btcrelay/StarknetBtcRelay.ts +9 -6
- package/src/starknet/chain/StarknetAction.ts +15 -20
- package/src/starknet/chain/modules/StarknetAccounts.ts +1 -1
- package/src/starknet/chain/modules/StarknetFees.ts +53 -31
- package/src/starknet/chain/modules/StarknetSignatures.ts +5 -4
- package/src/starknet/chain/modules/StarknetTokens.ts +2 -2
- package/src/starknet/chain/modules/StarknetTransactions.ts +2 -2
- package/src/starknet/events/StarknetChainEventsBrowser.ts +1 -3
- package/src/starknet/spv_swap/StarknetSpvVaultContract.ts +8 -8
- package/src/starknet/spv_swap/StarknetSpvVaultData.ts +1 -0
- package/src/starknet/swaps/EscrowManagerAbi.ts +36 -0
- package/src/starknet/swaps/StarknetSwapContract.ts +4 -4
- package/src/starknet/swaps/StarknetSwapData.ts +10 -2
- 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 +64 -7
- package/src/starknet/swaps/modules/StarknetSwapRefund.ts +6 -7
- 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: '
|
|
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: {
|
|
25
|
-
INIT_PAY_IN: {
|
|
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
|
-
"
|
|
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
|
-
"
|
|
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
|
|
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
|
|
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: {
|
|
22
|
-
REFUND_PAY_OUT: {
|
|
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
|
-
|
|
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
|
|
194
|
+
return StarknetFees.getGasFee(swapData.payIn ? StarknetSwapRefund.GasCosts.REFUND_PAY_OUT : StarknetSwapRefund.GasCosts.REFUND, feeRate);
|
|
196
195
|
}
|
|
197
196
|
|
|
198
197
|
}
|
package/src/utils/Utils.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {EDAMode} from "starknet-types-
|
|
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
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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
|
}
|