Distinguish class declaration from Starknet contract deployment
A successful DECLARE transaction makes a contract class available on a Starknet network. It does not give a wallet an instance address to use as a call target.
Track the class and instances independently
Read the declared class hash and confirm the declaration on the intended chain. When a deployer later instantiates that class, record the resulting contract address and constructor inputs separately from the class declaration.
DECLARE class H → class available on network N
instantiate H twice with distinct salts → instances A and B
A and B in the example can use the same code and still have different owners, balances and storage. Call a getter at the chosen instance address and use its class hash to select the appropriate interface.
Check class availability on each network
The same class hash in a local build does not prove declaration on another chain. Verify target-chain class availability before deployment. Also distinguish a class hash from the compiled class hash carried by modern declaration transactions. docs.starknet.io Starknet documentation