Skip to content

Commit 2c7680f

Browse files
committed
cli: deployment works
1 parent 873f053 commit 2c7680f

14 files changed

Lines changed: 1176 additions & 370 deletions

File tree

bun.lock

Lines changed: 56 additions & 129 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cli/src/index.ts

Lines changed: 22 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -99,20 +99,6 @@ export type ChainConfig = {
9999
outbound: string,
100100
inbound: Partial<{ [C in Chain]: string }>,
101101
},
102-
// AdminCap tracking for Sui deployments (only wormhole transceiver, NTT reads from state)
103-
adminCaps?: {
104-
wormholeTransceiver?: string
105-
},
106-
// Transceiver state IDs for Sui deployments
107-
transceiverStateIds?: {
108-
wormhole?: string
109-
},
110-
// Package IDs for Sui deployments
111-
packageIds?: {
112-
ntt?: string,
113-
nttCommon?: string,
114-
wormholeTransceiver?: string
115-
},
116102
}
117103

118104
export type Config = {
@@ -439,24 +425,10 @@ yargs(hideBin(process.argv))
439425
const deployedManager = await deploy(version, mode, ch, token, signerType, !argv["skip-verify"], argv["yes"], argv["payer"], argv["program-key"], argv["binary"], argv["solana-priority-fee"], argv["sui-gas-budget"], argv["sui-package-path"], argv["sui-wormhole-state"]);
440426

441427
const [config, _ctx, _ntt, decimals] =
442-
await pullChainConfig(network, deployedManager, overrides, (deployedManager as any).adminCaps, (deployedManager as any).packageIds, (deployedManager as any).transceiverStateIds);
428+
await pullChainConfig(network, deployedManager, overrides);
443429

444430
console.log("token decimals:", chalk.yellow(decimals));
445431

446-
// Add AdminCap and package ID information to config if available (for Sui)
447-
if ((deployedManager as any).adminCaps) {
448-
config.adminCaps = (deployedManager as any).adminCaps;
449-
console.log("AdminCaps stored:", chalk.yellow(JSON.stringify((deployedManager as any).adminCaps, null, 2)));
450-
}
451-
if ((deployedManager as any).transceiverStateIds) {
452-
config.transceiverStateIds = (deployedManager as any).transceiverStateIds;
453-
console.log("Transceiver State IDs stored:", chalk.yellow(JSON.stringify((deployedManager as any).transceiverStateIds, null, 2)));
454-
}
455-
if ((deployedManager as any).packageIds) {
456-
config.packageIds = (deployedManager as any).packageIds;
457-
console.log("Package IDs stored:", chalk.yellow(JSON.stringify((deployedManager as any).packageIds, null, 2)));
458-
}
459-
460432
deployments.chains[chain] = config;
461433
fs.writeFileSync(path, JSON.stringify(deployments, null, 2));
462434
console.log(`Added ${chain} to ${path}`);
@@ -531,9 +503,6 @@ yargs(hideBin(process.argv))
531503
network,
532504
{ chain, address: toUniversal(chain, chainConfig.manager) },
533505
overrides,
534-
chainConfig.adminCaps,
535-
chainConfig.packageIds,
536-
chainConfig.transceiverStateIds
537506
);
538507

539508
await upgrade(
@@ -608,7 +577,7 @@ yargs(hideBin(process.argv))
608577
const ntts: Partial<{ [C in Chain]: Ntt<Network, C> }> = {};
609578

610579
const [config, _ctx, ntt, _decimals] =
611-
await pullChainConfig(network, { chain, address: universalManager }, overrides, undefined, undefined, undefined);
580+
await pullChainConfig(network, { chain, address: universalManager }, overrides);
612581

613582
ntts[chain] = ntt as any;
614583

@@ -630,7 +599,7 @@ yargs(hideBin(process.argv))
630599
continue;
631600
}
632601
const address: UniversalAddress = peer.address.address.toUniversalAddress()
633-
const [peerConfig, _ctx, peerNtt] = await pullChainConfig(network, { chain: c, address }, overrides, undefined, undefined, undefined);
602+
const [peerConfig, _ctx, peerNtt] = await pullChainConfig(network, { chain: c, address }, overrides);
634603
ntts[c] = peerNtt as any;
635604
configs[c] = peerConfig;
636605
}
@@ -1075,10 +1044,7 @@ yargs(hideBin(process.argv))
10751044
const [, , ntt] = await pullChainConfig(
10761045
network,
10771046
{ chain, address: toUniversal(chain, chainConfig.manager) },
1078-
overrides,
1079-
chainConfig.adminCaps,
1080-
chainConfig.packageIds,
1081-
chainConfig.transceiverStateIds
1047+
overrides
10821048
);
10831049
const solanaNtt = ntt as SolanaNtt<typeof network, SolanaChains>;
10841050
const tokenAuthority = NTT.pdas(chainConfig.manager).tokenAuthority();
@@ -1172,10 +1138,7 @@ yargs(hideBin(process.argv))
11721138
const [, , ntt] = await pullChainConfig(
11731139
network,
11741140
{ chain, address: toUniversal(chain, chainConfig.manager) },
1175-
overrides,
1176-
chainConfig.adminCaps,
1177-
chainConfig.packageIds,
1178-
chainConfig.transceiverStateIds
1141+
overrides
11791142
);
11801143
const solanaNtt = ntt as SolanaNtt<typeof network, SolanaChains>;
11811144
const major = Number(solanaNtt.version.split(".")[0]);
@@ -1423,10 +1386,7 @@ yargs(hideBin(process.argv))
14231386
const [config, ctx, ntt] = await pullChainConfig(
14241387
network,
14251388
sourceManager,
1426-
overrides,
1427-
sourceConfig.adminCaps,
1428-
sourceConfig.packageIds,
1429-
sourceConfig.transceiverStateIds
1389+
overrides
14301390
);
14311391

14321392
console.log(`\nSource NTT Manager: ${chalk.yellow(sourceConfig.manager)}`);
@@ -1587,10 +1547,7 @@ yargs(hideBin(process.argv))
15871547
const [config, ctx, ntt] = await pullChainConfig(
15881548
network,
15891549
sourceManager,
1590-
overrides,
1591-
sourceConfig.adminCaps,
1592-
sourceConfig.packageIds,
1593-
sourceConfig.transceiverStateIds
1550+
overrides
15941551
);
15951552

15961553
console.log(`\nSource NTT Manager: ${chalk.yellow(sourceConfig.manager)}`);
@@ -2238,7 +2195,10 @@ async function deploySui<N extends Network, C extends Chain>(
22382195

22392196
// Set SUI_CONFIG_DIR environment variable to use project's .sui directory
22402197
const suiConfigDir = `${pwd}/.sui`;
2241-
process.env.SUI_CONFIG_DIR = suiConfigDir;
2198+
// TODO: set up keytool stuff programmatically (keytool import then switch to sui directory etc)
2199+
// TODO: handle dependency management
2200+
// TODO: get wormhole state from sdk
2201+
// process.env.SUI_CONFIG_DIR = suiConfigDir;
22422202
console.log(`Using SUI_CONFIG_DIR: ${suiConfigDir}`);
22432203

22442204
const signer = await getSigner(ch, signerType);
@@ -2540,15 +2500,15 @@ async function deploySui<N extends Network, C extends Chain>(
25402500

25412501
console.log(`Wormhole Transceiver State created at: ${transceiverStateId}`);
25422502

2543-
// Find the AdminCap object ID for future reference
2544-
whTransceiverAdminCapId = transceiverSetupDeploy.objectChanges.find(
2545-
(change: any) => change.type === "created" &&
2546-
change.objectType?.includes("::wormhole_transceiver::AdminCap")
2547-
)?.objectId;
2503+
// Find the AdminCap object ID for future reference
2504+
whTransceiverAdminCapId = transceiverSetupDeploy.objectChanges.find(
2505+
(change: any) => change.type === "created" &&
2506+
change.objectType?.includes("::wormhole_transceiver::AdminCap")
2507+
)?.objectId;
25482508

2549-
if (whTransceiverAdminCapId) {
2550-
console.log(`Wormhole Transceiver AdminCap created at: ${whTransceiverAdminCapId}`);
2551-
}
2509+
if (whTransceiverAdminCapId) {
2510+
console.log(`Wormhole Transceiver AdminCap created at: ${whTransceiverAdminCapId}`);
2511+
}
25522512

25532513
// 6. Register the wormhole transceiver with the NTT manager
25542514
if (nttAdminCapId && transceiverStateId) {
@@ -2870,10 +2830,7 @@ async function pullDeployments(deployments: Config, network: Network, verbose: b
28702830
const [remote, ctx, ntt, decimals] = await pullChainConfig(
28712831
network,
28722832
{ chain, address: toUniversal(chain, managerAddress) },
2873-
overrides,
2874-
deployment.adminCaps,
2875-
deployment.packageIds,
2876-
deployment.transceiverStateIds
2833+
overrides
28772834
);
28782835
const local = deployments.chains[chain];
28792836

@@ -2909,17 +2866,14 @@ async function pullChainConfig<N extends Network, C extends Chain>(
29092866
network: N,
29102867
manager: ChainAddress<C>,
29112868
overrides?: WormholeConfigOverrides<N>,
2912-
adminCaps?: { wormholeTransceiver?: string },
2913-
packageIds?: { ntt?: string; nttCommon?: string; wormholeTransceiver?: string },
2914-
transceiverStateIds?: { wormhole?: string }
29152869
): Promise<[ChainConfig, ChainContext<typeof network, C>, Ntt<typeof network, C>, number]> {
29162870
const wh = new Wormhole(network, [solana.Platform, evm.Platform, sui.Platform], overrides);
29172871
const ch = wh.getChain(manager.chain);
29182872

29192873
const nativeManagerAddress = canonicalAddress(manager);
29202874

29212875
const { ntt, addresses }: { ntt: Ntt<N, C>; addresses: Partial<Ntt.Contracts>; } =
2922-
await nttFromManager<N, C>(ch, nativeManagerAddress, adminCaps, packageIds, transceiverStateIds);
2876+
await nttFromManager<N, C>(ch, nativeManagerAddress);
29232877

29242878
const mode = await ntt.getMode();
29252879
const outboundLimit = await ntt.getOutboundLimit();
@@ -3036,11 +2990,9 @@ function getVersion<N extends Network, C extends Chain>(chain: C, ntt: Ntt<N, C>
30362990
async function nttFromManager<N extends Network, C extends Chain>(
30372991
ch: ChainContext<N, C>,
30382992
nativeManagerAddress: string,
3039-
adminCaps?: { wormholeTransceiver?: string },
3040-
packageIds?: { ntt?: string; nttCommon?: string; wormholeTransceiver?: string },
3041-
transceiverStateIds?: { wormhole?: string }
30422993
): Promise<{ ntt: Ntt<N, C>; addresses: Partial<Ntt.Contracts> }> {
30432994
// For Sui, we need to set the token type to enable proper functionality
2995+
// TODO: rip out this shit
30442996
let token: string | null = null;
30452997
if (ch.chain === "Sui") {
30462998
// For this implementation, we're using SUI token
@@ -3063,24 +3015,6 @@ async function nttFromManager<N extends Network, C extends Chain>(
30633015
...diff
30643016
};
30653017

3066-
// For Sui, create SuiNtt directly (AdminCap ID read from state object)
3067-
if (ch.chain === "Sui") {
3068-
const sui = await import("@wormhole-foundation/sdk-sui-ntt");
3069-
const { SuiClient } = await import("@mysten/sui/client");
3070-
const provider = new SuiClient({ url: ch.config.rpc });
3071-
3072-
const suiNtt = new sui.SuiNtt(
3073-
ch.network,
3074-
ch.chain,
3075-
provider,
3076-
{ ntt: addresses },
3077-
undefined, // AdminCap ID will be read from state object
3078-
packageIds?.ntt,
3079-
transceiverStateIds
3080-
);
3081-
return { ntt: suiNtt as unknown as Ntt<N, C>, addresses };
3082-
}
3083-
30843018
// For other chains, use the standard protocol creation
30853019
const ntt = await ch.getProtocol("Ntt", {
30863020
ntt: addresses

0 commit comments

Comments
 (0)