2021-12-08 06:22:10 -08:00
|
|
|
use cosmwasm_std::{
|
2022-09-30 00:28:48 -07:00
|
|
|
to_binary, Addr, Binary, CosmosMsg, DepsMut, Env, QueryRequest, StdResult, WasmMsg, WasmQuery,
|
2021-12-08 06:22:10 -08:00
|
|
|
};
|
|
|
|
use serde::Serialize;
|
|
|
|
|
2022-09-30 00:28:48 -07:00
|
|
|
use wormhole::msg::{ExecuteMsg, QueryMsg};
|
2022-01-14 10:00:48 -08:00
|
|
|
use wormhole::state::ParsedVAA;
|
2021-12-08 06:22:10 -08:00
|
|
|
|
|
|
|
/// Export Core Mainnet Contract Address
|
|
|
|
#[cfg(feature = "mainnet")]
|
|
|
|
pub fn id() -> Addr {
|
|
|
|
Addr::unchecked("terra1dq03ugtd40zu9hcgdzrsq6z2z4hwhc9tqk2uy5")
|
|
|
|
}
|
|
|
|
|
2022-01-06 07:08:09 -08:00
|
|
|
/// Export Core Devnet Contract Address
|
|
|
|
#[cfg(feature = "testnet")]
|
|
|
|
pub fn id() -> Addr {
|
|
|
|
Addr::unchecked("terra1pd65m0q9tl3v8znnz5f5ltsfegyzah7g42cx5v")
|
|
|
|
}
|
|
|
|
|
2021-12-08 06:22:10 -08:00
|
|
|
/// Export Core Devnet Contract Address
|
|
|
|
#[cfg(feature = "devnet")]
|
|
|
|
pub fn id() -> Addr {
|
2022-03-30 05:12:15 -07:00
|
|
|
Addr::unchecked("terra18vd8fpwxzck93qlwghaj6arh4p7c5n896xzem5")
|
2021-12-08 06:22:10 -08:00
|
|
|
}
|
|
|
|
|
2022-09-30 00:28:48 -07:00
|
|
|
pub fn post_message(nonce: u32, message: impl AsRef<[u8]>) -> StdResult<CosmosMsg> {
|
2021-12-08 06:22:10 -08:00
|
|
|
Ok(CosmosMsg::Wasm(WasmMsg::Execute {
|
2022-01-06 07:08:09 -08:00
|
|
|
contract_addr: id().to_string(),
|
2022-09-30 00:28:48 -07:00
|
|
|
funds: vec![],
|
|
|
|
msg: to_binary(&ExecuteMsg::PostMessage {
|
2022-03-30 05:12:15 -07:00
|
|
|
message: Binary::from(message.as_ref()),
|
2021-12-08 06:22:10 -08:00
|
|
|
nonce,
|
|
|
|
})?,
|
|
|
|
}))
|
|
|
|
}
|
|
|
|
|
|
|
|
/// Parse a VAA using the Wormhole contract Query interface.
|
2022-09-30 00:28:48 -07:00
|
|
|
pub fn parse_vaa(deps: DepsMut, env: Env, data: &Binary) -> StdResult<ParsedVAA> {
|
2021-12-08 06:22:10 -08:00
|
|
|
let vaa: ParsedVAA = deps.querier.query(&QueryRequest::Wasm(WasmQuery::Smart {
|
2022-01-06 07:08:09 -08:00
|
|
|
contract_addr: id().to_string(),
|
2022-09-30 00:28:48 -07:00
|
|
|
msg: to_binary(&QueryMsg::VerifyVAA {
|
2021-12-08 06:22:10 -08:00
|
|
|
vaa: data.clone(),
|
|
|
|
block_time: env.block.time.seconds(),
|
|
|
|
})?,
|
|
|
|
}))?;
|
|
|
|
Ok(vaa)
|
|
|
|
}
|