@atomiqlabs/chain-evm 1.0.0-dev.75 → 1.0.0-dev.77
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/LICENSE +201 -201
- package/dist/chains/botanix/BotanixChainType.d.ts +13 -13
- package/dist/chains/botanix/BotanixChainType.js +2 -2
- package/dist/chains/botanix/BotanixInitializer.d.ts +30 -30
- package/dist/chains/botanix/BotanixInitializer.js +122 -122
- package/dist/chains/citrea/CitreaBtcRelay.d.ts +21 -21
- package/dist/chains/citrea/CitreaBtcRelay.js +43 -43
- package/dist/chains/citrea/CitreaChainType.d.ts +13 -13
- package/dist/chains/citrea/CitreaChainType.js +2 -2
- package/dist/chains/citrea/CitreaFees.d.ts +29 -29
- package/dist/chains/citrea/CitreaFees.js +67 -67
- package/dist/chains/citrea/CitreaInitializer.d.ts +30 -30
- package/dist/chains/citrea/CitreaInitializer.js +129 -129
- package/dist/chains/citrea/CitreaSpvVaultContract.d.ts +15 -15
- package/dist/chains/citrea/CitreaSpvVaultContract.js +74 -74
- package/dist/chains/citrea/CitreaSwapContract.d.ts +22 -22
- package/dist/chains/citrea/CitreaSwapContract.js +96 -96
- package/dist/chains/citrea/CitreaTokens.d.ts +9 -9
- package/dist/chains/citrea/CitreaTokens.js +20 -20
- package/dist/evm/btcrelay/BtcRelayAbi.d.ts +198 -198
- package/dist/evm/btcrelay/BtcRelayAbi.js +261 -261
- package/dist/evm/btcrelay/BtcRelayTypechain.d.ts +172 -172
- package/dist/evm/btcrelay/BtcRelayTypechain.js +2 -2
- package/dist/evm/btcrelay/EVMBtcRelay.d.ts +197 -197
- package/dist/evm/btcrelay/EVMBtcRelay.js +435 -435
- package/dist/evm/btcrelay/headers/EVMBtcHeader.d.ts +33 -33
- package/dist/evm/btcrelay/headers/EVMBtcHeader.js +84 -84
- package/dist/evm/btcrelay/headers/EVMBtcStoredHeader.d.ts +56 -56
- package/dist/evm/btcrelay/headers/EVMBtcStoredHeader.js +123 -123
- package/dist/evm/chain/EVMChainInterface.d.ts +51 -51
- package/dist/evm/chain/EVMChainInterface.js +89 -89
- package/dist/evm/chain/EVMModule.d.ts +9 -9
- package/dist/evm/chain/EVMModule.js +13 -13
- package/dist/evm/chain/modules/ERC20Abi.d.ts +168 -168
- package/dist/evm/chain/modules/ERC20Abi.js +225 -225
- package/dist/evm/chain/modules/EVMAddresses.d.ts +10 -10
- package/dist/evm/chain/modules/EVMAddresses.js +30 -30
- package/dist/evm/chain/modules/EVMBlocks.d.ts +20 -20
- package/dist/evm/chain/modules/EVMBlocks.js +64 -64
- package/dist/evm/chain/modules/EVMEvents.d.ts +36 -36
- package/dist/evm/chain/modules/EVMEvents.js +122 -122
- package/dist/evm/chain/modules/EVMFees.d.ts +36 -36
- package/dist/evm/chain/modules/EVMFees.js +74 -74
- package/dist/evm/chain/modules/EVMSignatures.d.ts +29 -29
- package/dist/evm/chain/modules/EVMSignatures.js +68 -68
- package/dist/evm/chain/modules/EVMTokens.d.ts +70 -70
- package/dist/evm/chain/modules/EVMTokens.js +142 -142
- package/dist/evm/chain/modules/EVMTransactions.d.ts +94 -94
- package/dist/evm/chain/modules/EVMTransactions.js +286 -286
- package/dist/evm/contract/EVMContractBase.d.ts +22 -22
- package/dist/evm/contract/EVMContractBase.js +34 -34
- package/dist/evm/contract/EVMContractModule.d.ts +8 -8
- package/dist/evm/contract/EVMContractModule.js +11 -11
- package/dist/evm/contract/modules/EVMContractEvents.d.ts +42 -42
- package/dist/evm/contract/modules/EVMContractEvents.js +75 -75
- package/dist/evm/events/EVMChainEvents.d.ts +22 -22
- package/dist/evm/events/EVMChainEvents.js +69 -69
- package/dist/evm/events/EVMChainEventsBrowser.d.ts +102 -102
- package/dist/evm/events/EVMChainEventsBrowser.js +413 -404
- package/dist/evm/providers/JsonRpcProviderWithRetries.d.ts +15 -15
- package/dist/evm/providers/JsonRpcProviderWithRetries.js +19 -19
- package/dist/evm/providers/ReconnectingWebSocketProvider.d.ts +22 -22
- package/dist/evm/providers/ReconnectingWebSocketProvider.js +87 -87
- package/dist/evm/providers/SocketProvider.d.ts +111 -111
- package/dist/evm/providers/SocketProvider.js +334 -334
- package/dist/evm/providers/WebSocketProviderWithRetries.d.ts +17 -17
- package/dist/evm/providers/WebSocketProviderWithRetries.js +19 -19
- package/dist/evm/spv_swap/EVMSpvVaultContract.d.ts +79 -79
- package/dist/evm/spv_swap/EVMSpvVaultContract.js +482 -482
- package/dist/evm/spv_swap/EVMSpvVaultData.d.ts +39 -39
- package/dist/evm/spv_swap/EVMSpvVaultData.js +0 -180
- package/dist/evm/spv_swap/EVMSpvWithdrawalData.d.ts +19 -19
- package/dist/evm/spv_swap/EVMSpvWithdrawalData.js +55 -55
- package/dist/evm/spv_swap/SpvVaultContractAbi.d.ts +91 -91
- package/dist/evm/spv_swap/SpvVaultContractAbi.js +849 -849
- package/dist/evm/spv_swap/SpvVaultContractTypechain.d.ts +450 -450
- package/dist/evm/spv_swap/SpvVaultContractTypechain.js +2 -2
- package/dist/evm/swaps/EVMSwapContract.d.ts +193 -193
- package/dist/evm/swaps/EVMSwapContract.js +378 -378
- package/dist/evm/swaps/EVMSwapData.d.ts +66 -66
- package/dist/evm/swaps/EVMSwapData.js +260 -260
- package/dist/evm/swaps/EVMSwapModule.d.ts +9 -9
- package/dist/evm/swaps/EVMSwapModule.js +11 -11
- package/dist/evm/swaps/EscrowManagerAbi.d.ts +120 -120
- package/dist/evm/swaps/EscrowManagerAbi.js +985 -985
- package/dist/evm/swaps/EscrowManagerTypechain.d.ts +475 -475
- package/dist/evm/swaps/EscrowManagerTypechain.js +2 -2
- package/dist/evm/swaps/handlers/IHandler.d.ts +13 -13
- package/dist/evm/swaps/handlers/IHandler.js +2 -2
- package/dist/evm/swaps/handlers/claim/ClaimHandlers.d.ts +10 -10
- package/dist/evm/swaps/handlers/claim/ClaimHandlers.js +13 -13
- package/dist/evm/swaps/handlers/claim/HashlockClaimHandler.d.ts +20 -20
- package/dist/evm/swaps/handlers/claim/HashlockClaimHandler.js +39 -39
- package/dist/evm/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.d.ts +24 -24
- package/dist/evm/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.js +59 -59
- package/dist/evm/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.d.ts +25 -25
- package/dist/evm/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.js +51 -51
- package/dist/evm/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.d.ts +21 -21
- package/dist/evm/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.js +28 -28
- package/dist/evm/swaps/handlers/claim/btc/IBitcoinClaimHandler.d.ts +48 -48
- package/dist/evm/swaps/handlers/claim/btc/IBitcoinClaimHandler.js +63 -63
- package/dist/evm/swaps/handlers/refund/TimelockRefundHandler.d.ts +17 -17
- package/dist/evm/swaps/handlers/refund/TimelockRefundHandler.js +28 -28
- package/dist/evm/swaps/modules/EVMLpVault.d.ts +69 -69
- package/dist/evm/swaps/modules/EVMLpVault.js +134 -134
- package/dist/evm/swaps/modules/EVMSwapClaim.d.ts +54 -54
- package/dist/evm/swaps/modules/EVMSwapClaim.js +137 -137
- package/dist/evm/swaps/modules/EVMSwapInit.d.ts +88 -88
- package/dist/evm/swaps/modules/EVMSwapInit.js +274 -274
- package/dist/evm/swaps/modules/EVMSwapRefund.d.ts +62 -62
- package/dist/evm/swaps/modules/EVMSwapRefund.js +167 -167
- package/dist/evm/typechain/common.d.ts +50 -50
- package/dist/evm/typechain/common.js +2 -2
- package/dist/evm/wallet/EVMBrowserSigner.d.ts +5 -5
- package/dist/evm/wallet/EVMBrowserSigner.js +11 -11
- package/dist/evm/wallet/EVMPersistentSigner.d.ts +29 -29
- package/dist/evm/wallet/EVMPersistentSigner.js +222 -222
- package/dist/evm/wallet/EVMSigner.d.ts +11 -11
- package/dist/evm/wallet/EVMSigner.js +24 -24
- package/dist/index.d.ts +44 -44
- package/dist/index.js +60 -60
- package/dist/utils/Utils.d.ts +17 -17
- package/dist/utils/Utils.js +81 -81
- package/package.json +39 -39
- package/src/chains/botanix/BotanixChainType.ts +28 -28
- package/src/chains/botanix/BotanixInitializer.ts +171 -171
- package/src/chains/citrea/CitreaBtcRelay.ts +57 -57
- package/src/chains/citrea/CitreaChainType.ts +28 -28
- package/src/chains/citrea/CitreaFees.ts +77 -77
- package/src/chains/citrea/CitreaInitializer.ts +178 -178
- package/src/chains/citrea/CitreaSpvVaultContract.ts +75 -75
- package/src/chains/citrea/CitreaSwapContract.ts +102 -102
- package/src/chains/citrea/CitreaTokens.ts +21 -21
- package/src/evm/btcrelay/BtcRelayAbi.ts +258 -258
- package/src/evm/btcrelay/BtcRelayTypechain.ts +371 -371
- package/src/evm/btcrelay/EVMBtcRelay.ts +537 -537
- package/src/evm/btcrelay/headers/EVMBtcHeader.ts +109 -109
- package/src/evm/btcrelay/headers/EVMBtcStoredHeader.ts +152 -152
- package/src/evm/chain/EVMChainInterface.ts +155 -155
- package/src/evm/chain/EVMModule.ts +21 -21
- package/src/evm/chain/modules/ERC20Abi.ts +222 -222
- package/src/evm/chain/modules/EVMAddresses.ts +28 -28
- package/src/evm/chain/modules/EVMBlocks.ts +75 -75
- package/src/evm/chain/modules/EVMEvents.ts +139 -139
- package/src/evm/chain/modules/EVMFees.ts +104 -104
- package/src/evm/chain/modules/EVMSignatures.ts +76 -76
- package/src/evm/chain/modules/EVMTokens.ts +155 -155
- package/src/evm/chain/modules/EVMTransactions.ts +325 -325
- package/src/evm/contract/EVMContractBase.ts +63 -63
- package/src/evm/contract/EVMContractModule.ts +16 -16
- package/src/evm/contract/modules/EVMContractEvents.ts +102 -102
- package/src/evm/events/EVMChainEvents.ts +82 -82
- package/src/evm/events/EVMChainEventsBrowser.ts +534 -525
- package/src/evm/providers/JsonRpcProviderWithRetries.ts +24 -24
- package/src/evm/providers/ReconnectingWebSocketProvider.ts +101 -101
- package/src/evm/providers/SocketProvider.ts +368 -368
- package/src/evm/providers/WebSocketProviderWithRetries.ts +27 -27
- package/src/evm/spv_swap/EVMSpvVaultContract.ts +615 -615
- package/src/evm/spv_swap/EVMSpvVaultData.ts +224 -224
- package/src/evm/spv_swap/EVMSpvWithdrawalData.ts +70 -70
- package/src/evm/spv_swap/SpvVaultContractAbi.ts +846 -846
- package/src/evm/spv_swap/SpvVaultContractTypechain.ts +685 -685
- package/src/evm/swaps/EVMSwapContract.ts +600 -600
- package/src/evm/swaps/EVMSwapData.ts +378 -378
- package/src/evm/swaps/EVMSwapModule.ts +16 -16
- package/src/evm/swaps/EscrowManagerAbi.ts +982 -982
- package/src/evm/swaps/EscrowManagerTypechain.ts +723 -723
- package/src/evm/swaps/handlers/IHandler.ts +17 -17
- package/src/evm/swaps/handlers/claim/ClaimHandlers.ts +20 -20
- package/src/evm/swaps/handlers/claim/HashlockClaimHandler.ts +46 -46
- package/src/evm/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.ts +82 -82
- package/src/evm/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.ts +76 -76
- package/src/evm/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.ts +46 -46
- package/src/evm/swaps/handlers/claim/btc/IBitcoinClaimHandler.ts +115 -115
- package/src/evm/swaps/handlers/refund/TimelockRefundHandler.ts +37 -37
- package/src/evm/swaps/modules/EVMLpVault.ts +154 -154
- package/src/evm/swaps/modules/EVMSwapClaim.ts +172 -172
- package/src/evm/swaps/modules/EVMSwapInit.ts +328 -328
- package/src/evm/swaps/modules/EVMSwapRefund.ts +229 -229
- package/src/evm/typechain/common.ts +131 -131
- package/src/evm/wallet/EVMBrowserSigner.ts +11 -11
- package/src/evm/wallet/EVMPersistentSigner.ts +298 -298
- package/src/evm/wallet/EVMSigner.ts +31 -31
- package/src/index.ts +53 -53
- package/src/utils/Utils.ts +92 -92
|
@@ -1,197 +1,197 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
/// <reference types="node" />
|
|
3
|
-
import { BitcoinNetwork, BitcoinRpc, BtcBlock, BtcRelay, RelaySynchronizer } from "@atomiqlabs/base";
|
|
4
|
-
import { EVMBtcHeader } from "./headers/EVMBtcHeader";
|
|
5
|
-
import { EVMContractBase } from "../contract/EVMContractBase";
|
|
6
|
-
import { BtcRelay as BtcRelayTypechain } from "./BtcRelayTypechain";
|
|
7
|
-
import { EVMBtcStoredHeader } from "./headers/EVMBtcStoredHeader";
|
|
8
|
-
import { EVMSigner } from "../wallet/EVMSigner";
|
|
9
|
-
import { EVMTx } from "../chain/modules/EVMTransactions";
|
|
10
|
-
import { EVMChainInterface } from "../chain/EVMChainInterface";
|
|
11
|
-
export declare class EVMBtcRelay<B extends BtcBlock> extends EVMContractBase<BtcRelayTypechain> implements BtcRelay<EVMBtcStoredHeader, EVMTx, B, EVMSigner> {
|
|
12
|
-
static GasCosts: {
|
|
13
|
-
GAS_PER_BLOCKHEADER: number;
|
|
14
|
-
GAS_BASE_MAIN: number;
|
|
15
|
-
GAS_PER_BLOCKHEADER_FORK: number;
|
|
16
|
-
GAS_PER_BLOCKHEADER_FORKED: number;
|
|
17
|
-
GAS_BASE_FORK: number;
|
|
18
|
-
};
|
|
19
|
-
SaveMainHeaders(signer: string, mainHeaders: EVMBtcHeader[], storedHeader: EVMBtcStoredHeader, feeRate: string): Promise<EVMTx>;
|
|
20
|
-
SaveShortForkHeaders(signer: string, forkHeaders: EVMBtcHeader[], storedHeader: EVMBtcStoredHeader, feeRate: string): Promise<EVMTx>;
|
|
21
|
-
SaveLongForkHeaders(signer: string, forkId: number, forkHeaders: EVMBtcHeader[], storedHeader: EVMBtcStoredHeader, feeRate: string, totalForkHeaders?: number): Promise<EVMTx>;
|
|
22
|
-
bitcoinRpc: BitcoinRpc<B>;
|
|
23
|
-
readonly maxHeadersPerTx: number;
|
|
24
|
-
readonly maxForkHeadersPerTx: number;
|
|
25
|
-
readonly maxShortForkHeadersPerTx: number;
|
|
26
|
-
constructor(chainInterface: EVMChainInterface<any>, bitcoinRpc: BitcoinRpc<B>, bitcoinNetwork: BitcoinNetwork, contractAddress: string, contractDeploymentHeight?: number);
|
|
27
|
-
/**
|
|
28
|
-
* Computes subsequent commited headers as they will appear on the blockchain when transactions
|
|
29
|
-
* are submitted & confirmed
|
|
30
|
-
*
|
|
31
|
-
* @param initialStoredHeader
|
|
32
|
-
* @param syncedHeaders
|
|
33
|
-
* @private
|
|
34
|
-
*/
|
|
35
|
-
private computeCommitedHeaders;
|
|
36
|
-
/**
|
|
37
|
-
* A common logic for submitting blockheaders in a transaction
|
|
38
|
-
*
|
|
39
|
-
* @param signer
|
|
40
|
-
* @param headers headers to sync to the btc relay
|
|
41
|
-
* @param storedHeader current latest stored block header for a given fork
|
|
42
|
-
* @param tipWork work of the current tip in a given fork
|
|
43
|
-
* @param forkId forkId to submit to, forkId=0 means main chain, forkId=-1 means short fork
|
|
44
|
-
* @param feeRate feeRate for the transaction
|
|
45
|
-
* @param totalForkHeaders Total number of headers in a fork
|
|
46
|
-
* @private
|
|
47
|
-
*/
|
|
48
|
-
private _saveHeaders;
|
|
49
|
-
private findStoredBlockheaderInTraces;
|
|
50
|
-
private commitHashCache;
|
|
51
|
-
private blockHashCache;
|
|
52
|
-
private getBlock;
|
|
53
|
-
private getBlockHeight;
|
|
54
|
-
/**
|
|
55
|
-
* Returns data about current main chain tip stored in the btc relay
|
|
56
|
-
*/
|
|
57
|
-
getTipData(): Promise<{
|
|
58
|
-
commitHash: string;
|
|
59
|
-
blockhash: string;
|
|
60
|
-
chainWork: Buffer;
|
|
61
|
-
blockheight: number;
|
|
62
|
-
}>;
|
|
63
|
-
/**
|
|
64
|
-
* Retrieves blockheader with a specific blockhash, returns null if requiredBlockheight is provided and
|
|
65
|
-
* btc relay contract is not synced up to the desired blockheight
|
|
66
|
-
*
|
|
67
|
-
* @param blockData
|
|
68
|
-
* @param requiredBlockheight
|
|
69
|
-
*/
|
|
70
|
-
retrieveLogAndBlockheight(blockData: {
|
|
71
|
-
blockhash: string;
|
|
72
|
-
}, requiredBlockheight?: number): Promise<{
|
|
73
|
-
header: EVMBtcStoredHeader;
|
|
74
|
-
height: number;
|
|
75
|
-
} | null>;
|
|
76
|
-
/**
|
|
77
|
-
* Retrieves blockheader data by blockheader's commit hash,
|
|
78
|
-
*
|
|
79
|
-
* @param commitmentHashStr
|
|
80
|
-
* @param blockData
|
|
81
|
-
*/
|
|
82
|
-
retrieveLogByCommitHash(commitmentHashStr: string, blockData: {
|
|
83
|
-
blockhash: string;
|
|
84
|
-
}): Promise<EVMBtcStoredHeader>;
|
|
85
|
-
/**
|
|
86
|
-
* Retrieves latest known stored blockheader & blockheader from bitcoin RPC that is in the main chain
|
|
87
|
-
*/
|
|
88
|
-
retrieveLatestKnownBlockLog(): Promise<{
|
|
89
|
-
resultStoredHeader: EVMBtcStoredHeader;
|
|
90
|
-
resultBitcoinHeader: B;
|
|
91
|
-
}>;
|
|
92
|
-
/**
|
|
93
|
-
* Saves blockheaders as a bitcoin main chain to the btc relay
|
|
94
|
-
*
|
|
95
|
-
* @param signer
|
|
96
|
-
* @param mainHeaders
|
|
97
|
-
* @param storedHeader
|
|
98
|
-
* @param feeRate
|
|
99
|
-
*/
|
|
100
|
-
saveMainHeaders(signer: string, mainHeaders: BtcBlock[], storedHeader: EVMBtcStoredHeader, feeRate?: string): Promise<{
|
|
101
|
-
forkId: number;
|
|
102
|
-
lastStoredHeader: EVMBtcStoredHeader;
|
|
103
|
-
tx: import("ethers").TransactionRequest;
|
|
104
|
-
computedCommitedHeaders: EVMBtcStoredHeader[];
|
|
105
|
-
}>;
|
|
106
|
-
/**
|
|
107
|
-
* Creates a new long fork and submits the headers to it
|
|
108
|
-
*
|
|
109
|
-
* @param signer
|
|
110
|
-
* @param forkHeaders
|
|
111
|
-
* @param storedHeader
|
|
112
|
-
* @param tipWork
|
|
113
|
-
* @param feeRate
|
|
114
|
-
*/
|
|
115
|
-
saveNewForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: EVMBtcStoredHeader, tipWork: Buffer, feeRate?: string): Promise<{
|
|
116
|
-
forkId: number;
|
|
117
|
-
lastStoredHeader: EVMBtcStoredHeader;
|
|
118
|
-
tx: import("ethers").TransactionRequest;
|
|
119
|
-
computedCommitedHeaders: EVMBtcStoredHeader[];
|
|
120
|
-
}>;
|
|
121
|
-
/**
|
|
122
|
-
* Continues submitting blockheaders to a given fork
|
|
123
|
-
*
|
|
124
|
-
* @param signer
|
|
125
|
-
* @param forkHeaders
|
|
126
|
-
* @param storedHeader
|
|
127
|
-
* @param forkId
|
|
128
|
-
* @param tipWork
|
|
129
|
-
* @param feeRate
|
|
130
|
-
*/
|
|
131
|
-
saveForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: EVMBtcStoredHeader, forkId: number, tipWork: Buffer, feeRate?: string): Promise<{
|
|
132
|
-
forkId: number;
|
|
133
|
-
lastStoredHeader: EVMBtcStoredHeader;
|
|
134
|
-
tx: import("ethers").TransactionRequest;
|
|
135
|
-
computedCommitedHeaders: EVMBtcStoredHeader[];
|
|
136
|
-
}>;
|
|
137
|
-
/**
|
|
138
|
-
* Submits short fork with given blockheaders
|
|
139
|
-
*
|
|
140
|
-
* @param signer
|
|
141
|
-
* @param forkHeaders
|
|
142
|
-
* @param storedHeader
|
|
143
|
-
* @param tipWork
|
|
144
|
-
* @param feeRate
|
|
145
|
-
*/
|
|
146
|
-
saveShortForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: EVMBtcStoredHeader, tipWork: Buffer, feeRate?: string): Promise<{
|
|
147
|
-
forkId: number;
|
|
148
|
-
lastStoredHeader: EVMBtcStoredHeader;
|
|
149
|
-
tx: import("ethers").TransactionRequest;
|
|
150
|
-
computedCommitedHeaders: EVMBtcStoredHeader[];
|
|
151
|
-
}>;
|
|
152
|
-
/**
|
|
153
|
-
* Estimate required synchronization fee (worst case) to synchronize btc relay to the required blockheight
|
|
154
|
-
*
|
|
155
|
-
* @param requiredBlockheight
|
|
156
|
-
* @param feeRate
|
|
157
|
-
*/
|
|
158
|
-
estimateSynchronizeFee(requiredBlockheight: number, feeRate?: string): Promise<bigint>;
|
|
159
|
-
/**
|
|
160
|
-
* Returns fee required (in native token) to synchronize a single block to btc relay
|
|
161
|
-
*
|
|
162
|
-
* @param feeRate
|
|
163
|
-
*/
|
|
164
|
-
getFeePerBlock(feeRate?: string): Promise<bigint>;
|
|
165
|
-
/**
|
|
166
|
-
* Gets fee rate required for submitting blockheaders to the main chain
|
|
167
|
-
*/
|
|
168
|
-
getMainFeeRate(signer: string | null): Promise<string>;
|
|
169
|
-
/**
|
|
170
|
-
* Gets fee rate required for submitting blockheaders to the specific fork
|
|
171
|
-
*/
|
|
172
|
-
getForkFeeRate(signer: string, forkId: number): Promise<string>;
|
|
173
|
-
saveInitialHeader(signer: string, header: B, epochStart: number, pastBlocksTimestamps: number[], feeRate?: string): Promise<EVMTx>;
|
|
174
|
-
/**
|
|
175
|
-
* Gets committed header, identified by blockhash & blockheight, determines required BTC relay blockheight based on
|
|
176
|
-
* requiredConfirmations
|
|
177
|
-
* If synchronizer is passed & blockhash is not found, it produces transactions to sync up the btc relay to the
|
|
178
|
-
* current chain tip & adds them to the txs array
|
|
179
|
-
*
|
|
180
|
-
* @param signer
|
|
181
|
-
* @param btcRelay
|
|
182
|
-
* @param btcTxs
|
|
183
|
-
* @param txs solana transaction array, in case we need to synchronize the btc relay ourselves the synchronization
|
|
184
|
-
* txns are added here
|
|
185
|
-
* @param synchronizer optional synchronizer to use to synchronize the btc relay in case it is not yet synchronized
|
|
186
|
-
* to the required blockheight
|
|
187
|
-
* @param feeRate Fee rate to use for synchronization transactions
|
|
188
|
-
* @private
|
|
189
|
-
*/
|
|
190
|
-
static getCommitedHeadersAndSynchronize(signer: string, btcRelay: EVMBtcRelay<any>, btcTxs: {
|
|
191
|
-
blockheight: number;
|
|
192
|
-
requiredConfirmations: number;
|
|
193
|
-
blockhash: string;
|
|
194
|
-
}[], txs: EVMTx[], synchronizer?: RelaySynchronizer<EVMBtcStoredHeader, EVMTx, any>, feeRate?: string): Promise<{
|
|
195
|
-
[blockhash: string]: EVMBtcStoredHeader;
|
|
196
|
-
}>;
|
|
197
|
-
}
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import { BitcoinNetwork, BitcoinRpc, BtcBlock, BtcRelay, RelaySynchronizer } from "@atomiqlabs/base";
|
|
4
|
+
import { EVMBtcHeader } from "./headers/EVMBtcHeader";
|
|
5
|
+
import { EVMContractBase } from "../contract/EVMContractBase";
|
|
6
|
+
import { BtcRelay as BtcRelayTypechain } from "./BtcRelayTypechain";
|
|
7
|
+
import { EVMBtcStoredHeader } from "./headers/EVMBtcStoredHeader";
|
|
8
|
+
import { EVMSigner } from "../wallet/EVMSigner";
|
|
9
|
+
import { EVMTx } from "../chain/modules/EVMTransactions";
|
|
10
|
+
import { EVMChainInterface } from "../chain/EVMChainInterface";
|
|
11
|
+
export declare class EVMBtcRelay<B extends BtcBlock> extends EVMContractBase<BtcRelayTypechain> implements BtcRelay<EVMBtcStoredHeader, EVMTx, B, EVMSigner> {
|
|
12
|
+
static GasCosts: {
|
|
13
|
+
GAS_PER_BLOCKHEADER: number;
|
|
14
|
+
GAS_BASE_MAIN: number;
|
|
15
|
+
GAS_PER_BLOCKHEADER_FORK: number;
|
|
16
|
+
GAS_PER_BLOCKHEADER_FORKED: number;
|
|
17
|
+
GAS_BASE_FORK: number;
|
|
18
|
+
};
|
|
19
|
+
SaveMainHeaders(signer: string, mainHeaders: EVMBtcHeader[], storedHeader: EVMBtcStoredHeader, feeRate: string): Promise<EVMTx>;
|
|
20
|
+
SaveShortForkHeaders(signer: string, forkHeaders: EVMBtcHeader[], storedHeader: EVMBtcStoredHeader, feeRate: string): Promise<EVMTx>;
|
|
21
|
+
SaveLongForkHeaders(signer: string, forkId: number, forkHeaders: EVMBtcHeader[], storedHeader: EVMBtcStoredHeader, feeRate: string, totalForkHeaders?: number): Promise<EVMTx>;
|
|
22
|
+
bitcoinRpc: BitcoinRpc<B>;
|
|
23
|
+
readonly maxHeadersPerTx: number;
|
|
24
|
+
readonly maxForkHeadersPerTx: number;
|
|
25
|
+
readonly maxShortForkHeadersPerTx: number;
|
|
26
|
+
constructor(chainInterface: EVMChainInterface<any>, bitcoinRpc: BitcoinRpc<B>, bitcoinNetwork: BitcoinNetwork, contractAddress: string, contractDeploymentHeight?: number);
|
|
27
|
+
/**
|
|
28
|
+
* Computes subsequent commited headers as they will appear on the blockchain when transactions
|
|
29
|
+
* are submitted & confirmed
|
|
30
|
+
*
|
|
31
|
+
* @param initialStoredHeader
|
|
32
|
+
* @param syncedHeaders
|
|
33
|
+
* @private
|
|
34
|
+
*/
|
|
35
|
+
private computeCommitedHeaders;
|
|
36
|
+
/**
|
|
37
|
+
* A common logic for submitting blockheaders in a transaction
|
|
38
|
+
*
|
|
39
|
+
* @param signer
|
|
40
|
+
* @param headers headers to sync to the btc relay
|
|
41
|
+
* @param storedHeader current latest stored block header for a given fork
|
|
42
|
+
* @param tipWork work of the current tip in a given fork
|
|
43
|
+
* @param forkId forkId to submit to, forkId=0 means main chain, forkId=-1 means short fork
|
|
44
|
+
* @param feeRate feeRate for the transaction
|
|
45
|
+
* @param totalForkHeaders Total number of headers in a fork
|
|
46
|
+
* @private
|
|
47
|
+
*/
|
|
48
|
+
private _saveHeaders;
|
|
49
|
+
private findStoredBlockheaderInTraces;
|
|
50
|
+
private commitHashCache;
|
|
51
|
+
private blockHashCache;
|
|
52
|
+
private getBlock;
|
|
53
|
+
private getBlockHeight;
|
|
54
|
+
/**
|
|
55
|
+
* Returns data about current main chain tip stored in the btc relay
|
|
56
|
+
*/
|
|
57
|
+
getTipData(): Promise<{
|
|
58
|
+
commitHash: string;
|
|
59
|
+
blockhash: string;
|
|
60
|
+
chainWork: Buffer;
|
|
61
|
+
blockheight: number;
|
|
62
|
+
}>;
|
|
63
|
+
/**
|
|
64
|
+
* Retrieves blockheader with a specific blockhash, returns null if requiredBlockheight is provided and
|
|
65
|
+
* btc relay contract is not synced up to the desired blockheight
|
|
66
|
+
*
|
|
67
|
+
* @param blockData
|
|
68
|
+
* @param requiredBlockheight
|
|
69
|
+
*/
|
|
70
|
+
retrieveLogAndBlockheight(blockData: {
|
|
71
|
+
blockhash: string;
|
|
72
|
+
}, requiredBlockheight?: number): Promise<{
|
|
73
|
+
header: EVMBtcStoredHeader;
|
|
74
|
+
height: number;
|
|
75
|
+
} | null>;
|
|
76
|
+
/**
|
|
77
|
+
* Retrieves blockheader data by blockheader's commit hash,
|
|
78
|
+
*
|
|
79
|
+
* @param commitmentHashStr
|
|
80
|
+
* @param blockData
|
|
81
|
+
*/
|
|
82
|
+
retrieveLogByCommitHash(commitmentHashStr: string, blockData: {
|
|
83
|
+
blockhash: string;
|
|
84
|
+
}): Promise<EVMBtcStoredHeader>;
|
|
85
|
+
/**
|
|
86
|
+
* Retrieves latest known stored blockheader & blockheader from bitcoin RPC that is in the main chain
|
|
87
|
+
*/
|
|
88
|
+
retrieveLatestKnownBlockLog(): Promise<{
|
|
89
|
+
resultStoredHeader: EVMBtcStoredHeader;
|
|
90
|
+
resultBitcoinHeader: B;
|
|
91
|
+
}>;
|
|
92
|
+
/**
|
|
93
|
+
* Saves blockheaders as a bitcoin main chain to the btc relay
|
|
94
|
+
*
|
|
95
|
+
* @param signer
|
|
96
|
+
* @param mainHeaders
|
|
97
|
+
* @param storedHeader
|
|
98
|
+
* @param feeRate
|
|
99
|
+
*/
|
|
100
|
+
saveMainHeaders(signer: string, mainHeaders: BtcBlock[], storedHeader: EVMBtcStoredHeader, feeRate?: string): Promise<{
|
|
101
|
+
forkId: number;
|
|
102
|
+
lastStoredHeader: EVMBtcStoredHeader;
|
|
103
|
+
tx: import("ethers").TransactionRequest;
|
|
104
|
+
computedCommitedHeaders: EVMBtcStoredHeader[];
|
|
105
|
+
}>;
|
|
106
|
+
/**
|
|
107
|
+
* Creates a new long fork and submits the headers to it
|
|
108
|
+
*
|
|
109
|
+
* @param signer
|
|
110
|
+
* @param forkHeaders
|
|
111
|
+
* @param storedHeader
|
|
112
|
+
* @param tipWork
|
|
113
|
+
* @param feeRate
|
|
114
|
+
*/
|
|
115
|
+
saveNewForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: EVMBtcStoredHeader, tipWork: Buffer, feeRate?: string): Promise<{
|
|
116
|
+
forkId: number;
|
|
117
|
+
lastStoredHeader: EVMBtcStoredHeader;
|
|
118
|
+
tx: import("ethers").TransactionRequest;
|
|
119
|
+
computedCommitedHeaders: EVMBtcStoredHeader[];
|
|
120
|
+
}>;
|
|
121
|
+
/**
|
|
122
|
+
* Continues submitting blockheaders to a given fork
|
|
123
|
+
*
|
|
124
|
+
* @param signer
|
|
125
|
+
* @param forkHeaders
|
|
126
|
+
* @param storedHeader
|
|
127
|
+
* @param forkId
|
|
128
|
+
* @param tipWork
|
|
129
|
+
* @param feeRate
|
|
130
|
+
*/
|
|
131
|
+
saveForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: EVMBtcStoredHeader, forkId: number, tipWork: Buffer, feeRate?: string): Promise<{
|
|
132
|
+
forkId: number;
|
|
133
|
+
lastStoredHeader: EVMBtcStoredHeader;
|
|
134
|
+
tx: import("ethers").TransactionRequest;
|
|
135
|
+
computedCommitedHeaders: EVMBtcStoredHeader[];
|
|
136
|
+
}>;
|
|
137
|
+
/**
|
|
138
|
+
* Submits short fork with given blockheaders
|
|
139
|
+
*
|
|
140
|
+
* @param signer
|
|
141
|
+
* @param forkHeaders
|
|
142
|
+
* @param storedHeader
|
|
143
|
+
* @param tipWork
|
|
144
|
+
* @param feeRate
|
|
145
|
+
*/
|
|
146
|
+
saveShortForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: EVMBtcStoredHeader, tipWork: Buffer, feeRate?: string): Promise<{
|
|
147
|
+
forkId: number;
|
|
148
|
+
lastStoredHeader: EVMBtcStoredHeader;
|
|
149
|
+
tx: import("ethers").TransactionRequest;
|
|
150
|
+
computedCommitedHeaders: EVMBtcStoredHeader[];
|
|
151
|
+
}>;
|
|
152
|
+
/**
|
|
153
|
+
* Estimate required synchronization fee (worst case) to synchronize btc relay to the required blockheight
|
|
154
|
+
*
|
|
155
|
+
* @param requiredBlockheight
|
|
156
|
+
* @param feeRate
|
|
157
|
+
*/
|
|
158
|
+
estimateSynchronizeFee(requiredBlockheight: number, feeRate?: string): Promise<bigint>;
|
|
159
|
+
/**
|
|
160
|
+
* Returns fee required (in native token) to synchronize a single block to btc relay
|
|
161
|
+
*
|
|
162
|
+
* @param feeRate
|
|
163
|
+
*/
|
|
164
|
+
getFeePerBlock(feeRate?: string): Promise<bigint>;
|
|
165
|
+
/**
|
|
166
|
+
* Gets fee rate required for submitting blockheaders to the main chain
|
|
167
|
+
*/
|
|
168
|
+
getMainFeeRate(signer: string | null): Promise<string>;
|
|
169
|
+
/**
|
|
170
|
+
* Gets fee rate required for submitting blockheaders to the specific fork
|
|
171
|
+
*/
|
|
172
|
+
getForkFeeRate(signer: string, forkId: number): Promise<string>;
|
|
173
|
+
saveInitialHeader(signer: string, header: B, epochStart: number, pastBlocksTimestamps: number[], feeRate?: string): Promise<EVMTx>;
|
|
174
|
+
/**
|
|
175
|
+
* Gets committed header, identified by blockhash & blockheight, determines required BTC relay blockheight based on
|
|
176
|
+
* requiredConfirmations
|
|
177
|
+
* If synchronizer is passed & blockhash is not found, it produces transactions to sync up the btc relay to the
|
|
178
|
+
* current chain tip & adds them to the txs array
|
|
179
|
+
*
|
|
180
|
+
* @param signer
|
|
181
|
+
* @param btcRelay
|
|
182
|
+
* @param btcTxs
|
|
183
|
+
* @param txs solana transaction array, in case we need to synchronize the btc relay ourselves the synchronization
|
|
184
|
+
* txns are added here
|
|
185
|
+
* @param synchronizer optional synchronizer to use to synchronize the btc relay in case it is not yet synchronized
|
|
186
|
+
* to the required blockheight
|
|
187
|
+
* @param feeRate Fee rate to use for synchronization transactions
|
|
188
|
+
* @private
|
|
189
|
+
*/
|
|
190
|
+
static getCommitedHeadersAndSynchronize(signer: string, btcRelay: EVMBtcRelay<any>, btcTxs: {
|
|
191
|
+
blockheight: number;
|
|
192
|
+
requiredConfirmations: number;
|
|
193
|
+
blockhash: string;
|
|
194
|
+
}[], txs: EVMTx[], synchronizer?: RelaySynchronizer<EVMBtcStoredHeader, EVMTx, any>, feeRate?: string): Promise<{
|
|
195
|
+
[blockhash: string]: EVMBtcStoredHeader;
|
|
196
|
+
}>;
|
|
197
|
+
}
|