Add derivation methods for claims and spl meta

Change-Id: I4e8056b37d441caf7bca94037585c37afe25cc24
This commit is contained in:
Hendrik Hofstadt 2021-09-21 16:29:42 +02:00
parent 4c9bf1162c
commit 1421e5d76f
2 changed files with 32 additions and 0 deletions

View File

@ -46,6 +46,8 @@ use crate::{
GovernancePayloadTransferFees, GovernancePayloadTransferFees,
GovernancePayloadUpgrade, GovernancePayloadUpgrade,
}, },
Claim,
ClaimDerivationData,
PostVAAData, PostVAAData,
VerifySignaturesData, VerifySignaturesData,
}; };
@ -343,6 +345,22 @@ pub fn fee_collector_address(bridge: String) -> Vec<u8> {
bridge_key.to_bytes().to_vec() bridge_key.to_bytes().to_vec()
} }
#[wasm_bindgen]
pub fn claim_address(program_id: String, vaa: Vec<u8>) -> Vec<u8> {
let program_id = Pubkey::from_str(program_id.as_str()).unwrap();
let vaa = VAA::deserialize(vaa.as_slice()).unwrap();
let claim_key = Claim::<'_, { AccountState::Initialized }>::key(
&ClaimDerivationData {
emitter_address: vaa.emitter_address,
emitter_chain: vaa.emitter_chain,
sequence: vaa.sequence,
},
&program_id,
);
claim_key.to_bytes().to_vec()
}
#[wasm_bindgen] #[wasm_bindgen]
pub fn parse_posted_message(data: Vec<u8>) -> JsValue { pub fn parse_posted_message(data: Vec<u8>) -> JsValue {
JsValue::from_serde(&PostedVAAData::try_from_slice(data.as_slice()).unwrap().0).unwrap() JsValue::from_serde(&PostedVAAData::try_from_slice(data.as_slice()).unwrap().0).unwrap()

View File

@ -2,6 +2,8 @@ use crate::{
accounts::{ accounts::{
AuthoritySigner, AuthoritySigner,
EmitterAccount, EmitterAccount,
SplTokenMeta,
SplTokenMetaDerivationData,
WrappedDerivationData, WrappedDerivationData,
WrappedMetaDerivationData, WrappedMetaDerivationData,
WrappedMint, WrappedMint,
@ -404,6 +406,18 @@ pub fn wrapped_meta_address(program_id: String, mint_address: Vec<u8>) -> Vec<u8
wrapped_meta_addr.to_bytes().to_vec() wrapped_meta_addr.to_bytes().to_vec()
} }
#[wasm_bindgen]
pub fn spl_meta_address(mint_address: Vec<u8>) -> Vec<u8> {
let mint_key = Pubkey::new(mint_address.as_slice());
let spl_metadata = SplTokenMeta::key(
&SplTokenMetaDerivationData { mint: mint_key },
&spl_token_metadata::id(),
);
spl_metadata.to_bytes().to_vec()
}
#[wasm_bindgen] #[wasm_bindgen]
pub fn parse_wrapped_meta(data: Vec<u8>) -> JsValue { pub fn parse_wrapped_meta(data: Vec<u8>) -> JsValue {
JsValue::from_serde(&WrappedMeta::try_from_slice(data.as_slice()).unwrap()).unwrap() JsValue::from_serde(&WrappedMeta::try_from_slice(data.as_slice()).unwrap()).unwrap()