From 08d1cea235c601aa4b6d57e093b73acf50577b24 Mon Sep 17 00:00:00 2001 From: Franciszek Job <54181625+franciszekjob@users.noreply.github.com> Date: Tue, 13 Aug 2024 00:27:00 +0200 Subject: [PATCH] Fix `l1_address` deserialization in `L2toL1MessageSchema` (#1435) * Add `ETHAddress` field * Revert "Add `ETHAddress` field" This reverts commit 0046dc97e3a9f856ed87c37a06befe4939c7c18f. * Add `ETHAddress` field * Update starknet_py/net/schemas/common.py Co-authored-by: ddoktorski <45050160+ddoktorski@users.noreply.github.com> * Update starknet_py/net/schemas/common.py Co-authored-by: ddoktorski <45050160+ddoktorski@users.noreply.github.com> * Fix imports --------- Co-authored-by: ddoktorski <45050160+ddoktorski@users.noreply.github.com> --- starknet_py/net/schemas/common.py | 9 +++++++++ starknet_py/net/schemas/rpc/transactions.py | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/starknet_py/net/schemas/common.py b/starknet_py/net/schemas/common.py index acb0409df..d0e03d85c 100644 --- a/starknet_py/net/schemas/common.py +++ b/starknet_py/net/schemas/common.py @@ -89,6 +89,15 @@ class Felt(NumberAsHex): REGEX_PATTERN = r"^0x(0|[a-fA-F1-9]{1}[a-fA-F0-9]{0,62})$" +class EthAddress(NumberAsHex): + """ + Field used to serialize and deserialize ETH address type. + """ + + MAX_VALUE = 2**160 + REGEX_PATTERN = r"^0x[a-fA-F0-9]{40}$" + + class Uint64(NumberAsHex): """ Field used to serialize and deserialize RPC u64 type. diff --git a/starknet_py/net/schemas/rpc/transactions.py b/starknet_py/net/schemas/rpc/transactions.py index d08e192a5..f96cc82d2 100644 --- a/starknet_py/net/schemas/rpc/transactions.py +++ b/starknet_py/net/schemas/rpc/transactions.py @@ -27,6 +27,7 @@ ) from starknet_py.net.schemas.common import ( DAModeField, + EthAddress, ExecutionStatusField, Felt, FinalityStatusField, @@ -45,7 +46,7 @@ class L2toL1MessageSchema(Schema): l2_address = Felt(data_key="from_address", required=True) - l1_address = Felt(data_key="to_address", required=True) + l1_address = EthAddress(data_key="to_address", required=True) payload = fields.List(Felt(), data_key="payload", required=True) @post_load