yarn build
– Compile Contractsyarn test
– Run Testsyarn deploy
– Run Deploy Scriptsyarn test:watch
– Run Tests in Watch Mode (run when files change)yarn coverage
– Display Code Coverageyarn typechain
– Update Types
contracts/
contains all Solidity files to get your project started.env*
is for managing environment variables, especially deployment keysdeploy/
is for deployment scripts using hardhat-deploydeployments/
contains an archived list of deployed contracts, grouped by networktest/
is for testing your contracts
For example, run the following command to generate a new random wallet:
echo "PRIVATE_KEY=0x$(openssl rand -hex 32)" > .env.production
PRIVATE_KEY
refers to your wallet used for deploying and upgrading the contracts.- Storing the details in
.env.production
creates a new environment named production.
npx dotenvx encrypt
The output will look similar to this:
$ npx dotenvx encrypt
Update available 0.20.0 → 0.32.0 [see changelog](dotenvx.com/changelog)
✔ encrypted to .env.vault (.env,.env.example,.env.production)
ℹ commit .env.vault to code: [git commit -am ".env.vault"]
✔ key added to .env.keys (DOTENV_KEY_PRODUCTION)
ℹ push .env.keys up to hub: [dotenvx hub push]
ℹ run [DOTENV_KEY='dotenv://:key_d2765b31f83ee454c369fb5a29b72d7bf4cdd08e2280618f892b24afb209671d@dotenvx.com/vault/.env.vault?environment=production' dotenvx run -- yourcommand] to test decryption locally
- This process also inserts a new line into
.env.vault
containing the encrypted details. - You may now delete
.env.production
. - A line is added to
.env.keys
with the decryption key; this should never be added to your git repository. - Ensure you back up your private key!
Deploy on the Vechain TestNet to check for errors using the previously mentioned DOTENV_KEY
:
DOTENV_KEY='...' yarn deploy --network vechain_testnet
The output should resemble the following:
[dotenvx@0.20.0] injecting env (1) from encrypted .env.vault
[dotenv@16.4.5][INFO] Loading env from encrypted .env.vault
Generating typings for: 35 artifacts in dir: typechain-types for target: ethers-v6
Successfully generated 100 typings!
Compiled 35 Solidity files successfully (evm target: paris).
Deploying from 0x984A76543E49E751F651A65237bA1C4d7618B4A2
deploying "MyTokenUpgradeable_Implementation" (tx: 0xc846090c7feb341d407aca649b486d32c0f9a3e3952f8852e0c2f5626e3a443d)...: deployed at 0xF1A74a7B5c2B03Ae5951aAe728FA099c07dAb5A1 with 3717093 gas
deploying "MyTokenUpgradeable_Proxy" (tx: 0x4861168921f7f8ec3a665aedeb6645f60e590e61c319de68465e010afd132a4b)...: deployed at 0x49f8e1F81dF3da4d3313B429ba29C474Df12452a with 654862 gas
MyTokenUpgradeable is available at 0x49f8e1F81dF3da4d3313B429ba29C474Df12452a
Please take note of this line:
Deploying from 0x984A76543E49E751F651A65237bA1C4d7618B4A2
This is your deployment wallet, which will require VTHO to deploy the contracts. You must send VTHO to its address to enable deployment.
Should your contract undergo changes, simply re-run the deployment script, and it will handle the upgrade process for you. For more information on deployment scripts, visit hardhat-deploy.
DOTENV_KEY='...' yarn deploy --network vechain_mainnet
If the deployment fails with:
...403 post transactions: tx rejected: insufficient energy {"code":-32000} ProviderRpcError: 403 post transactions: tx rejected: insufficient energy
...then your deployment wallet requires more VTHO.