0xSpaceShard / starknet-devnet-rs

A local testnet for Starknet... in Rust
https://0xspaceshard.github.io/starknet-devnet-rs/
MIT License
104 stars 61 forks source link

Replaced_classes of state diff is unpopulated #252

Closed FabijanC closed 3 weeks ago

FabijanC commented 10 months ago

Proof of emptiness: https://github.com/0xSpaceShard/starknet-devnet-rs/blob/eadc64a674d38dd172a4a41cf81af464ae7f31f9/crates/starknet-server/src/api/json_rpc/endpoints.rs#L98

This is how it was implemented in devnet-py: https://github.com/0xSpaceShard/starknet-devnet/blob/e477aa1bbe2348ba92af2a69c32d2eef2579d863/starknet_devnet/util.py#L182

This is how it was tested in devnet-py: https://github.com/0xSpaceShard/starknet-devnet/blob/7ea5a3f9a400d59979380c278adda479b6632812/test/test_replace_class.py#L24

This is what the RPC spec says: https://github.com/starkware-libs/starknet-specs/blob/v0.6.0/api/starknet_api_openrpc.json#L1179

marioiordanov commented 1 month ago

What steps are required to change the class hash of a contract

FabijanC commented 1 month ago

@marioiordanov The only way I know of is by calling the class replacement syscall (hopefully it still exists). Check out this example: https://github.com/0xSpaceShard/starknet-hardhat-example/blob/master/scripts/replace.ts. Find the contract sources of replaceable.cairo and replaced.cairo here (they are in Cairo0, so would require rewriting): https://github.com/0xSpaceShard/starknet-hardhat-example/tree/master/contracts

FabijanC commented 1 month ago

Also in Devnet-py we had a similar test case: https://github.com/0xSpaceShard/starknet-devnet/blob/master/test/test_replace_class.py