@atomiqlabs/chain-evm 1.0.0-dev.35 → 1.0.0-dev.37
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/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 +127 -127
- 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 +195 -195
- package/dist/evm/btcrelay/EVMBtcRelay.js +423 -423
- 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 +73 -73
- 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 -51
- package/dist/evm/chain/modules/EVMTokens.js +142 -113
- package/dist/evm/chain/modules/EVMTransactions.d.ts +89 -89
- package/dist/evm/chain/modules/EVMTransactions.js +230 -216
- 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 +67 -67
- package/dist/evm/events/EVMChainEventsBrowser.d.ts +86 -86
- package/dist/evm/events/EVMChainEventsBrowser.js +294 -294
- package/dist/evm/spv_swap/EVMSpvVaultContract.d.ts +78 -78
- package/dist/evm/spv_swap/EVMSpvVaultContract.js +478 -480
- package/dist/evm/spv_swap/EVMSpvVaultData.d.ts +39 -39
- package/dist/evm/spv_swap/EVMSpvVaultData.js +180 -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 +374 -374
- 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 -131
- 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 -275
- 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/EVMSigner.d.ts +10 -9
- package/dist/evm/wallet/EVMSigner.js +17 -16
- package/dist/index.d.ts +38 -38
- package/dist/index.js +54 -54
- package/dist/utils/Utils.d.ts +15 -15
- package/dist/utils/Utils.js +71 -71
- package/package.json +37 -37
- 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 +522 -522
- 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 -126
- package/src/evm/chain/modules/EVMTransactions.ts +257 -246
- 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 +81 -81
- package/src/evm/events/EVMChainEventsBrowser.ts +390 -390
- package/src/evm/spv_swap/EVMSpvVaultContract.ts +608 -603
- 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 +592 -592
- 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 -152
- package/src/evm/swaps/modules/EVMSwapClaim.ts +172 -172
- package/src/evm/swaps/modules/EVMSwapInit.ts +328 -325
- package/src/evm/swaps/modules/EVMSwapRefund.ts +229 -229
- package/src/evm/typechain/common.ts +131 -131
- package/src/evm/wallet/EVMSigner.ts +25 -23
- package/src/index.ts +45 -45
- package/src/utils/Utils.ts +81 -81
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
/// <reference types="node" />
|
|
3
|
-
import { IClaimHandler } from "../ClaimHandlers";
|
|
4
|
-
import { ChainSwapType, RelaySynchronizer } from "@atomiqlabs/base";
|
|
5
|
-
import { EVMBtcRelay } from "../../../../btcrelay/EVMBtcRelay";
|
|
6
|
-
import { EVMBtcStoredHeader } from "../../../../btcrelay/headers/EVMBtcStoredHeader";
|
|
7
|
-
import { EVMTx } from "../../../../chain/modules/EVMTransactions";
|
|
8
|
-
import { Buffer } from "buffer";
|
|
9
|
-
import { EVMSwapData } from "../../../EVMSwapData";
|
|
10
|
-
export type BitcoinCommitmentData = {
|
|
11
|
-
btcRelay: EVMBtcRelay<any>;
|
|
12
|
-
confirmations: number;
|
|
13
|
-
};
|
|
14
|
-
export type BitcoinWitnessData = {
|
|
15
|
-
tx: {
|
|
16
|
-
blockhash: string;
|
|
17
|
-
confirmations: number;
|
|
18
|
-
txid: string;
|
|
19
|
-
hex: string;
|
|
20
|
-
height: number;
|
|
21
|
-
};
|
|
22
|
-
requiredConfirmations: number;
|
|
23
|
-
commitedHeader?: EVMBtcStoredHeader;
|
|
24
|
-
btcRelay?: EVMBtcRelay<any>;
|
|
25
|
-
synchronizer?: RelaySynchronizer<EVMBtcStoredHeader, EVMTx, any>;
|
|
26
|
-
};
|
|
27
|
-
export declare abstract class IBitcoinClaimHandler<C, W extends BitcoinWitnessData> implements IClaimHandler<C & BitcoinCommitmentData, W> {
|
|
28
|
-
readonly address: string;
|
|
29
|
-
constructor(address: string);
|
|
30
|
-
static readonly address = "";
|
|
31
|
-
static readonly type: ChainSwapType;
|
|
32
|
-
static readonly gas: number;
|
|
33
|
-
protected serializeCommitment(data: BitcoinCommitmentData): Buffer;
|
|
34
|
-
getCommitment(data: C & BitcoinCommitmentData): string;
|
|
35
|
-
protected _getWitness(signer: string, swapData: EVMSwapData, { tx, btcRelay, commitedHeader, synchronizer, requiredConfirmations }: BitcoinWitnessData, commitment: C, feeRate?: string): Promise<{
|
|
36
|
-
initialTxns: EVMTx[];
|
|
37
|
-
witness: Buffer;
|
|
38
|
-
commitment: Buffer;
|
|
39
|
-
blockheader: Buffer;
|
|
40
|
-
merkleProof: Buffer;
|
|
41
|
-
}>;
|
|
42
|
-
abstract getWitness(signer: string, data: EVMSwapData, witnessData: W, feeRate?: string): Promise<{
|
|
43
|
-
initialTxns: EVMTx[];
|
|
44
|
-
witness: Buffer;
|
|
45
|
-
}>;
|
|
46
|
-
abstract getGas(data: EVMSwapData): number;
|
|
47
|
-
abstract getType(): ChainSwapType;
|
|
48
|
-
}
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import { IClaimHandler } from "../ClaimHandlers";
|
|
4
|
+
import { ChainSwapType, RelaySynchronizer } from "@atomiqlabs/base";
|
|
5
|
+
import { EVMBtcRelay } from "../../../../btcrelay/EVMBtcRelay";
|
|
6
|
+
import { EVMBtcStoredHeader } from "../../../../btcrelay/headers/EVMBtcStoredHeader";
|
|
7
|
+
import { EVMTx } from "../../../../chain/modules/EVMTransactions";
|
|
8
|
+
import { Buffer } from "buffer";
|
|
9
|
+
import { EVMSwapData } from "../../../EVMSwapData";
|
|
10
|
+
export type BitcoinCommitmentData = {
|
|
11
|
+
btcRelay: EVMBtcRelay<any>;
|
|
12
|
+
confirmations: number;
|
|
13
|
+
};
|
|
14
|
+
export type BitcoinWitnessData = {
|
|
15
|
+
tx: {
|
|
16
|
+
blockhash: string;
|
|
17
|
+
confirmations: number;
|
|
18
|
+
txid: string;
|
|
19
|
+
hex: string;
|
|
20
|
+
height: number;
|
|
21
|
+
};
|
|
22
|
+
requiredConfirmations: number;
|
|
23
|
+
commitedHeader?: EVMBtcStoredHeader;
|
|
24
|
+
btcRelay?: EVMBtcRelay<any>;
|
|
25
|
+
synchronizer?: RelaySynchronizer<EVMBtcStoredHeader, EVMTx, any>;
|
|
26
|
+
};
|
|
27
|
+
export declare abstract class IBitcoinClaimHandler<C, W extends BitcoinWitnessData> implements IClaimHandler<C & BitcoinCommitmentData, W> {
|
|
28
|
+
readonly address: string;
|
|
29
|
+
constructor(address: string);
|
|
30
|
+
static readonly address = "";
|
|
31
|
+
static readonly type: ChainSwapType;
|
|
32
|
+
static readonly gas: number;
|
|
33
|
+
protected serializeCommitment(data: BitcoinCommitmentData): Buffer;
|
|
34
|
+
getCommitment(data: C & BitcoinCommitmentData): string;
|
|
35
|
+
protected _getWitness(signer: string, swapData: EVMSwapData, { tx, btcRelay, commitedHeader, synchronizer, requiredConfirmations }: BitcoinWitnessData, commitment: C, feeRate?: string): Promise<{
|
|
36
|
+
initialTxns: EVMTx[];
|
|
37
|
+
witness: Buffer;
|
|
38
|
+
commitment: Buffer;
|
|
39
|
+
blockheader: Buffer;
|
|
40
|
+
merkleProof: Buffer;
|
|
41
|
+
}>;
|
|
42
|
+
abstract getWitness(signer: string, data: EVMSwapData, witnessData: W, feeRate?: string): Promise<{
|
|
43
|
+
initialTxns: EVMTx[];
|
|
44
|
+
witness: Buffer;
|
|
45
|
+
}>;
|
|
46
|
+
abstract getGas(data: EVMSwapData): number;
|
|
47
|
+
abstract getType(): ChainSwapType;
|
|
48
|
+
}
|
|
@@ -1,63 +1,63 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.IBitcoinClaimHandler = void 0;
|
|
4
|
-
const base_1 = require("@atomiqlabs/base");
|
|
5
|
-
const EVMBtcRelay_1 = require("../../../../btcrelay/EVMBtcRelay");
|
|
6
|
-
const Utils_1 = require("../../../../../utils/Utils");
|
|
7
|
-
const ethers_1 = require("ethers");
|
|
8
|
-
const buffer_1 = require("buffer");
|
|
9
|
-
const logger = (0, Utils_1.getLogger)("IBitcoinClaimHandler: ");
|
|
10
|
-
class IBitcoinClaimHandler {
|
|
11
|
-
constructor(address) {
|
|
12
|
-
this.address = address;
|
|
13
|
-
}
|
|
14
|
-
serializeCommitment(data) {
|
|
15
|
-
const buffer = buffer_1.Buffer.alloc(24);
|
|
16
|
-
buffer.writeUint32BE(data.confirmations, 0);
|
|
17
|
-
buffer_1.Buffer.from(data.btcRelay.contractAddress.substring(2), "hex").copy(buffer, 4, 0, 20);
|
|
18
|
-
return buffer;
|
|
19
|
-
}
|
|
20
|
-
getCommitment(data) {
|
|
21
|
-
return (0, ethers_1.keccak256)(this.serializeCommitment(data));
|
|
22
|
-
}
|
|
23
|
-
async _getWitness(signer, swapData, { tx, btcRelay, commitedHeader, synchronizer, requiredConfirmations }, commitment, feeRate) {
|
|
24
|
-
const serializedCommitment = this.serializeCommitment({
|
|
25
|
-
...commitment,
|
|
26
|
-
btcRelay,
|
|
27
|
-
confirmations: requiredConfirmations
|
|
28
|
-
});
|
|
29
|
-
const commitmentHash = (0, ethers_1.keccak256)(serializedCommitment);
|
|
30
|
-
if (!swapData.isClaimData(commitmentHash))
|
|
31
|
-
throw new Error("Invalid commit data");
|
|
32
|
-
const merkleProof = await btcRelay.bitcoinRpc.getMerkleProof(tx.txid, tx.blockhash);
|
|
33
|
-
logger.debug("getWitness(): merkle proof computed: ", merkleProof);
|
|
34
|
-
const txs = [];
|
|
35
|
-
if (commitedHeader == null) {
|
|
36
|
-
const headers = await EVMBtcRelay_1.EVMBtcRelay.getCommitedHeadersAndSynchronize(signer, btcRelay, [{ blockheight: tx.height, requiredConfirmations, blockhash: tx.blockhash }], txs, synchronizer, feeRate);
|
|
37
|
-
if (headers == null)
|
|
38
|
-
throw new Error("Cannot fetch committed header!");
|
|
39
|
-
commitedHeader = headers[tx.blockhash];
|
|
40
|
-
}
|
|
41
|
-
const serializedHeader = commitedHeader.serialize();
|
|
42
|
-
const serializedMerkleProof = buffer_1.Buffer.concat([
|
|
43
|
-
base_1.BigIntBufferUtils.toBuffer(BigInt(merkleProof.pos), "be", 4),
|
|
44
|
-
base_1.BigIntBufferUtils.toBuffer(BigInt(merkleProof.merkle.length), "be", 32),
|
|
45
|
-
...merkleProof.merkle
|
|
46
|
-
]);
|
|
47
|
-
return {
|
|
48
|
-
initialTxns: txs,
|
|
49
|
-
witness: buffer_1.Buffer.concat([
|
|
50
|
-
serializedCommitment,
|
|
51
|
-
serializedHeader,
|
|
52
|
-
serializedMerkleProof
|
|
53
|
-
]),
|
|
54
|
-
commitment: serializedCommitment,
|
|
55
|
-
blockheader: serializedHeader,
|
|
56
|
-
merkleProof: serializedMerkleProof
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
exports.IBitcoinClaimHandler = IBitcoinClaimHandler;
|
|
61
|
-
IBitcoinClaimHandler.address = "";
|
|
62
|
-
IBitcoinClaimHandler.type = base_1.ChainSwapType.CHAIN_TXID;
|
|
63
|
-
IBitcoinClaimHandler.gas = 10000;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IBitcoinClaimHandler = void 0;
|
|
4
|
+
const base_1 = require("@atomiqlabs/base");
|
|
5
|
+
const EVMBtcRelay_1 = require("../../../../btcrelay/EVMBtcRelay");
|
|
6
|
+
const Utils_1 = require("../../../../../utils/Utils");
|
|
7
|
+
const ethers_1 = require("ethers");
|
|
8
|
+
const buffer_1 = require("buffer");
|
|
9
|
+
const logger = (0, Utils_1.getLogger)("IBitcoinClaimHandler: ");
|
|
10
|
+
class IBitcoinClaimHandler {
|
|
11
|
+
constructor(address) {
|
|
12
|
+
this.address = address;
|
|
13
|
+
}
|
|
14
|
+
serializeCommitment(data) {
|
|
15
|
+
const buffer = buffer_1.Buffer.alloc(24);
|
|
16
|
+
buffer.writeUint32BE(data.confirmations, 0);
|
|
17
|
+
buffer_1.Buffer.from(data.btcRelay.contractAddress.substring(2), "hex").copy(buffer, 4, 0, 20);
|
|
18
|
+
return buffer;
|
|
19
|
+
}
|
|
20
|
+
getCommitment(data) {
|
|
21
|
+
return (0, ethers_1.keccak256)(this.serializeCommitment(data));
|
|
22
|
+
}
|
|
23
|
+
async _getWitness(signer, swapData, { tx, btcRelay, commitedHeader, synchronizer, requiredConfirmations }, commitment, feeRate) {
|
|
24
|
+
const serializedCommitment = this.serializeCommitment({
|
|
25
|
+
...commitment,
|
|
26
|
+
btcRelay,
|
|
27
|
+
confirmations: requiredConfirmations
|
|
28
|
+
});
|
|
29
|
+
const commitmentHash = (0, ethers_1.keccak256)(serializedCommitment);
|
|
30
|
+
if (!swapData.isClaimData(commitmentHash))
|
|
31
|
+
throw new Error("Invalid commit data");
|
|
32
|
+
const merkleProof = await btcRelay.bitcoinRpc.getMerkleProof(tx.txid, tx.blockhash);
|
|
33
|
+
logger.debug("getWitness(): merkle proof computed: ", merkleProof);
|
|
34
|
+
const txs = [];
|
|
35
|
+
if (commitedHeader == null) {
|
|
36
|
+
const headers = await EVMBtcRelay_1.EVMBtcRelay.getCommitedHeadersAndSynchronize(signer, btcRelay, [{ blockheight: tx.height, requiredConfirmations, blockhash: tx.blockhash }], txs, synchronizer, feeRate);
|
|
37
|
+
if (headers == null)
|
|
38
|
+
throw new Error("Cannot fetch committed header!");
|
|
39
|
+
commitedHeader = headers[tx.blockhash];
|
|
40
|
+
}
|
|
41
|
+
const serializedHeader = commitedHeader.serialize();
|
|
42
|
+
const serializedMerkleProof = buffer_1.Buffer.concat([
|
|
43
|
+
base_1.BigIntBufferUtils.toBuffer(BigInt(merkleProof.pos), "be", 4),
|
|
44
|
+
base_1.BigIntBufferUtils.toBuffer(BigInt(merkleProof.merkle.length), "be", 32),
|
|
45
|
+
...merkleProof.merkle
|
|
46
|
+
]);
|
|
47
|
+
return {
|
|
48
|
+
initialTxns: txs,
|
|
49
|
+
witness: buffer_1.Buffer.concat([
|
|
50
|
+
serializedCommitment,
|
|
51
|
+
serializedHeader,
|
|
52
|
+
serializedMerkleProof
|
|
53
|
+
]),
|
|
54
|
+
commitment: serializedCommitment,
|
|
55
|
+
blockheader: serializedHeader,
|
|
56
|
+
merkleProof: serializedMerkleProof
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.IBitcoinClaimHandler = IBitcoinClaimHandler;
|
|
61
|
+
IBitcoinClaimHandler.address = "";
|
|
62
|
+
IBitcoinClaimHandler.type = base_1.ChainSwapType.CHAIN_TXID;
|
|
63
|
+
IBitcoinClaimHandler.gas = 10000;
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
/// <reference types="node" />
|
|
3
|
-
import { IHandler } from "../IHandler";
|
|
4
|
-
import { EVMSwapData } from "../../EVMSwapData";
|
|
5
|
-
import { EVMTx } from "../../../chain/modules/EVMTransactions";
|
|
6
|
-
export declare class TimelockRefundHandler implements IHandler<bigint, never> {
|
|
7
|
-
readonly address: string;
|
|
8
|
-
static readonly gas: number;
|
|
9
|
-
constructor(address: string);
|
|
10
|
-
getCommitment(data: bigint): string;
|
|
11
|
-
getWitness(signer: string, data: EVMSwapData): Promise<{
|
|
12
|
-
initialTxns: EVMTx[];
|
|
13
|
-
witness: Buffer;
|
|
14
|
-
}>;
|
|
15
|
-
getGas(): number;
|
|
16
|
-
static getExpiry(data: EVMSwapData): bigint;
|
|
17
|
-
}
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import { IHandler } from "../IHandler";
|
|
4
|
+
import { EVMSwapData } from "../../EVMSwapData";
|
|
5
|
+
import { EVMTx } from "../../../chain/modules/EVMTransactions";
|
|
6
|
+
export declare class TimelockRefundHandler implements IHandler<bigint, never> {
|
|
7
|
+
readonly address: string;
|
|
8
|
+
static readonly gas: number;
|
|
9
|
+
constructor(address: string);
|
|
10
|
+
getCommitment(data: bigint): string;
|
|
11
|
+
getWitness(signer: string, data: EVMSwapData): Promise<{
|
|
12
|
+
initialTxns: EVMTx[];
|
|
13
|
+
witness: Buffer;
|
|
14
|
+
}>;
|
|
15
|
+
getGas(): number;
|
|
16
|
+
static getExpiry(data: EVMSwapData): bigint;
|
|
17
|
+
}
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TimelockRefundHandler = void 0;
|
|
4
|
-
const base_1 = require("@atomiqlabs/base");
|
|
5
|
-
class TimelockRefundHandler {
|
|
6
|
-
constructor(address) {
|
|
7
|
-
this.address = address;
|
|
8
|
-
}
|
|
9
|
-
getCommitment(data) {
|
|
10
|
-
return "0x" + base_1.BigIntBufferUtils.toBuffer(data, "be", 32).toString("hex");
|
|
11
|
-
}
|
|
12
|
-
getWitness(signer, data) {
|
|
13
|
-
const expiry = TimelockRefundHandler.getExpiry(data);
|
|
14
|
-
const currentTimestamp = BigInt(Math.floor(Date.now() / 1000));
|
|
15
|
-
if (expiry > currentTimestamp)
|
|
16
|
-
throw new Error("Not expired yet!");
|
|
17
|
-
return Promise.resolve({ initialTxns: [], witness: Buffer.alloc(0) });
|
|
18
|
-
}
|
|
19
|
-
getGas() {
|
|
20
|
-
return TimelockRefundHandler.gas;
|
|
21
|
-
}
|
|
22
|
-
static getExpiry(data) {
|
|
23
|
-
const expiryDataBuffer = Buffer.from(data.refundData.startsWith("0x") ? data.refundData.substring(2) : data.refundData, "hex");
|
|
24
|
-
return base_1.BigIntBufferUtils.fromBuffer(expiryDataBuffer, "be");
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
exports.TimelockRefundHandler = TimelockRefundHandler;
|
|
28
|
-
TimelockRefundHandler.gas = 5000;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TimelockRefundHandler = void 0;
|
|
4
|
+
const base_1 = require("@atomiqlabs/base");
|
|
5
|
+
class TimelockRefundHandler {
|
|
6
|
+
constructor(address) {
|
|
7
|
+
this.address = address;
|
|
8
|
+
}
|
|
9
|
+
getCommitment(data) {
|
|
10
|
+
return "0x" + base_1.BigIntBufferUtils.toBuffer(data, "be", 32).toString("hex");
|
|
11
|
+
}
|
|
12
|
+
getWitness(signer, data) {
|
|
13
|
+
const expiry = TimelockRefundHandler.getExpiry(data);
|
|
14
|
+
const currentTimestamp = BigInt(Math.floor(Date.now() / 1000));
|
|
15
|
+
if (expiry > currentTimestamp)
|
|
16
|
+
throw new Error("Not expired yet!");
|
|
17
|
+
return Promise.resolve({ initialTxns: [], witness: Buffer.alloc(0) });
|
|
18
|
+
}
|
|
19
|
+
getGas() {
|
|
20
|
+
return TimelockRefundHandler.gas;
|
|
21
|
+
}
|
|
22
|
+
static getExpiry(data) {
|
|
23
|
+
const expiryDataBuffer = Buffer.from(data.refundData.startsWith("0x") ? data.refundData.substring(2) : data.refundData, "hex");
|
|
24
|
+
return base_1.BigIntBufferUtils.fromBuffer(expiryDataBuffer, "be");
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.TimelockRefundHandler = TimelockRefundHandler;
|
|
28
|
+
TimelockRefundHandler.gas = 5000;
|
|
@@ -1,69 +1,69 @@
|
|
|
1
|
-
import { IntermediaryReputationType } from "@atomiqlabs/base";
|
|
2
|
-
import { EVMSwapModule } from "../EVMSwapModule";
|
|
3
|
-
import { EVMTx } from "../../chain/modules/EVMTransactions";
|
|
4
|
-
export declare class EVMLpVault extends EVMSwapModule {
|
|
5
|
-
private static readonly GasCosts;
|
|
6
|
-
/**
|
|
7
|
-
* Action for withdrawing funds from the LP vault
|
|
8
|
-
*
|
|
9
|
-
* @param signer
|
|
10
|
-
* @param token
|
|
11
|
-
* @param amount
|
|
12
|
-
* @param feeRate
|
|
13
|
-
* @private
|
|
14
|
-
*/
|
|
15
|
-
private Withdraw;
|
|
16
|
-
/**
|
|
17
|
-
* Action for depositing funds to the LP vault
|
|
18
|
-
*
|
|
19
|
-
* @param signer
|
|
20
|
-
* @param token
|
|
21
|
-
* @param amount
|
|
22
|
-
* @param feeRate
|
|
23
|
-
* @private
|
|
24
|
-
*/
|
|
25
|
-
private Deposit;
|
|
26
|
-
/**
|
|
27
|
-
* Returns intermediary's reputation & vault balance for a specific token
|
|
28
|
-
*
|
|
29
|
-
* @param address
|
|
30
|
-
* @param token
|
|
31
|
-
*/
|
|
32
|
-
getIntermediaryData(address: string, token: string): Promise<{
|
|
33
|
-
balance: bigint;
|
|
34
|
-
reputation: IntermediaryReputationType;
|
|
35
|
-
}>;
|
|
36
|
-
/**
|
|
37
|
-
* Returns intermediary's reputation for a specific token
|
|
38
|
-
*
|
|
39
|
-
* @param address
|
|
40
|
-
* @param token
|
|
41
|
-
*/
|
|
42
|
-
getIntermediaryReputation(address: string, token: string): Promise<IntermediaryReputationType>;
|
|
43
|
-
/**
|
|
44
|
-
* Returns the balance of the token an intermediary has in his LP vault
|
|
45
|
-
*
|
|
46
|
-
* @param address
|
|
47
|
-
* @param token
|
|
48
|
-
*/
|
|
49
|
-
getIntermediaryBalance(address: string, token: string): Promise<bigint>;
|
|
50
|
-
/**
|
|
51
|
-
* Creates transactions for withdrawing funds from the LP vault, creates ATA if it doesn't exist and unwraps
|
|
52
|
-
* WSOL to SOL if required
|
|
53
|
-
*
|
|
54
|
-
* @param signer
|
|
55
|
-
* @param token
|
|
56
|
-
* @param amount
|
|
57
|
-
* @param feeRate
|
|
58
|
-
*/
|
|
59
|
-
txsWithdraw(signer: string, token: string, amount: bigint, feeRate?: string): Promise<EVMTx[]>;
|
|
60
|
-
/**
|
|
61
|
-
* Creates transaction for depositing funds into the LP vault, wraps SOL to WSOL if required
|
|
62
|
-
*
|
|
63
|
-
* @param signer
|
|
64
|
-
* @param token
|
|
65
|
-
* @param amount
|
|
66
|
-
* @param feeRate
|
|
67
|
-
*/
|
|
68
|
-
txsDeposit(signer: string, token: string, amount: bigint, feeRate?: string): Promise<EVMTx[]>;
|
|
69
|
-
}
|
|
1
|
+
import { IntermediaryReputationType } from "@atomiqlabs/base";
|
|
2
|
+
import { EVMSwapModule } from "../EVMSwapModule";
|
|
3
|
+
import { EVMTx } from "../../chain/modules/EVMTransactions";
|
|
4
|
+
export declare class EVMLpVault extends EVMSwapModule {
|
|
5
|
+
private static readonly GasCosts;
|
|
6
|
+
/**
|
|
7
|
+
* Action for withdrawing funds from the LP vault
|
|
8
|
+
*
|
|
9
|
+
* @param signer
|
|
10
|
+
* @param token
|
|
11
|
+
* @param amount
|
|
12
|
+
* @param feeRate
|
|
13
|
+
* @private
|
|
14
|
+
*/
|
|
15
|
+
private Withdraw;
|
|
16
|
+
/**
|
|
17
|
+
* Action for depositing funds to the LP vault
|
|
18
|
+
*
|
|
19
|
+
* @param signer
|
|
20
|
+
* @param token
|
|
21
|
+
* @param amount
|
|
22
|
+
* @param feeRate
|
|
23
|
+
* @private
|
|
24
|
+
*/
|
|
25
|
+
private Deposit;
|
|
26
|
+
/**
|
|
27
|
+
* Returns intermediary's reputation & vault balance for a specific token
|
|
28
|
+
*
|
|
29
|
+
* @param address
|
|
30
|
+
* @param token
|
|
31
|
+
*/
|
|
32
|
+
getIntermediaryData(address: string, token: string): Promise<{
|
|
33
|
+
balance: bigint;
|
|
34
|
+
reputation: IntermediaryReputationType;
|
|
35
|
+
}>;
|
|
36
|
+
/**
|
|
37
|
+
* Returns intermediary's reputation for a specific token
|
|
38
|
+
*
|
|
39
|
+
* @param address
|
|
40
|
+
* @param token
|
|
41
|
+
*/
|
|
42
|
+
getIntermediaryReputation(address: string, token: string): Promise<IntermediaryReputationType>;
|
|
43
|
+
/**
|
|
44
|
+
* Returns the balance of the token an intermediary has in his LP vault
|
|
45
|
+
*
|
|
46
|
+
* @param address
|
|
47
|
+
* @param token
|
|
48
|
+
*/
|
|
49
|
+
getIntermediaryBalance(address: string, token: string): Promise<bigint>;
|
|
50
|
+
/**
|
|
51
|
+
* Creates transactions for withdrawing funds from the LP vault, creates ATA if it doesn't exist and unwraps
|
|
52
|
+
* WSOL to SOL if required
|
|
53
|
+
*
|
|
54
|
+
* @param signer
|
|
55
|
+
* @param token
|
|
56
|
+
* @param amount
|
|
57
|
+
* @param feeRate
|
|
58
|
+
*/
|
|
59
|
+
txsWithdraw(signer: string, token: string, amount: bigint, feeRate?: string): Promise<EVMTx[]>;
|
|
60
|
+
/**
|
|
61
|
+
* Creates transaction for depositing funds into the LP vault, wraps SOL to WSOL if required
|
|
62
|
+
*
|
|
63
|
+
* @param signer
|
|
64
|
+
* @param token
|
|
65
|
+
* @param amount
|
|
66
|
+
* @param feeRate
|
|
67
|
+
*/
|
|
68
|
+
txsDeposit(signer: string, token: string, amount: bigint, feeRate?: string): Promise<EVMTx[]>;
|
|
69
|
+
}
|