Compare commits
4 Commits
1b22be73f1
...
8ce03171cc
Author | SHA1 | Date |
---|---|---|
Bruce Riley | 8ce03171cc | |
Karl Kempe | 3555c22f2b | |
Karl Kempe | 1977bbede0 | |
Kevin Peters | 344574ef99 |
|
@ -22,7 +22,7 @@ import { makeProvider } from "./src/provider";
|
||||||
require("dotenv").config({ path: ".env" });
|
require("dotenv").config({ path: ".env" });
|
||||||
|
|
||||||
// swap related parameters (configurable in UI)
|
// swap related parameters (configurable in UI)
|
||||||
const SWAP_AMOUNT_IN_MATIC = "0.0069";
|
const SWAP_AMOUNT_IN_MATIC = "0.069";
|
||||||
const SWAP_AMOUNT_IN_ETH = "0.000907";
|
const SWAP_AMOUNT_IN_ETH = "0.000907";
|
||||||
const SWAP_AMOUNT_IN_AVAX = "0.0075";
|
const SWAP_AMOUNT_IN_AVAX = "0.0075";
|
||||||
const SWAP_AMOUNT_IN_BNB = "0.0015";
|
const SWAP_AMOUNT_IN_BNB = "0.0015";
|
||||||
|
@ -243,12 +243,12 @@ async function swapEverythingExactIn(
|
||||||
|
|
||||||
// do the dst swap after fetching vaa
|
// do the dst swap after fetching vaa
|
||||||
// connect dst wallet
|
// connect dst wallet
|
||||||
const dstWallet = determineWalletFromToken(tokenOutAddress);
|
//const dstWallet = determineWalletFromToken(tokenOutAddress);
|
||||||
|
|
||||||
console.info("fetchVaaAndSwap");
|
//console.info("fetchVaaAndSwap");
|
||||||
//const dstSwapReceipt = await swapper.fetchVaaAndSwap(dstWallet);
|
//const dstSwapReceipt = await swapper.fetchVaaAndSwap(dstWallet);
|
||||||
//console.info(`dst transaction: ${dstSwapReceipt.transactionHash}`);
|
//console.info(`dst transaction: ${dstSwapReceipt.transactionHash}`);
|
||||||
console.warn("jk");
|
//console.warn("jk");
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -412,8 +412,8 @@ async function main() {
|
||||||
const tokenOut = getTokenInfo(args.out);
|
const tokenOut = getTokenInfo(args.out);
|
||||||
//const tokenOut = UST_TOKEN_INFO;
|
//const tokenOut = UST_TOKEN_INFO;
|
||||||
|
|
||||||
const recipientAddress = "0x4e2dfAD7D7d0076b5A0A41223E4Bee390C33251C";
|
//const recipientAddress = "0x4e2dfAD7D7d0076b5A0A41223E4Bee390C33251C";
|
||||||
//const recipientAddress = "terra1vewnsxcy5fqjslyyy409cw8js550esen38n8ey";
|
const recipientAddress = "terra1vewnsxcy5fqjslyyy409cw8js550esen38n8ey";
|
||||||
|
|
||||||
if (testExactIn) {
|
if (testExactIn) {
|
||||||
console.info(`testing exact in. native=${isNative}`);
|
console.info(`testing exact in. native=${isNative}`);
|
||||||
|
@ -427,7 +427,7 @@ async function main() {
|
||||||
determineAmountFromToken(tokenIn.address),
|
determineAmountFromToken(tokenIn.address),
|
||||||
recipientAddress
|
recipientAddress
|
||||||
);
|
);
|
||||||
|
/*
|
||||||
if (tokenOut.address === UST_TOKEN_INFO.address) {
|
if (tokenOut.address === UST_TOKEN_INFO.address) {
|
||||||
console.warn("not pinging back");
|
console.warn("not pinging back");
|
||||||
} else {
|
} else {
|
||||||
|
@ -441,6 +441,7 @@ async function main() {
|
||||||
recipientAddress
|
recipientAddress
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
} else {
|
} else {
|
||||||
console.info(`testing exact out. native=${isNative}`);
|
console.info(`testing exact out. native=${isNative}`);
|
||||||
|
|
||||||
|
|
|
@ -576,18 +576,24 @@ export default function Home() {
|
||||||
<Typography variant="subtitle1">{relayerTimeoutString}</Typography>
|
<Typography variant="subtitle1">{relayerTimeoutString}</Typography>
|
||||||
)}
|
)}
|
||||||
<Typography variant="subtitle2" color="error">
|
<Typography variant="subtitle2" color="error">
|
||||||
WARNING: this is a testnet release only
|
WARNING: this is a testnet release only, prices may not reflect
|
||||||
|
reality
|
||||||
</Typography>
|
</Typography>
|
||||||
</Paper>
|
</Paper>
|
||||||
<div className={classes.spacer} />
|
<div className={classes.spacer} />
|
||||||
<Footer />
|
<Footer />
|
||||||
<Link href="https://goerli-faucet.slock.it/"
|
<Link
|
||||||
target="_blank" style={{ margin: "5px" }}>
|
href="https://goerli-faucet.slock.it/"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
style={{ margin: "5px" }}
|
||||||
|
>
|
||||||
Goerli Faucet
|
Goerli Faucet
|
||||||
</Link>
|
</Link>
|
||||||
<Link
|
<Link
|
||||||
href="https://faucet.polygon.technology/"
|
href="https://faucet.polygon.technology/"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
style={{ margin: "5px" }}
|
style={{ margin: "5px" }}
|
||||||
>
|
>
|
||||||
Mumbai Faucet
|
Mumbai Faucet
|
||||||
|
@ -595,6 +601,7 @@ export default function Home() {
|
||||||
<Link
|
<Link
|
||||||
href="https://faucet.avax-test.network/"
|
href="https://faucet.avax-test.network/"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
style={{ margin: "5px" }}
|
style={{ margin: "5px" }}
|
||||||
>
|
>
|
||||||
Fuji Faucet
|
Fuji Faucet
|
||||||
|
@ -602,6 +609,7 @@ export default function Home() {
|
||||||
<Link
|
<Link
|
||||||
href="https://testnet.binance.org/faucet-smart/"
|
href="https://testnet.binance.org/faucet-smart/"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
style={{ margin: "5px" }}
|
style={{ margin: "5px" }}
|
||||||
>
|
>
|
||||||
BSC Faucet
|
BSC Faucet
|
||||||
|
@ -609,6 +617,7 @@ export default function Home() {
|
||||||
<Link
|
<Link
|
||||||
href="https://github.com/certusone/wormhole-nativeswap-example/"
|
href="https://github.com/certusone/wormhole-nativeswap-example/"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
style={{ margin: "5px" }}
|
style={{ margin: "5px" }}
|
||||||
>
|
>
|
||||||
NativeSwap GitHub
|
NativeSwap GitHub
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -167,26 +167,6 @@ export async function relayVaaToTerra(
|
||||||
) {
|
) {
|
||||||
if (!terraContractData) return;
|
if (!terraContractData) return;
|
||||||
|
|
||||||
// logger.debug(
|
|
||||||
// "relayVaaToTerra: checking if already redeemed using tokenBridgeAddress [" +
|
|
||||||
// terraContractData.tokenBridgeAddress +
|
|
||||||
// "]"
|
|
||||||
// );
|
|
||||||
|
|
||||||
// if (await isRedeemedOnTerra(terraContractData, vaaBytes)) {
|
|
||||||
// logger.info(
|
|
||||||
// "relayVaaToTerra: srcChain: " +
|
|
||||||
// t3Payload.sourceChainId +
|
|
||||||
// ", targetChain: " +
|
|
||||||
// t3Payload.targetChainId +
|
|
||||||
// ", contract: [" +
|
|
||||||
// t3Payload.contractAddress +
|
|
||||||
// "]: completed: already redeemed"
|
|
||||||
// );
|
|
||||||
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
logger.debug(
|
logger.debug(
|
||||||
"relayVaaToTerra: creating message using contract address [" +
|
"relayVaaToTerra: creating message using contract address [" +
|
||||||
|
@ -241,6 +221,34 @@ export async function relayVaaToTerra(
|
||||||
|
|
||||||
const receipt = await terraContractData.lcdClient.tx.broadcast(tx);
|
const receipt = await terraContractData.lcdClient.tx.broadcast(tx);
|
||||||
|
|
||||||
|
if (!receipt.txhash) {
|
||||||
|
logger.info(
|
||||||
|
"relayVaaToTerra: srcChain: " +
|
||||||
|
t3Payload.sourceChainId +
|
||||||
|
", targetChain: " +
|
||||||
|
t3Payload.targetChainId +
|
||||||
|
", contract: [" +
|
||||||
|
t3Payload.contractAddress +
|
||||||
|
"]: completed: failed, no txhash: %o",
|
||||||
|
receipt
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (receipt.raw_log && receipt.raw_log.search("VaaAlreadyExecuted") >= 0) {
|
||||||
|
logger.info(
|
||||||
|
"relayVaaToTerra: srcChain: " +
|
||||||
|
t3Payload.sourceChainId +
|
||||||
|
", targetChain: " +
|
||||||
|
t3Payload.targetChainId +
|
||||||
|
", contract: [" +
|
||||||
|
t3Payload.contractAddress +
|
||||||
|
"]: completed: success: already executed, txhash: " +
|
||||||
|
receipt.txhash
|
||||||
|
);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
logger.info(
|
logger.info(
|
||||||
"relayVaaToTerra: srcChain: " +
|
"relayVaaToTerra: srcChain: " +
|
||||||
t3Payload.sourceChainId +
|
t3Payload.sourceChainId +
|
||||||
|
@ -248,31 +256,10 @@ export async function relayVaaToTerra(
|
||||||
t3Payload.targetChainId +
|
t3Payload.targetChainId +
|
||||||
", contract: [" +
|
", contract: [" +
|
||||||
t3Payload.contractAddress +
|
t3Payload.contractAddress +
|
||||||
"]: completed: success: %o",
|
"]: completed: success: txhash: " +
|
||||||
receipt
|
receipt.txhash
|
||||||
);
|
);
|
||||||
|
|
||||||
// logger.info(
|
|
||||||
// "relayVaaToTerra: contract: [" +
|
|
||||||
// t3Payload.contractAddress +
|
|
||||||
// "]: success, txHash: " +
|
|
||||||
// receipt.transactionHash
|
|
||||||
// );
|
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
// if (await isRedeemedOnTerra(terraContractData, vaaBytes)) {
|
|
||||||
// logger.info(
|
|
||||||
// "relayVaaToTerra: srcChain: " +
|
|
||||||
// t3Payload.sourceChainId +
|
|
||||||
// ", targetChain: " +
|
|
||||||
// t3Payload.targetChainId +
|
|
||||||
// ", contract: [" +
|
|
||||||
// t3Payload.contractAddress +
|
|
||||||
// "]: completed: relay failed because the vaa has already been redeemed"
|
|
||||||
// );
|
|
||||||
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
|
|
||||||
logger.error(
|
logger.error(
|
||||||
"relayVaaToTerra: srcChain: " +
|
"relayVaaToTerra: srcChain: " +
|
||||||
t3Payload.sourceChainId +
|
t3Payload.sourceChainId +
|
||||||
|
@ -284,74 +271,4 @@ export async function relayVaaToTerra(
|
||||||
e
|
e
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (await isRedeemedOnTerra(terraContractData, vaaBytes)) {
|
|
||||||
// logger.info(
|
|
||||||
// "relayVaaToTerra: srcChain: " +
|
|
||||||
// t3Payload.sourceChainId +
|
|
||||||
// ", targetChain: " +
|
|
||||||
// t3Payload.targetChainId +
|
|
||||||
// ", contract: [" +
|
|
||||||
// t3Payload.contractAddress +
|
|
||||||
// "]: redeem confirmed"
|
|
||||||
// );
|
|
||||||
// } else {
|
|
||||||
// logger.error(
|
|
||||||
// "relayVaaToTerra: srcChain: " +
|
|
||||||
// t3Payload.sourceChainId +
|
|
||||||
// ", targetChain: " +
|
|
||||||
// t3Payload.targetChainId +
|
|
||||||
// ", contract: [" +
|
|
||||||
// t3Payload.contractAddress +
|
|
||||||
// "]: completed: failed to confirm redeem!"
|
|
||||||
// );
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
async function isRedeemedOnTerra(
|
|
||||||
terraContractData: TerraContractData,
|
|
||||||
vaaBytes: string
|
|
||||||
): Promise<boolean> {
|
|
||||||
let msg: Terra.MsgExecuteContract = null;
|
|
||||||
let sequenceNumber: number = 0;
|
|
||||||
try {
|
|
||||||
msg = new Terra.MsgExecuteContract(
|
|
||||||
terraContractData.wallet.key.accAddress,
|
|
||||||
terraContractData.tokenBridgeAddress,
|
|
||||||
{
|
|
||||||
submit_vaa: {
|
|
||||||
data: Buffer.from(vaaBytes, "hex").toString("base64"),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
sequenceNumber = await terraContractData.wallet.sequence();
|
|
||||||
} catch (e) {
|
|
||||||
logger.error(
|
|
||||||
"isRedeemedOnTerra: failed to create message or look up sequence number, e: %o",
|
|
||||||
e
|
|
||||||
);
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
await terraContractData.lcdClient.tx.estimateFee(
|
|
||||||
[{ sequenceNumber: sequenceNumber }],
|
|
||||||
{
|
|
||||||
msgs: [msg],
|
|
||||||
}
|
|
||||||
);
|
|
||||||
} catch (e) {
|
|
||||||
if (e.response.data.error.includes("VaaAlreadyExecuted")) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
logger.error(
|
|
||||||
"isRedeemedOnTerra: failed to check if transfer is already complete, e: %o",
|
|
||||||
e
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue