Skip to content

Commit 3923354

Browse files
authored
Merge pull request #175 from neutron-org/feat/disable-feerefunder-fee
feat: add ability to fetch fees when they're disabled #ntrn-503
2 parents 15cd979 + b9f5bb8 commit 3923354

File tree

3 files changed

+26
-18
lines changed

3 files changed

+26
-18
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ overflow-checks = true
1515

1616
[workspace.dependencies]
1717
cosmwasm-std = "2.1.0"
18-
neutron-std = { git = "https://github.com/neutron-org/neutron-std", branch = "main" }
18+
neutron-std = { git = "https://github.com/neutron-org/neutron-std", branch = "feat/disable-feerefunder-fee" }
1919
cosmwasm-schema = { version = "2.1.0", default-features = false }
2020
cw2 = "2.0.0"
2121
cw-storage-plus = "2.0.0"

contracts/ibc_transfer/src/contract.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ fn execute_send(
156156
}),
157157
timeout_timestamp: 0,
158158
memo: "".to_string(),
159-
fee: Some(fee.clone()),
159+
fee: fee.clone(),
160160
};
161161
let msg2 = MsgTransfer {
162162
source_port: "transfer".to_string(),
@@ -173,7 +173,7 @@ fn execute_send(
173173
}),
174174
timeout_timestamp: 0,
175175
memo: "".to_string(),
176-
fee: Some(fee.clone()),
176+
fee: fee.clone(),
177177
};
178178
// prepare first transfer message with payload of Type1
179179
let submsg1 = msg_with_sudo_callback(

packages/neutron-sdk/src/interchain_txs/helpers.rs

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,15 @@ pub fn register_interchain_account(
5858
/// * **msgs** is a list of protobuf encoded Cosmos-SDK messages you want to execute on remote chain;
5959
/// * **memo** is a memo you want to attach to your interchain transaction. It behaves like a memo in usual Cosmos transaction;
6060
/// * **timeout** is a timeout in seconds after which the packet times out.
61-
/// * **fee** is a fee that is used for different kinds of callbacks. Unused fee types will be returned to msg sender.
61+
/// * **fee** is a fee used for different kinds of callbacks. Unused fee types will be returned to msg sender.
6262
pub fn submit_tx(
6363
contract: Addr,
6464
connection_id: String,
6565
interchain_account_id: String,
6666
msgs: Vec<Any>,
6767
memo: String,
6868
timeout: u64,
69-
fee: Fee,
69+
fee: Option<Fee>,
7070
) -> CosmosMsg {
7171
MsgSubmitTx {
7272
from_address: contract.to_string(),
@@ -75,7 +75,7 @@ pub fn submit_tx(
7575
msgs,
7676
memo,
7777
timeout,
78-
fee: Some(fee),
78+
fee,
7979
}
8080
.into()
8181
}
@@ -84,29 +84,37 @@ pub fn submit_tx(
8484
///
8585
/// * **deps** is contract `Deps`
8686
/// * **denom** is a denom which can be used. Function will return Err if denom is not in a list of fee denoms.
87-
pub fn query_denom_min_ibc_fee(deps: Deps, denom: &str) -> StdResult<Fee> {
87+
pub fn query_denom_min_ibc_fee(deps: Deps, denom: &str) -> StdResult<Option<Fee>> {
8888
let fee = query_min_fee(deps)?;
89-
Ok(Fee {
90-
recv_fee: fee_with_denom(fee.recv_fee, denom)?,
91-
ack_fee: fee_with_denom(fee.ack_fee, denom)?,
92-
timeout_fee: fee_with_denom(fee.timeout_fee, denom)?,
93-
})
89+
if let Some(fee) = fee {
90+
Ok(Some(Fee {
91+
recv_fee: fee_with_denom(fee.recv_fee, denom)?,
92+
ack_fee: fee_with_denom(fee.ack_fee, denom)?,
93+
timeout_fee: fee_with_denom(fee.timeout_fee, denom)?,
94+
}))
95+
} else {
96+
Ok(None)
97+
}
9498
}
9599

96100
/// Queries chain for all possible minimal fee. Each fee in Vec is a different denom.
101+
/// If fees are disabled, returns None.
97102
///
98103
/// * **deps** is contract `Deps`
99-
pub fn query_min_fee(deps: Deps) -> StdResult<Fee> {
104+
pub fn query_min_fee(deps: Deps) -> StdResult<Option<Fee>> {
100105
let querier = FeerefunderQuerier::new(&deps.querier);
101106
let params = querier.params()?;
102107
let params_inner = params
103108
.params
104109
.ok_or_else(|| StdError::generic_err("no params found for feerefunder"))?;
105-
let min_fee = params_inner
106-
.min_fee
107-
.ok_or_else(|| StdError::generic_err("no minimum fee param for feerefunder"))?;
108-
109-
Ok(min_fee)
110+
if params_inner.fee_enabled {
111+
let min_fee = params_inner
112+
.min_fee
113+
.ok_or_else(|| StdError::generic_err("no minimum fee param for feerefunder"))?;
114+
Ok(Some(min_fee))
115+
} else {
116+
Ok(None)
117+
}
110118
}
111119

112120
fn fee_with_denom(fee: Vec<Coin>, denom: &str) -> StdResult<Vec<Coin>> {

0 commit comments

Comments
 (0)