Overview
TheSmartContractManager is a high-level manager for deploying contracts using CREATE2, executing contract calls, and orchestrating contract state for tests. It handles the complexity of contract deployment and interaction, allowing you to focus on test logic rather than blockchain plumbing.
Constructor
string
required
Path to the root of the project (used to locate contract artifacts)
Properties
string
Root directory for artifact lookup
PublicClient
viem public client (initialized in
initialize)WalletClient
viem wallet client (initialized in
initialize)Map<Address, Abi>
Map of deployed contract addresses to their ABIs
ProxyDeployer
Instance of ProxyDeployer for managing the deployment proxy
Methods
initialize()
LocalNodeManager
required
The local node manager instance
deployContract()
ContractDeployment
required
Contract deployment configuration
executeCall()
ContractCall
required
Contract call configuration
setContractState()
SetupConfig
required
Setup configuration with deployments and calls
LocalNodeManager
required
The local node manager instance
predictContractAddress()
Hex
required
32-byte salt for CREATE2
Hex
required
Contract bytecode
readonly unknown[]
required
Constructor arguments
Contract Artifacts
The SmartContractManager loads contract artifacts from your project’s build directory. It supports:- Foundry: Looks for artifacts in
out/directory - Hardhat: Looks for artifacts in
artifacts/directory
Artifact Structure
Artifacts should contain:Complete Examples
Basic Token Deployment
Best Practices
1
Initialize before use
Always call
initialize() before using other methods2
Use deterministic salts
Generate salts based on test names or contract purposes for reproducibility
3
Handle deployment errors
Wrap deployments in try-catch blocks to handle failures gracefully
4
Clean up resources
Always stop the node after tests complete
Tips and Tricks
The SmartContractManager keeps track of deployed contracts’ ABIs, making it easier to interact with them later.
See Also
- ProxyDeployer - Lower-level proxy management