From 92ca91f6dc3df44bd10a21a2dff8509dfd7d100d Mon Sep 17 00:00:00 2001 From: Richard Meissner Date: Mon, 15 Mar 2021 23:04:53 +0100 Subject: [PATCH] Update audit report and readme (#13) --- README.md | 7 ++++--- docs/GnosisDaoRealitioModuleMar2021.pdf | Bin 321791 -> 324308 bytes hardhat.config.ts | 4 ++-- src/tasks/setup.ts | 24 ++++++++++++++++++++++++ 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index d718813..ff67dd6 100644 --- a/README.md +++ b/README.md @@ -99,15 +99,16 @@ The contracts have been developed with [Solidity 0.8.0](https://github.com/ether - `yarn build` - `yarn hardhat --network rinkeby setup --dao --oracle --cooldown 60 --timeout 30` +- `yarn hardhat --network rinkeby verify-etherscan --module --dao --oracle --cooldown 60 --timeout 30` - Enable module (e.g. with transaction builder and abi from `0x34CfAC646f301356fAa8B21e94227e3583Fe3F5F`) - `yarn hardhat --network rinkeby addProposal --module --proposal-file sample_proposal.json` - Resolve oracle (e.g. answer question on Rinkeby https://reality.eth.link/app/) -- `yarn hardhat --network rinkeby executeProposal --module --question --proposal-file sample_proposal.json` +- `yarn hardhat --network rinkeby executeProposal --module --proposal-file sample_proposal.json` ### Audits An audit has been performed by the [G0 group](https://github.com/g0-group). -All issues and notes of the audit have been addressed in commit [4780fbdb78dd0f837f8d3f0b252e83ee11792c87](https://github.com/gnosis/dao-module/commit/4780fbdb78dd0f837f8d3f0b252e83ee11792c87). +All issues and notes of the audit have been addressed in commit [7a5244d0a0a70b023d23af59659e0c055be7cca2](https://github.com/gnosis/dao-module/commit/7a5244d0a0a70b023d23af59659e0c055be7cca2). -The audit results are available as a pdf in [this repo](./docs/GnosisDaoRealitioModuleMar2021.pdf) or on the [g0-group repo](https://github.com/g0-group/Audits/blob/e53a1fcd8dbaa3ab9d49cd8a840e68c2951aca6c/GnosisDaoRealitioModuleMar2021.pdf). +The audit results are available as a pdf in [this repo](./docs/GnosisDaoRealitioModuleMar2021.pdf) or on the [g0-group repo](https://github.com/g0-group/Audits/blob/4e172e8b44012c6bf2346e9925df5e0f27a40d7a/GnosisDaoRealitioModuleMar2021.pdf). diff --git a/docs/GnosisDaoRealitioModuleMar2021.pdf b/docs/GnosisDaoRealitioModuleMar2021.pdf index 93e92f76e0f9ae525d22597bfea141cb846dcc84..c1604288018e4c3f4422e43d7a4274f8cd12f369 100644 GIT binary patch delta 26620 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

BBd_oiJ2CNfg6Wu!O)@!cFRRGJJ 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 diff --git a/hardhat.config.ts b/hardhat.config.ts index d5077a7..62dcd09 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -16,7 +16,7 @@ const argv = yargs // Load environment variables. dotenv.config(); -const { INFURA_KEY, MNEMONIC, MY_ETHERSCAN_API_KEY, PK } = process.env; +const { INFURA_KEY, MNEMONIC, ETHERSCAN_API_KEY, PK } = process.env; import "./src/tasks/setup"; import "./src/tasks/proposals"; @@ -73,6 +73,6 @@ export default { timeout: 2000000, }, etherscan: { - apiKey: MY_ETHERSCAN_API_KEY, + apiKey: ETHERSCAN_API_KEY, }, }; diff --git a/src/tasks/setup.ts b/src/tasks/setup.ts index 1e1ecbc..ae26314 100644 --- a/src/tasks/setup.ts +++ b/src/tasks/setup.ts @@ -26,6 +26,30 @@ task("setup", "Provides the clearing price to an auction") console.log("Module deployed to:", module.address); }); +task("verify-etherscan", "Verifies the contract on etherscan") + .addParam("module", "Address of the module", undefined, types.string) + .addParam("dao", "Address of the DAO (e.g. Safe)", undefined, types.string) + .addParam("oracle", "Address of the oracle (e.g. Realitio)", undefined, types.string) + .addParam("timeout", "Timeout in seconds that should be required for the oracle", 48 * 3600, types.int, true) + .addParam("cooldown", "Cooldown in seconds that should be required after a oracle provided answer", 24 * 3600, types.int, true) + .addParam("expiration", "Time duration in seconds for which a positive answer is valid. After this time the answer is expired", 7 * 24 * 3600, types.int, true) + .addParam("bond", "Minimum bond that is required for an answer to be accepted", "0", types.string, true) + .addParam( + "template", + "Template that should be used for proposal questions (See https://github.com/realitio/realitio-dapp#structuring-and-fetching-information)", + "0x000000000000000000000000000000000000000000000000000000000000002d", + types.string, + true + ) + .setAction(async (taskArgs, hardhatRuntime) => { + await hardhatRuntime.run("verify", { + address: taskArgs.module, + constructorArgsParams: [ + taskArgs.dao, taskArgs.oracle, `${taskArgs.timeout}`, `${taskArgs.cooldown}`, `${taskArgs.expiration}`, `${taskArgs.bond}`, taskArgs.template + ] + }) + }); + task("createDaoTemplate", "Creates a question template on the oracle address") .addParam("oracle", "Address of the oracle (e.g. Realitio)", undefined, types.string) .addParam(