fix encoding when storage is empty

This commit is contained in:
n0cte 2021-08-19 11:47:42 +03:00 committed by Arijit Das
parent ec3165f62c
commit 70c539c8d7
2 changed files with 6 additions and 0 deletions

View File

@ -709,6 +709,9 @@ func (pea *PublicEthAPI) localGetBalance(ctx context.Context, address common.Add
func (pea *PublicEthAPI) GetStorageAt(ctx context.Context, address common.Address, key string, blockNrOrHash rpc.BlockNumberOrHash) (hexutil.Bytes, error) { func (pea *PublicEthAPI) GetStorageAt(ctx context.Context, address common.Address, key string, blockNrOrHash rpc.BlockNumberOrHash) (hexutil.Bytes, error) {
storageVal, err := pea.B.GetStorageByNumberOrHash(ctx, address, common.HexToHash(key), blockNrOrHash) storageVal, err := pea.B.GetStorageByNumberOrHash(ctx, address, common.HexToHash(key), blockNrOrHash)
if storageVal != nil && err == nil { if storageVal != nil && err == nil {
if len(storageVal) == 0 {
return make([]byte, 32), nil
}
var value common.Hash var value common.Hash
_, content, _, err := rlp.Split(storageVal) _, content, _, err := rlp.Split(storageVal)
if err == io.ErrUnexpectedEOF { if err == io.ErrUnexpectedEOF {

View File

@ -1010,6 +1010,9 @@ func (r *Resolver) GetStorageAt(ctx context.Context, args struct {
return nil, err return nil, err
} }
if len(rlpValue) == 0 {
return &StorageResult{value: make([]byte, 32), cid: cid, ipldBlock: ipldBlock}, nil
}
var value interface{} var value interface{}
err = rlp.DecodeBytes(rlpValue, &value) err = rlp.DecodeBytes(rlpValue, &value)