Skip to main content

Hardhat and Foundry

The eSpace Testnet allows anyone to deploy a smart contract on eSpace. In this tutorial, you will learn how to deploy a contract on eSpace Testnet using common tools for developing on Ethereum. This demo repo illustrates contract deployment with Hardhat and Foundry.

Before you start deploying the contract, you need to request test tokens from a eSpace faucet.

Deploying smart contracts with Hardhat

  1. If you haven't already, install nodejs and yarn.

  2. Clone the repo and install dependencies:

    git clone
    cd espace-contract-guide
    yarn install
  3. Create a .env file following the example .env.example in the root directory. Change PRIVATE_KEY to your own account private key in the .env.

  4. Run yarn compile to compile the contract.

  5. Run yarn deploy:eSpaceTestnet to deploy the contract on the eSpace Testnet.

  6. Run yarn test for hardhat tests.

Video Guides

To learn more about smart contract deployment using Hardhat, please refer to the following videos:

Deploying smart contracts with Foundry

  1. Clone the repo:

    git clone
    cd espace-contract-guide
  2. Install Foundry:

    curl -L | bash
  3. Run forge build to build the project.

  4. Deploy your contract with Foundry:

    forge create --rpc-url \
    --value <lock_amount> \
    --constructor-args <unlock_time> \
    --private-key <your_private_key> \
    --legacy \
    • <lock_amount> is the amount of test CFX to be locked in the contract. Try setting this to some small amount, like 0.0000001ether.
    • <unlock_time> is the Unix timestamp after which the funds locked in the contract will become available for withdrawal. Try setting this to some Unix timestamp in the future, like 1730390400 (this Unix timestamp corresponds to October 1, 2024).

    For example:

    forge create --rpc-url \
    --value 0.00000000002ether \
    --constructor-args 1696118400 \
    --private-key 0xabc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc1 \
    --legacy contracts/Lock.sol:Lock


Invalid parameters: tx

You may encounter error messages like Invalid parameters: tx when deploying a contract. Please make sure that your deploy account has enough test tokens to deploy the contract. You can request test tokens from the eSpace faucet. For more possible reasons, please refer to the Sending Transaction Errors and sendRawTransaction RPC method error messages


Thank you for participating in and developing on the eSpace Testnet! If you encounter any issues, join our Discord and ask us in it.