Skip to content

Commit badaf87

Browse files
authored
feat(minor-interchain-token-service)!: remove deploy token manager msg type (#680)
1 parent d1b9ec6 commit badaf87

13 files changed

+104
-486
lines changed

contracts/interchain-token-service/src/abi.rs

+8-129
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ sol! {
1616
enum MessageType {
1717
InterchainTransfer,
1818
DeployInterchainToken,
19-
DeployTokenManager,
2019
SendToHub,
2120
ReceiveFromHub,
2221
}
@@ -39,13 +38,6 @@ sol! {
3938
bytes minter;
4039
}
4140

42-
struct DeployTokenManager {
43-
uint256 messageType;
44-
bytes32 tokenId;
45-
uint256 tokenManagerType;
46-
bytes params;
47-
}
48-
4941
struct SendToHub {
5042
uint256 messageType;
5143
/// True destination chain name when sending a message from ITS edge source contract -> ITS Hub
@@ -110,17 +102,6 @@ impl Message {
110102
minter: into_vec(minter).into(),
111103
}
112104
.abi_encode_params(),
113-
Message::DeployTokenManager(primitives::DeployTokenManager {
114-
token_id,
115-
token_manager_type,
116-
params,
117-
}) => DeployTokenManager {
118-
messageType: MessageType::DeployTokenManager.into(),
119-
tokenId: FixedBytes::<32>::new(token_id.into()),
120-
tokenManagerType: token_manager_type.into(),
121-
params: Vec::<u8>::from(params).into(),
122-
}
123-
.abi_encode_params(),
124105
}
125106
.into()
126107
}
@@ -164,24 +145,6 @@ impl Message {
164145
}
165146
.into()
166147
}
167-
MessageType::DeployTokenManager => {
168-
let decoded = DeployTokenManager::abi_decode_params(payload, true)
169-
.map_err(Error::AbiDecodeFailed)?;
170-
171-
let token_manager_type = u8::try_from(decoded.tokenManagerType)
172-
.change_context(Error::InvalidTokenManagerType)?
173-
.then(TokenManagerType::from_repr)
174-
.ok_or_else(|| Error::InvalidTokenManagerType)?;
175-
176-
primitives::DeployTokenManager {
177-
token_id: TokenId::new(decoded.tokenId.into()),
178-
token_manager_type,
179-
params: Vec::<u8>::from(decoded.params)
180-
.try_into()
181-
.map_err(Error::NonEmpty)?,
182-
}
183-
.into()
184-
}
185148
_ => bail!(Error::InvalidMessageType),
186149
};
187150

@@ -286,8 +249,8 @@ mod tests {
286249
use router_api::ChainNameRaw;
287250

288251
use super::{DeployInterchainToken, InterchainTransfer};
289-
use crate::abi::{DeployTokenManager, Error, MessageType, SendToHub};
290-
use crate::{primitives, HubMessage, TokenManagerType};
252+
use crate::abi::{Error, MessageType, SendToHub};
253+
use crate::{primitives, HubMessage};
291254

292255
fn from_hex(hex: &str) -> nonempty::HexBinary {
293256
HexBinary::from_hex(hex).unwrap().try_into().unwrap()
@@ -406,13 +369,6 @@ mod tests {
406369
minter: vec![].into(),
407370
}
408371
.abi_encode_params(),
409-
DeployTokenManager {
410-
messageType: MessageType::DeployTokenManager.into(),
411-
tokenId: FixedBytes::<32>::new([1u8; 32]),
412-
tokenManagerType: TokenManagerType::NativeInterchainToken.into(),
413-
params: vec![].into(),
414-
}
415-
.abi_encode_params(),
416372
];
417373

418374
for message in test_cases {
@@ -515,70 +471,12 @@ mod tests {
515471
}
516472
}
517473

518-
#[test]
519-
fn deploy_token_manager_encode_decode() {
520-
let remote_chain = ChainNameRaw::from_str("chain").unwrap();
521-
522-
let cases = vec![
523-
HubMessage::SendToHub {
524-
destination_chain: remote_chain.clone(),
525-
message: primitives::DeployTokenManager {
526-
token_id: [0u8; 32].into(),
527-
token_manager_type: TokenManagerType::NativeInterchainToken,
528-
params: from_hex("00"),
529-
}
530-
.into(),
531-
},
532-
HubMessage::SendToHub {
533-
destination_chain: remote_chain.clone(),
534-
message: primitives::DeployTokenManager {
535-
token_id: [1u8; 32].into(),
536-
token_manager_type: TokenManagerType::Gateway,
537-
params: from_hex("1234"),
538-
}
539-
.into(),
540-
},
541-
HubMessage::ReceiveFromHub {
542-
source_chain: remote_chain.clone(),
543-
message: primitives::DeployTokenManager {
544-
token_id: [0u8; 32].into(),
545-
token_manager_type: TokenManagerType::NativeInterchainToken,
546-
params: from_hex("00"),
547-
}
548-
.into(),
549-
},
550-
HubMessage::ReceiveFromHub {
551-
source_chain: remote_chain.clone(),
552-
message: primitives::DeployTokenManager {
553-
token_id: [1u8; 32].into(),
554-
token_manager_type: TokenManagerType::Gateway,
555-
params: from_hex("1234"),
556-
}
557-
.into(),
558-
},
559-
];
560-
561-
let encoded: Vec<_> = cases
562-
.iter()
563-
.map(|original| original.clone().abi_encode().to_hex())
564-
.collect();
565-
566-
goldie::assert_json!(encoded);
567-
568-
for original in cases {
569-
let encoded = original.clone().abi_encode();
570-
let decoded = assert_ok!(HubMessage::abi_decode(&encoded));
571-
assert_eq!(original, decoded);
572-
}
573-
}
574-
575474
#[test]
576475
fn invalid_hub_message_type() {
577476
let invalid_message_types = vec![
578477
u8::MIN,
579478
MessageType::InterchainTransfer as u8,
580479
MessageType::DeployInterchainToken as u8,
581-
MessageType::DeployTokenManager as u8,
582480
MessageType::ReceiveFromHub as u8 + 1,
583481
u8::MAX,
584482
];
@@ -601,7 +499,6 @@ mod tests {
601499
let invalid_message_types = vec![
602500
MessageType::SendToHub as u8,
603501
MessageType::ReceiveFromHub as u8,
604-
MessageType::DeployTokenManager as u8 + 1,
605502
u8::MAX,
606503
];
607504

@@ -620,11 +517,13 @@ mod tests {
620517

621518
#[test]
622519
fn invalid_destination_chain() {
623-
let message = DeployTokenManager {
624-
messageType: MessageType::DeployTokenManager.into(),
520+
let message = DeployInterchainToken {
521+
messageType: MessageType::DeployInterchainToken.into(),
625522
tokenId: FixedBytes::<32>::new([0u8; 32]),
626-
tokenManagerType: TokenManagerType::NativeInterchainToken.into(),
627-
params: vec![].into(),
523+
name: "Test Token".into(),
524+
symbol: "TST".into(),
525+
decimals: 18,
526+
minter: vec![].into(),
628527
};
629528

630529
let payload = SendToHub {
@@ -638,26 +537,6 @@ mod tests {
638537
assert_err_contains!(result, Error, Error::InvalidChainName);
639538
}
640539

641-
#[test]
642-
fn invalid_token_manager_type() {
643-
let message = DeployTokenManager {
644-
messageType: MessageType::DeployTokenManager.into(),
645-
tokenId: FixedBytes::<32>::new([0u8; 32]),
646-
tokenManagerType: U256::from(TokenManagerType::Gateway as u8 + 1),
647-
params: vec![].into(),
648-
};
649-
650-
let payload = SendToHub {
651-
messageType: MessageType::SendToHub.into(),
652-
destination_chain: "chain".into(),
653-
message: message.abi_encode_params().into(),
654-
}
655-
.abi_encode_params();
656-
657-
let result = HubMessage::abi_decode(&payload);
658-
assert_err_contains!(result, Error, Error::InvalidTokenManagerType);
659-
}
660-
661540
#[test]
662541
fn encode_decode_large_data() {
663542
let large_data = vec![0u8; 1024 * 1024]; // 1MB of data

contracts/interchain-token-service/src/contract/execute.rs

+1-33
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ use crate::events::Event;
77
use crate::primitives::HubMessage;
88
use crate::state::{self, is_chain_frozen, load_config, load_its_contract, TokenDeploymentType};
99
use crate::{
10-
DeployInterchainToken, DeployTokenManager, InterchainTransfer, Message, TokenConfig, TokenId,
11-
TokenInstance,
10+
DeployInterchainToken, InterchainTransfer, Message, TokenConfig, TokenId, TokenInstance,
1211
};
1312

1413
#[derive(thiserror::Error, Debug, IntoContractError)]
@@ -158,13 +157,6 @@ fn apply_to_hub(
158157
apply_token_deployment(storage, &source_chain, &destination_chain, deploy_token)
159158
.map(Message::DeployInterchainToken)?
160159
}
161-
Message::DeployTokenManager(deploy_manager) => apply_token_manager_deployment(
162-
storage,
163-
&source_chain,
164-
&destination_chain,
165-
deploy_manager,
166-
)
167-
.map(Message::DeployTokenManager)?,
168160
}
169161
.then(Result::Ok)
170162
}
@@ -473,24 +465,6 @@ fn apply_token_deployment(
473465
})
474466
}
475467

476-
fn apply_token_manager_deployment(
477-
storage: &mut dyn Storage,
478-
source_chain: &ChainNameRaw,
479-
destination_chain: &ChainNameRaw,
480-
deploy_token_manager: DeployTokenManager,
481-
) -> Result<DeployTokenManager, Error> {
482-
save_token_instances(
483-
storage,
484-
source_chain,
485-
destination_chain,
486-
None,
487-
None,
488-
deploy_token_manager.token_id,
489-
&deploy_token_manager.deployment_type(),
490-
)
491-
.map(|_| deploy_token_manager)
492-
}
493-
494468
fn save_token_instances(
495469
storage: &mut dyn Storage,
496470
source_chain: &ChainNameRaw,
@@ -628,12 +602,6 @@ impl DeploymentType for DeployInterchainToken {
628602
}
629603
}
630604

631-
impl DeploymentType for DeployTokenManager {
632-
fn deployment_type(&self) -> TokenDeploymentType {
633-
TokenDeploymentType::CustomMinter
634-
}
635-
}
636-
637605
#[cfg(test)]
638606
mod tests {
639607
use assert_ok::assert_ok;

contracts/interchain-token-service/src/events.rs

+2-28
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use axelar_wasm_std::event::EventExt;
22
use router_api::{Address, ChainNameRaw, CrossChainId};
33

44
use crate::primitives::Message;
5-
use crate::{DeployInterchainToken, DeployTokenManager, InterchainTransfer};
5+
use crate::{DeployInterchainToken, InterchainTransfer};
66

77
pub enum Event {
88
MessageReceived {
@@ -80,17 +80,6 @@ fn make_message_event(
8080
.add_attribute("symbol", symbol)
8181
.add_attribute("decimals", decimals.to_string())
8282
.add_attribute_if_some("minter", minter.map(|minter| minter.to_string())),
83-
Message::DeployTokenManager(DeployTokenManager {
84-
token_id,
85-
token_manager_type,
86-
params,
87-
}) => event
88-
.add_attribute("token_id", token_id.to_string())
89-
.add_attribute(
90-
"token_manager_type",
91-
token_manager_type.as_ref().to_string(),
92-
)
93-
.add_attribute("params", params.to_string()),
9483
}
9584
}
9685

@@ -100,10 +89,7 @@ mod test {
10089
use router_api::CrossChainId;
10190

10291
use crate::events::Event;
103-
use crate::{
104-
DeployInterchainToken, DeployTokenManager, InterchainTransfer, Message, TokenId,
105-
TokenManagerType,
106-
};
92+
use crate::{DeployInterchainToken, InterchainTransfer, Message, TokenId};
10793

10894
#[test]
10995
fn message_received_with_all_attributes() {
@@ -124,12 +110,6 @@ mod test {
124110
minter: Some(HexBinary::from([1; 32]).try_into().unwrap()),
125111
}
126112
.into(),
127-
DeployTokenManager {
128-
token_id: TokenId::new([1; 32]),
129-
token_manager_type: TokenManagerType::MintBurn,
130-
params: HexBinary::from([1, 2, 3, 4]).try_into().unwrap(),
131-
}
132-
.into(),
133113
];
134114

135115
let events: Vec<_> = test_cases
@@ -183,12 +163,6 @@ mod test {
183163
minter: None,
184164
}
185165
.into(),
186-
DeployTokenManager {
187-
token_id: TokenId::new([1; 32]),
188-
token_manager_type: TokenManagerType::MintBurn,
189-
params: HexBinary::from([0u8]).try_into().unwrap(),
190-
}
191-
.into(),
192166
];
193167

194168
let events: Vec<_> = test_cases

contracts/interchain-token-service/src/primitives.rs

+1-21
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,6 @@ pub enum Message {
4343
InterchainTransfer(InterchainTransfer),
4444
/// Deploy a new interchain token on the destination chain
4545
DeployInterchainToken(DeployInterchainToken),
46-
/// Deploy a new token manager on the destination chain
47-
DeployTokenManager(DeployTokenManager),
4846
}
4947

5048
#[cw_serde]
@@ -90,23 +88,6 @@ impl From<DeployInterchainToken> for Message {
9088
}
9189
}
9290

93-
#[cw_serde]
94-
#[derive(Eq)]
95-
pub struct DeployTokenManager {
96-
/// The unique identifier of the token that the token manager will manage
97-
pub token_id: TokenId,
98-
/// The type of token manager to deploy
99-
pub token_manager_type: TokenManagerType,
100-
/// The parameters to be provided to the token manager contract
101-
pub params: nonempty::HexBinary,
102-
}
103-
104-
impl From<DeployTokenManager> for Message {
105-
fn from(value: DeployTokenManager) -> Self {
106-
Message::DeployTokenManager(value)
107-
}
108-
}
109-
11091
/// A message sent between ITS edge contracts and the ITS hub contract (defined in this crate).
11192
/// `HubMessage` is used to route an ITS [`Message`] between ITS edge contracts on different chains via the ITS Hub.
11293
#[cw_serde]
@@ -143,8 +124,7 @@ impl Message {
143124
pub fn token_id(&self) -> TokenId {
144125
match self {
145126
Message::InterchainTransfer(InterchainTransfer { token_id, .. })
146-
| Message::DeployInterchainToken(DeployInterchainToken { token_id, .. })
147-
| Message::DeployTokenManager(DeployTokenManager { token_id, .. }) => *token_id,
127+
| Message::DeployInterchainToken(DeployInterchainToken { token_id, .. }) => *token_id,
148128
}
149129
}
150130
}

0 commit comments

Comments
 (0)