The SafeLow gas price is an important benchmark especially in times of high network demand: What gas price should users choose if

1) they don’t want to pay a high transaction fee

and

2) it is not a time sensitive transaction (they don’t mind waiting e.g. 30min)

and

3) importantly- they want to be sure it will get confirmed and avoid uncertainty and inconvenience of resending procedures.

The ETH gas station gas price oracle has attempted to solve this using statistical modeling, and overall it seems to function reasonably well- but models are not always accurate. When you have a big network event like cryptokitties and you have users complaining and saying that Ethereum is “broken”, its fair to be skeptical of statistical models. You really want to see hard evidence of what is happening on the network.

A further complication is that many times users who complain of “stuck” transactions have made one of the following errors: 1) they increased the gas limit to a really high number (one of the worst things you can do) or 2) they have sent a new transaction even though they still have an earlier transaction pending with either a low gas price or high gas offered value that will prevent the new transaction from being mined.

What you really want to know to set a SafeLow gas price is the following: for transactions with eligible nonces that do not have high gas offered values (e.g. < 500,000 gas), what gas prices are getting confirmed and which ones are backing up.

It took me a while to figure out how to do this efficiently but the following is now working well:

Take all submitted transactions to the node between e.g. 250–350 blocks ago Filter them to get ones with eligible nonces and gas offered less than e.g. 500,000 gas Check to see if they are still in the txpool. Group by gas price to see what percent are still remaining.

This provides a view of network transaction processing that is now my favorite way to see what is happening on the network and can easily show where there are real bottlenecks and where transactions are getting confirmed normally:

https://ethgasstation.info/safeLow.php

Users can look at this table and decide what risk of non-confirmation they can accept to get the lower price.

This data can also be used to provide a check on the model and make sure it does not select an “unsafe” gas price. I have provided an update to the code to do this — but all of the logic is configurable by anyone running the oracle locally — its open source

https://github.com/ethgasstation/ethgasstation-adaptive-oracle/releases