Skip to content

Commit 4148bae

Browse files
authored
cli: set up special relaying EVM->Solana (#529)
1 parent 5d6ca4d commit 4148bae

File tree

2 files changed

+44
-14
lines changed

2 files changed

+44
-14
lines changed

cli/src/index.ts

+33-14
Original file line numberDiff line numberDiff line change
@@ -682,8 +682,12 @@ yargs(hideBin(process.argv))
682682
const tx = (await ntt.getTransceiver(0) as EvmNttWormholeTranceiver<Network, EvmChains>).setIsEvmChain(evmChain, true)
683683
await signSendWait(ctx, tx, signer.signer)
684684
}
685-
for (const relaying of missingConfig.standardRelaying) {
686-
const tx = (await ntt.getTransceiver(0) as EvmNttWormholeTranceiver<Network, EvmChains>).setIsWormholeRelayingEnabled(relaying, true)
685+
for (const relayingTarget of missingConfig.standardRelaying) {
686+
const tx = (await ntt.getTransceiver(0) as EvmNttWormholeTranceiver<Network, EvmChains>).setIsWormholeRelayingEnabled(relayingTarget, true)
687+
await signSendWait(ctx, tx, signer.signer)
688+
}
689+
for (const relayingTarget of missingConfig.specialRelaying) {
690+
const tx = (await ntt.getTransceiver(0) as EvmNttWormholeTranceiver<Network, EvmChains>).setIsSpecialRelayingEnabled(relayingTarget, true)
687691
await signSendWait(ctx, tx, signer.signer)
688692
}
689693
if (missingConfig.solanaWormholeTransceiver) {
@@ -800,8 +804,11 @@ yargs(hideBin(process.argv))
800804
for (const evmChain of missingConfig.evmChains) {
801805
console.error(` ${evmChain} needs to be configured as an EVM chain`);
802806
}
803-
for (const relaying of missingConfig.standardRelaying) {
804-
console.warn(` No standard relaying: ${relaying}`);
807+
for (const relayingTarget of missingConfig.standardRelaying) {
808+
console.warn(` No standard relaying to ${relayingTarget}`);
809+
}
810+
for (const relayingTarget of missingConfig.specialRelaying) {
811+
console.warn(` No special relaying to ${relayingTarget}`);
805812
}
806813
if (missingConfig.solanaWormholeTransceiver) {
807814
console.error(" Missing Solana wormhole transceiver");
@@ -896,6 +903,7 @@ type MissingImplicitConfig = {
896903
transceiverPeers: ChainAddress<Chain>[];
897904
evmChains: Chain[];
898905
standardRelaying: Chain[];
906+
specialRelaying: Chain[];
899907
solanaWormholeTransceiver: boolean;
900908
solanaUpdateLUT: boolean;
901909
}
@@ -1436,6 +1444,7 @@ async function missingConfigs(
14361444
transceiverPeers: [],
14371445
evmChains: [],
14381446
standardRelaying: [],
1447+
specialRelaying: [],
14391448
solanaWormholeTransceiver: false,
14401449
solanaUpdateLUT: false,
14411450
};
@@ -1490,17 +1499,27 @@ async function missingConfigs(
14901499

14911500
if (chainToPlatform(fromChain) === "Evm") {
14921501
const toIsEvm = chainToPlatform(toChain) === "Evm";
1502+
const toIsSolana = chainToPlatform(toChain) === "Solana";
1503+
const whTransceiver = await from.ntt.getTransceiver(0) as EvmNttWormholeTranceiver<Network, EvmChains>;
1504+
1505+
if (toIsEvm) {
1506+
const remoteToEvm = await whTransceiver.isEvmChain(toChain);
1507+
if (!remoteToEvm) {
1508+
count++;
1509+
missing.evmChains.push(toChain);
1510+
}
14931511

1494-
const remoteToEvm = await (await from.ntt.getTransceiver(0) as EvmNttWormholeTranceiver<Network, EvmChains>).isEvmChain(toChain);
1495-
if (toIsEvm && !remoteToEvm) {
1496-
count++;
1497-
missing.evmChains.push(toChain);
1498-
}
1499-
1500-
const standardRelaying = await (await from.ntt.getTransceiver(0) as EvmNttWormholeTranceiver<Network, EvmChains>).isWormholeRelayingEnabled(toChain);
1501-
if (toIsEvm && !standardRelaying) {
1502-
count++;
1503-
missing.standardRelaying.push(toChain);
1512+
const standardRelaying = await whTransceiver.isWormholeRelayingEnabled(toChain);
1513+
if (!standardRelaying) {
1514+
count++;
1515+
missing.standardRelaying.push(toChain);
1516+
}
1517+
} else if (toIsSolana) {
1518+
const specialRelaying = await whTransceiver.isSpecialRelayingEnabled(toChain);
1519+
if (!specialRelaying) {
1520+
count++;
1521+
missing.specialRelaying.push(toChain);
1522+
}
15041523
}
15051524
}
15061525

evm/ts/src/ntt.ts

+11
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,17 @@ export class EvmNttWormholeTranceiver<N extends Network, C extends EvmChains>
137137
toChainId(destChain)
138138
);
139139
}
140+
141+
async *setIsSpecialRelayingEnabled(destChain: Chain, enabled: boolean) {
142+
const tx = await this.transceiver.setIsSpecialRelayingEnabled.populateTransaction(
143+
toChainId(destChain),
144+
enabled
145+
);
146+
yield this.manager.createUnsignedTx(
147+
tx,
148+
"WormholeTransceiver.setSpecialRelayingEnabled"
149+
);
150+
}
140151
}
141152

142153
export class EvmNtt<N extends Network, C extends EvmChains>

0 commit comments

Comments
 (0)