@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.
@@ -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 ?? (network === base_1.BitcoinNetwork.TESTNET4 ? "0x0099b63f39f0cabb767361de3d8d3e97212351a51540e2687c2571f4da490dbe" : undefined));
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
- [starknet_1.constants.StarknetChainId.SN_SEPOLIA]: "0x068601c79da2231d21e015ccfd59c243861156fa523a12c9f987ec28eb8dbc8c",
29
- [starknet_1.constants.StarknetChainId.SN_MAIN]: "0x057b14a4231b82f1e525ff35a722d893ca3dd2bde0baa6cee97937c5be861dbc"
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[chainInterface.starknetChainId]) {
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
- vaults.push(await this.getVaultData(owner, BigInt(vaultIdStr)));
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atomiqlabs/chain-starknet",
3
- "version": "2.0.0-beta.5",
3
+ "version": "2.0.0-beta.7",
4
4
  "description": "Starknet specific base implementation",
5
5
  "main": "./dist/index.js",
6
6
  "types:": "./dist/index.d.ts",
@@ -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 ?? (network===BitcoinNetwork.TESTNET4 ? "0x0099b63f39f0cabb767361de3d8d3e97212351a51540e2687c2571f4da490dbe" : undefined)
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, constants, hash} from "starknet";
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
- [constants.StarknetChainId.SN_SEPOLIA]: "0x068601c79da2231d21e015ccfd59c243861156fa523a12c9f987ec28eb8dbc8c",
37
- [constants.StarknetChainId.SN_MAIN]: "0x057b14a4231b82f1e525ff35a722d893ca3dd2bde0baa6cee97937c5be861dbc"
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
- contractAddress: string = btcRelayAddreses[chainInterface.starknetChainId],
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
- vaults.push(await this.getVaultData(owner, BigInt(vaultIdStr)));
189
+ const vaultData = await this.getVaultData(owner, BigInt(vaultIdStr));
190
+ if(vaultData!=null) vaults.push(vaultData);
189
191
  }
190
192
  return vaults;
191
193
  }