@atomiqlabs/chain-starknet 8.0.13 → 8.1.10
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/index.d.ts +18 -18
- package/dist/index.js +42 -42
- package/dist/starknet/StarknetChainType.d.ts +19 -19
- package/dist/starknet/StarknetChainType.js +2 -2
- package/dist/starknet/StarknetInitializer.d.ts +66 -63
- package/dist/starknet/StarknetInitializer.js +101 -101
- package/dist/starknet/btcrelay/BtcRelayAbi.d.ts +250 -250
- package/dist/starknet/btcrelay/BtcRelayAbi.js +341 -341
- package/dist/starknet/btcrelay/StarknetBtcRelay.d.ts +196 -196
- package/dist/starknet/btcrelay/StarknetBtcRelay.js +419 -411
- package/dist/starknet/btcrelay/headers/StarknetBtcHeader.d.ts +70 -70
- package/dist/starknet/btcrelay/headers/StarknetBtcHeader.js +115 -115
- package/dist/starknet/btcrelay/headers/StarknetBtcStoredHeader.d.ts +91 -91
- package/dist/starknet/btcrelay/headers/StarknetBtcStoredHeader.js +155 -155
- package/dist/starknet/chain/StarknetAction.d.ts +19 -19
- package/dist/starknet/chain/StarknetAction.js +74 -74
- package/dist/starknet/chain/StarknetChainInterface.d.ts +142 -143
- package/dist/starknet/chain/StarknetChainInterface.js +198 -199
- package/dist/starknet/chain/StarknetModule.d.ts +8 -8
- package/dist/starknet/chain/StarknetModule.js +12 -12
- package/dist/starknet/chain/modules/ERC20Abi.d.ts +755 -755
- package/dist/starknet/chain/modules/ERC20Abi.js +1032 -1032
- package/dist/starknet/chain/modules/StarknetAccounts.d.ts +6 -6
- package/dist/starknet/chain/modules/StarknetAccounts.js +26 -26
- package/dist/starknet/chain/modules/StarknetAddresses.d.ts +10 -10
- package/dist/starknet/chain/modules/StarknetAddresses.js +27 -27
- package/dist/starknet/chain/modules/StarknetBlocks.d.ts +27 -27
- package/dist/starknet/chain/modules/StarknetBlocks.js +82 -82
- package/dist/starknet/chain/modules/StarknetEvents.d.ts +47 -47
- package/dist/starknet/chain/modules/StarknetEvents.js +90 -90
- package/dist/starknet/chain/modules/StarknetFees.d.ts +118 -104
- package/dist/starknet/chain/modules/StarknetFees.js +150 -146
- package/dist/starknet/chain/modules/StarknetSignatures.d.ts +29 -29
- package/dist/starknet/chain/modules/StarknetSignatures.js +72 -72
- package/dist/starknet/chain/modules/StarknetTokens.d.ts +66 -66
- package/dist/starknet/chain/modules/StarknetTokens.js +99 -99
- package/dist/starknet/chain/modules/StarknetTransactions.d.ts +122 -115
- package/dist/starknet/chain/modules/StarknetTransactions.js +633 -612
- package/dist/starknet/contract/StarknetContractBase.d.ts +14 -13
- package/dist/starknet/contract/StarknetContractBase.js +21 -20
- package/dist/starknet/contract/StarknetContractModule.d.ts +8 -8
- package/dist/starknet/contract/StarknetContractModule.js +11 -11
- package/dist/starknet/contract/modules/StarknetContractEvents.d.ts +56 -57
- package/dist/starknet/contract/modules/StarknetContractEvents.js +111 -111
- package/dist/starknet/events/StarknetChainEvents.d.ts +21 -21
- package/dist/starknet/events/StarknetChainEvents.js +61 -61
- package/dist/starknet/events/StarknetChainEventsBrowser.d.ts +178 -190
- package/dist/starknet/events/StarknetChainEventsBrowser.js +523 -582
- package/dist/starknet/provider/RpcProviderWithRetries.d.ts +49 -53
- package/dist/starknet/provider/RpcProviderWithRetries.js +94 -94
- package/dist/starknet/provider/WebSocketChannelWithRetries.d.ts +21 -21
- package/dist/starknet/provider/WebSocketChannelWithRetries.js +46 -46
- package/dist/starknet/spv_swap/SpvVaultContractAbi.d.ts +488 -488
- package/dist/starknet/spv_swap/SpvVaultContractAbi.js +656 -656
- package/dist/starknet/spv_swap/StarknetSpvVaultContract.d.ts +225 -219
- package/dist/starknet/spv_swap/StarknetSpvVaultContract.js +663 -621
- package/dist/starknet/spv_swap/StarknetSpvVaultData.d.ts +108 -108
- package/dist/starknet/spv_swap/StarknetSpvVaultData.js +190 -190
- package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.d.ts +56 -56
- package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.js +103 -103
- package/dist/starknet/swaps/EscrowManagerAbi.d.ts +431 -431
- package/dist/starknet/swaps/EscrowManagerAbi.js +583 -583
- package/dist/starknet/swaps/StarknetSwapContract.d.ts +309 -278
- package/dist/starknet/swaps/StarknetSwapContract.js +755 -579
- package/dist/starknet/swaps/StarknetSwapData.d.ts +234 -234
- package/dist/starknet/swaps/StarknetSwapData.js +474 -474
- package/dist/starknet/swaps/StarknetSwapModule.d.ts +10 -10
- package/dist/starknet/swaps/StarknetSwapModule.js +12 -12
- package/dist/starknet/swaps/handlers/IHandler.d.ts +13 -13
- package/dist/starknet/swaps/handlers/IHandler.js +2 -2
- package/dist/starknet/swaps/handlers/claim/ClaimHandlers.d.ts +13 -13
- package/dist/starknet/swaps/handlers/claim/ClaimHandlers.js +13 -13
- package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.d.ts +21 -21
- package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.js +44 -44
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.d.ts +24 -24
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.js +48 -48
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.d.ts +25 -25
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.js +40 -40
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.d.ts +20 -20
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.js +30 -30
- package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.d.ts +42 -45
- package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.js +50 -54
- package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.d.ts +17 -17
- package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.js +27 -27
- package/dist/starknet/swaps/modules/StarknetLpVault.d.ts +67 -67
- package/dist/starknet/swaps/modules/StarknetLpVault.js +122 -122
- package/dist/starknet/swaps/modules/StarknetSwapClaim.d.ts +52 -52
- package/dist/starknet/swaps/modules/StarknetSwapClaim.js +99 -99
- package/dist/starknet/swaps/modules/StarknetSwapInit.d.ts +94 -94
- package/dist/starknet/swaps/modules/StarknetSwapInit.js +239 -239
- package/dist/starknet/swaps/modules/StarknetSwapRefund.d.ts +60 -60
- package/dist/starknet/swaps/modules/StarknetSwapRefund.js +126 -126
- package/dist/starknet/wallet/StarknetBrowserSigner.d.ts +11 -11
- package/dist/starknet/wallet/StarknetBrowserSigner.js +17 -17
- package/dist/starknet/wallet/StarknetPersistentSigner.d.ts +76 -76
- package/dist/starknet/wallet/StarknetPersistentSigner.js +291 -291
- package/dist/starknet/wallet/StarknetSigner.d.ts +72 -72
- package/dist/starknet/wallet/StarknetSigner.js +114 -114
- package/dist/starknet/wallet/accounts/StarknetKeypairWallet.d.ts +18 -18
- package/dist/starknet/wallet/accounts/StarknetKeypairWallet.js +45 -45
- package/dist/utils/Utils.d.ts +77 -77
- package/dist/utils/Utils.js +304 -303
- package/package.json +2 -2
- package/src/starknet/StarknetInitializer.ts +6 -3
- package/src/starknet/btcrelay/StarknetBtcRelay.ts +19 -6
- package/src/starknet/btcrelay/headers/StarknetBtcHeader.ts +7 -7
- package/src/starknet/btcrelay/headers/StarknetBtcStoredHeader.ts +6 -6
- package/src/starknet/chain/StarknetAction.ts +1 -0
- package/src/starknet/chain/StarknetChainInterface.ts +0 -2
- package/src/starknet/chain/modules/StarknetFees.ts +15 -2
- package/src/starknet/chain/modules/StarknetTransactions.ts +24 -0
- package/src/starknet/contract/StarknetContractBase.ts +7 -4
- package/src/starknet/contract/StarknetContractModule.ts +1 -1
- package/src/starknet/contract/modules/StarknetContractEvents.ts +7 -7
- package/src/starknet/events/StarknetChainEventsBrowser.ts +2 -64
- package/src/starknet/provider/RpcProviderWithRetries.ts +1 -1
- package/src/starknet/spv_swap/StarknetSpvVaultContract.ts +84 -18
- package/src/starknet/swaps/StarknetSwapContract.ts +242 -6
- package/src/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.ts +0 -4
|
@@ -1,196 +1,196 @@
|
|
|
1
|
-
import { Buffer } from "buffer";
|
|
2
|
-
import { StarknetBtcHeader } from "./headers/StarknetBtcHeader";
|
|
3
|
-
import { BitcoinNetwork, BitcoinRpc, BtcBlock, BtcRelay, RelaySynchronizer } from "@atomiqlabs/base";
|
|
4
|
-
import { StarknetContractBase } from "../contract/StarknetContractBase";
|
|
5
|
-
import { StarknetBtcStoredHeader } from "./headers/StarknetBtcStoredHeader";
|
|
6
|
-
import { StarknetTx } from "../chain/modules/StarknetTransactions";
|
|
7
|
-
import { StarknetSigner } from "../wallet/StarknetSigner";
|
|
8
|
-
import { BtcRelayAbi } from "./BtcRelayAbi";
|
|
9
|
-
import { StarknetChainInterface } from "../chain/StarknetChainInterface";
|
|
10
|
-
import { StarknetAction } from "../chain/StarknetAction";
|
|
11
|
-
/**
|
|
12
|
-
* Starknet BTC Relay bitcoin light client contract representation
|
|
13
|
-
*
|
|
14
|
-
* @category BTC Relay
|
|
15
|
-
*/
|
|
16
|
-
export declare class StarknetBtcRelay<B extends BtcBlock> extends StarknetContractBase<typeof BtcRelayAbi> implements BtcRelay<StarknetBtcStoredHeader, StarknetTx, B, StarknetSigner> {
|
|
17
|
-
/**
|
|
18
|
-
* Returns a {@link StarknetAction} that submits new main chain bitcoin blockheaders to the light client
|
|
19
|
-
*
|
|
20
|
-
* @param signer Starknet signer's address
|
|
21
|
-
* @param mainHeaders New bitcoin blockheaders to submit
|
|
22
|
-
* @param storedHeader Current latest committed and stored bitcoin blockheader in the light client
|
|
23
|
-
*/
|
|
24
|
-
SaveMainHeaders(signer: string, mainHeaders: StarknetBtcHeader[], storedHeader: StarknetBtcStoredHeader): StarknetAction;
|
|
25
|
-
/**
|
|
26
|
-
* Returns a {@link StarknetAction} for submitting a short fork bitcoin blockheaders to the light client,
|
|
27
|
-
* forking the chain from the provided `storedHeader` param's blockheight. For a successful fork the
|
|
28
|
-
* submitted chain needs to have higher total chainwork than the current cannonical chain
|
|
29
|
-
*
|
|
30
|
-
* @param signer Starknet signer's address
|
|
31
|
-
* @param forkHeaders Fork bitcoin blockheaders to submit
|
|
32
|
-
* @param storedHeader Committed and stored bitcoin blockheader from which to fork the light client
|
|
33
|
-
*/
|
|
34
|
-
SaveShortForkHeaders(signer: string, forkHeaders: StarknetBtcHeader[], storedHeader: StarknetBtcStoredHeader): StarknetAction;
|
|
35
|
-
/**
|
|
36
|
-
* Returns a {@link StarknetAction} for submitting a long fork of bitcoin blockheaders to the light client.
|
|
37
|
-
*
|
|
38
|
-
* @param signer Starknet signer's address
|
|
39
|
-
* @param forkId Fork ID to submit the fork blockheaders to
|
|
40
|
-
* @param forkHeaders Fork bitcoin blockheaders to submit
|
|
41
|
-
* @param storedHeader Either a committed and stored bitcoin blockheader from which to fork the light client (when
|
|
42
|
-
* creating the fork), or the tip of the fork (when adding more blockheaders to the fork)
|
|
43
|
-
* @param totalForkHeaders Total blockheaders in the fork - used to estimate the gas usage when re-org happens
|
|
44
|
-
*/
|
|
45
|
-
SaveLongForkHeaders(signer: string, forkId: number, forkHeaders: StarknetBtcHeader[], storedHeader: StarknetBtcStoredHeader, totalForkHeaders?: number): StarknetAction;
|
|
46
|
-
bitcoinRpc: BitcoinRpc<B>;
|
|
47
|
-
readonly maxHeadersPerTx: number;
|
|
48
|
-
readonly maxForkHeadersPerTx: number;
|
|
49
|
-
readonly maxShortForkHeadersPerTx: number;
|
|
50
|
-
constructor(chainInterface: StarknetChainInterface, bitcoinRpc: BitcoinRpc<B>, bitcoinNetwork: BitcoinNetwork, contractAddress?: string | undefined);
|
|
51
|
-
/**
|
|
52
|
-
* Computes subsequent commited headers as they will appear on the blockchain when transactions
|
|
53
|
-
* are submitted & confirmed
|
|
54
|
-
*
|
|
55
|
-
* @param initialStoredHeader
|
|
56
|
-
* @param syncedHeaders
|
|
57
|
-
* @private
|
|
58
|
-
*/
|
|
59
|
-
private computeCommitedHeaders;
|
|
60
|
-
/**
|
|
61
|
-
* A common logic for submitting blockheaders in a transaction
|
|
62
|
-
*
|
|
63
|
-
* @param signer Starknet signer's address
|
|
64
|
-
* @param headers Bitcoin blockheaders to submit to the btc relay
|
|
65
|
-
* @param storedHeader Current latest stored block header for a given fork or main chain
|
|
66
|
-
* @param forkId Fork ID to submit to, `forkId`=0 means main chain, `forkId`=-1 means short fork
|
|
67
|
-
* @param feeRate Fee rate for the transaction
|
|
68
|
-
* @private
|
|
69
|
-
*/
|
|
70
|
-
private _saveHeaders;
|
|
71
|
-
/**
|
|
72
|
-
* Returns a committed bitcoin blockheader based on the provided `commitHash` or `blockHash`
|
|
73
|
-
*
|
|
74
|
-
* @param commitHash Commitment hash of the stored blockheader
|
|
75
|
-
* @param blockHash Block's hash
|
|
76
|
-
* @private
|
|
77
|
-
*/
|
|
78
|
-
private getBlock;
|
|
79
|
-
/**
|
|
80
|
-
* Returns the current main chain blockheight of the BTC Relay
|
|
81
|
-
*
|
|
82
|
-
* @private
|
|
83
|
-
*/
|
|
84
|
-
private getBlockHeight;
|
|
85
|
-
/**
|
|
86
|
-
* @inheritDoc
|
|
87
|
-
*/
|
|
88
|
-
getTipData(): Promise<{
|
|
89
|
-
commitHash: string;
|
|
90
|
-
blockhash: string;
|
|
91
|
-
chainWork: Buffer;
|
|
92
|
-
blockheight: number;
|
|
93
|
-
} | null>;
|
|
94
|
-
/**
|
|
95
|
-
* @inheritDoc
|
|
96
|
-
*/
|
|
97
|
-
retrieveLogAndBlockheight(blockData: {
|
|
98
|
-
blockhash: string;
|
|
99
|
-
}, requiredBlockheight?: number): Promise<{
|
|
100
|
-
header: StarknetBtcStoredHeader;
|
|
101
|
-
height: number;
|
|
102
|
-
} | null>;
|
|
103
|
-
/**
|
|
104
|
-
* @inheritDoc
|
|
105
|
-
*/
|
|
106
|
-
retrieveLogByCommitHash(commitmentHash: string, blockData: {
|
|
107
|
-
blockhash: string;
|
|
108
|
-
}): Promise<StarknetBtcStoredHeader | null>;
|
|
109
|
-
/**
|
|
110
|
-
* @inheritDoc
|
|
111
|
-
*/
|
|
112
|
-
retrieveLatestKnownBlockLog(): Promise<{
|
|
113
|
-
resultStoredHeader: StarknetBtcStoredHeader;
|
|
114
|
-
resultBitcoinHeader: B;
|
|
115
|
-
} | null>;
|
|
116
|
-
/**
|
|
117
|
-
* @inheritDoc
|
|
118
|
-
*/
|
|
119
|
-
saveMainHeaders(signer: string, mainHeaders: BtcBlock[], storedHeader: StarknetBtcStoredHeader, feeRate?: string): Promise<{
|
|
120
|
-
forkId: number;
|
|
121
|
-
lastStoredHeader: StarknetBtcStoredHeader;
|
|
122
|
-
tx: StarknetTx;
|
|
123
|
-
computedCommitedHeaders: StarknetBtcStoredHeader[];
|
|
124
|
-
}>;
|
|
125
|
-
/**
|
|
126
|
-
* @inheritDoc
|
|
127
|
-
*/
|
|
128
|
-
saveNewForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: StarknetBtcStoredHeader, tipWork: Buffer, feeRate?: string): Promise<{
|
|
129
|
-
forkId: number;
|
|
130
|
-
lastStoredHeader: StarknetBtcStoredHeader;
|
|
131
|
-
tx: StarknetTx;
|
|
132
|
-
computedCommitedHeaders: StarknetBtcStoredHeader[];
|
|
133
|
-
}>;
|
|
134
|
-
/**
|
|
135
|
-
* @inheritDoc
|
|
136
|
-
*/
|
|
137
|
-
saveForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: StarknetBtcStoredHeader, forkId: number, tipWork: Buffer, feeRate?: string): Promise<{
|
|
138
|
-
forkId: number;
|
|
139
|
-
lastStoredHeader: StarknetBtcStoredHeader;
|
|
140
|
-
tx: StarknetTx;
|
|
141
|
-
computedCommitedHeaders: StarknetBtcStoredHeader[];
|
|
142
|
-
}>;
|
|
143
|
-
/**
|
|
144
|
-
* @inheritDoc
|
|
145
|
-
*/
|
|
146
|
-
saveShortForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: StarknetBtcStoredHeader, tipWork: Buffer, feeRate?: string): Promise<{
|
|
147
|
-
forkId: number;
|
|
148
|
-
lastStoredHeader: StarknetBtcStoredHeader;
|
|
149
|
-
tx: StarknetTx;
|
|
150
|
-
computedCommitedHeaders: StarknetBtcStoredHeader[];
|
|
151
|
-
}>;
|
|
152
|
-
/**
|
|
153
|
-
* @inheritDoc
|
|
154
|
-
*/
|
|
155
|
-
estimateSynchronizeFee(requiredBlockheight: number, feeRate?: string): Promise<bigint>;
|
|
156
|
-
/**
|
|
157
|
-
* @inheritDoc
|
|
158
|
-
*/
|
|
159
|
-
getFeePerBlock(feeRate?: string): Promise<bigint>;
|
|
160
|
-
/**
|
|
161
|
-
* @inheritDoc
|
|
162
|
-
*/
|
|
163
|
-
getMainFeeRate(signer: string | null): Promise<string>;
|
|
164
|
-
/**
|
|
165
|
-
* @inheritDoc
|
|
166
|
-
*/
|
|
167
|
-
getForkFeeRate(signer: string, forkId: number): Promise<string>;
|
|
168
|
-
/**
|
|
169
|
-
* @inheritDoc
|
|
170
|
-
*/
|
|
171
|
-
saveInitialHeader(signer: string, header: B, epochStart: number, pastBlocksTimestamps: number[], feeRate?: string): Promise<StarknetTx>;
|
|
172
|
-
/**
|
|
173
|
-
* Gets committed headers, identified by blockhash & blockheight, determines required BTC relay blockheight based on
|
|
174
|
-
* requiredConfirmations.
|
|
175
|
-
* If synchronizer is passed & some blockhash is not found (or blockhash doesn't have enough confirmations),
|
|
176
|
-
* it produces transactions to sync up the btc relay to the current chain tip & adds them to the passed txs array.
|
|
177
|
-
*
|
|
178
|
-
* @param signer A signer's address to use for the transactions
|
|
179
|
-
* @param btcRelay BtcRelay contract to use for retrieving committed headers
|
|
180
|
-
* @param btcTxs Bitcoin transactions to fetch the stored blockheaders for
|
|
181
|
-
* @param txs Transactions array, in case we need to synchronize the btc relay ourselves the synchronization
|
|
182
|
-
* txns are added here
|
|
183
|
-
* @param synchronizer optional synchronizer to use to synchronize the btc relay in case it is not yet synchronized
|
|
184
|
-
* to the required blockheight
|
|
185
|
-
* @param feeRate Fee rate to use for synchronization transactions
|
|
186
|
-
*
|
|
187
|
-
* @private
|
|
188
|
-
*/
|
|
189
|
-
static getCommitedHeadersAndSynchronize(signer: string, btcRelay: StarknetBtcRelay<any>, btcTxs: {
|
|
190
|
-
blockheight: number;
|
|
191
|
-
requiredConfirmations: number;
|
|
192
|
-
blockhash: string;
|
|
193
|
-
}[], txs: StarknetTx[], synchronizer?: RelaySynchronizer<StarknetBtcStoredHeader, StarknetTx, any>, feeRate?: string): Promise<{
|
|
194
|
-
[blockhash: string]: StarknetBtcStoredHeader;
|
|
195
|
-
} | null>;
|
|
196
|
-
}
|
|
1
|
+
import { Buffer } from "buffer";
|
|
2
|
+
import { StarknetBtcHeader } from "./headers/StarknetBtcHeader";
|
|
3
|
+
import { BitcoinNetwork, BitcoinRpc, BtcBlock, BtcRelay, RelaySynchronizer } from "@atomiqlabs/base";
|
|
4
|
+
import { StarknetContractBase } from "../contract/StarknetContractBase";
|
|
5
|
+
import { StarknetBtcStoredHeader } from "./headers/StarknetBtcStoredHeader";
|
|
6
|
+
import { StarknetTx } from "../chain/modules/StarknetTransactions";
|
|
7
|
+
import { StarknetSigner } from "../wallet/StarknetSigner";
|
|
8
|
+
import { BtcRelayAbi } from "./BtcRelayAbi";
|
|
9
|
+
import { StarknetChainInterface } from "../chain/StarknetChainInterface";
|
|
10
|
+
import { StarknetAction } from "../chain/StarknetAction";
|
|
11
|
+
/**
|
|
12
|
+
* Starknet BTC Relay bitcoin light client contract representation
|
|
13
|
+
*
|
|
14
|
+
* @category BTC Relay
|
|
15
|
+
*/
|
|
16
|
+
export declare class StarknetBtcRelay<B extends BtcBlock> extends StarknetContractBase<typeof BtcRelayAbi> implements BtcRelay<StarknetBtcStoredHeader, StarknetTx, B, StarknetSigner> {
|
|
17
|
+
/**
|
|
18
|
+
* Returns a {@link StarknetAction} that submits new main chain bitcoin blockheaders to the light client
|
|
19
|
+
*
|
|
20
|
+
* @param signer Starknet signer's address
|
|
21
|
+
* @param mainHeaders New bitcoin blockheaders to submit
|
|
22
|
+
* @param storedHeader Current latest committed and stored bitcoin blockheader in the light client
|
|
23
|
+
*/
|
|
24
|
+
SaveMainHeaders(signer: string, mainHeaders: StarknetBtcHeader[], storedHeader: StarknetBtcStoredHeader): StarknetAction;
|
|
25
|
+
/**
|
|
26
|
+
* Returns a {@link StarknetAction} for submitting a short fork bitcoin blockheaders to the light client,
|
|
27
|
+
* forking the chain from the provided `storedHeader` param's blockheight. For a successful fork the
|
|
28
|
+
* submitted chain needs to have higher total chainwork than the current cannonical chain
|
|
29
|
+
*
|
|
30
|
+
* @param signer Starknet signer's address
|
|
31
|
+
* @param forkHeaders Fork bitcoin blockheaders to submit
|
|
32
|
+
* @param storedHeader Committed and stored bitcoin blockheader from which to fork the light client
|
|
33
|
+
*/
|
|
34
|
+
SaveShortForkHeaders(signer: string, forkHeaders: StarknetBtcHeader[], storedHeader: StarknetBtcStoredHeader): StarknetAction;
|
|
35
|
+
/**
|
|
36
|
+
* Returns a {@link StarknetAction} for submitting a long fork of bitcoin blockheaders to the light client.
|
|
37
|
+
*
|
|
38
|
+
* @param signer Starknet signer's address
|
|
39
|
+
* @param forkId Fork ID to submit the fork blockheaders to
|
|
40
|
+
* @param forkHeaders Fork bitcoin blockheaders to submit
|
|
41
|
+
* @param storedHeader Either a committed and stored bitcoin blockheader from which to fork the light client (when
|
|
42
|
+
* creating the fork), or the tip of the fork (when adding more blockheaders to the fork)
|
|
43
|
+
* @param totalForkHeaders Total blockheaders in the fork - used to estimate the gas usage when re-org happens
|
|
44
|
+
*/
|
|
45
|
+
SaveLongForkHeaders(signer: string, forkId: number, forkHeaders: StarknetBtcHeader[], storedHeader: StarknetBtcStoredHeader, totalForkHeaders?: number): StarknetAction;
|
|
46
|
+
bitcoinRpc: BitcoinRpc<B>;
|
|
47
|
+
readonly maxHeadersPerTx: number;
|
|
48
|
+
readonly maxForkHeadersPerTx: number;
|
|
49
|
+
readonly maxShortForkHeadersPerTx: number;
|
|
50
|
+
constructor(chainInterface: StarknetChainInterface, bitcoinRpc: BitcoinRpc<B>, bitcoinNetwork: BitcoinNetwork, contractAddress?: string | undefined, contractDeploymentHeight?: number);
|
|
51
|
+
/**
|
|
52
|
+
* Computes subsequent commited headers as they will appear on the blockchain when transactions
|
|
53
|
+
* are submitted & confirmed
|
|
54
|
+
*
|
|
55
|
+
* @param initialStoredHeader
|
|
56
|
+
* @param syncedHeaders
|
|
57
|
+
* @private
|
|
58
|
+
*/
|
|
59
|
+
private computeCommitedHeaders;
|
|
60
|
+
/**
|
|
61
|
+
* A common logic for submitting blockheaders in a transaction
|
|
62
|
+
*
|
|
63
|
+
* @param signer Starknet signer's address
|
|
64
|
+
* @param headers Bitcoin blockheaders to submit to the btc relay
|
|
65
|
+
* @param storedHeader Current latest stored block header for a given fork or main chain
|
|
66
|
+
* @param forkId Fork ID to submit to, `forkId`=0 means main chain, `forkId`=-1 means short fork
|
|
67
|
+
* @param feeRate Fee rate for the transaction
|
|
68
|
+
* @private
|
|
69
|
+
*/
|
|
70
|
+
private _saveHeaders;
|
|
71
|
+
/**
|
|
72
|
+
* Returns a committed bitcoin blockheader based on the provided `commitHash` or `blockHash`
|
|
73
|
+
*
|
|
74
|
+
* @param commitHash Commitment hash of the stored blockheader
|
|
75
|
+
* @param blockHash Block's hash
|
|
76
|
+
* @private
|
|
77
|
+
*/
|
|
78
|
+
private getBlock;
|
|
79
|
+
/**
|
|
80
|
+
* Returns the current main chain blockheight of the BTC Relay
|
|
81
|
+
*
|
|
82
|
+
* @private
|
|
83
|
+
*/
|
|
84
|
+
private getBlockHeight;
|
|
85
|
+
/**
|
|
86
|
+
* @inheritDoc
|
|
87
|
+
*/
|
|
88
|
+
getTipData(): Promise<{
|
|
89
|
+
commitHash: string;
|
|
90
|
+
blockhash: string;
|
|
91
|
+
chainWork: Buffer;
|
|
92
|
+
blockheight: number;
|
|
93
|
+
} | null>;
|
|
94
|
+
/**
|
|
95
|
+
* @inheritDoc
|
|
96
|
+
*/
|
|
97
|
+
retrieveLogAndBlockheight(blockData: {
|
|
98
|
+
blockhash: string;
|
|
99
|
+
}, requiredBlockheight?: number): Promise<{
|
|
100
|
+
header: StarknetBtcStoredHeader;
|
|
101
|
+
height: number;
|
|
102
|
+
} | null>;
|
|
103
|
+
/**
|
|
104
|
+
* @inheritDoc
|
|
105
|
+
*/
|
|
106
|
+
retrieveLogByCommitHash(commitmentHash: string, blockData: {
|
|
107
|
+
blockhash: string;
|
|
108
|
+
}): Promise<StarknetBtcStoredHeader | null>;
|
|
109
|
+
/**
|
|
110
|
+
* @inheritDoc
|
|
111
|
+
*/
|
|
112
|
+
retrieveLatestKnownBlockLog(): Promise<{
|
|
113
|
+
resultStoredHeader: StarknetBtcStoredHeader;
|
|
114
|
+
resultBitcoinHeader: B;
|
|
115
|
+
} | null>;
|
|
116
|
+
/**
|
|
117
|
+
* @inheritDoc
|
|
118
|
+
*/
|
|
119
|
+
saveMainHeaders(signer: string, mainHeaders: BtcBlock[], storedHeader: StarknetBtcStoredHeader, feeRate?: string): Promise<{
|
|
120
|
+
forkId: number;
|
|
121
|
+
lastStoredHeader: StarknetBtcStoredHeader;
|
|
122
|
+
tx: StarknetTx;
|
|
123
|
+
computedCommitedHeaders: StarknetBtcStoredHeader[];
|
|
124
|
+
}>;
|
|
125
|
+
/**
|
|
126
|
+
* @inheritDoc
|
|
127
|
+
*/
|
|
128
|
+
saveNewForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: StarknetBtcStoredHeader, tipWork: Buffer, feeRate?: string): Promise<{
|
|
129
|
+
forkId: number;
|
|
130
|
+
lastStoredHeader: StarknetBtcStoredHeader;
|
|
131
|
+
tx: StarknetTx;
|
|
132
|
+
computedCommitedHeaders: StarknetBtcStoredHeader[];
|
|
133
|
+
}>;
|
|
134
|
+
/**
|
|
135
|
+
* @inheritDoc
|
|
136
|
+
*/
|
|
137
|
+
saveForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: StarknetBtcStoredHeader, forkId: number, tipWork: Buffer, feeRate?: string): Promise<{
|
|
138
|
+
forkId: number;
|
|
139
|
+
lastStoredHeader: StarknetBtcStoredHeader;
|
|
140
|
+
tx: StarknetTx;
|
|
141
|
+
computedCommitedHeaders: StarknetBtcStoredHeader[];
|
|
142
|
+
}>;
|
|
143
|
+
/**
|
|
144
|
+
* @inheritDoc
|
|
145
|
+
*/
|
|
146
|
+
saveShortForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: StarknetBtcStoredHeader, tipWork: Buffer, feeRate?: string): Promise<{
|
|
147
|
+
forkId: number;
|
|
148
|
+
lastStoredHeader: StarknetBtcStoredHeader;
|
|
149
|
+
tx: StarknetTx;
|
|
150
|
+
computedCommitedHeaders: StarknetBtcStoredHeader[];
|
|
151
|
+
}>;
|
|
152
|
+
/**
|
|
153
|
+
* @inheritDoc
|
|
154
|
+
*/
|
|
155
|
+
estimateSynchronizeFee(requiredBlockheight: number, feeRate?: string): Promise<bigint>;
|
|
156
|
+
/**
|
|
157
|
+
* @inheritDoc
|
|
158
|
+
*/
|
|
159
|
+
getFeePerBlock(feeRate?: string): Promise<bigint>;
|
|
160
|
+
/**
|
|
161
|
+
* @inheritDoc
|
|
162
|
+
*/
|
|
163
|
+
getMainFeeRate(signer: string | null): Promise<string>;
|
|
164
|
+
/**
|
|
165
|
+
* @inheritDoc
|
|
166
|
+
*/
|
|
167
|
+
getForkFeeRate(signer: string, forkId: number): Promise<string>;
|
|
168
|
+
/**
|
|
169
|
+
* @inheritDoc
|
|
170
|
+
*/
|
|
171
|
+
saveInitialHeader(signer: string, header: B, epochStart: number, pastBlocksTimestamps: number[], feeRate?: string): Promise<StarknetTx>;
|
|
172
|
+
/**
|
|
173
|
+
* Gets committed headers, identified by blockhash & blockheight, determines required BTC relay blockheight based on
|
|
174
|
+
* requiredConfirmations.
|
|
175
|
+
* If synchronizer is passed & some blockhash is not found (or blockhash doesn't have enough confirmations),
|
|
176
|
+
* it produces transactions to sync up the btc relay to the current chain tip & adds them to the passed txs array.
|
|
177
|
+
*
|
|
178
|
+
* @param signer A signer's address to use for the transactions
|
|
179
|
+
* @param btcRelay BtcRelay contract to use for retrieving committed headers
|
|
180
|
+
* @param btcTxs Bitcoin transactions to fetch the stored blockheaders for
|
|
181
|
+
* @param txs Transactions array, in case we need to synchronize the btc relay ourselves the synchronization
|
|
182
|
+
* txns are added here
|
|
183
|
+
* @param synchronizer optional synchronizer to use to synchronize the btc relay in case it is not yet synchronized
|
|
184
|
+
* to the required blockheight
|
|
185
|
+
* @param feeRate Fee rate to use for synchronization transactions
|
|
186
|
+
*
|
|
187
|
+
* @private
|
|
188
|
+
*/
|
|
189
|
+
static getCommitedHeadersAndSynchronize(signer: string, btcRelay: StarknetBtcRelay<any>, btcTxs: {
|
|
190
|
+
blockheight: number;
|
|
191
|
+
requiredConfirmations: number;
|
|
192
|
+
blockhash: string;
|
|
193
|
+
}[], txs: StarknetTx[], synchronizer?: RelaySynchronizer<StarknetBtcStoredHeader, StarknetTx, any>, feeRate?: string): Promise<{
|
|
194
|
+
[blockhash: string]: StarknetBtcStoredHeader;
|
|
195
|
+
} | null>;
|
|
196
|
+
}
|