Browse Source

solana: fix chain constants used in token/nft bridge

Previously, OUR_CHAIN_ID (1 in the case of solana),
CHAIN_ID_GOVERNANCE (1), and the constant '1' were used interchangeably.
We fix that now by using the appropriate constant everywhere
Csongor Kiss 1 month ago
parent
commit
63b904d7fe

+ 4 - 3
solana/modules/nft_bridge/program/src/api/governance.rs

@@ -20,7 +20,8 @@ use bridge::{
     },
     },
     DeserializePayload,
     DeserializePayload,
     PayloadMessage,
     PayloadMessage,
-    CHAIN_ID_SOLANA,
+    CHAIN_ID_GOVERNANCE,
+    OUR_CHAIN_ID,
 };
 };
 use solana_program::{
 use solana_program::{
     account_info::AccountInfo,
     account_info::AccountInfo,
@@ -44,8 +45,8 @@ where
 {
 {
     let expected_emitter = std::env!("EMITTER_ADDRESS");
     let expected_emitter = std::env!("EMITTER_ADDRESS");
     let current_emitter = format!("{}", Pubkey::new_from_array(vaa.meta().emitter_address));
     let current_emitter = format!("{}", Pubkey::new_from_array(vaa.meta().emitter_address));
-    // Fail if the emitter is not the known governance key, or the emitting chain is not Solana.
-    if expected_emitter != current_emitter || vaa.meta().emitter_chain != CHAIN_ID_SOLANA {
+    // Fail if the emitter is not the known governance key, or the emitting chain is not the governance chain.
+    if expected_emitter != current_emitter || vaa.meta().emitter_chain != CHAIN_ID_GOVERNANCE {
         Err(InvalidGovernanceKey.into())
         Err(InvalidGovernanceKey.into())
     } else {
     } else {
         Ok(())
         Ok(())

+ 2 - 1
solana/modules/nft_bridge/program/src/api/transfer.rs

@@ -24,6 +24,7 @@ use bridge::{
     api::PostMessageData,
     api::PostMessageData,
     types::ConsistencyLevel,
     types::ConsistencyLevel,
     vaa::SerializePayload,
     vaa::SerializePayload,
+    OUR_CHAIN_ID,
 };
 };
 use primitive_types::U256;
 use primitive_types::U256;
 use solana_program::{
 use solana_program::{
@@ -171,7 +172,7 @@ pub fn transfer_native(
     // and encode the mint in the token_id.
     // and encode the mint in the token_id.
     let payload = PayloadTransfer {
     let payload = PayloadTransfer {
         token_address: [1u8; 32],
         token_address: [1u8; 32],
-        token_chain: 1,
+        token_chain: OUR_CHAIN_ID,
         to: data.target_address,
         to: data.target_address,
         to_chain: data.target_chain,
         to_chain: data.target_chain,
         symbol: metadata.data.symbol,
         symbol: metadata.data.symbol,

+ 2 - 2
solana/modules/nft_bridge/program/src/instructions.rs

@@ -44,7 +44,7 @@ use bridge::{
     },
     },
     api::ForeignAddress,
     api::ForeignAddress,
     PostVAAData,
     PostVAAData,
-    CHAIN_ID_SOLANA,
+    CHAIN_ID_GOVERNANCE,
 };
 };
 use primitive_types::U256;
 use primitive_types::U256;
 use solana_program::{
 use solana_program::{
@@ -467,7 +467,7 @@ pub fn upgrade_contract(
     let claim = Claim::<'_>::key(
     let claim = Claim::<'_>::key(
         &ClaimDerivationData {
         &ClaimDerivationData {
             emitter_address: emitter.to_bytes(),
             emitter_address: emitter.to_bytes(),
-            emitter_chain: CHAIN_ID_SOLANA,
+            emitter_chain: CHAIN_ID_GOVERNANCE,
             sequence,
             sequence,
         },
         },
         &program_id,
         &program_id,

+ 1 - 1
solana/modules/token_bridge/program/src/api/complete_transfer.rs

@@ -104,7 +104,7 @@ pub fn complete_native(
     if accs.vaa.token_address != accs.mint.info().key.to_bytes() {
     if accs.vaa.token_address != accs.mint.info().key.to_bytes() {
         return Err(InvalidMint.into());
         return Err(InvalidMint.into());
     }
     }
-    if accs.vaa.token_chain != 1 {
+    if accs.vaa.token_chain != OUR_CHAIN_ID {
         return Err(InvalidChain.into());
         return Err(InvalidChain.into());
     }
     }
     if accs.vaa.to_chain != OUR_CHAIN_ID {
     if accs.vaa.to_chain != OUR_CHAIN_ID {

+ 1 - 1
solana/modules/token_bridge/program/src/api/complete_transfer_payload.rs

@@ -166,7 +166,7 @@ pub fn complete_native_with_payload(
     if accs.vaa.token_address != accs.mint.info().key.to_bytes() {
     if accs.vaa.token_address != accs.mint.info().key.to_bytes() {
         return Err(InvalidMint.into());
         return Err(InvalidMint.into());
     }
     }
-    if accs.vaa.token_chain != 1 {
+    if accs.vaa.token_chain != OUR_CHAIN_ID {
         return Err(InvalidChain.into());
         return Err(InvalidChain.into());
     }
     }
     if accs.vaa.to_chain != OUR_CHAIN_ID {
     if accs.vaa.to_chain != OUR_CHAIN_ID {

+ 3 - 3
solana/modules/token_bridge/program/src/api/governance.rs

@@ -21,7 +21,7 @@ use bridge::{
     },
     },
     DeserializePayload,
     DeserializePayload,
     PayloadMessage,
     PayloadMessage,
-    CHAIN_ID_SOLANA,
+    CHAIN_ID_GOVERNANCE,
 };
 };
 use solana_program::{
 use solana_program::{
     account_info::AccountInfo,
     account_info::AccountInfo,
@@ -45,8 +45,8 @@ where
 {
 {
     let expected_emitter = std::env!("EMITTER_ADDRESS");
     let expected_emitter = std::env!("EMITTER_ADDRESS");
     let current_emitter = format!("{}", Pubkey::new_from_array(vaa.meta().emitter_address));
     let current_emitter = format!("{}", Pubkey::new_from_array(vaa.meta().emitter_address));
-    // Fail if the emitter is not the known governance key, or the emitting chain is not Solana.
-    if expected_emitter != current_emitter || vaa.meta().emitter_chain != CHAIN_ID_SOLANA {
+    // Fail if the emitter is not the known governance key, or the emitting chain is not the governance chain.
+    if expected_emitter != current_emitter || vaa.meta().emitter_chain != CHAIN_ID_GOVERNANCE {
         Err(InvalidGovernanceKey.into())
         Err(InvalidGovernanceKey.into())
     } else {
     } else {
         Ok(())
         Ok(())

+ 1 - 1
solana/modules/token_bridge/program/src/api/transfer.rs

@@ -283,7 +283,7 @@ pub struct TransferWrapped<'b> {
 impl<'a> From<&TransferWrapped<'a>> for WrappedDerivationData {
 impl<'a> From<&TransferWrapped<'a>> for WrappedDerivationData {
     fn from(accs: &TransferWrapped<'a>) -> Self {
     fn from(accs: &TransferWrapped<'a>) -> Self {
         WrappedDerivationData {
         WrappedDerivationData {
-            token_chain: 1,
+            token_chain: OUR_CHAIN_ID,
             token_address: accs.mint.info().key.to_bytes(),
             token_address: accs.mint.info().key.to_bytes(),
         }
         }
     }
     }

+ 1 - 1
solana/modules/token_bridge/program/src/api/transfer_payload.rs

@@ -281,7 +281,7 @@ pub struct TransferWrappedWithPayload<'b> {
 impl<'a> From<&TransferWrappedWithPayload<'a>> for WrappedDerivationData {
 impl<'a> From<&TransferWrappedWithPayload<'a>> for WrappedDerivationData {
     fn from(accs: &TransferWrappedWithPayload<'a>) -> Self {
     fn from(accs: &TransferWrappedWithPayload<'a>) -> Self {
         WrappedDerivationData {
         WrappedDerivationData {
-            token_chain: 1,
+            token_chain: OUR_CHAIN_ID,
             token_address: accs.mint.info().key.to_bytes(),
             token_address: accs.mint.info().key.to_bytes(),
         }
         }
     }
     }

+ 2 - 2
solana/modules/token_bridge/program/src/instructions.rs

@@ -52,7 +52,7 @@ use bridge::{
     },
     },
     api::ForeignAddress,
     api::ForeignAddress,
     PostVAAData,
     PostVAAData,
-    CHAIN_ID_SOLANA,
+    CHAIN_ID_GOVERNANCE,
 };
 };
 use solana_program::{
 use solana_program::{
     instruction::{
     instruction::{
@@ -875,7 +875,7 @@ pub fn upgrade_contract(
     let claim = Claim::<'_>::key(
     let claim = Claim::<'_>::key(
         &ClaimDerivationData {
         &ClaimDerivationData {
             emitter_address: emitter.to_bytes(),
             emitter_address: emitter.to_bytes(),
-            emitter_chain: CHAIN_ID_SOLANA,
+            emitter_chain: CHAIN_ID_GOVERNANCE,
             sequence,
             sequence,
         },
         },
         &program_id,
         &program_id,