* Install open zeppelin contracts * Init foundry in governance * Add wrapped ZRX token * Add governance contracts testing to CI * Set optimizer runs to default * Upgrade to patched version of openzeppelin/contracts * Test stakingakng / unwrapping ZRX * Init npm package * Lint fix, removing lib from gitignore * Add openzeppelin contracts git submodule for foundry * Add vanilla governor contract * Fix reference paths to imported packages * Temporarily switch to using a mocked version of ZRX * Ignore foundry's lib in link checker * Fix a conflict in gitignore between forge lib adn built lib * Upload governance code coverage report to coveralls * Flesh out test scenarios for wrapping/unwrapping * Add basic ERC20 name and symbol tests * Wire in basic timelock controller and governor test setup * Test basic governor properties * Add basic voting power delegation tests * Add proposal execution happy path test * Split ERC20Votes logic between wrapped token and ZeroExVotes contracts * Exclude BaseTest from coverage in coveralls * Add protocol specific governor with produciton governance settings * Add a dedicated instance for the treasury governor This is currently using the default 1 token 1 vote mechanism but will be migrated * Add test for updating governance settings for voting delay, voting period and proposal threshold * Create seperate timelock contract instance for treasury and protocol * Test updating the timlock min delay * Set timelock delay to 2 days for protocol and 1 sec for treasury * Remove timelock from treasury governor * Refactor _checkpointsLookup to return entire Checkpoint instad of just number of votes * Update the totalSupply checkpoints updating logic * Quadratic voting power transfers and delegations * Fix workflow yaml * Initialise ZeroExVotes behind a ERC1967Proxy Test it cannot be reinitialised * Remove obsoleted console.logs from test * Storage pack Checkpoint enum * Remove keeping track of total balances for voting * Switch to using the foundry artifact in test * Fix rebase issue * Add timelock control over the treasury governor * Add test for wrapped token transfer * Emit separate events for changing linear and quadratic voting power * Add the ability to cancel a proposal * Limit the governors' cancel function to security council only * Eject security council after a proposal is cancelled * Add ability for governance to set the security council * Merge the governors test suites into one reusable set of tests * Add an empty test function to base test contract to remove it from coverage reports. Fudge but no other way to ignore it in report * Security council can rollback protocol upgrades * Upgrade to solidity 0.8.19 * Move IZeroExGovernor to src * Abstract Security council interface into its own * Emit events when assigning and ejecting the security council * Use a cast to bytes4 instead of LibBytes Co-authored-by: duncancmt <1207590+duncancmt@users.noreply.github.com> * Writing total supply checkpoints and setup of quorum percentage of quadratic total supply for treasure governor * Add test for transferring tokens when delegating * Rename IZeroExSecurityCouncil to ISecurityCouncil * Add security council restrictions to governors * Remove obsolete overflow check * Improve test coverage * Upgrade open-zeppelin contracts to 4.8.2 * Test delegation by signature * Test non security council requests to rollback protocol changes cannot be executed * Better revert messages * Test correct interfaces are supported * Remove obsoleted funciton * Further test delegation by signature scenario * Split the delegation functionality tests * Add test for initialisation of voting contract * Add test for reading checkpoints * Update code comments * Fix compilation warnings * Run smt checker * Add checkpoint tests * Rename parameter in moveEntireVotingPower to match the one in movePartialVotingPower * Switch moveEntireVotingPower to a more generic moveVotingPower implementation as in the open-zeppelin contracts * Install foundry earlier in CI * Switch movePartialVotingPower to the generic moveVotingPower implementation * Write totalSupplyCheckpoints via the generic _writeCheckpoint * Add threshold for quadratic voting power * Remove autoinserted code by OZ * Add openzeppelin/contracts-upgradable * Add initializable base to Voting contract * Fix terminogy error in natspec * Fix code comment * Remove obsoleted overrides and add a missing modifier to moveVotingPower * Remove amount check Co-authored-by: duncancmt <1207590+duncancmt@users.noreply.github.com> * Fix a calculation error and clean tests * Update thresholds for treasury governor * Fix testShouldNotBeAbleToDelegateWithSignatureAfterExpiry * Update from @duncancmt without "memory-safe" the IR optimizer produces significantly worse code and it disables the stack limit evader Co-authored-by: duncancmt <1207590+duncancmt@users.noreply.github.com> * Add onlyProxy to initializer * Fix quadratic voting weight base * Rename voting parameter for clarity * Make addresses immutable (#680) * Make addresses immutable * Fix linting issues --------- Co-authored-by: elenadimitrova <elena@arenabg.com> * Prevent griefing by a malicious ZeroExVotes upgrade (#681) * Gas optimization * Minimal change to prevent malicious ZeroExVotes from griefing * Add demonstration of griefing upgrade * Fix rebase issues with tests * Fix prettier issues * Add checks to test --------- Co-authored-by: elenadimitrova <elena@arenabg.com> * Rename SecurityCouncil contract * Add timestamp to delegator balance updates * Make quadraticThreshold `immutable` for gas efficiency * Remove the logic for ejecting security council * Switch balance timestamp to be a block number * Test votes migration for adding a new vote weight mechanism (#674) * Add Emacs files to .gitignore * Make some functions unproected to demonstrate a migration * Add example (broken) migration * Add migration test for voting logic * Try to simplify tests * Fix compilation errors * Fix underflow test with new logic * Flesh out migration test for voting * Replace cube root library * Fix stack too deep in coverage --------- Co-authored-by: elenadimitrova <elena@arenabg.com> * Change test case to testFail * Update contracts/governance/test/ZeroExVotesMigration.sol Co-authored-by: duncancmt <1207590+duncancmt@users.noreply.github.com> --------- Co-authored-by: duncancmt <1207590+duncancmt@users.noreply.github.com> Co-authored-by: Duncan Townsend <git@duncancmt.com>
100 lines
6.1 KiB
JSON
100 lines
6.1 KiB
JSON
{
|
|
"private": true,
|
|
"name": "@0x/protocol-repo",
|
|
"engines": {
|
|
"node": ">=6.12"
|
|
},
|
|
"workspaces": [
|
|
"packages/*",
|
|
"contracts/*"
|
|
],
|
|
"scripts": {
|
|
"deps_versions:ci": "node ./node_modules/@0x/monorepo-scripts/lib/deps_versions.js",
|
|
"fix": "wsrun --fast-exit --parallel --exclude-missing -p $PKG -c fix",
|
|
"ganache": "ganache-cli -p 8545 --gasLimit 10000000 --networkId 50 -m \"${npm_package_config_mnemonic}\"",
|
|
"prettier": "prettier --write '**/*.{ts,tsx,json,sol}' --config .prettierrc",
|
|
"prettier:ci": "prettier --list-different '**/*.{ts,tsx,json,sol}' --config .prettierrc",
|
|
"test:installation": "node ./node_modules/@0x/monorepo-scripts/lib/test_installation.js",
|
|
"test:installation:local": "IS_LOCAL_PUBLISH=true node ./node_modules/@0x/monorepo-scripts/lib/test_installation.js",
|
|
"test:publish:ci": "yarn npm-cli-login -u test -p test -e test@example.com -r http://localhost:4873 && IS_LOCAL_PUBLISH=true run-s script:publish test:installation:local",
|
|
"run:publish": "run-s install:all script:prepublish_checks rebuild script:publish",
|
|
"run:publish:local": "IS_LOCAL_PUBLISH=true yarn run:publish",
|
|
"run:publish:gha": "run-s build script:publish:gha",
|
|
"script:prepublish_checks": "node ./node_modules/@0x/monorepo-scripts/lib/prepublish_checks.js",
|
|
"script:publish": "node ./node_modules/@0x/monorepo-scripts/lib/publish.js --repo protocol --doc-gen-config ./doc-gen-config.json",
|
|
"script:publish:gha": "node ./node_modules/@0x/monorepo-scripts/lib/publish.js --repo protocol --auto-commit --no-upload-docs --yes --doc-gen-config ./doc-gen-config.json --prerelease \"${PUBLISH_PRERELEASE}\"",
|
|
"install:all": "yarn install",
|
|
"wsrun": "wsrun",
|
|
"lerna": "lerna",
|
|
"build": "lerna link && wsrun -r --stages --fast-exit --exclude-missing -p $PKG -c build",
|
|
"build:ci": "lerna link && wsrun --fast-exit -r --stages --exclude-missing -p $PKG -c build:ci",
|
|
"build:contracts": "lerna link && wsrun -p ${npm_package_config_contractsPackages} --fast-exit -r --stages --exclude-missing -c build",
|
|
"build:ts": "tsc -b",
|
|
"watch:ts": "tsc -b -w",
|
|
"clean": "wsrun --fast-exit -r --parallel --exclude-missing -p $PKG -c clean",
|
|
"contracts:watch": "wsrun --parallel --exclude-missing -p $PKG -c watch",
|
|
"lint:contracts": "yarn solhint 'contracts/**/*.sol'",
|
|
"remove_node_modules": "lerna clean --yes; rm -rf node_modules",
|
|
"rebuild": "run-s clean build",
|
|
"test": "wsrun --fast-exit --serial --exclude-missing -p $(echo $(echo ${npm_package_config_contractsPackages} ${npm_package_config_nonContractPackages} | tr ' ' '\n' | sort | uniq) ${npm_package_config_ignoreTestsForPackages} | tr ' ' '\n' | sort | uniq -u | tr '\n' ' ') -c test",
|
|
"test:all": "wsrun --fast-exit --serial --exclude-missing -p $PKG -c test",
|
|
"test:contracts": "wsrun --serial -p $(echo ${npm_package_config_contractsPackages} ${npm_package_config_ignoreTestsForPackages} | tr ' ' '\n' | sort | uniq -u | tr '\n' ' ') --fast-exit --exclude-missing -c test",
|
|
"test:contracts:all": "wsrun --serial -p ${npm_package_config_contractsPackages} --fast-exit --exclude-missing -c test",
|
|
"test:links": "yarn check-md --ignore **/forge-std/README.md,**/lib/openzeppelin-contracts,**/node_modules,**/lib",
|
|
"generate_doc": "node ./node_modules/@0x/monorepo-scripts/lib/doc_generate.js --config ./doc-gen-config.json",
|
|
"upload_md_docs": "aws s3 rm --recursive s3://docs-markdown; wsrun --exclude-missing -c s3:sync_md_docs",
|
|
"diff_md_docs:ci": "wsrun --exclude-missing -c diff_docs",
|
|
"test:generate_docs:ci": "for i in ${npm_package_config_packagesWithDocPages}; do yarn generate_doc --package $i || break -1; done;",
|
|
"bundlewatch": "bundlewatch",
|
|
"lint:ts": "wsrun --fast-exit --parallel --exclude-missing -p $PKG -c lint",
|
|
"lint": "yarn lint:ts && yarn lint:contracts",
|
|
"upgrade_tools": "node node_modules/@0x/monorepo-scripts/lib/upgrade_deps.js -p '@0x/abi-gen|@0x/assert|@0x/base-contract|@0x/contracts-gen|@0x/dev-utils|@0x/json-schemas|@0x/monorepo-scripts|@0x/sol-compiler|@0x/sol-doc|@0x/sol-profiler|@0x/sol-resolver|@0x/sol-trace|@0x/sol-tracing-utils|@0x/subproviders|@0x/types|@0x/typescript-typings|@0x/utils|@0x/verdaccio|@0x/web3-wrapper|ethereum-types'",
|
|
"upgrade_deps": "node node_modules/@0x/monorepo-scripts/lib/upgrade_deps.js",
|
|
"verdaccio": "docker run --rm -i -p 4873:4873 0xorg/verdaccio"
|
|
},
|
|
"lint-staged": {
|
|
"**/*.{ts,tsx,json}": [
|
|
"prettier --write"
|
|
],
|
|
"**/*.sol": [
|
|
"prettier --write",
|
|
"solhint --fix"
|
|
]
|
|
},
|
|
"config": {
|
|
"contractsPackages": "@0x/contracts-erc20 @0x/contracts-test-utils @0x/contracts-utils @0x/contracts-zero-ex @0x/contracts-treasury",
|
|
"nonContractPackages": "@0x/contract-wrappers @0x/contract-addresses @0x/contract-artifacts @0x/contract-wrappers-test",
|
|
"ignoreTestsForPackages": "",
|
|
"mnemonic": "concert load couple harbor equip island argue ramp clarify fence smart topic",
|
|
"packagesWithDocPages": "@0x/contract-wrappers",
|
|
"ignoreDependencyVersions": "@types/styled-components @types/node",
|
|
"ignoreDependencyVersionsForPackage": "contract-wrappers"
|
|
},
|
|
"devDependencies": {
|
|
"@0x-lerna-fork/lerna": "3.16.10",
|
|
"@0x/monorepo-scripts": "^3.2.4",
|
|
"@0xproject/npm-cli-login": "^0.0.11",
|
|
"async-child-process": "^1.1.1",
|
|
"check-md": "^1.0.2",
|
|
"coveralls": "^3.0.0",
|
|
"ganache-cli": "6.12.2",
|
|
"husky": "^8.0.3",
|
|
"lerna": "^3.0.0-beta.25",
|
|
"lint-staged": "^13.1.0",
|
|
"npm-run-all": "^4.1.2",
|
|
"prettier": "2.7.1",
|
|
"prettier-plugin-solidity": "^1.0.0",
|
|
"solhint": "^3.3.7",
|
|
"solhint-plugin-prettier": "^0.0.5",
|
|
"source-map-support": "^0.5.6",
|
|
"typescript": "4.6.3",
|
|
"wsrun": "^5.2.4"
|
|
},
|
|
"resolutions": {
|
|
"**/bignumber.js": "^9.0.2"
|
|
},
|
|
"dependencies": {
|
|
"@openzeppelin/contracts": "^4.8.1"
|
|
}
|
|
}
|