From 08a8191002195eab5c8f098dfc056f7f68b5487f Mon Sep 17 00:00:00 2001 From: JayT106 Date: Sat, 23 Oct 2021 13:47:32 -0400 Subject: [PATCH] rpc: add NoBaseFee check in backend.BaseFee (#697) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> --- rpc/ethereum/backend/backend.go | 10 ++++++++++ tests/rpc/rpc_test.go | 33 ++++++++++++++++++++++++--------- 2 files changed, 34 insertions(+), 9 deletions(-) diff --git a/rpc/ethereum/backend/backend.go b/rpc/ethereum/backend/backend.go index 345f8a96..4e040a22 100644 --- a/rpc/ethereum/backend/backend.go +++ b/rpc/ethereum/backend/backend.go @@ -807,6 +807,16 @@ func (e *EVMBackend) BaseFee(height int64) (*big.Int, error) { return nil, nil } + // Checks the feemarket param NoBaseFee settings, return 0 if it is enabled. + resParams, err := e.queryClient.FeeMarket.Params(e.ctx, &feemarkettypes.QueryParamsRequest{}) + if err != nil { + return nil, err + } + + if resParams.Params.NoBaseFee { + return big.NewInt(0), nil + } + blockRes, err := e.clientCtx.Client.BlockResults(e.ctx, &height) if err != nil { return nil, err diff --git a/tests/rpc/rpc_test.go b/tests/rpc/rpc_test.go index d68a41b0..a6c5be1a 100644 --- a/tests/rpc/rpc_test.go +++ b/tests/rpc/rpc_test.go @@ -412,20 +412,22 @@ func TestEth_SendTransaction_Transfer(t *testing.T) { } func TestEth_SendTransaction_ContractDeploy(t *testing.T) { - param := make([]map[string]string, 1) - param[0] = make(map[string]string) - param[0]["from"] = "0x" + fmt.Sprintf("%x", from) - param[0]["data"] = "0x6080604052348015600f57600080fd5b5060117f775a94827b8fd9b519d36cd827093c664f93347070a554f65e4a6f56cd73889860405160405180910390a2603580604b6000396000f3fe6080604052600080fdfea165627a7a723058206cab665f0f557620554bb45adf266708d2bd349b8a4314bdff205ee8440e3c240029" - param[0]["gas"] = "0x200000" - param[0]["gasPrice"] = "0x1" - - rpcRes := call(t, "eth_sendTransaction", param) + param := makeTestContractDeployParam(true) + rpcRes, err := callWithError("eth_sendTransaction", param) + require.NoError(t, err) var hash hexutil.Bytes - err := json.Unmarshal(rpcRes.Result, &hash) + err = json.Unmarshal(rpcRes.Result, &hash) require.NoError(t, err) } +func TestEth_SendTransaction_ContractDeploy_no_gas_param(t *testing.T) { + param := makeTestContractDeployParam(false) + _, err := callWithError("eth_sendTransaction", param) + // server returns internal error. + require.Error(t, err) +} + func TestEth_NewFilter(t *testing.T) { param := make([]map[string][]string, 1) param[0] = make(map[string][]string) @@ -1026,6 +1028,19 @@ func makeEthTxParam() []map[string]string { return param } +func makeTestContractDeployParam(withGas bool) []map[string]string { + param := make([]map[string]string, 1) + param[0] = make(map[string]string) + param[0]["from"] = "0x" + fmt.Sprintf("%x", from) + param[0]["data"] = "0x6080604052348015600f57600080fd5b5060117f775a94827b8fd9b519d36cd827093c664f93347070a554f65e4a6f56cd73889860405160405180910390a2603580604b6000396000f3fe6080604052600080fdfea165627a7a723058206cab665f0f557620554bb45adf266708d2bd349b8a4314bdff205ee8440e3c240029" + if withGas { + param[0]["gas"] = "0x200000" + param[0]["gasPrice"] = "0x1" + } + + return param +} + func TestEth_EthResend(t *testing.T) { tx := make(map[string]string) tx["from"] = "0x" + fmt.Sprintf("%x", from)