Skip to content

Commit 7711396

Browse files
committed
ts/scripts: mainnet info
1 parent d9b3a26 commit 7711396

File tree

1 file changed

+102
-0
lines changed

1 file changed

+102
-0
lines changed

solana/ts/scripts/getMainnetInfo.ts

+102
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
import { Connection, PublicKey } from "@solana/web3.js";
2+
import { Chain, toChainId } from "@wormhole-foundation/sdk-base";
3+
import { toUniversal } from "@wormhole-foundation/sdk-definitions";
4+
import * as matchingEngineSdk from "../src/matchingEngine";
5+
import * as tokenRouterSdk from "../src/tokenRouter";
6+
7+
const USDC_MINT = new PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
8+
9+
const CHAINS: Chain[] = ["Arbitrum", "Base"];
10+
11+
// Here we go.
12+
main();
13+
14+
// impl
15+
16+
async function main() {
17+
const connection = new Connection("https://api.mainnet-beta.solana.com", "confirmed");
18+
19+
console.log("Collecting Solana Matching Engine and Token Router Info...");
20+
console.log();
21+
{
22+
const matchingEngine = new matchingEngineSdk.MatchingEngineProgram(
23+
connection,
24+
matchingEngineSdk.mainnet(),
25+
USDC_MINT,
26+
);
27+
28+
const custodian = matchingEngine.custodianAddress();
29+
console.log("Matching Engine");
30+
console.log(" Custodian (NOTE: The Custodian's address is the program's emitter):");
31+
console.log(` Native: ${custodian.toString()}`);
32+
console.log(` Universal: ${custodian.toBuffer().toString("hex")}`);
33+
console.log();
34+
35+
const cctpMintRecipient = matchingEngine.cctpMintRecipientAddress();
36+
console.log(" Mint Recipient:");
37+
console.log(` Native: ${cctpMintRecipient.toString()}`);
38+
console.log(` Universal: ${cctpMintRecipient.toBuffer().toString("hex")}`);
39+
console.log();
40+
41+
const custodianData = await matchingEngine.fetchCustodian();
42+
console.log("Custodian Data");
43+
console.log(JSON.stringify(custodianData, null, 2));
44+
console.log();
45+
46+
const auctionConfig = await matchingEngine.fetchAuctionConfig(
47+
custodianData.auctionConfigId,
48+
);
49+
console.log("Auction Config Data");
50+
console.log(JSON.stringify(auctionConfig, null, 2));
51+
console.log();
52+
53+
for (const chainName of CHAINS) {
54+
await matchingEngine
55+
.fetchRouterEndpointInfo(toChainId(chainName))
56+
.then((endpointData) => {
57+
console.log(
58+
`Registered Endpoint (${chainName}): ${stringifyEndpoint(
59+
chainName,
60+
endpointData,
61+
)}`,
62+
);
63+
})
64+
.catch((err) => {
65+
console.log(`Not Registered: ${chainName}`);
66+
});
67+
console.log();
68+
}
69+
}
70+
71+
{
72+
const tokenRouter = new tokenRouterSdk.TokenRouterProgram(
73+
connection,
74+
tokenRouterSdk.mainnet(),
75+
USDC_MINT,
76+
);
77+
78+
const custodian = tokenRouter.custodianAddress();
79+
console.log(`Token Router`);
80+
console.log(" Custodian (NOTE: The Custodian's address is the program's emitter):");
81+
console.log(` Native: ${custodian.toString()}`);
82+
console.log(` Universal: ${custodian.toBuffer().toString("hex")}`);
83+
console.log();
84+
85+
const cctpMintRecipient = tokenRouter.cctpMintRecipientAddress();
86+
console.log(" Mint Recipient:");
87+
console.log(` Native: ${cctpMintRecipient.toString()}`);
88+
console.log(` Universal: ${cctpMintRecipient.toBuffer().toString("hex")}`);
89+
console.log();
90+
}
91+
}
92+
93+
function stringifyEndpoint(chain: Chain, endpoint: matchingEngineSdk.EndpointInfo) {
94+
const out = {
95+
address: toUniversal(chain, Uint8Array.from(endpoint.address)).toNative(chain).toString(),
96+
mintRecipient: toUniversal(chain, Uint8Array.from(endpoint.mintRecipient))
97+
.toNative(chain)
98+
.toString(),
99+
protocol: endpoint.protocol,
100+
};
101+
return JSON.stringify(out, null, 2);
102+
}

0 commit comments

Comments
 (0)