diff --git a/ucli/src/cli.rs b/ucli/src/cli.rs index af9fc8ce28..d06e29aa09 100644 --- a/ucli/src/cli.rs +++ b/ucli/src/cli.rs @@ -82,6 +82,10 @@ pub enum EvmQuery { denom: String, #[arg(long)] address: H160, + #[arg(long)] + channel_id: String, + #[arg(long)] + port_id: String, }, Erc20Balance { #[arg(long)] diff --git a/ucli/src/main.rs b/ucli/src/main.rs index 98174df1af..41a537e1d3 100644 --- a/ucli/src/main.rs +++ b/ucli/src/main.rs @@ -70,6 +70,8 @@ async fn main() { contract_address, denom, address, + channel_id, + port_id, } => match config.evm { cli::EvmChainConfig::Mainnet(config) => { handle_ucs_balance::( @@ -77,6 +79,8 @@ async fn main() { contract_address.into(), denom, address.into(), + channel_id, + port_id, ) .await } @@ -86,6 +90,8 @@ async fn main() { contract_address.into(), denom, address.into(), + channel_id, + port_id, ) .await } @@ -137,6 +143,8 @@ async fn handle_ucs_balance( contract_address: Address, denom: String, address: Address, + channel_id: String, + port_id: String, ) { let signer_middleware = Arc::new(SignerMiddleware::new( evm.provider.clone(), @@ -144,7 +152,10 @@ async fn handle_ucs_balance( )); let relay = UCS01Relay::new(contract_address, signer_middleware.clone()); - let denom = relay.get_denom_address(denom).await.unwrap(); + let denom = relay + .get_denom_address(port_id, channel_id, denom) + .await + .unwrap(); println!("Corresponding ERC20 address: {}", denom); let erc_contract = erc20::ERC20::new(denom, signer_middleware.clone()); @@ -183,7 +194,10 @@ async fn handle_transfer( )); let relay = UCS01Relay::new(relay_address, signer_middleware.clone()); - let denom = relay.get_denom_address(denom).await.unwrap(); + let denom = relay + .get_denom_address(port_id.clone(), channel_id.clone(), denom) + .await + .unwrap(); println!("Address is: {}", denom); let erc_contract = erc20::ERC20::new(denom, signer_middleware.clone()); diff --git a/zerg-config.json b/zerg-config.json index 7eaef04cf3..0d6ac6159d 100644 --- a/zerg-config.json +++ b/zerg-config.json @@ -48,5 +48,6 @@ "union_contract": "union14hj2tavq8fpesdwxxcu44rty3hh90vhujrvcmstl4zr3txmfvw9s3e9fe2", "evm_contract": "0xF8F7758FbcEfd546eAEff7dE24AFf666B6228e73", "channel": "channel-2", + "port": "0", "rush_blocks": 2 } diff --git a/zerg/src/config.rs b/zerg/src/config.rs index 3332427d60..edc55e7dee 100644 --- a/zerg/src/config.rs +++ b/zerg/src/config.rs @@ -10,5 +10,6 @@ pub struct Config { pub union_contract: String, pub evm_contract: H160, pub channel: String, + pub port: String, pub rush_blocks: u64, } diff --git a/zerg/src/context.rs b/zerg/src/context.rs index 747c45dc00..fbfe5e8093 100644 --- a/zerg/src/context.rs +++ b/zerg/src/context.rs @@ -83,7 +83,11 @@ impl Context { "wasm.{}/{}/{}", zerg_config.union_contract, zerg_config.channel, zerg_config.union.fee_denom ); - let denom_address = ucs01_relay.get_denom_address(denom).call().await.unwrap(); + let denom_address = ucs01_relay + .get_denom_address(zerg_config.port.clone(), zerg_config.channel.clone(), denom) + .call() + .await + .unwrap(); tracing::debug!("Fetched denom address."); for signer in zerg_config.clone().evm.signers.into_iter() {