wormhole_solana_consts/
lib.rs1pub const SOLANA_CHAIN: u16 = 1;
4
5pub const WRAPPED_MINT_MAX_DECIMALS: u8 = 8;
6
7use solana_program::{pubkey, pubkey::Pubkey};
8
9cfg_if::cfg_if! {
10 if #[cfg(feature = "mainnet")] {
11 pub const CORE_BRIDGE_PROGRAM_ID: Pubkey = pubkey!("worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth");
13 pub const CORE_BRIDGE_FEE_COLLECTOR: Pubkey = pubkey!("9bFNrXNb2WTx8fMHXCheaZqkLZ3YCCaiqTftHxeintHy");
14 pub const CORE_BRIDGE_CONFIG: Pubkey = pubkey!("2yVjuQwpsvdsrywzsJJVs9Ueh4zayyo5DYJbBNc3DDpn");
15
16 pub const TOKEN_BRIDGE_PROGRAM_ID: Pubkey = pubkey!("wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb");
18 pub const TOKEN_BRIDGE_EMITTER_AUTHORITY: Pubkey = pubkey!("Gv1KWf8DT1jKv5pKBmGaTmVszqa56Xn8YGx2Pg7i7qAk");
19 pub const TOKEN_BRIDGE_CUSTODY_AUTHORITY: Pubkey = pubkey!("GugU1tP7doLeTw9hQP51xRJyS8Da1fWxuiy2rVrnMD2m");
20 pub const TOKEN_BRIDGE_MINT_AUTHORITY: Pubkey = pubkey!("BCD75RNBHrJJpW4dXVagL5mPjzRLnVZq4YirJdjEYMV7");
21 pub const TOKEN_BRIDGE_TRANSFER_AUTHORITY: Pubkey = pubkey!("7oPa2PHQdZmjSPqvpZN7MQxnC7Dcf3uL4oLqknGLk2S3");
22
23 pub const USDC_MINT: Pubkey = pubkey!("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
25 } else if #[cfg(feature = "testnet")] {
26 pub const CORE_BRIDGE_PROGRAM_ID: Pubkey = pubkey!("3u8hJUVTA4jH1wYAyUur7FFZVQ8H635K3tSHHF4ssjQ5");
28 pub const CORE_BRIDGE_FEE_COLLECTOR: Pubkey = pubkey!("7s3a1ycs16d6SNDumaRtjcoyMaTDZPavzgsmS3uUZYWX");
29 pub const CORE_BRIDGE_CONFIG: Pubkey = pubkey!("6bi4JGDoRwUs9TYBuvoA7dUVyikTJDrJsJU1ew6KVLiu");
30
31 pub const TOKEN_BRIDGE_PROGRAM_ID: Pubkey = pubkey!("DZnkkTmCiFWfYTfT41X3Rd1kDgozqzxWaHqsw6W4x2oe");
33 pub const TOKEN_BRIDGE_EMITTER_AUTHORITY: Pubkey = pubkey!("4yttKWzRoNYS2HekxDfcZYmfQqnVWpKiJ8eydYRuFRgs");
34 pub const TOKEN_BRIDGE_CUSTODY_AUTHORITY: Pubkey = pubkey!("H9pUTqZoRyFdaedRezhykA1aTMq7vbqRHYVhpHZK2QbC");
35 pub const TOKEN_BRIDGE_MINT_AUTHORITY: Pubkey = pubkey!("rRsXLHe7sBHdyKU3KY3wbcgWvoT1Ntqudf6e9PKusgb");
36 pub const TOKEN_BRIDGE_TRANSFER_AUTHORITY: Pubkey = pubkey!("3VFdJkFuzrcwCwdxhKRETGxrDtUVAipNmYcLvRBDcQeH");
37
38 pub const USDC_MINT: Pubkey = pubkey!("4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU");
40 } else if #[cfg(feature = "localnet")] {
41 pub const CORE_BRIDGE_PROGRAM_ID: Pubkey = pubkey!("Bridge1p5gheXUvJ6jGWGeCsgPKgnE3YgdGKRVCMY9o");
43 pub const CORE_BRIDGE_FEE_COLLECTOR: Pubkey = pubkey!("GXBsgBD3LDn3vkRZF6TfY5RqgajVZ4W5bMAdiAaaUARs");
44 pub const CORE_BRIDGE_CONFIG: Pubkey = pubkey!("FKoMTctsC7vJbEqyRiiPskPnuQx2tX1kurmvWByq5uZP");
45
46 pub const TOKEN_BRIDGE_PROGRAM_ID: Pubkey = pubkey!("B6RHG3mfcckmrYN1UhmJzyS1XX3fZKbkeUcpJe9Sy3FE");
48 pub const TOKEN_BRIDGE_EMITTER_AUTHORITY: Pubkey = pubkey!("ENG1wQ7CQKH8ibAJ1hSLmJgL9Ucg6DRDbj752ZAfidLA");
49 pub const TOKEN_BRIDGE_CUSTODY_AUTHORITY: Pubkey = pubkey!("JCQ1JdJ3vgnvurNAqMvpwaiSwJXaoMFJN53F6sRKejxQ");
50 pub const TOKEN_BRIDGE_MINT_AUTHORITY: Pubkey = pubkey!("8P2wAnHr2t4pAVEyJftzz7k6wuCE7aP1VugNwehzCJJY");
51 pub const TOKEN_BRIDGE_TRANSFER_AUTHORITY: Pubkey = pubkey!("C1AVBd8PpfHGe1zW42XXVbHsAQf6q5khiRKuGPLbwHkh");
52
53 pub const USDC_MINT: Pubkey = pubkey!("4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU");
57 }
58}
59
60#[cfg(test)]
61mod tests {
62 use std::str::FromStr;
63
64 use super::*;
65
66 #[test]
67 fn core_bridge_id() {
68 cfg_if::cfg_if! {
69 if #[cfg(feature = "mainnet")] {
70 let expected = "worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth";
71 } else if #[cfg(feature = "testnet")] {
72 let expected = "3u8hJUVTA4jH1wYAyUur7FFZVQ8H635K3tSHHF4ssjQ5";
73 } else if #[cfg(feature = "localnet")] {
74 let expected = "Bridge1p5gheXUvJ6jGWGeCsgPKgnE3YgdGKRVCMY9o";
75 }
76 }
77
78 assert_eq!(CORE_BRIDGE_PROGRAM_ID, Pubkey::from_str(expected).unwrap());
79 }
80
81 #[test]
82 fn token_bridge_id() {
83 cfg_if::cfg_if! {
84 if #[cfg(feature = "mainnet")] {
85 let expected = "wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb";
86 } else if #[cfg(feature = "testnet")] {
87 let expected = "DZnkkTmCiFWfYTfT41X3Rd1kDgozqzxWaHqsw6W4x2oe";
88 } else if #[cfg(feature = "localnet")] {
89 let expected = "B6RHG3mfcckmrYN1UhmJzyS1XX3fZKbkeUcpJe9Sy3FE";
90 }
91 }
92
93 assert_eq!(TOKEN_BRIDGE_PROGRAM_ID, Pubkey::from_str(expected).unwrap());
94 }
95
96 #[test]
97 fn core_bridge_fee_collector() {
98 let (expected, _) =
99 Pubkey::find_program_address(&[b"fee_collector"], &CORE_BRIDGE_PROGRAM_ID);
100 assert_eq!(CORE_BRIDGE_FEE_COLLECTOR, expected);
101 }
102
103 #[test]
104 fn core_bridge_config() {
105 let (expected, _) = Pubkey::find_program_address(&[b"Bridge"], &CORE_BRIDGE_PROGRAM_ID);
106 assert_eq!(CORE_BRIDGE_CONFIG, expected);
107 }
108
109 #[test]
110 fn token_bridge_emitter_authority() {
111 let (expected, _) = Pubkey::find_program_address(&[b"emitter"], &TOKEN_BRIDGE_PROGRAM_ID);
112 assert_eq!(TOKEN_BRIDGE_EMITTER_AUTHORITY, expected);
113 }
114
115 #[test]
116 fn token_bridge_custody_authority() {
117 let (expected, _) =
118 Pubkey::find_program_address(&[b"custody_signer"], &TOKEN_BRIDGE_PROGRAM_ID);
119 assert_eq!(TOKEN_BRIDGE_CUSTODY_AUTHORITY, expected);
120 }
121
122 #[test]
123 fn token_bridge_mint_authority() {
124 let (expected, _) =
125 Pubkey::find_program_address(&[b"mint_signer"], &TOKEN_BRIDGE_PROGRAM_ID);
126 assert_eq!(TOKEN_BRIDGE_MINT_AUTHORITY, expected);
127 }
128
129 #[test]
130 fn token_bridge_transfer_authority() {
131 let (expected, _) =
132 Pubkey::find_program_address(&[b"authority_signer"], &TOKEN_BRIDGE_PROGRAM_ID);
133 assert_eq!(TOKEN_BRIDGE_TRANSFER_AUTHORITY, expected);
134 }
135}