rpc: implement eth_coinbase (#325)
* rpc: implement eth_coinbase * changelog * address comments from review * changelog
This commit is contained in:
parent
5614adc933
commit
988ee53a59
@ -61,6 +61,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
|
||||
* Remove evm `CodeKey` and `BlockKey`in favor of a prefix `Store`.
|
||||
* Set `BlockBloom` during `EndBlock` instead of `BeginBlock`.
|
||||
* `Commit` state object and `Finalize` storage after `InitGenesis` setup.
|
||||
* (rpc) [\#325](https://github.com/ChainSafe/ethermint/pull/325) `eth_coinbase` JSON-RPC query now returns the node's validator address.
|
||||
|
||||
### Features
|
||||
|
||||
|
@ -47,13 +47,15 @@ func NewEthermintBackend(cliCtx context.CLIContext) *EthermintBackend {
|
||||
|
||||
// BlockNumber returns the current block number.
|
||||
func (e *EthermintBackend) BlockNumber() (hexutil.Uint64, error) {
|
||||
res, _, err := e.cliCtx.QueryWithData(fmt.Sprintf("custom/%s/blockNumber", types.ModuleName), nil)
|
||||
res, height, err := e.cliCtx.QueryWithData(fmt.Sprintf("custom/%s/blockNumber", types.ModuleName), nil)
|
||||
if err != nil {
|
||||
return hexutil.Uint64(0), err
|
||||
}
|
||||
|
||||
var out types.QueryResBlockNumber
|
||||
e.cliCtx.Codec.MustUnmarshalJSON(res, &out)
|
||||
|
||||
e.cliCtx.WithHeight(height)
|
||||
return hexutil.Uint64(out.Number), nil
|
||||
}
|
||||
|
||||
|
@ -90,9 +90,19 @@ func (e *PublicEthAPI) Syncing() (interface{}, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
// Coinbase returns this node's coinbase address. Not used in Ethermint.
|
||||
func (e *PublicEthAPI) Coinbase() (addr common.Address) {
|
||||
return
|
||||
// Coinbase is the address that staking rewards will be send to (alias for Etherbase).
|
||||
func (e *PublicEthAPI) Coinbase() (common.Address, error) {
|
||||
node, err := e.cliCtx.GetNode()
|
||||
if err != nil {
|
||||
return common.Address{}, err
|
||||
}
|
||||
|
||||
status, err := node.Status()
|
||||
if err != nil {
|
||||
return common.Address{}, err
|
||||
}
|
||||
|
||||
return common.BytesToAddress(status.ValidatorInfo.Address.Bytes()), nil
|
||||
}
|
||||
|
||||
// Mining returns whether or not this node is currently mining. Always false.
|
||||
|
@ -139,6 +139,18 @@ func TestEth_blockNumber(t *testing.T) {
|
||||
t.Logf("Got block number: %s\n", res.String())
|
||||
}
|
||||
|
||||
func TestEth_coinbase(t *testing.T) {
|
||||
zeroAddress := hexutil.Bytes(ethcmn.Address{}.Bytes())
|
||||
rpcRes := call(t, "eth_coinbase", []string{})
|
||||
|
||||
var res hexutil.Bytes
|
||||
err := res.UnmarshalJSON(rpcRes.Result)
|
||||
require.NoError(t, err)
|
||||
|
||||
t.Logf("Got coinbase block proposer: %s\n", res.String())
|
||||
require.NotEqual(t, zeroAddress.String(), res.String(), "expected: %s got: %s\n", zeroAddress.String(), res.String())
|
||||
}
|
||||
|
||||
func TestEth_GetBalance(t *testing.T) {
|
||||
rpcRes := call(t, "eth_getBalance", []string{addrA, zeroString})
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user