polytone_evm/handshake/
note.rs1use cosmwasm_std::{
2 from_json, Binary, IbcChannelConnectMsg, IbcChannelOpenMsg, IbcChannelOpenResponse,
3};
4
5use super::{error::HandshakeError, note_version, voice_version};
6
7pub fn open(
15 msg: &IbcChannelOpenMsg,
16 extensions: &[&str],
17) -> Result<IbcChannelOpenResponse, HandshakeError> {
18 super::open(msg, extensions, note_version(), voice_version())
19}
20
21pub fn connect(msg: &IbcChannelConnectMsg, extensions: &[&str]) -> Result<(), HandshakeError> {
28 match msg {
29 IbcChannelConnectMsg::OpenAck {
30 channel: _,
31 counterparty_version,
32 } => {
33 let proposed_version: Vec<String> =
34 from_json(Binary::from_base64(counterparty_version).unwrap()).unwrap();
35 let subseteq_violation = extensions
36 .iter()
37 .find(|e| !proposed_version.contains(&e.to_string()));
38 match subseteq_violation {
39 None => Ok(()),
40 Some(first_voilation) => {
41 Err(HandshakeError::Unspeakable(first_voilation.to_string()))
42 }
43 }
44 }
45 IbcChannelConnectMsg::OpenConfirm { channel: _ } => Ok(()),
46 }
47}