The CLI allows you to deploy your contract to State Space Workbench from within your Hardhat or Foundry project.
When should I use the State Space CLI?
Use the CLI if any of the following apply:
Using Foundry or Hardhat project
Using a deployment script
Multiple interoperating contracts
Large or complex codebases
Iterating and testing code changes
Run the init command to initialize your project and create the state-space.toml configuration fiels.
Copy
state-space init
It should look like this:
state-space.toml
Copy
# Sets the name of the project. # # The project is created if it does not already exist. project = "Project MyToken" # If using State Space in a team, specify the team identifier. # By default, your personal account will be used. team = "my-team" # Sets the primary framework to use. # # When setting a framework, contract sources and solc settings are # automatically used when pushing code to State Space. # # Optional. Supports "foundry" or "hardhat". framework = "foundry" # Specify paths to solc json output files. # If using a framework, this usually isn't necessary. # artifacts = [] # Defines a deployment # # Deployments are a set of concrete transactions and accounts. # They are used as initial states when exploring your state space. # # Deployments are recorded by running a script against a local EVM. # Deployments are currently only supported when using a framework. # [deployment.Main] # Command is a list of strings representing the command to run when # recording this deployment. Ensure that your RPC endpoint points to # localhost:8545. # command = ["forge", "script", ...] # When using Foundry scripts, the scripts property may be used as a # shorthand alternative to the command property. # The RPC url does not need to be specified when using this form. # scripts = [ # "name of or path to Foundry script", # ] # When using Hardhat's Ignition, the modules property may be used as a # shorthand alternative to the command property. # The RPC url does not need to be specified when using this form. # modules = [ # "path to Ignition module", # ] # Specify the number of externally owned accounts (wallets) to use # in this deployment # accounts = 3
Deploy your project to state space by running the push command:
Copy
# execute command in terminalstate-space push
Make sure your code successfully compiles before running the push command.
You will be provided a link to login using your State Space credentials.After you authenticate, the CLI will compile and deploy your code to State Space. Depending on the size of your codebase, they may take a few minutes.Login to State Space Workbench and open your project from the home page.Please contact us if you experience any issues.