@atomiqlabs/chain-starknet 2.0.1 → 3.0.0-beta.0
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 -1
- package/dist/starknet/StarknetInitializer.js +6 -1
- 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/spv_swap/StarknetSpvVaultContract.js +6 -6
- package/dist/starknet/swaps/EscrowManagerAbi.d.ts +29 -0
- package/dist/starknet/swaps/EscrowManagerAbi.js +40 -0
- package/dist/starknet/swaps/StarknetSwapContract.js +2 -2
- package/dist/starknet/swaps/StarknetSwapData.js +10 -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 +5 -5
- package/dist/starknet/swaps/modules/StarknetSwapInit.js +41 -5
- package/dist/starknet/swaps/modules/StarknetSwapRefund.js +4 -4
- package/dist/utils/Utils.js +3 -3
- package/package.json +2 -2
- package/src/starknet/StarknetInitializer.ts +7 -2
- 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/spv_swap/StarknetSpvVaultContract.ts +6 -6
- package/src/starknet/swaps/EscrowManagerAbi.ts +40 -0
- package/src/starknet/swaps/StarknetSwapContract.ts +2 -2
- package/src/starknet/swaps/StarknetSwapData.ts +11 -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 +7 -7
- package/src/starknet/swaps/modules/StarknetSwapInit.ts +42 -7
- package/src/starknet/swaps/modules/StarknetSwapRefund.ts +6 -7
- package/src/utils/Utils.ts +1 -1
|
@@ -18,6 +18,42 @@ export const EscrowManagerAbi = [
|
|
|
18
18
|
}
|
|
19
19
|
]
|
|
20
20
|
},
|
|
21
|
+
{
|
|
22
|
+
"type": "struct",
|
|
23
|
+
"name": "escrow_manager::structs::escrow::EscrowExecution",
|
|
24
|
+
"members": [
|
|
25
|
+
{
|
|
26
|
+
"name": "contract",
|
|
27
|
+
"type": "core::starknet::contract_address::ContractAddress"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"name": "hash",
|
|
31
|
+
"type": "core::felt252"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "expiry",
|
|
35
|
+
"type": "core::integer::u64"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"name": "fee",
|
|
39
|
+
"type": "core::integer::u256"
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"type": "enum",
|
|
45
|
+
"name": "core::option::Option::<escrow_manager::structs::escrow::EscrowExecution>",
|
|
46
|
+
"variants": [
|
|
47
|
+
{
|
|
48
|
+
"name": "Some",
|
|
49
|
+
"type": "escrow_manager::structs::escrow::EscrowExecution"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"name": "None",
|
|
53
|
+
"type": "()"
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
},
|
|
21
57
|
{
|
|
22
58
|
"type": "struct",
|
|
23
59
|
"name": "escrow_manager::structs::escrow::EscrowData",
|
|
@@ -69,6 +105,10 @@ export const EscrowManagerAbi = [
|
|
|
69
105
|
{
|
|
70
106
|
"name": "claimer_bounty",
|
|
71
107
|
"type": "core::integer::u256"
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"name": "success_action",
|
|
111
|
+
"type": "core::option::Option::<escrow_manager::structs::escrow::EscrowExecution>"
|
|
72
112
|
}
|
|
73
113
|
]
|
|
74
114
|
},
|
|
@@ -33,8 +33,8 @@ const ESCROW_STATE_CLAIMED = 2;
|
|
|
33
33
|
const ESCROW_STATE_REFUNDED = 3;
|
|
34
34
|
|
|
35
35
|
const swapContractAddreses = {
|
|
36
|
-
[constants.StarknetChainId.SN_SEPOLIA]: "
|
|
37
|
-
[constants.StarknetChainId.SN_MAIN]: "
|
|
36
|
+
[constants.StarknetChainId.SN_SEPOLIA]: "0x030ae7fc7bbce9b8c888b1117f5573c786dd8e1541c722227b8673ac7dda70c0",
|
|
37
|
+
[constants.StarknetChainId.SN_MAIN]: "0x02e1070519f27ec94dde395c8d72a5fcb144d40a786cf60b9b45395d36cc2f69"
|
|
38
38
|
};
|
|
39
39
|
|
|
40
40
|
const defaultClaimAddresses = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {SwapData, ChainSwapType} from "@atomiqlabs/base";
|
|
2
2
|
import {TimelockRefundHandler} from "./handlers/refund/TimelockRefundHandler";
|
|
3
|
-
import {BigNumberish, cairo, hash} from "starknet";
|
|
3
|
+
import {BigNumberish, cairo, CairoOption, CairoOptionVariant, hash} from "starknet";
|
|
4
4
|
import {toBigInt, toHex} from "../../utils/Utils";
|
|
5
5
|
import {
|
|
6
6
|
StringToPrimitiveType
|
|
@@ -350,7 +350,8 @@ export class StarknetSwapData extends SwapData {
|
|
|
350
350
|
amount: cairo.uint256(toBigInt(this.amount)),
|
|
351
351
|
fee_token: this.feeToken,
|
|
352
352
|
security_deposit: cairo.uint256(toBigInt(this.securityDeposit)),
|
|
353
|
-
claimer_bounty: cairo.uint256(toBigInt(this.claimerBounty))
|
|
353
|
+
claimer_bounty: cairo.uint256(toBigInt(this.claimerBounty)),
|
|
354
|
+
success_action: new CairoOption(CairoOptionVariant.None) //For now enforce no success action
|
|
354
355
|
}
|
|
355
356
|
}
|
|
356
357
|
|
|
@@ -367,6 +368,14 @@ export class StarknetSwapData extends SwapData {
|
|
|
367
368
|
const feeToken = toHex(span.shift());
|
|
368
369
|
const securityDeposit = toBigInt({low: span.shift(), high: span.shift()});
|
|
369
370
|
const claimerBounty = toBigInt({low: span.shift(), high: span.shift()});
|
|
371
|
+
const hasSuccessAction = toBigInt(span.shift()) === 0n;
|
|
372
|
+
if(hasSuccessAction) {
|
|
373
|
+
const executionContract = toHex(span.shift());
|
|
374
|
+
const executionHash = toHex(span.shift());
|
|
375
|
+
const executionExpiry = toBigInt(span.shift());
|
|
376
|
+
const executionFee = toBigInt({low: span.shift(), high: span.shift()});
|
|
377
|
+
// throw new Error("Success action not allowed!");
|
|
378
|
+
}
|
|
370
379
|
|
|
371
380
|
return new StarknetSwapData(
|
|
372
381
|
offerer,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {StarknetSwapData} from "../StarknetSwapData";
|
|
2
2
|
import {BigNumberish} from "starknet";
|
|
3
|
-
import {StarknetGas} from "../../chain/StarknetAction";
|
|
4
3
|
import {StarknetTx} from "../../chain/modules/StarknetTransactions";
|
|
4
|
+
import {StarknetGas} from "../../chain/modules/StarknetFees";
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
export interface IHandler<TCommitmentData, TWitnessData> {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {HashlockClaimHandler} from "./HashlockClaimHandler";
|
|
2
2
|
import {ChainSwapType} from "@atomiqlabs/base";
|
|
3
|
-
import {StarknetGas} from "../../../chain/StarknetAction";
|
|
4
3
|
import {IHandler} from "../IHandler";
|
|
5
4
|
import {BitcoinTxIdClaimHandler} from "./btc/BitcoinTxIdClaimHandler";
|
|
6
5
|
import {BitcoinOutputClaimHandler} from "./btc/BitcoinOutputClaimHandler";
|
|
7
6
|
import {BitcoinNoncedOutputClaimHandler} from "./btc/BitcoinNoncedOutputClaimHandler";
|
|
8
7
|
import {BigNumberish} from "starknet";
|
|
8
|
+
import {StarknetGas} from "../../../chain/modules/StarknetFees";
|
|
9
9
|
|
|
10
10
|
export interface IClaimHandler<C, W> extends IHandler<C, W> {
|
|
11
11
|
getType(): ChainSwapType;
|
|
@@ -2,17 +2,17 @@ import {StarknetSwapData} from "../../StarknetSwapData";
|
|
|
2
2
|
import {bufferToU32Array, toHex, u32ArrayToBuffer} from "../../../../utils/Utils";
|
|
3
3
|
import {BigNumberish, hash} from "starknet";
|
|
4
4
|
import {ChainSwapType} from "@atomiqlabs/base";
|
|
5
|
-
import {StarknetGas} from "../../../chain/StarknetAction";
|
|
6
5
|
import {Buffer} from "buffer";
|
|
7
6
|
import {sha256} from "@noble/hashes/sha2";
|
|
8
7
|
import {StarknetTx} from "../../../chain/modules/StarknetTransactions";
|
|
9
8
|
import {IClaimHandler} from "./ClaimHandlers";
|
|
9
|
+
import {StarknetGas} from "../../../chain/modules/StarknetFees";
|
|
10
10
|
|
|
11
11
|
export class HashlockClaimHandler implements IClaimHandler<Buffer, string> {
|
|
12
12
|
|
|
13
13
|
public readonly address: string;
|
|
14
14
|
public static readonly type: ChainSwapType = ChainSwapType.HTLC;
|
|
15
|
-
public static readonly gas: StarknetGas = {
|
|
15
|
+
public static readonly gas: StarknetGas = {l1DataGas: 0, l2Gas: 800*40_000, l1Gas: 0};
|
|
16
16
|
|
|
17
17
|
constructor(address: string) {
|
|
18
18
|
this.address = address;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import {StarknetSwapData} from "../../../StarknetSwapData";
|
|
2
|
-
import {StarknetGas} from "../../../../chain/StarknetAction";
|
|
3
2
|
import {ChainSwapType} from "@atomiqlabs/base";
|
|
4
3
|
import {BigNumberish, hash} from "starknet";
|
|
5
4
|
import {StarknetTx} from "../../../../chain/modules/StarknetTransactions";
|
|
@@ -8,6 +7,7 @@ import {BitcoinCommitmentData, IBitcoinClaimHandler} from "./IBitcoinClaimHandle
|
|
|
8
7
|
import {BitcoinOutputWitnessData} from "./BitcoinOutputClaimHandler";
|
|
9
8
|
import {Transaction} from "@scure/btc-signer";
|
|
10
9
|
import {Buffer} from "buffer";
|
|
10
|
+
import {StarknetGas} from "../../../../chain/modules/StarknetFees";
|
|
11
11
|
|
|
12
12
|
export type BitcoinNoncedOutputCommitmentData = {
|
|
13
13
|
output: Buffer,
|
|
@@ -27,7 +27,7 @@ function getTransactionNonce(btcTx: Transaction): bigint {
|
|
|
27
27
|
export class BitcoinNoncedOutputClaimHandler extends IBitcoinClaimHandler<BitcoinNoncedOutputCommitmentData, BitcoinOutputWitnessData> {
|
|
28
28
|
|
|
29
29
|
public static readonly type: ChainSwapType = ChainSwapType.CHAIN_NONCED;
|
|
30
|
-
public static readonly gas: StarknetGas = {
|
|
30
|
+
public static readonly gas: StarknetGas = {l1DataGas: 0, l2Gas: 20_000*40_000, l1Gas: 0};
|
|
31
31
|
|
|
32
32
|
protected serializeCommitment(data: BitcoinNoncedOutputCommitmentData & BitcoinCommitmentData): BigNumberish[] {
|
|
33
33
|
return [
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import {StarknetSwapData} from "../../../StarknetSwapData";
|
|
2
|
-
import {StarknetGas} from "../../../../chain/StarknetAction";
|
|
3
2
|
import {ChainSwapType} from "@atomiqlabs/base";
|
|
4
3
|
import {BigNumberish, hash} from "starknet";
|
|
5
4
|
import {StarknetTx} from "../../../../chain/modules/StarknetTransactions";
|
|
@@ -7,6 +6,7 @@ import {bufferToByteArray, getLogger, poseidonHashRange, toBigInt} from "../../.
|
|
|
7
6
|
import {BitcoinCommitmentData, BitcoinWitnessData, IBitcoinClaimHandler} from "./IBitcoinClaimHandler";
|
|
8
7
|
import {Transaction} from "@scure/btc-signer";
|
|
9
8
|
import {Buffer} from "buffer";
|
|
9
|
+
import {StarknetGas} from "../../../../chain/modules/StarknetFees";
|
|
10
10
|
|
|
11
11
|
export type BitcoinOutputCommitmentData = {
|
|
12
12
|
output: Buffer,
|
|
@@ -22,7 +22,7 @@ const logger = getLogger("BitcoinOutputClaimHandler: ");
|
|
|
22
22
|
export class BitcoinOutputClaimHandler extends IBitcoinClaimHandler<BitcoinOutputCommitmentData, BitcoinOutputWitnessData> {
|
|
23
23
|
|
|
24
24
|
public static readonly type: ChainSwapType = ChainSwapType.CHAIN;
|
|
25
|
-
public static readonly gas: StarknetGas = {
|
|
25
|
+
public static readonly gas: StarknetGas = {l1DataGas: 0, l2Gas: 20_000 * 40_000, l1Gas: 0};
|
|
26
26
|
|
|
27
27
|
protected serializeCommitment(data: BitcoinOutputCommitmentData & BitcoinCommitmentData): BigNumberish[] {
|
|
28
28
|
return [
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {StarknetSwapData} from "../../../StarknetSwapData";
|
|
2
|
-
import {StarknetGas} from "../../../../chain/StarknetAction";
|
|
3
2
|
import {ChainSwapType} from "@atomiqlabs/base";
|
|
4
3
|
import {BigNumberish} from "starknet";
|
|
5
4
|
import {StarknetTx} from "../../../../chain/modules/StarknetTransactions";
|
|
6
5
|
import {bufferToU32Array, getLogger} from "../../../../../utils/Utils";
|
|
7
6
|
import {BitcoinCommitmentData, BitcoinWitnessData, IBitcoinClaimHandler} from "./IBitcoinClaimHandler";
|
|
8
7
|
import {Buffer} from "buffer";
|
|
8
|
+
import {StarknetGas} from "../../../../chain/modules/StarknetFees";
|
|
9
9
|
|
|
10
10
|
export type BitcoinTxIdCommitmentData = {
|
|
11
11
|
txId: string
|
|
@@ -16,7 +16,7 @@ const logger = getLogger("BitcoinTxIdClaimHandler: ");
|
|
|
16
16
|
export class BitcoinTxIdClaimHandler extends IBitcoinClaimHandler<BitcoinTxIdCommitmentData, BitcoinWitnessData> {
|
|
17
17
|
|
|
18
18
|
public static readonly type: ChainSwapType = ChainSwapType.CHAIN_TXID;
|
|
19
|
-
public static readonly gas: StarknetGas = {
|
|
19
|
+
public static readonly gas: StarknetGas = {l1DataGas: 0, l2Gas: 20_000 * 40_000, l1Gas: 0};
|
|
20
20
|
|
|
21
21
|
protected serializeCommitment(data: BitcoinTxIdCommitmentData & BitcoinCommitmentData): BigNumberish[] {
|
|
22
22
|
return [
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {IClaimHandler} from "../ClaimHandlers";
|
|
2
2
|
import {StarknetSwapData} from "../../../StarknetSwapData";
|
|
3
|
-
import {StarknetGas} from "../../../../chain/StarknetAction";
|
|
4
3
|
import {ChainSwapType, RelaySynchronizer} from "@atomiqlabs/base";
|
|
5
4
|
import {BigNumberish, hash} from "starknet";
|
|
6
5
|
import {StarknetBtcStoredHeader} from "../../../../btcrelay/headers/StarknetBtcStoredHeader";
|
|
7
6
|
import {StarknetTx} from "../../../../chain/modules/StarknetTransactions";
|
|
8
7
|
import {StarknetBtcRelay} from "../../../../btcrelay/StarknetBtcRelay";
|
|
9
8
|
import {bufferToU32Array, getLogger, u32ArrayToBuffer} from "../../../../../utils/Utils";
|
|
9
|
+
import {StarknetGas} from "../../../../chain/modules/StarknetFees";
|
|
10
10
|
|
|
11
11
|
export type BitcoinCommitmentData = {
|
|
12
12
|
btcRelay: StarknetBtcRelay<any>,
|
|
@@ -33,7 +33,7 @@ export abstract class IBitcoinClaimHandler<C, W extends BitcoinWitnessData> impl
|
|
|
33
33
|
|
|
34
34
|
public static readonly address = "";
|
|
35
35
|
public static readonly type: ChainSwapType = ChainSwapType.CHAIN_TXID;
|
|
36
|
-
public static readonly gas: StarknetGas = {
|
|
36
|
+
public static readonly gas: StarknetGas = {l1DataGas: 0, l2Gas: 20_000 * 40_000, l1Gas: 0};
|
|
37
37
|
|
|
38
38
|
protected serializeCommitment(data: BitcoinCommitmentData): BigNumberish[] {
|
|
39
39
|
return [
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {StarknetTx} from "../../../chain/modules/StarknetTransactions";
|
|
2
2
|
import {StarknetSwapData} from "../../StarknetSwapData";
|
|
3
|
-
import {bigNumberishToBuffer
|
|
3
|
+
import {bigNumberishToBuffer} from "../../../../utils/Utils";
|
|
4
4
|
import {BigNumberish} from "starknet";
|
|
5
5
|
import {IHandler} from "../IHandler";
|
|
6
|
-
import {StarknetGas} from "../../../chain/
|
|
6
|
+
import {StarknetGas} from "../../../chain/modules/StarknetFees";
|
|
7
7
|
|
|
8
8
|
export class TimelockRefundHandler implements IHandler<bigint, never> {
|
|
9
9
|
|
|
10
10
|
public readonly address: string;
|
|
11
|
-
public static readonly gas: StarknetGas = {
|
|
11
|
+
public static readonly gas: StarknetGas = {l1DataGas: 0, l2Gas: 4_000_000, l1Gas: 0};
|
|
12
12
|
|
|
13
13
|
constructor(address: string) {
|
|
14
14
|
this.address = address;
|
|
@@ -8,8 +8,8 @@ import {StarknetTx} from "../../chain/modules/StarknetTransactions";
|
|
|
8
8
|
export class StarknetLpVault extends StarknetSwapModule {
|
|
9
9
|
|
|
10
10
|
private static readonly GasCosts = {
|
|
11
|
-
WITHDRAW: {
|
|
12
|
-
DEPOSIT: {l1:
|
|
11
|
+
WITHDRAW: {l1DataGas: 500, l2Gas: 3_200_000, l1Gas: 0},
|
|
12
|
+
DEPOSIT: {l1: 500, l2Gas: 4_000_000, l1Gas: 0}
|
|
13
13
|
};
|
|
14
14
|
|
|
15
15
|
/**
|
|
@@ -2,11 +2,11 @@ import {ChainSwapType, RelaySynchronizer, SwapDataVerificationError} from "@atom
|
|
|
2
2
|
import {toHex} from "../../../utils/Utils";
|
|
3
3
|
import {StarknetSwapModule} from "../StarknetSwapModule";
|
|
4
4
|
import {StarknetSwapData} from "../StarknetSwapData";
|
|
5
|
-
import {StarknetAction
|
|
5
|
+
import {StarknetAction} from "../../chain/StarknetAction";
|
|
6
6
|
import {BigNumberish} from "starknet";
|
|
7
7
|
import {IClaimHandler} from "../handlers/claim/ClaimHandlers";
|
|
8
8
|
import {StarknetTx} from "../../chain/modules/StarknetTransactions";
|
|
9
|
-
import {StarknetFees} from "../../chain/modules/StarknetFees";
|
|
9
|
+
import {StarknetFees, StarknetGas, starknetGasAdd} from "../../chain/modules/StarknetFees";
|
|
10
10
|
import {StarknetBtcStoredHeader} from "../../btcrelay/headers/StarknetBtcStoredHeader";
|
|
11
11
|
import {BitcoinOutputWitnessData} from "../handlers/claim/btc/BitcoinOutputClaimHandler";
|
|
12
12
|
import {BitcoinWitnessData} from "../handlers/claim/btc/IBitcoinClaimHandler";
|
|
@@ -15,8 +15,8 @@ import {Buffer} from "buffer";
|
|
|
15
15
|
export class StarknetSwapClaim extends StarknetSwapModule {
|
|
16
16
|
|
|
17
17
|
private static readonly GasCosts = {
|
|
18
|
-
CLAIM: {
|
|
19
|
-
CLAIM_PAY_OUT: {
|
|
18
|
+
CLAIM: {l1DataGas: 750, l2Gas: 4_000_000, l1Gas: 0},
|
|
19
|
+
CLAIM_PAY_OUT: {l1DataGas: 900, l2Gas: 6_000_000, l1Gas: 0}
|
|
20
20
|
};
|
|
21
21
|
|
|
22
22
|
/**
|
|
@@ -37,7 +37,7 @@ export class StarknetSwapClaim extends StarknetSwapModule {
|
|
|
37
37
|
): StarknetAction {
|
|
38
38
|
return new StarknetAction(signer, this.root,
|
|
39
39
|
this.swapContract.populateTransaction.claim(swapData.toEscrowStruct(), witness),
|
|
40
|
-
|
|
40
|
+
starknetGasAdd(swapData.payOut ? StarknetSwapClaim.GasCosts.CLAIM_PAY_OUT : StarknetSwapClaim.GasCosts.CLAIM, claimHandlerGas)
|
|
41
41
|
);
|
|
42
42
|
}
|
|
43
43
|
|
|
@@ -134,9 +134,9 @@ export class StarknetSwapClaim extends StarknetSwapModule {
|
|
|
134
134
|
let gasRequired = swapData.payOut ? StarknetSwapClaim.GasCosts.CLAIM_PAY_OUT : StarknetSwapClaim.GasCosts.CLAIM;
|
|
135
135
|
|
|
136
136
|
const claimHandler: IClaimHandler<any, any> = this.contract.claimHandlersByAddress[swapData.claimHandler.toLowerCase()];
|
|
137
|
-
if(claimHandler!=null) gasRequired =
|
|
137
|
+
if(claimHandler!=null) gasRequired = starknetGasAdd(gasRequired, claimHandler.getGas(swapData));
|
|
138
138
|
|
|
139
|
-
return StarknetFees.getGasFee(gasRequired
|
|
139
|
+
return StarknetFees.getGasFee(gasRequired, feeRate);
|
|
140
140
|
}
|
|
141
141
|
|
|
142
142
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {SignatureVerificationError, SwapCommitStatus, SwapDataVerificationError} from "@atomiqlabs/base";
|
|
2
|
-
import {bufferToBytes31Span,
|
|
2
|
+
import {bufferToBytes31Span, toHex, tryWithRetries} from "../../../utils/Utils";
|
|
3
3
|
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 {
|
|
@@ -221,6 +256,6 @@ export class StarknetSwapInit extends StarknetSwapModule {
|
|
|
221
256
|
*/
|
|
222
257
|
async getInitFee(swapData?: StarknetSwapData, feeRate?: string): Promise<bigint> {
|
|
223
258
|
feeRate ??= await this.root.Fees.getFeeRate();
|
|
224
|
-
return StarknetFees.getGasFee(swapData.payIn ? StarknetSwapInit.GasCosts.INIT_PAY_IN
|
|
259
|
+
return StarknetFees.getGasFee(swapData.payIn ? StarknetSwapInit.GasCosts.INIT_PAY_IN : StarknetSwapInit.GasCosts.INIT, feeRate);
|
|
225
260
|
}
|
|
226
261
|
}
|
|
@@ -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";
|