-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
21 additions
and
133 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,147 +1,35 @@ | ||
# Boilerplate for ethereum solidity smart contract development | ||
|
||
## INSTALL | ||
## quickstart | ||
|
||
```bash | ||
yarn | ||
pnpm i | ||
pnpm prepare | ||
pnpm dev | ||
``` | ||
add sepolia eth to an account and add it to .env: | ||
|
||
## TEST | ||
|
||
There are 3 flavors of tests: hardhat, dapptools and forge | ||
|
||
### hardhat | ||
|
||
- One using hardhat that can leverage hardhat-deploy to reuse deployment procedures and named accounts: | ||
|
||
```bash | ||
yarn test | ||
```env | ||
ETH_NODE_URI_SEPOLIA=https://eth-sepolia.g.alchemy.com/v2/v178sXJ0X49qRdgINzyuNbEvKsMXob4W | ||
MNEMONIC_SEPOLIA='FILL THESE IN' | ||
``` | ||
|
||
### [dapptools](https://dapp.tools) | ||
|
||
```bash | ||
dapp test | ||
edit **hardhat.config.ts**, and fill in the address for the simpleOffchainVerifier named account on sepolia: | ||
```javascript | ||
namedAccounts: { | ||
deployer: 0, | ||
simpleERC20Beneficiary: 1, | ||
onRamper: 2, | ||
offRamper: 3, | ||
simpleOffchainVerifier: { | ||
default: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266', | ||
sepolia: 'match this with the mnemonic in the .env' | ||
}, | ||
``` | ||
The latter requires additional step to set up your machine: | ||
Install dapptools (Following instruction [here](https://github.com/dapphub/dapptools#installation)): | ||
## in another shell | ||
```bash | ||
# user must be in sudoers | ||
curl -L https://nixos.org/nix/install | sh | ||
|
||
# Run this or login again to use Nix | ||
. "$HOME/.nix-profile/etc/profile.d/nix.sh" | ||
|
||
curl https://dapp.tools/install | sh | ||
pnpm execute localhost scripts/getBalance.ts | ||
``` | ||
|
||
Then install solc with the correct version: | ||
|
||
```bash | ||
nix-env -f https://github.com/dapphub/dapptools/archive/master.tar.gz -iA solc-static-versions.solc_0_8_9 | ||
``` | ||
|
||
### forge | ||
|
||
```bash | ||
forge test | ||
``` | ||
|
||
This require the installation of forge (see [foundry](https://github.com/gakonst/foundry)) | ||
|
||
## SCRIPTS | ||
|
||
Here is the list of npm scripts you can execute: | ||
|
||
Some of them relies on [./\_scripts.js](./_scripts.js) to allow parameterizing it via command line argument (have a look inside if you need modifications) | ||
<br/><br/> | ||
|
||
### `yarn prepare` | ||
|
||
As a standard lifecycle npm script, it is executed automatically upon install. It generate config file and typechain to get you started with type safe contract interactions | ||
<br/><br/> | ||
|
||
### `yarn format` and `yarn format:fix` | ||
|
||
These will format check your code. the `:fix` version will modifiy the files to match the requirement specified in `.prettierrc.` | ||
<br/><br/> | ||
|
||
### `yarn compile` | ||
|
||
These will compile your contracts | ||
<br/><br/> | ||
|
||
### `yarn void:deploy` | ||
|
||
This will deploy your contracts on the in-memory hardhat network and exit, leaving no trace. quick way to ensure deployments work as intended without consequences | ||
<br/><br/> | ||
|
||
### `yarn test [mocha args...]` | ||
|
||
These will execute your tests using mocha. you can pass extra arguments to mocha | ||
<br/><br/> | ||
|
||
### `yarn coverage` | ||
|
||
These will produce a coverage report in the `coverage/` folder | ||
<br/><br/> | ||
|
||
### `yarn gas` | ||
|
||
These will produce a gas report for function used in the tests | ||
<br/><br/> | ||
|
||
### `yarn dev` | ||
|
||
These will run a local hardhat network on `localhost:8545` and deploy your contracts on it. Plus it will watch for any changes and redeploy them. | ||
<br/><br/> | ||
|
||
### `yarn local:dev` | ||
|
||
This assumes a local node it running on `localhost:8545`. It will deploy your contracts on it. Plus it will watch for any changes and redeploy them. | ||
<br/><br/> | ||
|
||
### `yarn execute <network> <file.ts> [args...]` | ||
|
||
This will execute the script `<file.ts>` against the specified network | ||
<br/><br/> | ||
|
||
### `yarn deploy <network> [args...]` | ||
|
||
This will deploy the contract on the specified network. | ||
|
||
Behind the scene it uses `hardhat deploy` command so you can append any argument for it | ||
<br/><br/> | ||
|
||
### `yarn export <network> <file.json>` | ||
|
||
This will export the abi+address of deployed contract to `<file.json>` | ||
<br/><br/> | ||
|
||
### `yarn fork:execute <network> [--blockNumber <blockNumber>] [--deploy] <file.ts> [args...]` | ||
|
||
This will execute the script `<file.ts>` against a temporary fork of the specified network | ||
|
||
if `--deploy` is used, deploy scripts will be executed | ||
<br/><br/> | ||
|
||
### `yarn fork:deploy <network> [--blockNumber <blockNumber>] [args...]` | ||
|
||
This will deploy the contract against a temporary fork of the specified network. | ||
|
||
Behind the scene it uses `hardhat deploy` command so you can append any argument for it | ||
<br/><br/> | ||
|
||
### `yarn fork:test <network> [--blockNumber <blockNumber>] [mocha args...]` | ||
|
||
This will test the contract against a temporary fork of the specified network. | ||
<br/><br/> | ||
|
||
### `yarn fork:dev <network> [--blockNumber <blockNumber>] [args...]` | ||
|
||
This will deploy the contract against a fork of the specified network and it will keep running as a node. | ||
|
||
Behind the scene it uses `hardhat node` command so you can append any argument for it |