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,
GovernancePayloadUpgrade,
},
Claim,
ClaimDerivationData,
PostVAAData,
VerifySignaturesData,
};
@ -343,6 +345,22 @@ pub fn fee_collector_address(bridge: String) -> Vec<u8> {
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]
pub fn parse_posted_message(data: Vec<u8>) -> JsValue {
JsValue::from_serde(&PostedVAAData::try_from_slice(data.as_slice()).unwrap().0).unwrap()

View File

@ -2,6 +2,8 @@ use crate::{
accounts::{
AuthoritySigner,
EmitterAccount,
SplTokenMeta,
SplTokenMetaDerivationData,
WrappedDerivationData,
WrappedMetaDerivationData,
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()
}
#[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]
pub fn parse_wrapped_meta(data: Vec<u8>) -> JsValue {
JsValue::from_serde(&WrappedMeta::try_from_slice(data.as_slice()).unwrap()).unwrap()