From 665ca53d3278a7c06e9cb17b6c01507d08fc8896 Mon Sep 17 00:00:00 2001 From: Wen Chen Date: Tue, 2 Apr 2024 09:46:05 -0400 Subject: [PATCH] get max_priority_fee --- CHANGELOG.md | 6 ++++++ lib/ethers.ex | 17 +++++++++++++++-- test/ethers_test.exs | 6 ++++++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d6fd0a..305b031 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## Unreleased + +### Enhancements + +- Add support of getting current `max_priority_fee_per_gas`. + ## v0.4.0 (2024-03-11) ### Breaking Changes diff --git a/lib/ethers.ex b/lib/ethers.ex index 802f470..a0d99f3 100644 --- a/lib/ethers.ex +++ b/lib/ethers.ex @@ -70,10 +70,11 @@ defmodule Ethers do @option_keys [:rpc_client, :rpc_opts, :signer, :signer_opts, :tx_type] @hex_decode_post_process [ - :estimate_gas, :current_gas_price, :current_block_number, - :get_balance + :estimate_gas, + :get_balance, + :max_priority_fee_per_gas ] @rpc_actions_map %{ call: :eth_call, @@ -85,6 +86,7 @@ defmodule Ethers do get_logs: :eth_get_logs, get_transaction_count: :eth_get_transaction_count, get_transaction: :eth_get_transaction_by_hash, + max_priority_fee_per_gas: :eth_max_priority_fee_per_gas, send: :eth_send_transaction } @@ -414,6 +416,17 @@ defmodule Ethers do end end + @doc """ + Returns the current max priority fee per gas from the RPC API + """ + @spec max_priority_fee_per_gas(Keyword.t()) :: {:ok, non_neg_integer()} + def max_priority_fee_per_gas(opts \\ []) do + {rpc_client, rpc_opts} = get_rpc_client(opts) + + rpc_client.eth_max_priority_fee_per_gas(rpc_opts) + |> post_process(nil, :max_priority_fee_per_gas) + end + @doc """ Fetches the event logs with the given filter. diff --git a/test/ethers_test.exs b/test/ethers_test.exs index 741a5c5..ac16670 100644 --- a/test/ethers_test.exs +++ b/test/ethers_test.exs @@ -27,6 +27,12 @@ defmodule EthersTest do end end + describe "max_priority_fee_per_gas" do + test "returns the correct max priority fee per gas" do + assert {:ok, 1_000_000_000} = Ethers.max_priority_fee_per_gas() + end + end + describe "current_block_number" do test "returns the current block number" do assert {:ok, n} = Ethers.current_block_number()