Presenting before you EtherEyes, an award winning hackathon project that enables users to make cheaper transactions by predicting the gas price and providing timely gas price notifications.
View our pulished blog where we discuss more of the technical details involved: .
Knowing the expected gas price in advance allows users to make informed decisions on when to execute transactions. This can help reduce costs and increase overall efficiency by avoiding times of high gas prices.
Predictive models can help project future gas prices, allowing businesses and individuals to plan accordingly and minimize any potential negative impact on their operations.
- Notification about current gas prices
- Suggests user to buy when lowest gas price reached
- Set urgency of your transaction
- Toggle Notifications
- Graphical data representaion of gas prices
- Dark theme :)
- Python version 3.7-3.10 (recommended 3.9)
- yarn
- Metamask Flask
We recommended you using conda as environment manager, for installation instruction refer https://conda.io/projects/conda/en/latest/user-guide/install/index.html
Create a python 3.9 environment
conda create -n py39 python=3.9
This will prevent any dependency conflicts with your global level python installation
Installing requried libraries:
pip install -r requirements.txt
Setting up servers
cd ~/Desktop
git clone https://github.com/aritroCoder/transaction-insights.git
Open the file named key.json
in transaction-insights/
directory, and write in the file (Create an API key from https://owlracle.info/eth and paste it in place of your_key
)
{
"key": "your_key"
}
Then copy and replace(when prompted) this file to transaction-insights/packages/snap/
and transaction-insights/packages/site/src/
directories
Starting the python server
cd ~/Desktop/transaction-insights/
uvicorn server:app --reload --port 5000
Open a new terminal to start yarn server
cd ~/Desktop/transaction-insights/
yarn install
yarn start
Done both the servers are running now..
- Visit http://localhost:8000/ to access the snap website
- Connect the snap to Metamask
- Python server is at http://127.0.0.1:5000/
We collect live gas price data as a list of around 200 candlesticks (each candlestick is an aggregate of the past 30 minutes of data) using the Owlracle API. This gives us the timeseries data of past 100 hours of gas prices.
We then use a popular time series forecasting model called SARIMA or Seasonal ARIMA from the statsforecast package on the timeseries data to predict the lowest gas price expected in the next hour.
- A lot of literature on SARIMA for time-series forecasting in varying domains ([1],[2],[3]) stated that the performance of SARIMA is good. We also referred to a study on ethereum gas price statistics [4], where they used SARIMA and obtained promising results.
- An alternative would be deep learning techniques which usually involve larger models which also take more time to re-train hence making it less ideal for streaming data.
This project is built for inter IIT Tech meet 11 by the team of Institute ID: 23(IIT Patna), and was awarded a bronze medal by Consensys. Team members:
[1] A hybrid SARIMA and support vector machines in forecasting the production values of the machinery industry in Taiwan. Expert Systems with Applications, 32(1), 254-264. https://doi.org/10.1016/j.eswa.2005.11.027
[2] Dynamic linear model and SARIMA: a comparison of their forecasting performance in epidemiology. https://doi.org/10.1002/sim.963
[3] Long-term runoff study using SARIMA and ARIMA models in the United States. https://doi.org/10.1002/met.1491
[4] Carl, David and Ewerhart, Christian, Ethereum Gas Price Statistics (December 22, 2020). University of Zurich, Department of Economics, Working Paper No. 373, 2020, Available at: http://dx.doi.org/10.2139/ssrn.3754217