prysmaticlabs/prysm

`engine_getPayloadBodiesByRangeV1` request encoded as number instead of quantity-string

AskAlexSharov opened this issue · 1 comments

Describe the bug

WARN[08-06|21:21:37.685] [rpc] served                             conn=127.0.0.1:38994 method=engine_getPayloadBodiesByRangeV1 reqid=10117 t=66.969µs err="invalid argument 0: json: cannot unmarshal non-string into Go value of type hexutil.Uint64"

seems request parameters encoded as uint64:
but by spec must be QUANTITY: https://github.com/ethereum/execution-apis/blob/main/src/engine/shanghai.md#engine_getpayloadbodiesbyrangev1
where QUANTITY is hexadecimal string with a 0x: https://github.com/ethereum/execution-apis/blob/b7432c54d2faa5f282db7b3202c3c2ef907103ad/src/engine/common.md?plain=1#L135

FYI: in geth code this check implemented as:

func isString(input []byte) bool {
	return len(input) >= 2 && input[0] == '"' && input[len(input)-1] == '"'
}

Probably need replace uint64 by hexutil.Uint64:
https://github.com/prysmaticlabs/prysm/pull/11973/files#diff-0db156be9387e17126ef720ed99144822a4b1480b4cd16e63fe88e2e2b56b696R468

Has this worked before in a previous version?

No response

🔬 Minimal Reproduction

No response

Error

No response

Platform(s)

No response

What version of Prysm are you running? (Which release)

No response

Anything else relevant (validator index / public key)?

No response

Thanks for the report!