wormhole/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelay...

83 lines
2.2 KiB
TypeScript

import {
init,
loadChains,
ChainInfo,
getWormholeRelayer,
getOperatingChains,
} from "../helpers/env";
import { wait } from "../helpers/utils";
import { createRegisterChainVAA } from "../helpers/vaa";
const processName = "registerChainsWormholeRelayerSelfSign";
init();
const operatingChains = getOperatingChains();
const chains = loadChains();
async function run() {
console.log("Start! " + processName);
for (const operatingChain of operatingChains) {
await registerChainsWormholeRelayer(operatingChain);
await registerOnExistingChainsWormholeRelayer(operatingChain);
}
}
async function registerChainsWormholeRelayer(chain: ChainInfo) {
console.log(
"Registering all the wormhole relayers onto Wormhole Relayer " +
chain.chainId
);
const coreRelayer = await getWormholeRelayer(chain);
for (const targetChain of chains) {
try {
await coreRelayer
.registerWormholeRelayerContract(createRegisterChainVAA(targetChain))
.then(wait);
} catch (e) {
console.log(
`Error in registering chain ${targetChain.chainId} onto ${chain.chainId}`
);
}
}
console.log(
"Did all contract registrations for the core relayer on " + chain.chainId
);
}
async function registerOnExistingChainsWormholeRelayer(chain: ChainInfo) {
console.log(
"Registering Wormhole Relayer " +
chain.chainId +
" onto all the wormhole relayers"
);
const operatingChainIds = operatingChains.map((c) => c.chainId);
for (const targetChain of chains) {
if (operatingChainIds.find((x) => x === targetChain.chainId)) {
continue;
}
const coreRelayer = await getWormholeRelayer(targetChain);
try {
await coreRelayer
.registerWormholeRelayerContract(createRegisterChainVAA(chain))
.then(wait);
} catch (e) {
console.log(
`Error in registering chain ${chain.chainId} onto ${targetChain.chainId}`
);
if (targetChain.chainId === 5) {
console.log(e);
}
}
}
console.log(
"Did all contract registrations of the core relayer on " +
chain.chainId +
" onto the existing (non operating) chains"
);
}
run().then(() => console.log("Done! " + processName));