@atomiqlabs/chain-starknet 1.0.3 → 1.0.5
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 +4 -0
- package/dist/starknet/btcrelay/StarknetBtcRelay.js +2 -2
- package/dist/starknet/swaps/EscrowManagerAbi.d.ts +7 -47
- package/dist/starknet/swaps/EscrowManagerAbi.js +9 -63
- package/dist/starknet/swaps/StarknetSwapContract.js +9 -9
- package/dist/starknet/swaps/StarknetSwapData.d.ts +1 -8
- package/dist/starknet/swaps/StarknetSwapData.js +5 -40
- package/dist/starknet/wallet/StarknetKeypairWallet.js +1 -1
- package/package.json +1 -1
- package/src/starknet/StarknetInitializer.ts +5 -1
- package/src/starknet/btcrelay/StarknetBtcRelay.ts +2 -2
- package/src/starknet/swaps/EscrowManagerAbi.ts +9 -63
- package/src/starknet/swaps/StarknetSwapContract.ts +9 -10
- package/src/starknet/swaps/StarknetSwapData.ts +6 -53
- package/src/starknet/wallet/StarknetKeypairWallet.ts +1 -1
|
@@ -3,7 +3,7 @@ import { StarknetFees } from "./base/modules/StarknetFees";
|
|
|
3
3
|
import { StarknetRetryPolicy } from "./base/StarknetBase";
|
|
4
4
|
import { BaseTokenType, BitcoinNetwork, BitcoinRpc, ChainData, ChainInitializer } from "@atomiqlabs/base";
|
|
5
5
|
import { StarknetChainType } from "./StarknetChainType";
|
|
6
|
-
export type StarknetAssetsType = BaseTokenType<"ETH" | "STRK">;
|
|
6
|
+
export type StarknetAssetsType = BaseTokenType<"ETH" | "STRK" | "WBTC">;
|
|
7
7
|
export declare const StarknetAssets: StarknetAssetsType;
|
|
8
8
|
export type StarknetOptions = {
|
|
9
9
|
rpcUrl: string | Provider;
|
|
@@ -18,6 +18,10 @@ exports.StarknetAssets = {
|
|
|
18
18
|
address: "0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d",
|
|
19
19
|
decimals: 18,
|
|
20
20
|
displayDecimals: 9
|
|
21
|
+
},
|
|
22
|
+
WBTC: {
|
|
23
|
+
address: "0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac",
|
|
24
|
+
decimals: 8
|
|
21
25
|
}
|
|
22
26
|
};
|
|
23
27
|
function initializeStarknet(options, bitcoinRpc, network) {
|
|
@@ -25,8 +25,8 @@ function serializeBlockHeader(e) {
|
|
|
25
25
|
const GAS_PER_BLOCKHEADER = 750;
|
|
26
26
|
const GAS_PER_BLOCKHEADER_FORK = 750;
|
|
27
27
|
const btcRelayAddreses = {
|
|
28
|
-
[starknet_1.constants.StarknetChainId.SN_SEPOLIA]: "
|
|
29
|
-
[starknet_1.constants.StarknetChainId.SN_MAIN]: "
|
|
28
|
+
[starknet_1.constants.StarknetChainId.SN_SEPOLIA]: "0x039840c19fae41675e18c967a2ac13b709657893551eca54e175ee4fdf4b453d",
|
|
29
|
+
[starknet_1.constants.StarknetChainId.SN_MAIN]: "0x057b14a4231b82f1e525ff35a722d893ca3dd2bde0baa6cee97937c5be861dbc"
|
|
30
30
|
};
|
|
31
31
|
function serializeCalldata(headers, storedHeader, span) {
|
|
32
32
|
span.push((0, Utils_1.toHex)(headers.length));
|
|
@@ -12,33 +12,6 @@ export declare const EscrowManagerAbi: readonly [{
|
|
|
12
12
|
readonly name: "high";
|
|
13
13
|
readonly type: "core::integer::u128";
|
|
14
14
|
}];
|
|
15
|
-
}, {
|
|
16
|
-
readonly type: "struct";
|
|
17
|
-
readonly name: "core::array::Span::<core::felt252>";
|
|
18
|
-
readonly members: readonly [{
|
|
19
|
-
readonly name: "snapshot";
|
|
20
|
-
readonly type: "@core::array::Array::<core::felt252>";
|
|
21
|
-
}];
|
|
22
|
-
}, {
|
|
23
|
-
readonly type: "struct";
|
|
24
|
-
readonly name: "escrow_manager::structs::contract_call::ContractCall";
|
|
25
|
-
readonly members: readonly [{
|
|
26
|
-
readonly name: "address";
|
|
27
|
-
readonly type: "core::starknet::contract_address::ContractAddress";
|
|
28
|
-
}, {
|
|
29
|
-
readonly name: "entrypoint";
|
|
30
|
-
readonly type: "core::felt252";
|
|
31
|
-
}, {
|
|
32
|
-
readonly name: "calldata";
|
|
33
|
-
readonly type: "core::array::Span::<core::felt252>";
|
|
34
|
-
}];
|
|
35
|
-
}, {
|
|
36
|
-
readonly type: "struct";
|
|
37
|
-
readonly name: "core::array::Span::<escrow_manager::structs::contract_call::ContractCall>";
|
|
38
|
-
readonly members: readonly [{
|
|
39
|
-
readonly name: "snapshot";
|
|
40
|
-
readonly type: "@core::array::Array::<escrow_manager::structs::contract_call::ContractCall>";
|
|
41
|
-
}];
|
|
42
15
|
}, {
|
|
43
16
|
readonly type: "struct";
|
|
44
17
|
readonly name: "escrow_manager::structs::escrow::EscrowData";
|
|
@@ -78,9 +51,13 @@ export declare const EscrowManagerAbi: readonly [{
|
|
|
78
51
|
}, {
|
|
79
52
|
readonly name: "claimer_bounty";
|
|
80
53
|
readonly type: "core::integer::u256";
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
|
|
54
|
+
}];
|
|
55
|
+
}, {
|
|
56
|
+
readonly type: "struct";
|
|
57
|
+
readonly name: "core::array::Span::<core::felt252>";
|
|
58
|
+
readonly members: readonly [{
|
|
59
|
+
readonly name: "snapshot";
|
|
60
|
+
readonly type: "@core::array::Array::<core::felt252>";
|
|
84
61
|
}];
|
|
85
62
|
}, {
|
|
86
63
|
readonly type: "interface";
|
|
@@ -293,10 +270,6 @@ export declare const EscrowManagerAbi: readonly [{
|
|
|
293
270
|
}];
|
|
294
271
|
readonly state_mutability: "view";
|
|
295
272
|
}];
|
|
296
|
-
}, {
|
|
297
|
-
readonly type: "constructor";
|
|
298
|
-
readonly name: "constructor";
|
|
299
|
-
readonly inputs: readonly [];
|
|
300
273
|
}, {
|
|
301
274
|
readonly type: "event";
|
|
302
275
|
readonly name: "escrow_manager::components::lp_vault::lp_vault::Event";
|
|
@@ -399,15 +372,6 @@ export declare const EscrowManagerAbi: readonly [{
|
|
|
399
372
|
readonly type: "core::starknet::contract_address::ContractAddress";
|
|
400
373
|
readonly kind: "data";
|
|
401
374
|
}];
|
|
402
|
-
}, {
|
|
403
|
-
readonly type: "event";
|
|
404
|
-
readonly name: "escrow_manager::events::SuccessActionExecuteError";
|
|
405
|
-
readonly kind: "struct";
|
|
406
|
-
readonly members: readonly [{
|
|
407
|
-
readonly name: "error";
|
|
408
|
-
readonly type: "core::array::Span::<core::felt252>";
|
|
409
|
-
readonly kind: "data";
|
|
410
|
-
}];
|
|
411
375
|
}, {
|
|
412
376
|
readonly type: "event";
|
|
413
377
|
readonly name: "escrow_manager::EscrowManager::Event";
|
|
@@ -436,10 +400,6 @@ export declare const EscrowManagerAbi: readonly [{
|
|
|
436
400
|
readonly name: "Refund";
|
|
437
401
|
readonly type: "escrow_manager::events::Refund";
|
|
438
402
|
readonly kind: "nested";
|
|
439
|
-
}, {
|
|
440
|
-
readonly name: "SuccessActionExecuteError";
|
|
441
|
-
readonly type: "escrow_manager::events::SuccessActionExecuteError";
|
|
442
|
-
readonly kind: "nested";
|
|
443
403
|
}];
|
|
444
404
|
}];
|
|
445
405
|
export type EscrowManagerAbiType = typeof EscrowManagerAbi;
|
|
@@ -21,44 +21,6 @@ exports.EscrowManagerAbi = [
|
|
|
21
21
|
}
|
|
22
22
|
]
|
|
23
23
|
},
|
|
24
|
-
{
|
|
25
|
-
"type": "struct",
|
|
26
|
-
"name": "core::array::Span::<core::felt252>",
|
|
27
|
-
"members": [
|
|
28
|
-
{
|
|
29
|
-
"name": "snapshot",
|
|
30
|
-
"type": "@core::array::Array::<core::felt252>"
|
|
31
|
-
}
|
|
32
|
-
]
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
"type": "struct",
|
|
36
|
-
"name": "escrow_manager::structs::contract_call::ContractCall",
|
|
37
|
-
"members": [
|
|
38
|
-
{
|
|
39
|
-
"name": "address",
|
|
40
|
-
"type": "core::starknet::contract_address::ContractAddress"
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
"name": "entrypoint",
|
|
44
|
-
"type": "core::felt252"
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
"name": "calldata",
|
|
48
|
-
"type": "core::array::Span::<core::felt252>"
|
|
49
|
-
}
|
|
50
|
-
]
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
"type": "struct",
|
|
54
|
-
"name": "core::array::Span::<escrow_manager::structs::contract_call::ContractCall>",
|
|
55
|
-
"members": [
|
|
56
|
-
{
|
|
57
|
-
"name": "snapshot",
|
|
58
|
-
"type": "@core::array::Array::<escrow_manager::structs::contract_call::ContractCall>"
|
|
59
|
-
}
|
|
60
|
-
]
|
|
61
|
-
},
|
|
62
24
|
{
|
|
63
25
|
"type": "struct",
|
|
64
26
|
"name": "escrow_manager::structs::escrow::EscrowData",
|
|
@@ -110,10 +72,16 @@ exports.EscrowManagerAbi = [
|
|
|
110
72
|
{
|
|
111
73
|
"name": "claimer_bounty",
|
|
112
74
|
"type": "core::integer::u256"
|
|
113
|
-
}
|
|
75
|
+
}
|
|
76
|
+
]
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"type": "struct",
|
|
80
|
+
"name": "core::array::Span::<core::felt252>",
|
|
81
|
+
"members": [
|
|
114
82
|
{
|
|
115
|
-
"name": "
|
|
116
|
-
"type": "core::array::
|
|
83
|
+
"name": "snapshot",
|
|
84
|
+
"type": "@core::array::Array::<core::felt252>"
|
|
117
85
|
}
|
|
118
86
|
]
|
|
119
87
|
},
|
|
@@ -410,11 +378,6 @@ exports.EscrowManagerAbi = [
|
|
|
410
378
|
}
|
|
411
379
|
]
|
|
412
380
|
},
|
|
413
|
-
{
|
|
414
|
-
"type": "constructor",
|
|
415
|
-
"name": "constructor",
|
|
416
|
-
"inputs": []
|
|
417
|
-
},
|
|
418
381
|
{
|
|
419
382
|
"type": "event",
|
|
420
383
|
"name": "escrow_manager::components::lp_vault::lp_vault::Event",
|
|
@@ -544,18 +507,6 @@ exports.EscrowManagerAbi = [
|
|
|
544
507
|
}
|
|
545
508
|
]
|
|
546
509
|
},
|
|
547
|
-
{
|
|
548
|
-
"type": "event",
|
|
549
|
-
"name": "escrow_manager::events::SuccessActionExecuteError",
|
|
550
|
-
"kind": "struct",
|
|
551
|
-
"members": [
|
|
552
|
-
{
|
|
553
|
-
"name": "error",
|
|
554
|
-
"type": "core::array::Span::<core::felt252>",
|
|
555
|
-
"kind": "data"
|
|
556
|
-
}
|
|
557
|
-
]
|
|
558
|
-
},
|
|
559
510
|
{
|
|
560
511
|
"type": "event",
|
|
561
512
|
"name": "escrow_manager::EscrowManager::Event",
|
|
@@ -590,11 +541,6 @@ exports.EscrowManagerAbi = [
|
|
|
590
541
|
"name": "Refund",
|
|
591
542
|
"type": "escrow_manager::events::Refund",
|
|
592
543
|
"kind": "nested"
|
|
593
|
-
},
|
|
594
|
-
{
|
|
595
|
-
"name": "SuccessActionExecuteError",
|
|
596
|
-
"type": "escrow_manager::events::SuccessActionExecuteError",
|
|
597
|
-
"kind": "nested"
|
|
598
544
|
}
|
|
599
545
|
]
|
|
600
546
|
}
|
|
@@ -22,8 +22,8 @@ const ESCROW_STATE_COMMITTED = 1;
|
|
|
22
22
|
const ESCROW_STATE_CLAIMED = 2;
|
|
23
23
|
const ESCROW_STATE_REFUNDED = 3;
|
|
24
24
|
const swapContractAddreses = {
|
|
25
|
-
[starknet_1.constants.StarknetChainId.SN_SEPOLIA]: "
|
|
26
|
-
[starknet_1.constants.StarknetChainId.SN_MAIN]: "
|
|
25
|
+
[starknet_1.constants.StarknetChainId.SN_SEPOLIA]: "0x06874044dae5bbe712775cdb576d6aef45fc87a22ce629f2b101a7d591d4e7ca",
|
|
26
|
+
[starknet_1.constants.StarknetChainId.SN_MAIN]: "0x04fb26d02d2cf612566cd86cab299716d926272e9f49514670233952ecaf8f0c"
|
|
27
27
|
};
|
|
28
28
|
const defaultClaimAddresses = {
|
|
29
29
|
[starknet_1.constants.StarknetChainId.SN_SEPOLIA]: {
|
|
@@ -33,18 +33,18 @@ const defaultClaimAddresses = {
|
|
|
33
33
|
[base_1.ChainSwapType.CHAIN_NONCED]: "0x050e50eacd16da414f2c3a7c3570fd5e248974c6fe757d41acbf72d2836fa0a1"
|
|
34
34
|
},
|
|
35
35
|
[starknet_1.constants.StarknetChainId.SN_MAIN]: {
|
|
36
|
-
[base_1.ChainSwapType.HTLC]: "
|
|
37
|
-
[base_1.ChainSwapType.CHAIN_TXID]: "
|
|
38
|
-
[base_1.ChainSwapType.CHAIN]: "
|
|
39
|
-
[base_1.ChainSwapType.CHAIN_NONCED]: "
|
|
36
|
+
[base_1.ChainSwapType.HTLC]: "0x07b74b50a883ebee262b6db0e3c0c697670c6f30e3d610e75faf33a89c46aa2a",
|
|
37
|
+
[base_1.ChainSwapType.CHAIN_TXID]: "0x016c2db2b03f39cf4fd7f871035000f66b62307d9983056e33a38315da8a44dc",
|
|
38
|
+
[base_1.ChainSwapType.CHAIN]: "0x02c45a81c4a48d0645a0a199e620061e8a55dcc9c2b5946d050eaeeddba64e9a",
|
|
39
|
+
[base_1.ChainSwapType.CHAIN_NONCED]: "0x0019b5480dd7ed8ded10a09437b0a7a30b8997b4ef139deb24ff8c86f995d84f"
|
|
40
40
|
}
|
|
41
41
|
};
|
|
42
42
|
const defaultRefundAddresses = {
|
|
43
43
|
[starknet_1.constants.StarknetChainId.SN_SEPOLIA]: {
|
|
44
|
-
timelock: "
|
|
44
|
+
timelock: "0x034b8f28b3ca979036cb2849cfa3af7f67207459224b6ca5ce2474aa398ec3e7"
|
|
45
45
|
},
|
|
46
46
|
[starknet_1.constants.StarknetChainId.SN_MAIN]: {
|
|
47
|
-
timelock: "
|
|
47
|
+
timelock: "0x06a59659990c2aefbf7239f6d911617b3ae60b79cb3364f3bd242a6ca8f4f4f7"
|
|
48
48
|
}
|
|
49
49
|
};
|
|
50
50
|
class StarknetSwapContract extends StarknetContractBase_1.StarknetContractBase {
|
|
@@ -275,7 +275,7 @@ class StarknetSwapContract extends StarknetContractBase_1.StarknetContractBase {
|
|
|
275
275
|
//// Swap data initializer
|
|
276
276
|
createSwapData(type, offerer, claimer, token, amount, paymentHash, sequence, expiry, payIn, payOut, securityDeposit, claimerBounty, depositToken = this.Tokens.getNativeCurrencyAddress()) {
|
|
277
277
|
return Promise.resolve(new StarknetSwapData_1.StarknetSwapData(offerer, claimer, token, this.timelockRefundHandler.address, this.claimHandlersBySwapType?.[type]?.address, payOut, payIn, payIn, //For now track reputation for all payIn swaps
|
|
278
|
-
sequence, "0x" + paymentHash, (0, Utils_1.toHex)(expiry), amount, depositToken, securityDeposit, claimerBounty, type, null
|
|
278
|
+
sequence, "0x" + paymentHash, (0, Utils_1.toHex)(expiry), amount, depositToken, securityDeposit, claimerBounty, type, null));
|
|
279
279
|
}
|
|
280
280
|
////////////////////////////////////////////
|
|
281
281
|
//// Utils
|
|
@@ -4,11 +4,6 @@ import { StringToPrimitiveType } from "abi-wan-kanabi/dist/kanabi";
|
|
|
4
4
|
import { EscrowManagerAbi } from "./EscrowManagerAbi";
|
|
5
5
|
import { IClaimHandler } from "./handlers/claim/ClaimHandlers";
|
|
6
6
|
export type StarknetSwapDataType = StringToPrimitiveType<typeof EscrowManagerAbi, "escrow_manager::structs::escrow::EscrowData">;
|
|
7
|
-
type SerializedContractCall = {
|
|
8
|
-
address: string;
|
|
9
|
-
entrypoint: string;
|
|
10
|
-
calldata: string[];
|
|
11
|
-
};
|
|
12
7
|
export declare class StarknetSwapData extends SwapData {
|
|
13
8
|
static toFlags(value: number | bigint | string): {
|
|
14
9
|
payOut: boolean;
|
|
@@ -32,10 +27,9 @@ export declare class StarknetSwapData extends SwapData {
|
|
|
32
27
|
feeToken: string;
|
|
33
28
|
securityDeposit: bigint;
|
|
34
29
|
claimerBounty: bigint;
|
|
35
|
-
successAction: SerializedContractCall[];
|
|
36
30
|
extraData: string;
|
|
37
31
|
kind: ChainSwapType;
|
|
38
|
-
constructor(offerer: string, claimer: string, token: string, refundHandler: string, claimHandler: string, payOut: boolean, payIn: boolean, reputation: boolean, sequence: bigint, claimData: string, refundData: string, amount: bigint, feeToken: string, securityDeposit: bigint, claimerBounty: bigint, kind: ChainSwapType, extraData: string
|
|
32
|
+
constructor(offerer: string, claimer: string, token: string, refundHandler: string, claimHandler: string, payOut: boolean, payIn: boolean, reputation: boolean, sequence: bigint, claimData: string, refundData: string, amount: bigint, feeToken: string, securityDeposit: bigint, claimerBounty: bigint, kind: ChainSwapType, extraData: string);
|
|
39
33
|
constructor(data: any);
|
|
40
34
|
getOfferer(): string;
|
|
41
35
|
setOfferer(newOfferer: string): void;
|
|
@@ -71,4 +65,3 @@ export declare class StarknetSwapData extends SwapData {
|
|
|
71
65
|
toEscrowStruct(): StarknetSwapDataType;
|
|
72
66
|
static fromSerializedFeltArray(span: BigNumberish[], claimHandlerImpl: IClaimHandler<any, any>): StarknetSwapData;
|
|
73
67
|
}
|
|
74
|
-
export {};
|
|
@@ -8,32 +8,6 @@ const Utils_1 = require("../../utils/Utils");
|
|
|
8
8
|
const FLAG_PAY_OUT = 0x01n;
|
|
9
9
|
const FLAG_PAY_IN = 0x02n;
|
|
10
10
|
const FLAG_REPUTATION = 0x04n;
|
|
11
|
-
function deserializeContractCalls(span) {
|
|
12
|
-
const successActionsLen = Number((0, Utils_1.toBigInt)(span.shift()));
|
|
13
|
-
const successActions = [];
|
|
14
|
-
for (let i = 0; i < successActionsLen; i++) {
|
|
15
|
-
const address = (0, Utils_1.toHex)(span.shift());
|
|
16
|
-
const entrypoint = (0, Utils_1.toHex)(span.shift());
|
|
17
|
-
const calldataLen = Number((0, Utils_1.toBigInt)(span.shift()));
|
|
18
|
-
const calldata = span.splice(0, calldataLen).map(Utils_1.toHex);
|
|
19
|
-
successActions.push({
|
|
20
|
-
address,
|
|
21
|
-
entrypoint,
|
|
22
|
-
calldata
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
return successActions;
|
|
26
|
-
}
|
|
27
|
-
function serializeContractCalls(calls, span) {
|
|
28
|
-
span.push((0, Utils_1.toHex)(calls.length));
|
|
29
|
-
calls.forEach((call) => {
|
|
30
|
-
span.push(call.address);
|
|
31
|
-
span.push(call.entrypoint);
|
|
32
|
-
span.push((0, Utils_1.toHex)(call.calldata.length));
|
|
33
|
-
span.push(...call.calldata);
|
|
34
|
-
});
|
|
35
|
-
return span;
|
|
36
|
-
}
|
|
37
11
|
class StarknetSwapData extends base_1.SwapData {
|
|
38
12
|
static toFlags(value) {
|
|
39
13
|
const val = (0, Utils_1.toBigInt)(value);
|
|
@@ -50,7 +24,7 @@ class StarknetSwapData extends base_1.SwapData {
|
|
|
50
24
|
(this.payIn ? FLAG_PAY_IN : 0n) +
|
|
51
25
|
(this.reputation ? FLAG_REPUTATION : 0n);
|
|
52
26
|
}
|
|
53
|
-
constructor(offererOrData, claimer, token, refundHandler, claimHandler, payOut, payIn, reputation, sequence, claimData, refundData, amount, feeToken, securityDeposit, claimerBounty, kind, extraData
|
|
27
|
+
constructor(offererOrData, claimer, token, refundHandler, claimHandler, payOut, payIn, reputation, sequence, claimData, refundData, amount, feeToken, securityDeposit, claimerBounty, kind, extraData) {
|
|
54
28
|
super();
|
|
55
29
|
if (claimer != null || token != null || refundHandler != null || claimHandler != null ||
|
|
56
30
|
payOut != null || payIn != null || reputation != null || sequence != null || claimData != null || refundData != null ||
|
|
@@ -72,7 +46,6 @@ class StarknetSwapData extends base_1.SwapData {
|
|
|
72
46
|
this.claimerBounty = claimerBounty;
|
|
73
47
|
this.kind = kind;
|
|
74
48
|
this.extraData = extraData;
|
|
75
|
-
this.successAction = successAction;
|
|
76
49
|
}
|
|
77
50
|
else {
|
|
78
51
|
this.offerer = offererOrData.offerer;
|
|
@@ -92,11 +65,7 @@ class StarknetSwapData extends base_1.SwapData {
|
|
|
92
65
|
this.claimerBounty = offererOrData.claimerBounty == null ? null : BigInt(offererOrData.claimerBounty);
|
|
93
66
|
this.kind = offererOrData.kind;
|
|
94
67
|
this.extraData = offererOrData.extraData;
|
|
95
|
-
this.successAction = offererOrData.successAction;
|
|
96
68
|
}
|
|
97
|
-
//For now we disallow usage of success actions
|
|
98
|
-
if (this.successAction.length > 0)
|
|
99
|
-
throw new Error("Success actions are not supported yet!");
|
|
100
69
|
}
|
|
101
70
|
getOfferer() {
|
|
102
71
|
return this.offerer;
|
|
@@ -133,8 +102,7 @@ class StarknetSwapData extends base_1.SwapData {
|
|
|
133
102
|
securityDeposit: this.securityDeposit == null ? null : this.securityDeposit.toString(10),
|
|
134
103
|
claimerBounty: this.claimerBounty == null ? null : this.claimerBounty.toString(10),
|
|
135
104
|
kind: this.kind,
|
|
136
|
-
extraData: this.extraData
|
|
137
|
-
successAction: this.successAction
|
|
105
|
+
extraData: this.extraData
|
|
138
106
|
};
|
|
139
107
|
}
|
|
140
108
|
getAmount() {
|
|
@@ -177,8 +145,7 @@ class StarknetSwapData extends base_1.SwapData {
|
|
|
177
145
|
securityDepositValue.low,
|
|
178
146
|
securityDepositValue.high,
|
|
179
147
|
claimerBountyValue.low,
|
|
180
|
-
claimerBountyValue.high
|
|
181
|
-
...serializeContractCalls(this.successAction, []).slice(1) //Remove length prefix
|
|
148
|
+
claimerBountyValue.high
|
|
182
149
|
]);
|
|
183
150
|
if (escrowHash.startsWith("0x"))
|
|
184
151
|
escrowHash = escrowHash.slice(2);
|
|
@@ -291,8 +258,7 @@ class StarknetSwapData extends base_1.SwapData {
|
|
|
291
258
|
amount: starknet_1.cairo.uint256((0, Utils_1.toBigInt)(this.amount)),
|
|
292
259
|
fee_token: this.feeToken,
|
|
293
260
|
security_deposit: starknet_1.cairo.uint256((0, Utils_1.toBigInt)(this.securityDeposit)),
|
|
294
|
-
claimer_bounty: starknet_1.cairo.uint256((0, Utils_1.toBigInt)(this.claimerBounty))
|
|
295
|
-
success_action: this.successAction
|
|
261
|
+
claimer_bounty: starknet_1.cairo.uint256((0, Utils_1.toBigInt)(this.claimerBounty))
|
|
296
262
|
};
|
|
297
263
|
}
|
|
298
264
|
static fromSerializedFeltArray(span, claimHandlerImpl) {
|
|
@@ -308,8 +274,7 @@ class StarknetSwapData extends base_1.SwapData {
|
|
|
308
274
|
const feeToken = (0, Utils_1.toHex)(span.shift());
|
|
309
275
|
const securityDeposit = (0, Utils_1.toBigInt)({ low: span.shift(), high: span.shift() });
|
|
310
276
|
const claimerBounty = (0, Utils_1.toBigInt)({ low: span.shift(), high: span.shift() });
|
|
311
|
-
|
|
312
|
-
return new StarknetSwapData(offerer, claimer, token, refundHandler, claimHandler, payOut, payIn, reputation, sequence, claimData, refundData, amount, feeToken, securityDeposit, claimerBounty, claimHandlerImpl.getType(), null, successActions);
|
|
277
|
+
return new StarknetSwapData(offerer, claimer, token, refundHandler, claimHandler, payOut, payIn, reputation, sequence, claimData, refundData, amount, feeToken, securityDeposit, claimerBounty, claimHandlerImpl.getType(), null);
|
|
313
278
|
}
|
|
314
279
|
}
|
|
315
280
|
exports.StarknetSwapData = StarknetSwapData;
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.StarknetKeypairWallet = void 0;
|
|
4
4
|
const starknet_1 = require("starknet");
|
|
5
5
|
const Utils_1 = require("../../utils/Utils");
|
|
6
|
-
const OZaccountClassHash = '
|
|
6
|
+
const OZaccountClassHash = '0x06e3042fbc368d30508ae7f51a7632f0fcf14a662c60f00f5e438839abcb53ee';
|
|
7
7
|
//Openzeppelin Account wallet
|
|
8
8
|
class StarknetKeypairWallet extends starknet_1.Account {
|
|
9
9
|
constructor(provider, privateKey) {
|
package/package.json
CHANGED
|
@@ -8,7 +8,7 @@ import {BaseTokenType, BitcoinNetwork, BitcoinRpc, ChainData, ChainInitializer}
|
|
|
8
8
|
import {StarknetChainType} from "./StarknetChainType";
|
|
9
9
|
import {StarknetSwapData} from "./swaps/StarknetSwapData";
|
|
10
10
|
|
|
11
|
-
export type StarknetAssetsType = BaseTokenType<"ETH" | "STRK">;
|
|
11
|
+
export type StarknetAssetsType = BaseTokenType<"ETH" | "STRK" | "WBTC">;
|
|
12
12
|
export const StarknetAssets: StarknetAssetsType = {
|
|
13
13
|
ETH: {
|
|
14
14
|
address: "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7",
|
|
@@ -19,6 +19,10 @@ export const StarknetAssets: StarknetAssetsType = {
|
|
|
19
19
|
address: "0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d",
|
|
20
20
|
decimals: 18,
|
|
21
21
|
displayDecimals: 9
|
|
22
|
+
},
|
|
23
|
+
WBTC: {
|
|
24
|
+
address: "0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac",
|
|
25
|
+
decimals: 8
|
|
22
26
|
}
|
|
23
27
|
} as const;
|
|
24
28
|
|
|
@@ -33,8 +33,8 @@ const GAS_PER_BLOCKHEADER = 750;
|
|
|
33
33
|
const GAS_PER_BLOCKHEADER_FORK = 750;
|
|
34
34
|
|
|
35
35
|
const btcRelayAddreses = {
|
|
36
|
-
[constants.StarknetChainId.SN_SEPOLIA]: "
|
|
37
|
-
[constants.StarknetChainId.SN_MAIN]: "
|
|
36
|
+
[constants.StarknetChainId.SN_SEPOLIA]: "0x039840c19fae41675e18c967a2ac13b709657893551eca54e175ee4fdf4b453d",
|
|
37
|
+
[constants.StarknetChainId.SN_MAIN]: "0x057b14a4231b82f1e525ff35a722d893ca3dd2bde0baa6cee97937c5be861dbc"
|
|
38
38
|
};
|
|
39
39
|
|
|
40
40
|
function serializeCalldata(headers: StarknetBtcHeader[], storedHeader: StarknetBtcStoredHeader, span: BigNumberish[]) {
|
|
@@ -18,44 +18,6 @@ export const EscrowManagerAbi = [
|
|
|
18
18
|
}
|
|
19
19
|
]
|
|
20
20
|
},
|
|
21
|
-
{
|
|
22
|
-
"type": "struct",
|
|
23
|
-
"name": "core::array::Span::<core::felt252>",
|
|
24
|
-
"members": [
|
|
25
|
-
{
|
|
26
|
-
"name": "snapshot",
|
|
27
|
-
"type": "@core::array::Array::<core::felt252>"
|
|
28
|
-
}
|
|
29
|
-
]
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
"type": "struct",
|
|
33
|
-
"name": "escrow_manager::structs::contract_call::ContractCall",
|
|
34
|
-
"members": [
|
|
35
|
-
{
|
|
36
|
-
"name": "address",
|
|
37
|
-
"type": "core::starknet::contract_address::ContractAddress"
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
"name": "entrypoint",
|
|
41
|
-
"type": "core::felt252"
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
"name": "calldata",
|
|
45
|
-
"type": "core::array::Span::<core::felt252>"
|
|
46
|
-
}
|
|
47
|
-
]
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
"type": "struct",
|
|
51
|
-
"name": "core::array::Span::<escrow_manager::structs::contract_call::ContractCall>",
|
|
52
|
-
"members": [
|
|
53
|
-
{
|
|
54
|
-
"name": "snapshot",
|
|
55
|
-
"type": "@core::array::Array::<escrow_manager::structs::contract_call::ContractCall>"
|
|
56
|
-
}
|
|
57
|
-
]
|
|
58
|
-
},
|
|
59
21
|
{
|
|
60
22
|
"type": "struct",
|
|
61
23
|
"name": "escrow_manager::structs::escrow::EscrowData",
|
|
@@ -107,10 +69,16 @@ export const EscrowManagerAbi = [
|
|
|
107
69
|
{
|
|
108
70
|
"name": "claimer_bounty",
|
|
109
71
|
"type": "core::integer::u256"
|
|
110
|
-
}
|
|
72
|
+
}
|
|
73
|
+
]
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"type": "struct",
|
|
77
|
+
"name": "core::array::Span::<core::felt252>",
|
|
78
|
+
"members": [
|
|
111
79
|
{
|
|
112
|
-
"name": "
|
|
113
|
-
"type": "core::array::
|
|
80
|
+
"name": "snapshot",
|
|
81
|
+
"type": "@core::array::Array::<core::felt252>"
|
|
114
82
|
}
|
|
115
83
|
]
|
|
116
84
|
},
|
|
@@ -407,11 +375,6 @@ export const EscrowManagerAbi = [
|
|
|
407
375
|
}
|
|
408
376
|
]
|
|
409
377
|
},
|
|
410
|
-
{
|
|
411
|
-
"type": "constructor",
|
|
412
|
-
"name": "constructor",
|
|
413
|
-
"inputs": []
|
|
414
|
-
},
|
|
415
378
|
{
|
|
416
379
|
"type": "event",
|
|
417
380
|
"name": "escrow_manager::components::lp_vault::lp_vault::Event",
|
|
@@ -541,18 +504,6 @@ export const EscrowManagerAbi = [
|
|
|
541
504
|
}
|
|
542
505
|
]
|
|
543
506
|
},
|
|
544
|
-
{
|
|
545
|
-
"type": "event",
|
|
546
|
-
"name": "escrow_manager::events::SuccessActionExecuteError",
|
|
547
|
-
"kind": "struct",
|
|
548
|
-
"members": [
|
|
549
|
-
{
|
|
550
|
-
"name": "error",
|
|
551
|
-
"type": "core::array::Span::<core::felt252>",
|
|
552
|
-
"kind": "data"
|
|
553
|
-
}
|
|
554
|
-
]
|
|
555
|
-
},
|
|
556
507
|
{
|
|
557
508
|
"type": "event",
|
|
558
509
|
"name": "escrow_manager::EscrowManager::Event",
|
|
@@ -587,11 +538,6 @@ export const EscrowManagerAbi = [
|
|
|
587
538
|
"name": "Refund",
|
|
588
539
|
"type": "escrow_manager::events::Refund",
|
|
589
540
|
"kind": "nested"
|
|
590
|
-
},
|
|
591
|
-
{
|
|
592
|
-
"name": "SuccessActionExecuteError",
|
|
593
|
-
"type": "escrow_manager::events::SuccessActionExecuteError",
|
|
594
|
-
"kind": "nested"
|
|
595
541
|
}
|
|
596
542
|
]
|
|
597
543
|
}
|
|
@@ -35,8 +35,8 @@ const ESCROW_STATE_CLAIMED = 2;
|
|
|
35
35
|
const ESCROW_STATE_REFUNDED = 3;
|
|
36
36
|
|
|
37
37
|
const swapContractAddreses = {
|
|
38
|
-
[constants.StarknetChainId.SN_SEPOLIA]: "
|
|
39
|
-
[constants.StarknetChainId.SN_MAIN]: "
|
|
38
|
+
[constants.StarknetChainId.SN_SEPOLIA]: "0x06874044dae5bbe712775cdb576d6aef45fc87a22ce629f2b101a7d591d4e7ca",
|
|
39
|
+
[constants.StarknetChainId.SN_MAIN]: "0x04fb26d02d2cf612566cd86cab299716d926272e9f49514670233952ecaf8f0c"
|
|
40
40
|
};
|
|
41
41
|
|
|
42
42
|
const defaultClaimAddresses = {
|
|
@@ -47,19 +47,19 @@ const defaultClaimAddresses = {
|
|
|
47
47
|
[ChainSwapType.CHAIN_NONCED]: "0x050e50eacd16da414f2c3a7c3570fd5e248974c6fe757d41acbf72d2836fa0a1"
|
|
48
48
|
},
|
|
49
49
|
[constants.StarknetChainId.SN_MAIN]: {
|
|
50
|
-
[ChainSwapType.HTLC]: "
|
|
51
|
-
[ChainSwapType.CHAIN_TXID]: "
|
|
52
|
-
[ChainSwapType.CHAIN]: "
|
|
53
|
-
[ChainSwapType.CHAIN_NONCED]: "
|
|
50
|
+
[ChainSwapType.HTLC]: "0x07b74b50a883ebee262b6db0e3c0c697670c6f30e3d610e75faf33a89c46aa2a",
|
|
51
|
+
[ChainSwapType.CHAIN_TXID]: "0x016c2db2b03f39cf4fd7f871035000f66b62307d9983056e33a38315da8a44dc",
|
|
52
|
+
[ChainSwapType.CHAIN]: "0x02c45a81c4a48d0645a0a199e620061e8a55dcc9c2b5946d050eaeeddba64e9a",
|
|
53
|
+
[ChainSwapType.CHAIN_NONCED]: "0x0019b5480dd7ed8ded10a09437b0a7a30b8997b4ef139deb24ff8c86f995d84f"
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
const defaultRefundAddresses = {
|
|
58
58
|
[constants.StarknetChainId.SN_SEPOLIA]: {
|
|
59
|
-
timelock: "
|
|
59
|
+
timelock: "0x034b8f28b3ca979036cb2849cfa3af7f67207459224b6ca5ce2474aa398ec3e7"
|
|
60
60
|
},
|
|
61
61
|
[constants.StarknetChainId.SN_MAIN]: {
|
|
62
|
-
timelock: "
|
|
62
|
+
timelock: "0x06a59659990c2aefbf7239f6d911617b3ae60b79cb3364f3bd242a6ca8f4f4f7"
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
65
|
|
|
@@ -377,8 +377,7 @@ export class StarknetSwapContract
|
|
|
377
377
|
securityDeposit,
|
|
378
378
|
claimerBounty,
|
|
379
379
|
type,
|
|
380
|
-
null
|
|
381
|
-
[]
|
|
380
|
+
null
|
|
382
381
|
));
|
|
383
382
|
}
|
|
384
383
|
|
|
@@ -14,40 +14,6 @@ const FLAG_REPUTATION: bigint = 0x04n;
|
|
|
14
14
|
|
|
15
15
|
export type StarknetSwapDataType = StringToPrimitiveType<typeof EscrowManagerAbi, "escrow_manager::structs::escrow::EscrowData">;
|
|
16
16
|
|
|
17
|
-
type SerializedContractCall = {
|
|
18
|
-
address: string,
|
|
19
|
-
entrypoint: string,
|
|
20
|
-
calldata: string[]
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
function deserializeContractCalls(span: BigNumberish[]): SerializedContractCall[] {
|
|
24
|
-
const successActionsLen = Number(toBigInt(span.shift()));
|
|
25
|
-
const successActions: SerializedContractCall[] = [];
|
|
26
|
-
for(let i=0; i<successActionsLen; i++) {
|
|
27
|
-
const address = toHex(span.shift());
|
|
28
|
-
const entrypoint = toHex(span.shift());
|
|
29
|
-
const calldataLen = Number(toBigInt(span.shift()));
|
|
30
|
-
const calldata = span.splice(0, calldataLen).map(toHex);
|
|
31
|
-
successActions.push({
|
|
32
|
-
address,
|
|
33
|
-
entrypoint,
|
|
34
|
-
calldata
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
return successActions;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
function serializeContractCalls(calls: SerializedContractCall[], span: BigNumberish[]): BigNumberish[] {
|
|
41
|
-
span.push(toHex(calls.length));
|
|
42
|
-
calls.forEach((call) => {
|
|
43
|
-
span.push(call.address);
|
|
44
|
-
span.push(call.entrypoint);
|
|
45
|
-
span.push(toHex(call.calldata.length));
|
|
46
|
-
span.push(...call.calldata);
|
|
47
|
-
});
|
|
48
|
-
return span;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
17
|
export class StarknetSwapData extends SwapData {
|
|
52
18
|
|
|
53
19
|
static toFlags(value: number | bigint | string): {payOut: boolean, payIn: boolean, reputation: boolean, sequence: bigint} {
|
|
@@ -89,8 +55,6 @@ export class StarknetSwapData extends SwapData {
|
|
|
89
55
|
securityDeposit: bigint;
|
|
90
56
|
claimerBounty: bigint;
|
|
91
57
|
|
|
92
|
-
successAction: SerializedContractCall[];
|
|
93
|
-
|
|
94
58
|
extraData: string;
|
|
95
59
|
|
|
96
60
|
kind: ChainSwapType;
|
|
@@ -112,8 +76,7 @@ export class StarknetSwapData extends SwapData {
|
|
|
112
76
|
securityDeposit: bigint,
|
|
113
77
|
claimerBounty: bigint,
|
|
114
78
|
kind: ChainSwapType,
|
|
115
|
-
extraData: string
|
|
116
|
-
successAction: SerializedContractCall[]
|
|
79
|
+
extraData: string
|
|
117
80
|
);
|
|
118
81
|
|
|
119
82
|
constructor(data: any);
|
|
@@ -135,8 +98,7 @@ export class StarknetSwapData extends SwapData {
|
|
|
135
98
|
securityDeposit?: bigint,
|
|
136
99
|
claimerBounty?: bigint,
|
|
137
100
|
kind?: ChainSwapType,
|
|
138
|
-
extraData?: string
|
|
139
|
-
successAction?: SerializedContractCall[]
|
|
101
|
+
extraData?: string
|
|
140
102
|
) {
|
|
141
103
|
super();
|
|
142
104
|
if(claimer!=null || token!=null || refundHandler!=null || claimHandler!=null ||
|
|
@@ -159,7 +121,6 @@ export class StarknetSwapData extends SwapData {
|
|
|
159
121
|
this.claimerBounty = claimerBounty;
|
|
160
122
|
this.kind = kind;
|
|
161
123
|
this.extraData = extraData;
|
|
162
|
-
this.successAction = successAction;
|
|
163
124
|
} else {
|
|
164
125
|
this.offerer = offererOrData.offerer;
|
|
165
126
|
this.claimer = offererOrData.claimer;
|
|
@@ -178,10 +139,7 @@ export class StarknetSwapData extends SwapData {
|
|
|
178
139
|
this.claimerBounty = offererOrData.claimerBounty==null ? null : BigInt(offererOrData.claimerBounty);
|
|
179
140
|
this.kind = offererOrData.kind;
|
|
180
141
|
this.extraData = offererOrData.extraData;
|
|
181
|
-
this.successAction = offererOrData.successAction;
|
|
182
142
|
}
|
|
183
|
-
//For now we disallow usage of success actions
|
|
184
|
-
if(this.successAction.length>0) throw new Error("Success actions are not supported yet!");
|
|
185
143
|
}
|
|
186
144
|
|
|
187
145
|
getOfferer(): string {
|
|
@@ -223,8 +181,7 @@ export class StarknetSwapData extends SwapData {
|
|
|
223
181
|
securityDeposit: this.securityDeposit==null ? null : this.securityDeposit.toString(10),
|
|
224
182
|
claimerBounty: this.claimerBounty==null ? null : this.claimerBounty.toString(10),
|
|
225
183
|
kind: this.kind,
|
|
226
|
-
extraData: this.extraData
|
|
227
|
-
successAction: this.successAction
|
|
184
|
+
extraData: this.extraData
|
|
228
185
|
}
|
|
229
186
|
}
|
|
230
187
|
|
|
@@ -275,8 +232,7 @@ export class StarknetSwapData extends SwapData {
|
|
|
275
232
|
securityDepositValue.low,
|
|
276
233
|
securityDepositValue.high,
|
|
277
234
|
claimerBountyValue.low,
|
|
278
|
-
claimerBountyValue.high
|
|
279
|
-
...serializeContractCalls(this.successAction, []).slice(1) //Remove length prefix
|
|
235
|
+
claimerBountyValue.high
|
|
280
236
|
]);
|
|
281
237
|
if(escrowHash.startsWith("0x")) escrowHash = escrowHash.slice(2);
|
|
282
238
|
return escrowHash.padStart(64, "0");
|
|
@@ -394,8 +350,7 @@ export class StarknetSwapData extends SwapData {
|
|
|
394
350
|
amount: cairo.uint256(toBigInt(this.amount)),
|
|
395
351
|
fee_token: this.feeToken,
|
|
396
352
|
security_deposit: cairo.uint256(toBigInt(this.securityDeposit)),
|
|
397
|
-
claimer_bounty: cairo.uint256(toBigInt(this.claimerBounty))
|
|
398
|
-
success_action: this.successAction
|
|
353
|
+
claimer_bounty: cairo.uint256(toBigInt(this.claimerBounty))
|
|
399
354
|
}
|
|
400
355
|
}
|
|
401
356
|
|
|
@@ -412,7 +367,6 @@ export class StarknetSwapData extends SwapData {
|
|
|
412
367
|
const feeToken = toHex(span.shift());
|
|
413
368
|
const securityDeposit = toBigInt({low: span.shift(), high: span.shift()});
|
|
414
369
|
const claimerBounty = toBigInt({low: span.shift(), high: span.shift()});
|
|
415
|
-
const successActions: SerializedContractCall[] = deserializeContractCalls(span)
|
|
416
370
|
|
|
417
371
|
return new StarknetSwapData(
|
|
418
372
|
offerer,
|
|
@@ -431,8 +385,7 @@ export class StarknetSwapData extends SwapData {
|
|
|
431
385
|
securityDeposit,
|
|
432
386
|
claimerBounty,
|
|
433
387
|
claimHandlerImpl.getType(),
|
|
434
|
-
null
|
|
435
|
-
successActions
|
|
388
|
+
null
|
|
436
389
|
);
|
|
437
390
|
}
|
|
438
391
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {Account, CallData, DeployAccountContractPayload, ec, hash, Provider} from "starknet";
|
|
2
2
|
import {toHex} from "../../utils/Utils";
|
|
3
3
|
|
|
4
|
-
const OZaccountClassHash = '
|
|
4
|
+
const OZaccountClassHash = '0x06e3042fbc368d30508ae7f51a7632f0fcf14a662c60f00f5e438839abcb53ee';
|
|
5
5
|
|
|
6
6
|
//Openzeppelin Account wallet
|
|
7
7
|
export class StarknetKeypairWallet extends Account {
|