Enhance logging in the relayer
This commit is contained in:
parent
ea822b5fb2
commit
a295568e58
|
@ -300,17 +300,21 @@ async function relayVaaToEvmChain(
|
||||||
"]"
|
"]"
|
||||||
);
|
);
|
||||||
|
|
||||||
if (await isRedeemedOnEvm(t3Payload, tcd, signedVaaArray)) {
|
if (await isRedeemedOnEvm(tcd, signedVaaArray)) {
|
||||||
logger.info(
|
logger.info(
|
||||||
"relayVaaTo" +
|
"relayVaaTo" +
|
||||||
tcd.name +
|
tcd.name +
|
||||||
": contract: [" +
|
": srcChain: " +
|
||||||
|
t3Payload.sourceChainId +
|
||||||
|
", targetChain: " +
|
||||||
|
t3Payload.targetChainId +
|
||||||
|
", contract: [" +
|
||||||
t3Payload.contractAddress +
|
t3Payload.contractAddress +
|
||||||
"], exactIn: " +
|
"], exactIn: " +
|
||||||
exactIn +
|
exactIn +
|
||||||
", native: " +
|
", native: " +
|
||||||
native +
|
native +
|
||||||
": already transferred"
|
": completed: already transferred"
|
||||||
);
|
);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
@ -319,7 +323,11 @@ async function relayVaaToEvmChain(
|
||||||
logger.info(
|
logger.info(
|
||||||
"relayVaaTo" +
|
"relayVaaTo" +
|
||||||
tcd.name +
|
tcd.name +
|
||||||
": contract: [" +
|
": srcChain: " +
|
||||||
|
t3Payload.sourceChainId +
|
||||||
|
", targetChain: " +
|
||||||
|
t3Payload.targetChainId +
|
||||||
|
", contract: [" +
|
||||||
t3Payload.contractAddress +
|
t3Payload.contractAddress +
|
||||||
"], exactIn: " +
|
"], exactIn: " +
|
||||||
exactIn +
|
exactIn +
|
||||||
|
@ -363,27 +371,35 @@ async function relayVaaToEvmChain(
|
||||||
logger.info(
|
logger.info(
|
||||||
"relayVaaTo" +
|
"relayVaaTo" +
|
||||||
tcd.name +
|
tcd.name +
|
||||||
": contract: [" +
|
": srcChain: " +
|
||||||
|
t3Payload.sourceChainId +
|
||||||
|
", targetChain: " +
|
||||||
|
t3Payload.targetChainId +
|
||||||
|
", contract: [" +
|
||||||
t3Payload.contractAddress +
|
t3Payload.contractAddress +
|
||||||
"], exactIn: " +
|
"], exactIn: " +
|
||||||
exactIn +
|
exactIn +
|
||||||
", native: " +
|
", native: " +
|
||||||
native +
|
native +
|
||||||
": success, txHash: " +
|
": completed: success, txHash: " +
|
||||||
receipt.transactionHash
|
receipt.transactionHash
|
||||||
);
|
);
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
if (await isRedeemedOnEvm(t3Payload, tcd, signedVaaArray)) {
|
if (await isRedeemedOnEvm(tcd, signedVaaArray)) {
|
||||||
logger.info(
|
logger.info(
|
||||||
"relayVaaTo" +
|
"relayVaaTo" +
|
||||||
tcd.name +
|
tcd.name +
|
||||||
": contract: [" +
|
": srcChain: " +
|
||||||
|
t3Payload.sourceChainId +
|
||||||
|
", targetChain: " +
|
||||||
|
t3Payload.targetChainId +
|
||||||
|
", contract: [" +
|
||||||
t3Payload.contractAddress +
|
t3Payload.contractAddress +
|
||||||
"], exactIn: " +
|
"], exactIn: " +
|
||||||
exactIn +
|
exactIn +
|
||||||
", native: " +
|
", native: " +
|
||||||
native +
|
native +
|
||||||
": relay failed because the vaa has already been redeemed"
|
": completed: relay failed because the vaa has already been redeemed"
|
||||||
);
|
);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
@ -403,35 +419,42 @@ async function relayVaaToEvmChain(
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (await isRedeemedOnEvm(t3Payload, tcd, signedVaaArray)) {
|
if (await isRedeemedOnEvm(tcd, signedVaaArray)) {
|
||||||
logger.info(
|
logger.info(
|
||||||
"relayVaaTo" +
|
"relayVaaTo" +
|
||||||
tcd.name +
|
tcd.name +
|
||||||
": contract: [" +
|
": srcChain: " +
|
||||||
|
t3Payload.sourceChainId +
|
||||||
|
", targetChain: " +
|
||||||
|
t3Payload.targetChainId +
|
||||||
|
", contract: [" +
|
||||||
t3Payload.contractAddress +
|
t3Payload.contractAddress +
|
||||||
"], exactIn: " +
|
"], exactIn: " +
|
||||||
exactIn +
|
exactIn +
|
||||||
", native: " +
|
", native: " +
|
||||||
native +
|
native +
|
||||||
": redeem succeeded"
|
": redeem confirmed"
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
logger.error(
|
logger.error(
|
||||||
"relayVaaTo" +
|
"relayVaaTo" +
|
||||||
tcd.name +
|
tcd.name +
|
||||||
": contract: [" +
|
": srcChain: " +
|
||||||
|
t3Payload.sourceChainId +
|
||||||
|
", targetChain: " +
|
||||||
|
t3Payload.targetChainId +
|
||||||
|
", contract: [" +
|
||||||
t3Payload.contractAddress +
|
t3Payload.contractAddress +
|
||||||
"], exactIn: " +
|
"], exactIn: " +
|
||||||
exactIn +
|
exactIn +
|
||||||
", native: " +
|
", native: " +
|
||||||
native +
|
native +
|
||||||
": redeem failed!"
|
": completed: failed to confirm redeem!"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function isRedeemedOnEvm(
|
async function isRedeemedOnEvm(
|
||||||
t3Payload: Type3Payload,
|
|
||||||
tcd: EvmContractData,
|
tcd: EvmContractData,
|
||||||
signedVaaArray: Uint8Array
|
signedVaaArray: Uint8Array
|
||||||
): Promise<boolean> {
|
): Promise<boolean> {
|
||||||
|
|
|
@ -61,6 +61,7 @@ export type OurEnvironment = {
|
||||||
};
|
};
|
||||||
|
|
||||||
export type Type3Payload = {
|
export type Type3Payload = {
|
||||||
|
sourceChainId: number;
|
||||||
targetChainId: number;
|
targetChainId: number;
|
||||||
contractAddress: string;
|
contractAddress: string;
|
||||||
relayerFee: ethers.BigNumber;
|
relayerFee: ethers.BigNumber;
|
||||||
|
@ -224,7 +225,7 @@ async function processVaa(vaaBytes: string) {
|
||||||
|
|
||||||
let t3Payload: Type3Payload = null;
|
let t3Payload: Type3Payload = null;
|
||||||
try {
|
try {
|
||||||
t3Payload = decodeSignedVAAPayloadType3(parsedVAA);
|
t3Payload = decodeSignedVAAPayloadType3(parsedVAA, parsedVAA.emitter_chain);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logger.error("failed to parse type 3 vaa: %o", e);
|
logger.error("failed to parse type 3 vaa: %o", e);
|
||||||
return;
|
return;
|
||||||
|
@ -239,7 +240,9 @@ async function processVaa(vaaBytes: string) {
|
||||||
emitter_address +
|
emitter_address +
|
||||||
"], seqNum: " +
|
"], seqNum: " +
|
||||||
parsedVAA.sequence +
|
parsedVAA.sequence +
|
||||||
", contractAddress: [" +
|
", target: [" +
|
||||||
|
t3Payload.targetChainId +
|
||||||
|
":" +
|
||||||
t3Payload.contractAddress +
|
t3Payload.contractAddress +
|
||||||
"], relayerFee: [" +
|
"], relayerFee: [" +
|
||||||
t3Payload.relayerFee +
|
t3Payload.relayerFee +
|
||||||
|
@ -259,7 +262,9 @@ async function processVaa(vaaBytes: string) {
|
||||||
emitter_address +
|
emitter_address +
|
||||||
"], seqNum: " +
|
"], seqNum: " +
|
||||||
parsedVAA.sequence +
|
parsedVAA.sequence +
|
||||||
", contractAddress: [" +
|
", target: [" +
|
||||||
|
t3Payload.targetChainId +
|
||||||
|
":" +
|
||||||
t3Payload.contractAddress +
|
t3Payload.contractAddress +
|
||||||
"], relayerFee: [" +
|
"], relayerFee: [" +
|
||||||
t3Payload.relayerFee +
|
t3Payload.relayerFee +
|
||||||
|
@ -284,7 +289,10 @@ async function processVaa(vaaBytes: string) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function decodeSignedVAAPayloadType3(parsedVAA: any): Type3Payload {
|
function decodeSignedVAAPayloadType3(
|
||||||
|
parsedVAA: any,
|
||||||
|
sourceChainId: number
|
||||||
|
): Type3Payload {
|
||||||
const payload = Buffer.from(new Uint8Array(parsedVAA.payload));
|
const payload = Buffer.from(new Uint8Array(parsedVAA.payload));
|
||||||
if (payload[0] !== 3) return undefined;
|
if (payload[0] !== 3) return undefined;
|
||||||
|
|
||||||
|
@ -329,6 +337,7 @@ function decodeSignedVAAPayloadType3(parsedVAA: any): Type3Payload {
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
sourceChainId: sourceChainId,
|
||||||
targetChainId: targetChainId,
|
targetChainId: targetChainId,
|
||||||
contractAddress: contractAddress,
|
contractAddress: contractAddress,
|
||||||
relayerFee: ethers.BigNumber.from(payload.slice(101, 101 + 32)),
|
relayerFee: ethers.BigNumber.from(payload.slice(101, 101 + 32)),
|
||||||
|
|
|
@ -173,22 +173,20 @@ export async function relayVaaToTerra(
|
||||||
// "]"
|
// "]"
|
||||||
// );
|
// );
|
||||||
|
|
||||||
// if (await isRedeemedOnTerra(t3Payload, terraContractData, signedVaaArray)) {
|
// if (await isRedeemedOnTerra(terraContractData, vaaBytes)) {
|
||||||
// logger.info(
|
// logger.info(
|
||||||
// "relayVaaToTerra: contract: [" +
|
// "relayVaaToTerra: srcChain: " +
|
||||||
|
// t3Payload.sourceChainId +
|
||||||
|
// ", targetChain: " +
|
||||||
|
// t3Payload.targetChainId +
|
||||||
|
// ", contract: [" +
|
||||||
// t3Payload.contractAddress +
|
// t3Payload.contractAddress +
|
||||||
// "]: already transferred"
|
// "]: completed: already redeemed"
|
||||||
// );
|
// );
|
||||||
|
|
||||||
// return;
|
// return;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
logger.info(
|
|
||||||
"relayVaaToTerra: contract: [" +
|
|
||||||
t3Payload.contractAddress +
|
|
||||||
"]: submitting redeem request"
|
|
||||||
);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
logger.debug(
|
logger.debug(
|
||||||
"relayVaaToTerra: creating message using contract address [" +
|
"relayVaaToTerra: creating message using contract address [" +
|
||||||
|
@ -237,13 +235,22 @@ export async function relayVaaToTerra(
|
||||||
// fee: feeEstimate,
|
// fee: feeEstimate,
|
||||||
});
|
});
|
||||||
|
|
||||||
logger.debug("relayVaaToTerra: submitting transaction");
|
|
||||||
const receipt = await terraContractData.lcdClient.tx.broadcast(tx);
|
|
||||||
|
|
||||||
logger.info(
|
logger.info(
|
||||||
"relayVaaToTerra: contract: [" +
|
"relayVaaToTerra: contract: [" +
|
||||||
t3Payload.contractAddress +
|
t3Payload.contractAddress +
|
||||||
"]: success: %o",
|
"]: submitting redeem request"
|
||||||
|
);
|
||||||
|
|
||||||
|
const receipt = await terraContractData.lcdClient.tx.broadcast(tx);
|
||||||
|
|
||||||
|
logger.info(
|
||||||
|
"relayVaaToTerra: srcChain: " +
|
||||||
|
t3Payload.sourceChainId +
|
||||||
|
", targetChain: " +
|
||||||
|
t3Payload.targetChainId +
|
||||||
|
", contract: [" +
|
||||||
|
t3Payload.contractAddress +
|
||||||
|
"]: completed: success: %o",
|
||||||
receipt
|
receipt
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -254,43 +261,58 @@ export async function relayVaaToTerra(
|
||||||
// receipt.transactionHash
|
// receipt.transactionHash
|
||||||
// );
|
// );
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
// if (await isRedeemedOnTerra(t3Payload, terraContractData, signedVaaArray)) {
|
// if (await isRedeemedOnTerra(terraContractData, vaaBytes)) {
|
||||||
// logger.info(
|
// logger.info(
|
||||||
// "relayVaaToTerra: contract: [" +
|
// "relayVaaToTerra: srcChain: " +
|
||||||
|
// t3Payload.sourceChainId +
|
||||||
|
// ", targetChain: " +
|
||||||
|
// t3Payload.targetChainId +
|
||||||
|
// ", contract: [" +
|
||||||
// t3Payload.contractAddress +
|
// t3Payload.contractAddress +
|
||||||
// "]: relay failed because the vaa has already been redeemed"
|
// "]: completed: relay failed because the vaa has already been redeemed"
|
||||||
// );
|
// );
|
||||||
|
|
||||||
// return;
|
// return;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
logger.error(
|
logger.error(
|
||||||
"relayVaaToTerra: contract: [" +
|
"relayVaaToTerra: srcChain: " +
|
||||||
|
t3Payload.sourceChainId +
|
||||||
|
", targetChain: " +
|
||||||
|
t3Payload.targetChainId +
|
||||||
|
", contract: [" +
|
||||||
t3Payload.contractAddress +
|
t3Payload.contractAddress +
|
||||||
"]: transaction failed: %o",
|
"]: completed: transaction failed: %o",
|
||||||
e
|
e
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (await isRedeemedOnTerra(t3Payload, terraContractData, signedVaaArray)) {
|
// if (await isRedeemedOnTerra(terraContractData, vaaBytes)) {
|
||||||
// logger.info(
|
// logger.info(
|
||||||
// "relayVaaToTerra: contract: [" +
|
// "relayVaaToTerra: srcChain: " +
|
||||||
|
// t3Payload.sourceChainId +
|
||||||
|
// ", targetChain: " +
|
||||||
|
// t3Payload.targetChainId +
|
||||||
|
// ", contract: [" +
|
||||||
// t3Payload.contractAddress +
|
// t3Payload.contractAddress +
|
||||||
// "]: redeem succeeded"
|
// "]: redeem confirmed"
|
||||||
// );
|
// );
|
||||||
// } else {
|
// } else {
|
||||||
// logger.error(
|
// logger.error(
|
||||||
// "relayVaaToTerra: contract: [" +
|
// "relayVaaToTerra: srcChain: " +
|
||||||
|
// t3Payload.sourceChainId +
|
||||||
|
// ", targetChain: " +
|
||||||
|
// t3Payload.targetChainId +
|
||||||
|
// ", contract: [" +
|
||||||
// t3Payload.contractAddress +
|
// t3Payload.contractAddress +
|
||||||
// "]: redeem failed!"
|
// "]: completed: failed to confirm redeem!"
|
||||||
// );
|
// );
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
async function isRedeemedOnTerra(
|
async function isRedeemedOnTerra(
|
||||||
t3Payload: Type3Payload,
|
|
||||||
terraContractData: TerraContractData,
|
terraContractData: TerraContractData,
|
||||||
signedVaaArray: Uint8Array
|
vaaBytes: string
|
||||||
): Promise<boolean> {
|
): Promise<boolean> {
|
||||||
let msg: Terra.MsgExecuteContract = null;
|
let msg: Terra.MsgExecuteContract = null;
|
||||||
let sequenceNumber: number = 0;
|
let sequenceNumber: number = 0;
|
||||||
|
@ -300,7 +322,7 @@ async function isRedeemedOnTerra(
|
||||||
terraContractData.tokenBridgeAddress,
|
terraContractData.tokenBridgeAddress,
|
||||||
{
|
{
|
||||||
submit_vaa: {
|
submit_vaa: {
|
||||||
data: fromUint8Array(signedVaaArray),
|
data: Buffer.from(vaaBytes, "hex").toString("base64"),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in New Issue