This project was scaffolded with zksync-cli.
/contracts
: Contains solidity smart contracts./deploy
: Scripts for contract deployment and interaction./test
: Test files.hardhat.config.ts
: Configuration settings.
npm run compile
: Compiles contracts.npm run deploy
: Deploys theGreeter
contract using the script in/deploy/deploy.ts
.npm run deploy:paymaster
: Deploys theGeneralPaymaster
contract using the script in/deploy/deploy.ts
.npm run interact
: Interacts with the deployed contract using/deploy/interact.ts
.npm run test
: Tests the contracts.
Note: Both npm run deploy
and npm run interact
are set in the package.json
. You can also run your files directly, for example: npx hardhat deploy-zksync --script deploy.ts
To keep private keys safe, this project pulls in environment variables from .env
files. Primarily, it fetches the wallet's private key.
Rename .env.example
to .env
and fill in your private key:
WALLET_PRIVATE_KEY=your_private_key_here...
hardhat.config.ts
comes with a list of networks to deploy and test contracts. Add more by adjusting the networks
section in the hardhat.config.ts
. To make a network the default, set the defaultNetwork
to its name. You can also override the default using the --network
option, like: hardhat test --network dockerizedNode
.
The config is currently set to connect to the inMemoryNode
.
To deploy to the inMemoryNode
, start a local node with zksync-cli dev start
or era_test_node run
.
Running npm run test
by default runs the ZKsync In-memory Node provided by the @matterlabs/hardhat-zksync-node tool.
Important: ZKsync In-memory Node currently supports only the L2 node. If contracts also need L1, use another testing environment like Dockerized Node. Refer to test documentation for details.
This project is under the MIT license.