diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b5f192e..fe49dd9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,7 +8,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: - node-version: 15 + node-version: 14 - uses: actions/cache@v2 with: path: '**/node_modules' diff --git a/.nvmrc b/.nvmrc index c4aad5d..e038d63 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v15.6.0 +v14.17.4 \ No newline at end of file diff --git a/docs/setup_guide.md b/docs/setup_guide.md index 1320714..817a141 100644 --- a/docs/setup_guide.md +++ b/docs/setup_guide.md @@ -15,23 +15,23 @@ The first step is to deploy the module. Every Safe will have their own module. T ### Deploying the module -Hardhat tasks can be used to deploy a delay-module instance. There are two different tasks to deploy the module, the first one is through a normal deployment and passing arguments to the constructor (with the task `setup`), or, deploy the Module through a [Minimal Proxy Factory](https://eips.ethereum.org/EIPS/eip-1167) and save on gas costs (with the task `factory-setup`) - In rinkeby the address of the Proxy Factory is: `0xd067410a85ffC8C55f7245DE4BfE16C95329D232` and the Master Copy of the Delay Module: `0x3cc7aBD1908906e2102D302249c82d083975e1EF`. +Hardhat tasks can be used to deploy a delay-module instance. There are two different tasks to deploy the module, the first one is through a normal deployment and passing arguments to the constructor (with the task `setup`), or, deploy the Module through a [Minimal Proxy Factory](https://eips.ethereum.org/EIPS/eip-1167) and save on gas costs (with the task `factorySetup`) - In rinkeby the address of the Proxy Factory is: `0x569F2e024D0aD6bBfBd8135097DFa7D0641Ae79b` and the Master Copy of the Delay Module: `0xAe78DF7a4184917dA49f7fCA6139f924A79D0488`. - These setup tasks requires the following parameters: `dao` (the address of the Safe). There are also optional parameters (cooldown and expiration, by default they are set to 24 hours and 7 days, respectively), for more information run `yarn hardhat setup --help` or `yarn hardhat factory-setup --help`. + These setup tasks requires the following parameters: `dao` (the address of the Safe). There are also optional parameters (cooldown and expiration, by default they are set to 24 hours and 7 days, respectively), for more information run `yarn hardhat setup --help` or `yarn hardhat factorySetup --help`. An example for this on Rinkeby would be: -`yarn hardhat --network rinkeby setup --dao ` +`yarn hardhat --network rinkeby setup --owner --executor ` or -`yarn hardhat --network rinkeby factory-setup --factory --mastercopy --dao ` +`yarn hardhat --network rinkeby factorySetup --factory --mastercopy --owner --executor ` This should return the address of the deployed delay-module. For this guide we assume this to be `0x4242424242424242424242424242424242424242` Once the module is deployed you should verify the source code (Note: If you used the factory deployment the contract should be already verified). If you use a network that is Etherscan compatible and you configure the `ETHERSCAN_API_KEY` in your environment you can use the provided hardhat task to do this. An example for this on Rinkeby would be: -`yarn hardhat --network rinkeby verifyEtherscan --module 0x4242424242424242424242424242424242424242 --dao ` +`yarn hardhat --network rinkeby verifyEtherscan --module 0x4242424242424242424242424242424242424242 --owner --executor ` ### Enabling the module diff --git a/src/tasks/setup.ts b/src/tasks/setup.ts index 6f41053..65a2878 100644 --- a/src/tasks/setup.ts +++ b/src/tasks/setup.ts @@ -19,7 +19,7 @@ task("setup", "Deploys a SafeDelay module") console.log("Module deployed to:", module.address); }); -task("factory-setup", "Deploys a SafeDelay module through a proxy") +task("factorySetup", "Deploys a SafeDelay module through a proxy") .addParam("factory", "Address of the Proxy Factory", undefined, types.string) .addParam("mastercopy", "Address of the Delay Module Master Copy", undefined, types.string) .addParam("owner", "Address of the owner", undefined, types.string)