rpc: return 0 nonce if account doesn't exist (#345)
* add EnsureExists check to GetTransactionCount * cleanup, return 0 as nonce if account doesn't exist * update changelog * update changelog
This commit is contained in:
parent
9755175d33
commit
e9c494cf71
@ -79,6 +79,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* (rpc) [\#305](https://github.com/ChainSafe/ethermint/issues/305) Update eth_getTransactionCount to check for account existence before getting sequence and return 0 as the nonce if it doesn't exist.
|
||||
* (`x/evm`) [\#319](https://github.com/ChainSafe/ethermint/pull/319) Fix `SetBlockHash` that was setting the incorrect height during `BeginBlock`.
|
||||
* (x/evm) [\#176](https://github.com/ChainSafe/ethermint/issues/176) Updated Web3 transaction hash from using RLP hash. Now all transaction hashes exposed are amino hashes.
|
||||
* Removes `Hash()` (RLP) function from `MsgEthereumTx` to avoid confusion or misuse in future.
|
||||
* Removes `Hash()` (RLP) function from `MsgEthereumTx` to avoid confusion or misuse in future.
|
@ -197,6 +197,13 @@ func (e *PublicEthAPI) GetTransactionCount(address common.Address, blockNum Bloc
|
||||
authclient.Codec = codec.NewAppCodec(ctx.Codec)
|
||||
accRet := authtypes.NewAccountRetriever(authclient.Codec, ctx)
|
||||
|
||||
err := accRet.EnsureExists(from)
|
||||
if err != nil {
|
||||
// account doesn't exist yet, return 0
|
||||
n := hexutil.Uint64(0)
|
||||
return &n, nil
|
||||
}
|
||||
|
||||
_, nonce, err := accRet.GetAccountNumberSequence(from)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@ -415,7 +422,6 @@ type account struct {
|
||||
func (e *PublicEthAPI) doCall(
|
||||
args CallArgs, blockNr rpc.BlockNumber, globalGasCap *big.Int,
|
||||
) (*sdk.SimulationResponse, error) {
|
||||
|
||||
// Set height for historical queries
|
||||
ctx := e.cliCtx
|
||||
|
||||
@ -900,6 +906,12 @@ func (e *PublicEthAPI) generateFromArgs(args params.SendTxArgs) (*types.MsgEther
|
||||
authclient.Codec = codec.NewAppCodec(e.cliCtx.Codec)
|
||||
accRet := authtypes.NewAccountRetriever(authclient.Codec, e.cliCtx)
|
||||
|
||||
err = accRet.EnsureExists(from)
|
||||
if err != nil {
|
||||
// account doesn't exist
|
||||
return nil, fmt.Errorf("nonexistent account %s: %s", args.From.Hex(), err)
|
||||
}
|
||||
|
||||
_, nonce, err = accRet.GetAccountNumberSequence(from)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
Loading…
Reference in New Issue
Block a user