[Proposal Draft] Issue regarding validator minimum-gas-prices

This proposal draft addresses potential concerns regarding minimum-gas-prices. Any feedbacks/suggestions/discussions are welcomed.

Premise

  • Validator nodes can set their own minimum-gas-prices.
  • Minimum-gas-prices allows independent nodes to define the minimum Tx fee they will broadcast/process.
  • Defining minimum-gas-prices also allows validator nodes to maintain node stability and prevent Tx spam.

Problem

  • minimum-gas-prices of independent nodes aren’t publicly known.
  • min_fee_rate of most validators that frequently propose blocks are unknown, inducing difficulties on end-user experience when calculating Tx fee. (There is the possibility of a Tx not being included in the next block even when the user pays enough Tx fee and the chain isn’t busy)
  • Most validators are using a rate of 0.025, which is the rate suggested by the Interchain Foundation.
  • However, few of the top validators with significant voting power are using a substantially higher fee_rate.
  • This allows for few of the top validators to continue frequently proposing blocks while not processing a single transaction.
  • At the current early state of the network where there aren’t that many transactions, validators that frequently propose blocks not processing any transactions may not be a problem. However, this may pose problems when the network becomes busy.
  • Also from the standpoint of validators being not only a vital part of the security of the network but also the operator/processors, abstaining on what could be considered one of the most important duties of a validator—processing transactions—could be considered a problem.

Potential Suggestions

  1. There needs to be a query that checks minimum-gas-prices of each validator.
  2. Set minimum and maximum rates for minimum-gas-prices.
  3. Use a global fee across the network.
  4. Allow for validators to enter their minimum-gas-prices along with basic node information (commission, max commission change rate, etc.)

Please add any feedbacks or suggestions in the comment section.

2 Likes

Here is what my proposal.

Every validator SHOULD expose a subdomain meta.<validator_domain>. Validator Domain should match the validator website from the chain state. For example, https://meta.iqlusion.io

On the subdomain, there should be /gas endpoint.
ex. https://meta.iqlusion.io/gas

This return a json response.

{
	"gas_prices": [{
		"amount": 0.01,
		"denom": "uatom"
	}, {
		"amount": 0.005,
		"denom": "photon"
	}]
}

}

2 Likes

I’m not a professional programmer, but that looks like a quick patch, the easiest way. You need to have a domain and web hosting server to do that. Quick fixes can result a future long-term issues.

I don’t view this as a quick patch solution.

Validators can always run their own censorship policies. There should be a standard procedure for advertising those policies. We can expand this spec to include this like public sentry nodes and transaction ingestion endpoints

I will be writing an ADR for this in the coming weeks. Ref: Preventing 0 fee Tx spamming - Consensus Min Fee · Issue #4527 · cosmos/cosmos-sdk · GitHub

Not sure why you’d want a maximum fee though.

1 Like

Oh right. I meant to write minimum fee. There shouldn’t be a limit to how high a validator can set minimum-gas-prices.

This seems like a practical solution that would let applications (i.e. wallet providers like Imtoken, Cosmostation, etc.) figure out minimum-gas-prices for different validators a bit easier. I agree that validators should be allowed to run their own censorship policies.

I still do think that there should be some sort of global minimum implemented, either static or dynamic.