diff --git a/starknet_py/net/gateway_client.py b/starknet_py/net/gateway_client.py index 5c5e95922..ba8dbbb59 100644 --- a/starknet_py/net/gateway_client.py +++ b/starknet_py/net/gateway_client.py @@ -147,7 +147,8 @@ async def get_state_update( self, block_hash: Optional[Union[Hash, Tag]] = None, block_number: Optional[Union[int, Tag]] = None, - include_block: bool = False, + # TODO (#1166): revert to `bool = False` + include_block: Optional[bool] = None, ) -> Union[BlockStateUpdate, StateUpdateWithBlock]: """ Get the information about the result of executing the requested block. @@ -157,14 +158,25 @@ async def get_state_update( :param include_block: Flag deciding whether to include the queried block. Defaults to false. :return: BlockStateUpdate object representing changes in the requested block. """ + # TODO (#1166): remove that + if include_block is not None and self._net in [ + "https://alpha-mainnet.starknet.io", + "mainnet", + ]: + raise ValueError( + "Argument 'include_block' does not work on mainnet yet and will be working after v0.12.2 release." + ) + block_identifier = get_block_identifier( block_hash=block_hash, block_number=block_number ) params = { - "includeBlock": str(include_block).lower(), **block_identifier, } + # TODO (#1166): bring back into params + if include_block is not None: + params["includeBlock"] = str(include_block).lower() res = await self._feeder_gateway_client.call( method_name="get_state_update", params=params diff --git a/starknet_py/net/schemas/gateway.py b/starknet_py/net/schemas/gateway.py index e4eecf30e..37e34d58b 100644 --- a/starknet_py/net/schemas/gateway.py +++ b/starknet_py/net/schemas/gateway.py @@ -261,7 +261,8 @@ class StarknetBlockSchema(Schema): parent_block_hash = Felt(data_key="parent_block_hash", required=True) block_number = fields.Integer(data_key="block_number") status = BlockStatusField(data_key="status", required=True) - root = Felt(data_key="state_root") + # TODO (#1166): change nonprefixedhex to felt in line below + root = NonPrefixedHex(data_key="state_root") transactions = fields.List( fields.Nested(TypesOfTransactionsSchema(unknown=EXCLUDE)), data_key="transactions", @@ -423,8 +424,10 @@ def make_dataclass(self, data, **kwargs) -> GatewayStateDiff: class BlockStateUpdateSchema(Schema): block_hash = Felt(data_key="block_hash", required=True) - new_root = Felt(data_key="new_root", required=True) - old_root = Felt(data_key="old_root", required=True) + # TODO (#1166): change nonprefixedhex to felt in line below + new_root = NonPrefixedHex(data_key="new_root", required=True) + # TODO (#1166): change nonprefixedhex to felt in line below + old_root = NonPrefixedHex(data_key="old_root", required=True) state_diff = fields.Nested(StateDiffSchema(), data_key="state_diff", required=True) @post_load diff --git a/starknet_py/tests/e2e/integration_tests/client_test.py b/starknet_py/tests/e2e/integration_tests/client_test.py index 6a6773f33..cfe52f7e4 100644 --- a/starknet_py/tests/e2e/integration_tests/client_test.py +++ b/starknet_py/tests/e2e/integration_tests/client_test.py @@ -450,3 +450,27 @@ async def test_get_state_update_with_block(gateway_client_integration): assert res.block == block assert res.state_update is not None + + +# TODO (#1166): remove tests below after mainnet release +@pytest.mark.asyncio +async def test_get_block_different_starknet_versions(): + mainnet = GatewayClient(net="mainnet") + testnet = GatewayClient(net="testnet") + + _ = await mainnet.get_block(block_number=100000) + _ = await testnet.get_block(block_number=100000) + + +@pytest.mark.asyncio +async def test_get_state_update_different_starknet_versions(): + mainnet = GatewayClient(net="mainnet") + testnet = GatewayClient(net="testnet") + + _ = await mainnet.get_state_update(block_number=100000) + + with pytest.raises(ValueError): + _ = await mainnet.get_state_update(block_number=100000, include_block=False) + _ = await mainnet.get_state_update(block_number=100000, include_block=True) + + _ = await testnet.get_state_update(block_number=100000, include_block=True)