@atomiqlabs/chain-starknet 2.0.0-beta.5 → 2.0.0-beta.7
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.js +1 -1
- package/dist/starknet/btcrelay/StarknetBtcRelay.d.ts +2 -2
- package/dist/starknet/btcrelay/StarknetBtcRelay.js +4 -3
- package/dist/starknet/spv_swap/StarknetSpvVaultContract.js +5 -1
- package/package.json +1 -1
- package/src/starknet/StarknetInitializer.ts +1 -1
- package/src/starknet/btcrelay/StarknetBtcRelay.ts +7 -5
- package/src/starknet/spv_swap/StarknetSpvVaultContract.ts +3 -1
|
@@ -37,7 +37,7 @@ function initializeStarknet(options, bitcoinRpc, network) {
|
|
|
37
37
|
const chainId = options.chainId ??
|
|
38
38
|
(network === base_1.BitcoinNetwork.MAINNET ? starknet_1.constants.StarknetChainId.SN_MAIN : starknet_1.constants.StarknetChainId.SN_SEPOLIA);
|
|
39
39
|
const chainInterface = new StarknetChainInterface_1.StarknetChainInterface(chainId, provider, options.retryPolicy, Fees);
|
|
40
|
-
const btcRelay = new StarknetBtcRelay_1.StarknetBtcRelay(chainInterface, bitcoinRpc, options.btcRelayContract
|
|
40
|
+
const btcRelay = new StarknetBtcRelay_1.StarknetBtcRelay(chainInterface, bitcoinRpc, network, options.btcRelayContract);
|
|
41
41
|
const swapContract = new StarknetSwapContract_1.StarknetSwapContract(chainInterface, btcRelay, options.swapContract);
|
|
42
42
|
const spvVaultContract = new StarknetSpvVaultContract_1.StarknetSpvVaultContract(chainInterface, btcRelay, bitcoinRpc, options.spvVaultContract);
|
|
43
43
|
const chainEvents = new StarknetChainEventsBrowser_1.StarknetChainEventsBrowser(chainInterface, swapContract, spvVaultContract);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Buffer } from "buffer";
|
|
2
2
|
import { StarknetBtcHeader } from "./headers/StarknetBtcHeader";
|
|
3
|
-
import { BitcoinRpc, BtcBlock, BtcRelay, RelaySynchronizer } from "@atomiqlabs/base";
|
|
3
|
+
import { BitcoinNetwork, BitcoinRpc, BtcBlock, BtcRelay, RelaySynchronizer } from "@atomiqlabs/base";
|
|
4
4
|
import { StarknetContractBase } from "../contract/StarknetContractBase";
|
|
5
5
|
import { StarknetBtcStoredHeader } from "./headers/StarknetBtcStoredHeader";
|
|
6
6
|
import { StarknetTx } from "../chain/modules/StarknetTransactions";
|
|
@@ -16,7 +16,7 @@ export declare class StarknetBtcRelay<B extends BtcBlock> extends StarknetContra
|
|
|
16
16
|
readonly maxHeadersPerTx: number;
|
|
17
17
|
readonly maxForkHeadersPerTx: number;
|
|
18
18
|
readonly maxShortForkHeadersPerTx: number;
|
|
19
|
-
constructor(chainInterface: StarknetChainInterface, bitcoinRpc: BitcoinRpc<B>, contractAddress?: string);
|
|
19
|
+
constructor(chainInterface: StarknetChainInterface, bitcoinRpc: BitcoinRpc<B>, bitcoinNetwork: BitcoinNetwork, contractAddress?: string);
|
|
20
20
|
/**
|
|
21
21
|
* Computes subsequent commited headers as they will appear on the blockchain when transactions
|
|
22
22
|
* are submitted & confirmed
|
|
@@ -25,8 +25,9 @@ function serializeBlockHeader(e) {
|
|
|
25
25
|
const GAS_PER_BLOCKHEADER = 850;
|
|
26
26
|
const GAS_PER_BLOCKHEADER_FORK = 1000;
|
|
27
27
|
const btcRelayAddreses = {
|
|
28
|
-
[
|
|
29
|
-
[
|
|
28
|
+
[base_1.BitcoinNetwork.TESTNET4]: "0x0099b63f39f0cabb767361de3d8d3e97212351a51540e2687c2571f4da490dbe",
|
|
29
|
+
[base_1.BitcoinNetwork.TESTNET]: "0x068601c79da2231d21e015ccfd59c243861156fa523a12c9f987ec28eb8dbc8c",
|
|
30
|
+
[base_1.BitcoinNetwork.MAINNET]: "0x057b14a4231b82f1e525ff35a722d893ca3dd2bde0baa6cee97937c5be861dbc"
|
|
30
31
|
};
|
|
31
32
|
function serializeCalldata(headers, storedHeader, span) {
|
|
32
33
|
span.push((0, Utils_1.toHex)(headers.length));
|
|
@@ -59,7 +60,7 @@ class StarknetBtcRelay extends StarknetContractBase_1.StarknetContractBase {
|
|
|
59
60
|
calldata: serializeCalldata(forkHeaders, storedHeader, [(0, Utils_1.toHex)(forkId)])
|
|
60
61
|
}, { l1: (GAS_PER_BLOCKHEADER * forkHeaders.length) + (GAS_PER_BLOCKHEADER_FORK * totalForkHeaders), l2: 0 });
|
|
61
62
|
}
|
|
62
|
-
constructor(chainInterface, bitcoinRpc, contractAddress = btcRelayAddreses[
|
|
63
|
+
constructor(chainInterface, bitcoinRpc, bitcoinNetwork, contractAddress = btcRelayAddreses[bitcoinNetwork]) {
|
|
63
64
|
super(chainInterface, contractAddress, BtcRelayAbi_1.BtcRelayAbi);
|
|
64
65
|
this.maxHeadersPerTx = 100;
|
|
65
66
|
this.maxForkHeadersPerTx = 100;
|
|
@@ -93,6 +93,8 @@ class StarknetSpvVaultContract extends StarknetContractBase_1.StarknetContractBa
|
|
|
93
93
|
//Getters
|
|
94
94
|
async getVaultData(owner, vaultId) {
|
|
95
95
|
const struct = await this.contract.get_vault(owner, vaultId);
|
|
96
|
+
if ((0, Utils_1.toHex)(struct.relay_contract) !== (0, Utils_1.toHex)(this.btcRelay.contract.address))
|
|
97
|
+
return null;
|
|
96
98
|
return new StarknetSpvVaultData_1.StarknetSpvVaultData(owner, vaultId, struct);
|
|
97
99
|
}
|
|
98
100
|
async getAllVaults(owner) {
|
|
@@ -112,7 +114,9 @@ class StarknetSpvVaultContract extends StarknetContractBase_1.StarknetContractBa
|
|
|
112
114
|
const vaults = [];
|
|
113
115
|
for (let identifier of openedVaults.keys()) {
|
|
114
116
|
const [owner, vaultIdStr] = identifier.split(":");
|
|
115
|
-
|
|
117
|
+
const vaultData = await this.getVaultData(owner, BigInt(vaultIdStr));
|
|
118
|
+
if (vaultData != null)
|
|
119
|
+
vaults.push(vaultData);
|
|
116
120
|
}
|
|
117
121
|
return vaults;
|
|
118
122
|
}
|
package/package.json
CHANGED
|
@@ -59,7 +59,7 @@ export function initializeStarknet(
|
|
|
59
59
|
const chainInterface = new StarknetChainInterface(chainId, provider, options.retryPolicy, Fees);
|
|
60
60
|
|
|
61
61
|
const btcRelay = new StarknetBtcRelay(
|
|
62
|
-
chainInterface, bitcoinRpc, options.btcRelayContract
|
|
62
|
+
chainInterface, bitcoinRpc, network, options.btcRelayContract
|
|
63
63
|
);
|
|
64
64
|
|
|
65
65
|
const swapContract = new StarknetSwapContract(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {Buffer} from "buffer";
|
|
2
2
|
import {StarknetBtcHeader} from "./headers/StarknetBtcHeader";
|
|
3
|
-
import {BitcoinRpc, BtcBlock, BtcRelay, RelaySynchronizer, StatePredictorUtils} from "@atomiqlabs/base";
|
|
3
|
+
import {BitcoinNetwork, BitcoinRpc, BtcBlock, BtcRelay, RelaySynchronizer, StatePredictorUtils} from "@atomiqlabs/base";
|
|
4
4
|
import {
|
|
5
5
|
bigNumberishToBuffer,
|
|
6
6
|
bufferToU32Array, getLogger,
|
|
@@ -12,7 +12,7 @@ import {StarknetBtcStoredHeader} from "./headers/StarknetBtcStoredHeader";
|
|
|
12
12
|
import {StarknetTx} from "../chain/modules/StarknetTransactions";
|
|
13
13
|
import {StarknetSigner} from "../wallet/StarknetSigner";
|
|
14
14
|
import {BtcRelayAbi} from "./BtcRelayAbi";
|
|
15
|
-
import {BigNumberish,
|
|
15
|
+
import {BigNumberish, hash} from "starknet";
|
|
16
16
|
import {StarknetFees} from "../chain/modules/StarknetFees";
|
|
17
17
|
import {StarknetChainInterface} from "../chain/StarknetChainInterface";
|
|
18
18
|
import {StarknetAction} from "../chain/StarknetAction";
|
|
@@ -33,8 +33,9 @@ const GAS_PER_BLOCKHEADER = 850;
|
|
|
33
33
|
const GAS_PER_BLOCKHEADER_FORK = 1000;
|
|
34
34
|
|
|
35
35
|
const btcRelayAddreses = {
|
|
36
|
-
[
|
|
37
|
-
[
|
|
36
|
+
[BitcoinNetwork.TESTNET4]: "0x0099b63f39f0cabb767361de3d8d3e97212351a51540e2687c2571f4da490dbe",
|
|
37
|
+
[BitcoinNetwork.TESTNET]: "0x068601c79da2231d21e015ccfd59c243861156fa523a12c9f987ec28eb8dbc8c",
|
|
38
|
+
[BitcoinNetwork.MAINNET]: "0x057b14a4231b82f1e525ff35a722d893ca3dd2bde0baa6cee97937c5be861dbc"
|
|
38
39
|
};
|
|
39
40
|
|
|
40
41
|
function serializeCalldata(headers: StarknetBtcHeader[], storedHeader: StarknetBtcStoredHeader, span: BigNumberish[]) {
|
|
@@ -96,7 +97,8 @@ export class StarknetBtcRelay<B extends BtcBlock>
|
|
|
96
97
|
constructor(
|
|
97
98
|
chainInterface: StarknetChainInterface,
|
|
98
99
|
bitcoinRpc: BitcoinRpc<B>,
|
|
99
|
-
|
|
100
|
+
bitcoinNetwork: BitcoinNetwork,
|
|
101
|
+
contractAddress: string = btcRelayAddreses[bitcoinNetwork],
|
|
100
102
|
) {
|
|
101
103
|
super(chainInterface, contractAddress, BtcRelayAbi);
|
|
102
104
|
this.bitcoinRpc = bitcoinRpc;
|
|
@@ -162,6 +162,7 @@ export class StarknetSpvVaultContract
|
|
|
162
162
|
//Getters
|
|
163
163
|
async getVaultData(owner: string, vaultId: bigint): Promise<StarknetSpvVaultData> {
|
|
164
164
|
const struct = await this.contract.get_vault(owner, vaultId);
|
|
165
|
+
if(toHex(struct.relay_contract)!==toHex(this.btcRelay.contract.address)) return null;
|
|
165
166
|
return new StarknetSpvVaultData(owner, vaultId, struct);
|
|
166
167
|
}
|
|
167
168
|
|
|
@@ -185,7 +186,8 @@ export class StarknetSpvVaultContract
|
|
|
185
186
|
const vaults: StarknetSpvVaultData[] = [];
|
|
186
187
|
for(let identifier of openedVaults.keys()) {
|
|
187
188
|
const [owner, vaultIdStr] = identifier.split(":");
|
|
188
|
-
|
|
189
|
+
const vaultData = await this.getVaultData(owner, BigInt(vaultIdStr));
|
|
190
|
+
if(vaultData!=null) vaults.push(vaultData);
|
|
189
191
|
}
|
|
190
192
|
return vaults;
|
|
191
193
|
}
|