Skip to content

Commit 83dc351

Browse files
Default blake in compute_casm_class_hash (#1676)
1 parent 8dbaa88 commit 83dc351

File tree

7 files changed

+68
-16
lines changed

7 files changed

+68
-16
lines changed

docs/migration_guide.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,13 @@ The **lowest** supported version Python is now 3.10.
2121
2222
These packages are needed for HIDAPI compilation. Read official `ledgerctl installation guide <https://github.com/LedgerHQ/ledgerctl?tab=readme-ov-file#quick-install)>`_ for more details.
2323

24+
<unreleased> Breaking changes
25+
-----------------------------
26+
27+
.. currentmodule:: starknet_py.hash.class_hash
28+
29+
1. :func:`compute_class_hash`: default value of ``hash_method`` param is now ``HashMethod.BLAKE2S``.
30+
2431
***************************
2532
0.29.0-rc.1 Migration guide
2633
***************************

starknet_py/hash/casm_class_hash.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def get_casm_hash_method_for_starknet_version(starknet_version: Version) -> Hash
2626

2727

2828
def compute_casm_class_hash(
29-
casm_contract_class: CasmClass, hash_method: HashMethod = HashMethod.POSEIDON
29+
casm_contract_class: CasmClass, hash_method: HashMethod = HashMethod.BLAKE2S
3030
) -> int:
3131
"""
3232
Calculate class hash of a CasmClass.

starknet_py/tests/e2e/account/account_test.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from starknet_py.constants import ARGENT_V040_CLASS_HASH
99
from starknet_py.hash.address import compute_address
1010
from starknet_py.hash.casm_class_hash import compute_casm_class_hash
11+
from starknet_py.hash.hash_method import HashMethod
1112
from starknet_py.hash.selector import get_selector_from_name
1213
from starknet_py.net.account.account import Account
1314
from starknet_py.net.account.base_account import BaseAccount
@@ -757,7 +758,11 @@ async def test_declare_v3_with_tip(account):
757758
tip = 12345
758759
signed_tx = await account.sign_declare_v3(
759760
compiled_contract["sierra"],
760-
compute_casm_class_hash(create_casm_class(compiled_contract["casm"])),
761+
compute_casm_class_hash(
762+
# TODO(#1659): Use blake
763+
create_casm_class(compiled_contract["casm"]),
764+
HashMethod.POSEIDON,
765+
),
761766
resource_bounds=MAX_RESOURCE_BOUNDS,
762767
tip=tip,
763768
)
@@ -780,7 +785,11 @@ async def test_declare_v3_auto_estimate_tip(
780785
mocked_block_with_txs.return_value = block_with_tips_mock
781786
signed_tx = await account.sign_declare_v3(
782787
compiled_contract["sierra"],
783-
compute_casm_class_hash(create_casm_class(compiled_contract["casm"])),
788+
compute_casm_class_hash(
789+
# TODO(#1659): Use blake
790+
create_casm_class(compiled_contract["casm"]),
791+
HashMethod.POSEIDON,
792+
),
784793
resource_bounds=MAX_RESOURCE_BOUNDS,
785794
auto_estimate_tip=True,
786795
)

starknet_py/tests/e2e/client/full_node_test.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from starknet_py.contract import Contract
99
from starknet_py.hash.address import compute_address
1010
from starknet_py.hash.casm_class_hash import compute_casm_class_hash
11+
from starknet_py.hash.hash_method import HashMethod
1112
from starknet_py.hash.selector import get_selector_from_name
1213
from starknet_py.hash.storage import get_storage_var_address
1314
from starknet_py.net.account.account import Account
@@ -522,7 +523,8 @@ async def test_simulate_transactions_two_txs(account, deployed_balance_contract)
522523
)
523524

524525
casm_class = create_casm_class(contract["casm"])
525-
casm_class_hash = compute_casm_class_hash(casm_class)
526+
# TODO(#1659): Use blake
527+
casm_class_hash = compute_casm_class_hash(casm_class, HashMethod.POSEIDON)
526528

527529
declare_v3_tx = await account.sign_declare_v3(
528530
compiled_contract=contract["sierra"],

starknet_py/tests/e2e/docs/guide/test_cairo1_contract.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import pytest
44

5+
from starknet_py.hash.hash_method import HashMethod
56
from starknet_py.net.client_models import SierraContractClass
67
from starknet_py.net.udc_deployer.deployer import _get_random_salt
78
from starknet_py.tests.e2e.fixtures.constants import MAX_RESOURCE_BOUNDS
@@ -30,8 +31,9 @@ async def test_cairo1_contract(
3031
# contract_compiled_casm is a string containing the content of the starknet-sierra-compile (.casm file)
3132
casm_class = create_casm_class(contract_compiled_casm)
3233

34+
# TODO(#1659): Use blake
3335
# Compute Casm class hash
34-
casm_class_hash = compute_casm_class_hash(casm_class)
36+
casm_class_hash = compute_casm_class_hash(casm_class, HashMethod.POSEIDON)
3537
# docs: end
3638

3739
assert casm_class_hash == compiled_class_hash

starknet_py/tests/e2e/fixtures/contracts_v1.py

Lines changed: 41 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from starknet_py.common import create_casm_class, create_sierra_compiled_contract
99
from starknet_py.contract import Contract
1010
from starknet_py.hash.casm_class_hash import compute_casm_class_hash
11+
from starknet_py.hash.hash_method import HashMethod
1112
from starknet_py.net.account.base_account import BaseAccount
1213
from starknet_py.net.models import DeclareV3
1314
from starknet_py.net.udc_deployer.deployer import Deployer
@@ -18,7 +19,11 @@
1819
async def declare_contract(
1920
account: BaseAccount, compiled_contract: str, compiled_contract_casm: str
2021
) -> Tuple[int, int]:
21-
casm_class_hash = compute_casm_class_hash(create_casm_class(compiled_contract_casm))
22+
casm_class_hash = compute_casm_class_hash(
23+
# TODO(#1659): Use blake
24+
create_casm_class(compiled_contract_casm),
25+
HashMethod.POSEIDON,
26+
)
2227

2328
declare_tx = await account.sign_declare_v3(
2429
compiled_contract=compiled_contract,
@@ -66,7 +71,11 @@ def constructor_with_arguments_abi() -> List:
6671
@pytest_asyncio.fixture(scope="package")
6772
async def declare_v3_hello_starknet(account: BaseAccount) -> DeclareV3:
6873
contract = load_contract("HelloStarknet")
69-
casm_class_hash = compute_casm_class_hash(create_casm_class(contract["casm"]))
74+
casm_class_hash = compute_casm_class_hash(
75+
# TODO(#1659): Use blake
76+
create_casm_class(contract["casm"]),
77+
HashMethod.POSEIDON,
78+
)
7079

7180
declare_tx = await account.sign_declare_v3(
7281
contract["sierra"], casm_class_hash, resource_bounds=MAX_RESOURCE_BOUNDS
@@ -232,7 +241,11 @@ def map_compiled_contract_and_class_hash() -> Tuple[str, int]:
232241

233242
return (
234243
contract["sierra"],
235-
compute_casm_class_hash(create_casm_class(contract["casm"])),
244+
compute_casm_class_hash(
245+
# TODO(#1659): Use blake
246+
create_casm_class(contract["casm"]),
247+
HashMethod.POSEIDON,
248+
),
236249
)
237250

238251

@@ -242,7 +255,11 @@ def map_compiled_contract_and_class_hash_copy_1() -> Tuple[str, int]:
242255

243256
return (
244257
contract["sierra"],
245-
compute_casm_class_hash(create_casm_class(contract["casm"])),
258+
compute_casm_class_hash(
259+
# TODO(#1659): Use blake
260+
create_casm_class(contract["casm"]),
261+
HashMethod.POSEIDON,
262+
),
246263
)
247264

248265

@@ -252,7 +269,11 @@ def map_compiled_contract_and_class_hash_copy_2() -> Tuple[str, int]:
252269

253270
return (
254271
contract["sierra"],
255-
compute_casm_class_hash(create_casm_class(contract["casm"])),
272+
compute_casm_class_hash(
273+
# TODO(#1659): Use blake
274+
create_casm_class(contract["casm"]),
275+
HashMethod.POSEIDON,
276+
),
256277
)
257278

258279

@@ -304,7 +325,11 @@ def sierra_minimal_compiled_contract_and_class_hash() -> Tuple[str, int]:
304325

305326
return (
306327
contract["sierra"],
307-
compute_casm_class_hash(create_casm_class(contract["casm"])),
328+
compute_casm_class_hash(
329+
# TODO(#1659): Use blake
330+
create_casm_class(contract["casm"]),
331+
HashMethod.POSEIDON,
332+
),
308333
)
309334

310335

@@ -317,7 +342,11 @@ def abi_types_compiled_contract_and_class_hash() -> Tuple[str, int]:
317342

318343
return (
319344
contract["sierra"],
320-
compute_casm_class_hash(create_casm_class(contract["casm"])),
345+
compute_casm_class_hash(
346+
# TODO(#1659): Use blake
347+
create_casm_class(contract["casm"]),
348+
HashMethod.POSEIDON,
349+
),
321350
)
322351

323352

@@ -349,7 +378,8 @@ async def account_declare_class_hash(
349378
"""
350379

351380
casm_class = create_casm_class(compiled_account_contract_casm)
352-
casm_class_hash = compute_casm_class_hash(casm_class)
381+
# TODO(#1659): Use blake
382+
casm_class_hash = compute_casm_class_hash(casm_class, HashMethod.POSEIDON)
353383
declare_v3_transaction = await account.sign_declare_v3(
354384
compiled_contract=compiled_account_contract,
355385
compiled_class_hash=casm_class_hash,
@@ -365,7 +395,9 @@ async def account_with_validate_deploy_class_hash(
365395
pre_deployed_account_with_validate_deploy: BaseAccount,
366396
) -> int:
367397
contract = load_contract("Account")
368-
casm_class_hash = compute_casm_class_hash(create_casm_class(contract["casm"]))
398+
casm_class_hash = compute_casm_class_hash(
399+
create_casm_class(contract["casm"]), HashMethod.POSEIDON
400+
)
369401

370402
return await declare_account(
371403
pre_deployed_account_with_validate_deploy, contract["sierra"], casm_class_hash

starknet_py/tests/unit/hash/casm_class_hash_test.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ def test_compute_casm_class_hash_with_poseidon(contract, expected_casm_class_has
3232
)['casm']
3333

3434
casm_class = create_casm_class(casm_contract_class_str)
35-
casm_class_hash = compute_casm_class_hash(casm_class)
35+
casm_class_hash = compute_casm_class_hash(casm_class, HashMethod.POSEIDON)
3636
assert casm_class_hash == expected_casm_class_hash_poseidon
3737

3838
@pytest.mark.parametrize(
@@ -51,7 +51,7 @@ def test_precompiled_compute_casm_class_hash_with_poseidon(casm_contract_class_s
5151
)
5252

5353
casm_class = create_casm_class(casm_contract_class_str)
54-
casm_class_hash = compute_casm_class_hash(casm_class)
54+
casm_class_hash = compute_casm_class_hash(casm_class, HashMethod.POSEIDON)
5555
assert casm_class_hash == expected_casm_class_hash_poseidon
5656

5757

0 commit comments

Comments
 (0)