Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 14 additions & 2 deletions starknet_py/net/gateway_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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
Expand Down
9 changes: 6 additions & 3 deletions starknet_py/net/schemas/gateway.py
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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
Expand Down
24 changes: 24 additions & 0 deletions starknet_py/tests/e2e/integration_tests/client_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)