Merge branch 'develop' into felipe/skip-peer-count

This commit is contained in:
mergify[bot] 2023-05-04 23:36:30 +00:00 committed by GitHub
commit 3e9d5468a8
2 changed files with 27 additions and 9 deletions

@ -3,9 +3,9 @@ package proxyd
import ( import (
"encoding/json" "encoding/json"
"errors" "errors"
"strings"
"github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/common/hexutil"
"github.com/ethereum/go-ethereum/rpc"
) )
type RewriteContext struct { type RewriteContext struct {
@ -159,15 +159,21 @@ func rewriteTagMap(rctx RewriteContext, m map[string]interface{}, key string) (b
} }
func rewriteTag(rctx RewriteContext, current string) (string, bool, error) { func rewriteTag(rctx RewriteContext, current string) (string, bool, error) {
if current == "latest" { jv, err := json.Marshal(current)
return rctx.latest.String(), true, nil
} else if strings.HasPrefix(current, "0x") {
decode, err := hexutil.DecodeUint64(current)
if err != nil { if err != nil {
return current, false, err return "", false, err
} }
b := hexutil.Uint64(decode)
if b > rctx.latest { var bnh rpc.BlockNumberOrHash
err = bnh.UnmarshalJSON(jv)
if err != nil {
return "", false, err
}
if bnh.BlockNumber != nil && *bnh.BlockNumber == rpc.LatestBlockNumber {
return rctx.latest.String(), true, nil
} else if bnh.BlockNumber != nil {
if hexutil.Uint64(bnh.BlockNumber.Int64()) > rctx.latest {
return "", false, ErrRewriteBlockOutOfRange return "", false, ErrRewriteBlockOutOfRange
} }
} }

@ -334,6 +334,18 @@ func TestRewriteRequest(t *testing.T) {
expected: RewriteOverrideError, expected: RewriteOverrideError,
expectedErr: ErrRewriteBlockOutOfRange, expectedErr: ErrRewriteBlockOutOfRange,
}, },
{
name: "eth_getStorageAt using rpc.BlockNumberOrHash",
args: args{
rctx: RewriteContext{latest: hexutil.Uint64(100)},
req: &RPCReq{Method: "eth_getStorageAt", Params: mustMarshalJSON([]string{
"0xae851f927ee40de99aabb7461c00f9622ab91d60",
"0x65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08",
"0x1c4840bcb3de3ac403c0075b46c2c47d4396c5b624b6e1b2874ec04e8879b483"})},
res: nil,
},
expected: RewriteNone,
},
} }
// generalize tests for other methods with same interface and behavior // generalize tests for other methods with same interface and behavior