diff --git a/etherlink/CHANGES_NODE.md b/etherlink/CHANGES_NODE.md index 6ce544bd2a44ad5e8145fcb0f60033b86f6de281..ae5a7aea45eb9cfe988940d23837ba06c7788845 100644 --- a/etherlink/CHANGES_NODE.md +++ b/etherlink/CHANGES_NODE.md @@ -76,8 +76,8 @@ - Improves the error message in case of unknown block in RPCs. (!14150) - Produces an empty block in case the produced one will trigger a kernel upgrade. (!14207) -- `eth_getTransactionReceipt` always returns the expected index for blocks with - more than 256 transactions. (!14645) +- Currently decode transaction indices in RPC results of + `eth_getTransactionReceipt` and `eth_getBlockByNumber`. (!14645 !14671) ### Experimental diff --git a/etherlink/bin_node/lib_dev/encodings/ethereum_types.ml b/etherlink/bin_node/lib_dev/encodings/ethereum_types.ml index 5d0246cc58f0b63516a28f38178b3e996abfd5fb..3cc6971d49fa7809b2d49647589887ec73683388 100644 --- a/etherlink/bin_node/lib_dev/encodings/ethereum_types.ml +++ b/etherlink/bin_node/lib_dev/encodings/ethereum_types.ml @@ -358,9 +358,12 @@ type transaction_object = { } let transaction_object_from_rlp_item block_hash rlp_item = - let decode_optional_number bytes = + let decode_optional_number_le bytes = if block_hash == None then None else Some (decode_number_le bytes) in + let decode_optional_number_be bytes = + if block_hash == None then None else Some (decode_number_be bytes) + in match rlp_item with | Rlp.List @@ -379,7 +382,7 @@ let transaction_object_from_rlp_item block_hash rlp_item = Value r; Value s; ] -> - let block_number = decode_optional_number block_number in + let block_number = decode_optional_number_le block_number in let from = decode_address from in let gas = decode_number_le gas_used in let gas_price = decode_number_le gas_price in @@ -387,7 +390,7 @@ let transaction_object_from_rlp_item block_hash rlp_item = let input = decode_hash input in let nonce = decode_number_le nonce in let to_ = if to_ = Bytes.empty then None else Some (decode_address to_) in - let index = decode_optional_number index in + let index = decode_optional_number_be index in let value = decode_number_le value in (* The signature is taken from the raw transaction, that is encoded in big endian. *)