Package: ethereum-gasprice
Ethereum gasprice: Actual gasprice for ethereum blockchainLibrary for fetching actual ethereum blockchain gasprice from different sources:Etherscan Gas Tracker,Eth Gas Station,Etherchain Gasprice Oracle,Web3 RPC Method.Read more about gas and fee fromthis articleInstallationpoetryaddethereum-gaspriceorpip3installethereum-gaspriceQuickstartfromethereum_gaspriceimportGaspriceController,GaspriceStrategy,EthereumUnitfromethereum_gasprice.providersimportEtherscanProviderETHERSCAN_API_KEY="..."# Pass api key to GaspriceController to initialize providercontroller=GaspriceController(settings={EtherscanProvider.title:ETHERSCAN_API_KEY},)# Get gasprice by one of these strategies:gasprice=controller.get_gasprice_by_strategy(GaspriceStrategy.FAST)print(gasprice)# output: 69DocsRead base API references and other part documentation
onethereum-gasprice.readthedocs.ioUsageGasprice controllerMain entrypoint to fetching gasprice from providers. Has sync and async implementations.It is recommended to initialize controller withwith ... as controller:methodfromethereum_gaspriceimportGaspriceController,AsyncGaspriceControllerParameters:return_unit- return gasprice in given ethereum unit. It is recommended to useEthereumUnitclass
fromethereum_gasprice.conststo choose unitproviders- tuple of providers what will be used in fetching gasprice. Order of providers is importantgasprice will be fetch in given priority. Providers must be a subclass ofBaseGaspriceProvidersettings- dict containing secrets for providers. Key is provider title slug, value is a secret for provider.fromethereum_gasprice.constsimportEthereumUnitfromethereum_gasprice.providersimport(EtherscanProvider,EthGasStationProvider,AsyncEtherscanProvider,AsyncEthGasStationProvider)settings={EtherscanProvider.title:"API_KEY",EthGasStationProvider.title:"API_KEY"}sync_providers=(EtherscanProvider,EthGasStationProvider)async_providers=(AsyncEtherscanProvider,AsyncEthGasStationProvider)withGaspriceStrategy(return_unit=EthereumUnit.GWEI,providers=sync_providers,settings=settings)ascontroller:# Do somethingpassasyncwithAsyncGaspriceController(return_unit=EthereumUnit.WEI,providers=async_providers,settings=settings)asasync_controller:# Do somethingpassMethods:.get_gasprice_by_strategy()- get gasprices from first available provider and return only one gasprice strategy.available strategies: slow (GaspriceStrategy.SLOW), regular (GaspriceStrategy.REGULAR),
fast (GaspriceStrategy.FAST), fastest (GaspriceStrategy.FASTEST).Some providers does not have info for some strategies. For example, Etherscan does not provide gasprice for slow
strategy.In any case method will return dict with these for strategies. If fail case strategy (when all provides is unavailable)
dict withNonevalues will be returned.fromethereum_gasprice.constsimportGaspriceStrategygasprice=controller.get_gasprice_by_strategy(GaspriceStrategy.FAST)# type: int, example: 69.get_gasprices()- gets gasprices for all strategies from first available provider. Returns a dict.gasprices=awaitasync_controller.get_gasprices()# type: dictprint(gasprices)# {'slow': None, 'regular': 17, 'fast': 19, 'fastest': 20}.get_gasprice_from_all_sources()- get gasprices for all strategies from all available provider.It can be useful to calculate an average gasprice value from all providers to get the most objective gasprice value.gasprices=controller.get_gasprice_from_all_sources()# type: dictprint(gasprices)# {#   'etherscan': {'slow': None, 'regular': 17, 'fast': 19, 'fastest': 29},#   'ethgasstation': {'slow': 16, 'regular': 17, 'fast': 19, 'fastest': 20}# }ProvidersProvider wrapperfromethereum_gasprice.providersimportEtherscanProvider,AsyncEtherscanProviderParameters:secret- any secret or api key which will be used in request.client- sync or asynchttpx Client instance. For async
providerhttpx AsyncClientshould be used.Methods:.request()- make request to api, returns status and response data..get_gasprice()- get gasprices from provider, returns gasprices in GWEI.fromhttpximportClientprovider=EtherscanProvider(secret="API-KEY",client=Client())print(provider.get_gasprice())# {'slow': None, 'regular': 17, 'fast': 19, 'fastest': 20}TODOInitital releaseAsync implementation of controller, providersWrite documentationWrite unit tests with pytestIntegrate tests, docs and auto publishing to pypi in github pipelineChangelogsee CHANGELOG.md fileLicenseEthereum gasprice is licensed under the terms of the MIT License (see the file LICENSE).Special thanksArtem Filippov