Fix contract method calls using new method names in contracts

This commit is contained in:
Karl Kempe 2022-01-21 18:08:43 +00:00
parent e62b9b050d
commit ff8ed82cd4
2 changed files with 87 additions and 255 deletions

View File

@ -14,7 +14,7 @@ import { grpc } from "@improbable-eng/grpc-web";
import { UniEvmToken } from "../route/uniswap-core"; import { UniEvmToken } from "../route/uniswap-core";
import { import {
PROTOCOL_UNISWAP_V2, PROTOCOL_UNISWAP_V2,
PROTOCOL_UNISWAP_V3, // PROTOCOL_UNISWAP_V3,
ExactInCrossParameters, ExactInCrossParameters,
ExactOutCrossParameters, ExactOutCrossParameters,
QuoteType, QuoteType,
@ -32,16 +32,11 @@ import {
WMATIC_TOKEN_INFO, WMATIC_TOKEN_INFO,
} from "../utils/consts"; } from "../utils/consts";
import { import {
CROSSCHAINSWAP_GAS_PARAMETERS_UNISWAP_V2, CROSSCHAINSWAP_GAS_PARAMETERS,
CROSSCHAINSWAP_GAS_PARAMETERS_UNISWAP_V3, swapExactInFromVaaNative,
swapExactInFromVaaNativeV2, swapExactInFromVaaToken,
swapExactInFromVaaNativeV3, swapExactOutFromVaaNative,
swapExactInFromVaaTokenV2, swapExactOutFromVaaToken,
swapExactInFromVaaTokenV3,
swapExactOutFromVaaNativeV2,
swapExactOutFromVaaNativeV3,
swapExactOutFromVaaTokenV2,
swapExactOutFromVaaTokenV3,
} from "./util"; } from "./util";
import { abi as SWAP_CONTRACT_V2_ABI } from "../abi/contracts/CrossChainSwapV2.json"; import { abi as SWAP_CONTRACT_V2_ABI } from "../abi/contracts/CrossChainSwapV2.json";
import { abi as SWAP_CONTRACT_V3_ABI } from "../abi/contracts/CrossChainSwapV3.json"; import { abi as SWAP_CONTRACT_V3_ABI } from "../abi/contracts/CrossChainSwapV3.json";
@ -211,24 +206,12 @@ async function approveAndSwapExactIn(
const bridgeNonce = 69; const bridgeNonce = 69;
// do the swap // do the swap
if (protocol === PROTOCOL_UNISWAP_V2) {
// approve swap contract to spend our tokens
console.info("approving contract to spend token in");
await approveContractTokenSpend(
srcProvider,
srcWallet,
srcTokenIn.getContract(),
swapContract.address,
amountIn
);
if (isNative) { if (isNative) {
const gasPlusValue = { const gasPlusValue = {
value: amountIn, value: amountIn,
gasLimit: CROSSCHAINSWAP_GAS_PARAMETERS_UNISWAP_V2.gasLimit, gasLimit: CROSSCHAINSWAP_GAS_PARAMETERS.gasLimit,
maxFeePerGas: CROSSCHAINSWAP_GAS_PARAMETERS_UNISWAP_V2.maxFeePerGas, maxFeePerGas: CROSSCHAINSWAP_GAS_PARAMETERS.maxFeePerGas,
maxPriorityFeePerGas: maxPriorityFeePerGas: CROSSCHAINSWAP_GAS_PARAMETERS.maxPriorityFeePerGas,
CROSSCHAINSWAP_GAS_PARAMETERS_UNISWAP_V2.maxPriorityFeePerGas,
}; };
console.info("swapExactNativeInAndTransfer"); console.info("swapExactNativeInAndTransfer");
@ -243,41 +226,6 @@ async function approveAndSwapExactIn(
); );
return tx.wait(); return tx.wait();
} else { } else {
console.info("swapExactInAndTransfer");
const tx = await contractWithSigner.swapExactInAndTransfer(
swapParams,
pathArray,
quoteParams.relayerFee.amount,
dstWormholeChainId,
dstContractAddress,
bridgeNonce,
CROSSCHAINSWAP_GAS_PARAMETERS_UNISWAP_V2
);
return tx.wait();
}
} else {
if (isNative) {
const gasPlusValue = {
value: amountIn,
gasLimit: CROSSCHAINSWAP_GAS_PARAMETERS_UNISWAP_V3.gasLimit,
maxFeePerGas: CROSSCHAINSWAP_GAS_PARAMETERS_UNISWAP_V3.maxFeePerGas,
maxPriorityFeePerGas:
CROSSCHAINSWAP_GAS_PARAMETERS_UNISWAP_V3.maxPriorityFeePerGas,
};
console.info("swapExactNativeInAndTransfer");
const tx = await contractWithSigner.swapExactNativeInAndTransfer(
swapParams,
pathArray,
quoteParams.relayerFee.amount,
dstWormholeChainId,
dstContractAddress,
bridgeNonce,
gasPlusValue
);
return tx.wait();
} else {
// approve swap contract to spend our tokens
console.info("approving contract to spend token in"); console.info("approving contract to spend token in");
await approveContractTokenSpend( await approveContractTokenSpend(
srcProvider, srcProvider,
@ -286,6 +234,7 @@ async function approveAndSwapExactIn(
swapContract.address, swapContract.address,
amountIn amountIn
); );
console.info("swapExactInAndTransfer"); console.info("swapExactInAndTransfer");
const tx = await contractWithSigner.swapExactInAndTransfer( const tx = await contractWithSigner.swapExactInAndTransfer(
swapParams, swapParams,
@ -294,11 +243,10 @@ async function approveAndSwapExactIn(
dstWormholeChainId, dstWormholeChainId,
dstContractAddress, dstContractAddress,
bridgeNonce, bridgeNonce,
CROSSCHAINSWAP_GAS_PARAMETERS_UNISWAP_V3 CROSSCHAINSWAP_GAS_PARAMETERS
); );
return tx.wait(); return tx.wait();
} }
}
} }
async function approveAndSwapExactOut( async function approveAndSwapExactOut(
@ -344,57 +292,12 @@ async function approveAndSwapExactOut(
const bridgeNonce = 69; const bridgeNonce = 69;
// do the swap // do the swap
if (protocol === PROTOCOL_UNISWAP_V2) {
console.info("approving contract to spend token in");
await approveContractTokenSpend(
srcProvider,
srcWallet,
srcTokenIn.getContract(),
swapContract.address,
maxAmountIn
);
if (isNative) { if (isNative) {
const gasPlusValue = { const gasPlusValue = {
value: maxAmountIn, value: maxAmountIn,
gasLimit: CROSSCHAINSWAP_GAS_PARAMETERS_UNISWAP_V2.gasLimit, gasLimit: CROSSCHAINSWAP_GAS_PARAMETERS.gasLimit,
maxFeePerGas: CROSSCHAINSWAP_GAS_PARAMETERS_UNISWAP_V2.maxFeePerGas, maxFeePerGas: CROSSCHAINSWAP_GAS_PARAMETERS.maxFeePerGas,
maxPriorityFeePerGas: maxPriorityFeePerGas: CROSSCHAINSWAP_GAS_PARAMETERS.maxPriorityFeePerGas,
CROSSCHAINSWAP_GAS_PARAMETERS_UNISWAP_V2.maxPriorityFeePerGas,
};
console.info("swapExactNativeOutAndTransfer");
const tx = await contractWithSigner.swapExactNativeOutAndTransfer(
swapParams,
pathArray,
quoteParams.relayerFee.amount,
dstWormholeChainId,
dstContractAddress,
bridgeNonce,
gasPlusValue
);
return tx.wait();
} else {
console.info("swapExactOutAndTransfer");
const tx = await contractWithSigner.swapExactOutAndTransfer(
swapParams,
pathArray,
quoteParams.relayerFee.amount,
dstWormholeChainId,
dstContractAddress,
bridgeNonce,
CROSSCHAINSWAP_GAS_PARAMETERS_UNISWAP_V2
);
return tx.wait();
}
} else {
if (isNative) {
const gasPlusValue = {
value: maxAmountIn,
gasLimit: CROSSCHAINSWAP_GAS_PARAMETERS_UNISWAP_V3.gasLimit,
maxFeePerGas: CROSSCHAINSWAP_GAS_PARAMETERS_UNISWAP_V3.maxFeePerGas,
maxPriorityFeePerGas:
CROSSCHAINSWAP_GAS_PARAMETERS_UNISWAP_V3.maxPriorityFeePerGas,
}; };
console.info("swapExactNativeOutAndTransfer"); console.info("swapExactNativeOutAndTransfer");
@ -426,11 +329,10 @@ async function approveAndSwapExactOut(
dstWormholeChainId, dstWormholeChainId,
dstContractAddress, dstContractAddress,
bridgeNonce, bridgeNonce,
CROSSCHAINSWAP_GAS_PARAMETERS_UNISWAP_V3 CROSSCHAINSWAP_GAS_PARAMETERS
); );
return tx.wait(); return tx.wait();
} }
}
} }
async function swapExactInFromVaa( async function swapExactInFromVaa(
@ -450,22 +352,12 @@ async function swapExactInFromVaa(
); );
const contractWithSigner = swapContract.connect(dstWallet); const contractWithSigner = swapContract.connect(dstWallet);
if (dstProtocol === PROTOCOL_UNISWAP_V3) {
if (isNative) { if (isNative) {
console.info("swapExactNativeInFromV2"); console.info("swapExactInFromVaaNative");
return swapExactInFromVaaNativeV3(contractWithSigner, signedVaa); return swapExactInFromVaaNative(contractWithSigner, signedVaa);
} else { } else {
console.info("swapExactInFromV2"); console.info("swapExactInFromVaaToken");
return swapExactInFromVaaTokenV3(contractWithSigner, signedVaa); return swapExactInFromVaaToken(contractWithSigner, signedVaa);
}
} else {
if (isNative) {
console.info("swapExactNativeInFromV3");
return swapExactInFromVaaNativeV2(contractWithSigner, signedVaa);
} else {
console.info("swapExactInFromV3");
return swapExactInFromVaaTokenV2(contractWithSigner, signedVaa);
}
} }
} }
@ -486,22 +378,12 @@ async function swapExactOutFromVaa(
); );
const contractWithSigner = swapContract.connect(dstWallet); const contractWithSigner = swapContract.connect(dstWallet);
if (dstProtocol === PROTOCOL_UNISWAP_V3) {
if (isNative) { if (isNative) {
console.info("swapExactNativeInFromV2"); console.info("swapExactOutFromVaaNative");
return swapExactOutFromVaaNativeV3(contractWithSigner, signedVaa); return swapExactOutFromVaaNative(contractWithSigner, signedVaa);
} else { } else {
console.info("swapExactInFromV2"); console.info("swapExactOutFromVaaToken");
return swapExactOutFromVaaTokenV3(contractWithSigner, signedVaa); return swapExactOutFromVaaToken(contractWithSigner, signedVaa);
}
} else {
if (isNative) {
console.info("swapExactNativeInFromV3");
return swapExactOutFromVaaNativeV2(contractWithSigner, signedVaa);
} else {
console.info("swapExactInFromV3");
return swapExactOutFromVaaTokenV2(contractWithSigner, signedVaa);
}
} }
} }

View File

@ -1,13 +1,7 @@
import { ethers } from "ethers"; import { ethers } from "ethers";
import { TransactionReceipt } from "@ethersproject/abstract-provider"; import { TransactionReceipt } from "@ethersproject/abstract-provider";
export const CROSSCHAINSWAP_GAS_PARAMETERS_UNISWAP_V3 = { export const CROSSCHAINSWAP_GAS_PARAMETERS = {
gasLimit: "550000",
maxFeePerGas: "250000000000",
maxPriorityFeePerGas: "1690000000",
};
export const CROSSCHAINSWAP_GAS_PARAMETERS_UNISWAP_V2 = {
gasLimit: "550000", gasLimit: "550000",
maxFeePerGas: "250000000000", maxFeePerGas: "250000000000",
maxPriorityFeePerGas: "1690000000", maxPriorityFeePerGas: "1690000000",
@ -15,92 +9,48 @@ export const CROSSCHAINSWAP_GAS_PARAMETERS_UNISWAP_V2 = {
// exact in // exact in
// //
export async function swapExactInFromVaaNativeV3( export async function swapExactInFromVaaNative(
swapContractWithSigner: ethers.Contract, swapContractWithSigner: ethers.Contract,
signedVaa: Uint8Array signedVaa: Uint8Array
): Promise<TransactionReceipt> { ): Promise<TransactionReceipt> {
const tx = await swapContractWithSigner.recvAndSwapExactNativeIn( const tx = await swapContractWithSigner.recvAndSwapExactNativeIn(
signedVaa, signedVaa,
CROSSCHAINSWAP_GAS_PARAMETERS_UNISWAP_V3 CROSSCHAINSWAP_GAS_PARAMETERS
); );
return tx.wait(); return tx.wait();
} }
export async function swapExactInFromVaaNativeV2( export async function swapExactInFromVaaToken(
swapContractWithSigner: ethers.Contract,
signedVaa: Uint8Array
): Promise<TransactionReceipt> {
const tx = await swapContractWithSigner.recvAndSwapExactNativeIn(
signedVaa,
CROSSCHAINSWAP_GAS_PARAMETERS_UNISWAP_V2
);
return tx.wait();
}
export async function swapExactInFromVaaTokenV3(
swapContractWithSigner: ethers.Contract, swapContractWithSigner: ethers.Contract,
signedVaa: Uint8Array signedVaa: Uint8Array
): Promise<TransactionReceipt> { ): Promise<TransactionReceipt> {
const tx = await swapContractWithSigner.recvAndSwapExactIn( const tx = await swapContractWithSigner.recvAndSwapExactIn(
signedVaa, signedVaa,
CROSSCHAINSWAP_GAS_PARAMETERS_UNISWAP_V3 CROSSCHAINSWAP_GAS_PARAMETERS
);
return tx.wait();
}
export async function swapExactInFromVaaTokenV2(
swapContractWithSigner: ethers.Contract,
signedVaa: Uint8Array
): Promise<TransactionReceipt> {
const tx = await swapContractWithSigner.recvAndSwapExactIn(
signedVaa,
CROSSCHAINSWAP_GAS_PARAMETERS_UNISWAP_V2
); );
return tx.wait(); return tx.wait();
} }
// exact out (TODO: add to util) // exact out (TODO: add to util)
// //
export async function swapExactOutFromVaaNativeV3( export async function swapExactOutFromVaaNative(
swapContractWithSigner: ethers.Contract, swapContractWithSigner: ethers.Contract,
signedVaa: Uint8Array signedVaa: Uint8Array
): Promise<TransactionReceipt> { ): Promise<TransactionReceipt> {
const tx = await swapContractWithSigner.recvAndSwapExactNativeOut( const tx = await swapContractWithSigner.recvAndSwapExactNativeOut(
signedVaa, signedVaa,
CROSSCHAINSWAP_GAS_PARAMETERS_UNISWAP_V3 CROSSCHAINSWAP_GAS_PARAMETERS
); );
return tx.wait(); return tx.wait();
} }
export async function swapExactOutFromVaaNativeV2( export async function swapExactOutFromVaaToken(
swapContractWithSigner: ethers.Contract,
signedVaa: Uint8Array
): Promise<TransactionReceipt> {
const tx = await swapContractWithSigner.recvAndSwapExactNativeOut(
signedVaa,
CROSSCHAINSWAP_GAS_PARAMETERS_UNISWAP_V2
);
return tx.wait();
}
export async function swapExactOutFromVaaTokenV3(
swapContractWithSigner: ethers.Contract, swapContractWithSigner: ethers.Contract,
signedVaa: Uint8Array signedVaa: Uint8Array
): Promise<TransactionReceipt> { ): Promise<TransactionReceipt> {
const tx = await swapContractWithSigner.recvAndSwapExactOut( const tx = await swapContractWithSigner.recvAndSwapExactOut(
signedVaa, signedVaa,
CROSSCHAINSWAP_GAS_PARAMETERS_UNISWAP_V3 CROSSCHAINSWAP_GAS_PARAMETERS
);
return tx.wait();
}
export async function swapExactOutFromVaaTokenV2(
swapContractWithSigner: ethers.Contract,
signedVaa: Uint8Array
): Promise<TransactionReceipt> {
const tx = await swapContractWithSigner.recvAndSwapExactOut(
signedVaa,
CROSSCHAINSWAP_GAS_PARAMETERS_UNISWAP_V2
); );
return tx.wait(); return tx.wait();
} }