diff --git a/README.md b/README.md index b0d4429..39ac9f9 100644 --- a/README.md +++ b/README.md @@ -129,6 +129,7 @@ $ make test * [`eth_protocolVersion`](https://eth.wiki/json-rpc/API#eth_protocolversion) * [`eth_syncing`](https://eth.wiki/json-rpc/API#eth_syncing) * [`eth_coinbase`](https://eth.wiki/json-rpc/API#eth_coinbase) +* [`eth_chainId`](https://eth.wiki/json-rpc/API#eth_chainId) * [`eth_mining`](https://eth.wiki/json-rpc/API#eth_mining) * [`eth_hashrate`](https://eth.wiki/json-rpc/API#eth_hashrate) * [`eth_gasPrice`](https://eth.wiki/json-rpc/API#eth_gasprice) diff --git a/lib/ethereumex/client/base_client.ex b/lib/ethereumex/client/base_client.ex index 6d275c0..dc9f14b 100644 --- a/lib/ethereumex/client/base_client.ex +++ b/lib/ethereumex/client/base_client.ex @@ -51,6 +51,11 @@ defmodule Ethereumex.Client.BaseClient do request("eth_syncing", [], opts) end + @impl true + def eth_chain_id(opts \\ []) do + request("eth_chainId", [], opts) + end + @impl true def eth_coinbase(opts \\ []) do request("eth_coinbase", [], opts) diff --git a/lib/ethereumex/client/behaviour.ex b/lib/ethereumex/client/behaviour.ex index 5919ab9..1c93e3e 100644 --- a/lib/ethereumex/client/behaviour.ex +++ b/lib/ethereumex/client/behaviour.ex @@ -11,6 +11,7 @@ defmodule Ethereumex.Client.Behaviour do @callback net_listening(keyword()) :: {:ok, boolean()} | error @callback eth_protocol_version(keyword()) :: {:ok, binary()} | error @callback eth_syncing(keyword()) :: {:ok, map() | boolean()} | error + @callback eth_chain_id(keyword()) :: {:ok, binary()} | error @callback eth_coinbase(keyword()) :: {:ok, binary()} | error @callback eth_mining(keyword()) :: {:ok, boolean()} | error @callback eth_hashrate(keyword()) :: {:ok, binary()} | error diff --git a/test/ethereumex/client/base_client_test.exs b/test/ethereumex/client/base_client_test.exs index dcaf1aa..5122a8f 100644 --- a/test/ethereumex/client/base_client_test.exs +++ b/test/ethereumex/client/base_client_test.exs @@ -92,6 +92,7 @@ defmodule Ethereumex.Client.BaseClientTest do test ".eth_protocol_version/0", do: Helpers.check("eth_protocol_version") test ".eth_syncing/0", do: Helpers.check("eth_syncing") test ".eth_coinbase/0", do: Helpers.check("eth_coinbase") + test ".eth_chain_id/0", do: Helpers.check("eth_chain_id") test ".eth_mining/0", do: Helpers.check("eth_mining") test ".eth_hashrate/0", do: Helpers.check("eth_hashrate") test ".eth_gas_price/0", do: Helpers.check("eth_gas_price") diff --git a/test/ethereumex/http_client_test.exs b/test/ethereumex/http_client_test.exs index 9b37f43..ed4dd5a 100644 --- a/test/ethereumex/http_client_test.exs +++ b/test/ethereumex/http_client_test.exs @@ -68,6 +68,15 @@ defmodule Ethereumex.HttpClientTest do end end + @tag :eth + describe "HttpClient.eth_chain_id/1" do + test "returns chain id of the RPC serveer" do + result = HttpClient.eth_chain_id() + + {:ok, <<_::binary>>} = result + end + end + @tag :eth describe "HttpClient.eth_coinbase/1" do test "returns coinbase address" do diff --git a/test/ethereumex/ipc_client_test.exs b/test/ethereumex/ipc_client_test.exs index 65f6df9..153f917 100644 --- a/test/ethereumex/ipc_client_test.exs +++ b/test/ethereumex/ipc_client_test.exs @@ -79,6 +79,15 @@ defmodule Ethereumex.IpcClientTest do end end + @tag :eth + describe "IpcClient.eth_chain_id/1" do + test "returns chain id of the RPC serveer" do + result = IpcClient.eth_chain_id() + + {:ok, <<_::binary>>} = result + end + end + @tag :eth describe "IpcClient.eth_coinbase/1" do test "returns coinbase address" do