diff --git a/rpc/src/v1/impls/chain.rs b/rpc/src/v1/impls/chain.rs index ac5948d330..fc0f6e1480 100644 --- a/rpc/src/v1/impls/chain.rs +++ b/rpc/src/v1/impls/chain.rs @@ -254,11 +254,13 @@ where Ok(self.client.block(&BlockId::Hash(block_hash)).map(|block| block.transactions_count())) } - fn get_min_transaction_fee(&self, action_type: String, block_number: u64) -> Result> { - if block_number == 0 { + fn get_min_transaction_fee(&self, action_type: String, block_number: Option) -> Result> { + if block_number == Some(0) { return Ok(None) } - if let Some(common_parameters) = self.client.common_params((block_number - 1).into()) { + // Unlike other RPCs, use the latest parameters if the block number is `null`. + let block_id = block_number.map(|n| (n - 1).into()).unwrap_or(BlockId::Latest); + if let Some(common_parameters) = self.client.common_params(block_id) { Ok(match action_type.as_str() { "mintAsset" => Some(common_parameters.min_asset_mint_cost()), "transferAsset" => Some(common_parameters.min_asset_transfer_cost()), diff --git a/rpc/src/v1/traits/chain.rs b/rpc/src/v1/traits/chain.rs index ac39a62c8a..626b721f27 100644 --- a/rpc/src/v1/traits/chain.rs +++ b/rpc/src/v1/traits/chain.rs @@ -126,7 +126,7 @@ build_rpc_trait! { ///Gets the minimum transaction fee of the given name. # [rpc(name = "chain_getMinTransactionFee")] - fn get_min_transaction_fee(&self, String, u64) -> Result>; + fn get_min_transaction_fee(&self, String, Option) -> Result>; /// Gets the mining given block number # [rpc(name = "chain_getMiningReward")]