`engine_getPayloadBodiesByRangeV1` request encoded as number instead of quantity-string
AskAlexSharov opened this issue · 1 comments
AskAlexSharov commented
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
james-prysm commented
Thanks for the report!