-
Notifications
You must be signed in to change notification settings - Fork 8
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
14 changed files
with
542 additions
and
161 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 |
---|---|---|
|
@@ -63,3 +63,6 @@ typings/ | |
# locks | ||
package-lock.json | ||
|
||
# Mnemonics and keys | ||
.secrets.js | ||
|
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
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
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 |
---|---|---|
@@ -0,0 +1,24 @@ | ||
/** | ||
* Compiler settings consumed by truffle-config.js | ||
*/ | ||
|
||
let compilers = {}; | ||
|
||
// Travis sets CI to true by default | ||
if (process.env.CI){ | ||
compilers = { | ||
solc: { | ||
version: "0.4.24", | ||
docker: true, | ||
settings: { | ||
optimizer: { | ||
enabled: false, | ||
runs: 200 | ||
}, | ||
evmVersion: "byzantium" | ||
} | ||
}, | ||
} | ||
} | ||
|
||
module.exports = compilers; |
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 |
---|---|---|
@@ -0,0 +1,55 @@ | ||
const t = ' '; | ||
const log = console.log; | ||
|
||
class PermissionsLogger { | ||
|
||
constructor(verbose){ | ||
this.verbose = verbose || false; | ||
} | ||
|
||
start(){ | ||
if (!this.verbose) return; | ||
|
||
log(`${t}Initializing registry contracts...`); | ||
log(`${t}----------------------------------`); | ||
} | ||
|
||
finish(){ | ||
if (!this.verbose) return; | ||
|
||
log(); | ||
log(`${t}> Initialization complete`); | ||
} | ||
|
||
setAuthority(contract){ | ||
if (!this.verbose) return; | ||
|
||
log(`${t}* Set WhitelistAuthority as authority for ${contract.constructor.contractName}`); | ||
} | ||
|
||
setDep(contract,type){ | ||
if (!this.verbose) return; | ||
|
||
log(`${t}* Set ${contract.constructor.contractName} as ${type} for PackageIndex`); | ||
} | ||
|
||
setCanCall(caller, target, method){ | ||
if (!this.verbose) return; | ||
|
||
log(`${t}* Authorized ${caller.constructor.contractName} to call: ${target.constructor.contractName}:${method}`) | ||
} | ||
|
||
setAnyoneCanCall(target, method){ | ||
if (!this.verbose) return; | ||
|
||
log(`${t}* Authorized anyone to call ${target.constructor.contractName}:${method}`) | ||
} | ||
|
||
newline(){ | ||
if (!this.verbose) return; | ||
log(); | ||
} | ||
} | ||
|
||
module.exports = PermissionsLogger; | ||
|
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 |
---|---|---|
@@ -0,0 +1,45 @@ | ||
// Mocha configs consumed by truffle-config.js, toggled by process.env.<MODE>. | ||
// Idea borrowed from AragonOS. | ||
|
||
/** | ||
* Run mocha with gas analytics: env: GAS_REPORTER | ||
* @type {Object} | ||
*/ | ||
const mochaGasSettingsShell = { | ||
reporter: 'eth-gas-reporter', | ||
reporterOptions : { | ||
onlyCalledMethods: true, | ||
} | ||
} | ||
|
||
/** | ||
* Run mocha with gas usage analytics - output to docs: env: GAS_DOCS | ||
* @type {Object} | ||
*/ | ||
const mochaGasSettingsDocs = { | ||
reporter: 'eth-gas-reporter', | ||
reporterOptions : { | ||
onlyCalledMethods: true, | ||
rst: true, | ||
rstTitle: 'Appendix: Gas Usage', | ||
outputFile: 'docs/Gas.rst', | ||
noColors: true | ||
} | ||
} | ||
|
||
/** | ||
* Run mocha filtering for tests with `geth` in the description | ||
* @type {Object} | ||
*/ | ||
const mochaGeth = { | ||
grep: "geth", | ||
} | ||
|
||
// Assign | ||
let mochaSettings = {}; | ||
|
||
if (process.env.GAS_REPORTER) mochaSettings = mochaGasSettingsShell | ||
else if (process.env.GAS_DOCS) mochaSettings = mochaGasSettingsDocs | ||
else if (process.env.NETWORK === 'geth') mochaSettings = mochaGeth | ||
|
||
module.exports = mochaSettings |
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 |
---|---|---|
@@ -0,0 +1,170 @@ | ||
const PermissionsLogger = require('./logger'); | ||
const util = require('util'); | ||
|
||
async function setPermissions( | ||
authority, | ||
packageIndex, | ||
packageDB, | ||
releaseDB, | ||
releaseValidator, | ||
verbose | ||
){ | ||
|
||
const logger = new PermissionsLogger(verbose); | ||
|
||
logger.start(); | ||
|
||
await packageIndex.setAuthority(authority.address); | ||
logger.setAuthority(packageIndex); | ||
|
||
await packageDB.setAuthority(authority.address); | ||
logger.setAuthority(packageDB); | ||
|
||
await releaseDB.setAuthority(authority.address); | ||
logger.setAuthority(releaseDB); | ||
|
||
logger.newline(); | ||
|
||
await packageIndex.setPackageDb(packageDB.address); | ||
logger.setDep(packageDB, 'database') | ||
|
||
await packageIndex.setReleaseDb(releaseDB.address); | ||
logger.setDep(releaseDB, 'database'); | ||
|
||
await packageIndex.setReleaseValidator(releaseValidator.address); | ||
logger.setDep(releaseValidator, 'validator'); | ||
|
||
logger.newline(); | ||
|
||
// ReleaseDB | ||
const setVersion = releaseDB | ||
.abi | ||
.find(item => item.name === 'setVersion') | ||
.signature; | ||
|
||
const setRelease = releaseDB | ||
.abi | ||
.find(item => item.name === 'setRelease') | ||
.signature; | ||
|
||
const updateLatestTree = releaseDB | ||
.abi | ||
.find(item => item.name === 'updateLatestTree') | ||
.signature; | ||
|
||
// PackageDB | ||
const setPackage = packageDB | ||
.abi | ||
.find(item => item.name === 'setPackage') | ||
.signature; | ||
|
||
const setPackageOwner = packageDB | ||
.abi | ||
.find(item => item.name === 'setPackageOwner') | ||
.signature; | ||
|
||
// PackageIndex | ||
const release = packageIndex | ||
.abi | ||
.find(item => item.name === 'release') | ||
.signature; | ||
|
||
|
||
const transferPackageOwner = packageIndex | ||
.abi | ||
.find(item => item.name === 'transferPackageOwner') | ||
.signature; | ||
|
||
// ReleaseDB | ||
await authority.setCanCall( | ||
packageIndex.address, | ||
releaseDB.address, | ||
setRelease, | ||
true | ||
); | ||
|
||
logger.setCanCall( | ||
packageIndex, | ||
releaseDB, | ||
'setRelease' | ||
); | ||
|
||
// PackageDB | ||
await authority.setCanCall( | ||
packageIndex.address, | ||
packageDB.address, | ||
setPackage, | ||
true | ||
); | ||
|
||
logger.setCanCall( | ||
packageIndex, | ||
packageDB, | ||
'setPackage' | ||
); | ||
|
||
await authority.setCanCall( | ||
packageIndex.address, | ||
packageDB.address, | ||
setPackageOwner, | ||
true | ||
); | ||
|
||
logger.setCanCall( | ||
packageIndex, | ||
packageDB, | ||
'setPackageOwner' | ||
); | ||
|
||
logger.newline(); | ||
|
||
await authority.setAnyoneCanCall( | ||
releaseDB.address, | ||
setVersion, | ||
true | ||
); | ||
|
||
logger.setAnyoneCanCall( | ||
releaseDB, | ||
'setVersion' | ||
); | ||
|
||
await authority.setAnyoneCanCall( | ||
releaseDB.address, | ||
updateLatestTree, | ||
true | ||
); | ||
|
||
logger.setAnyoneCanCall( | ||
releaseDB, | ||
'updateLatestTree' | ||
); | ||
|
||
|
||
// PackageIndex | ||
await authority.setAnyoneCanCall( | ||
packageIndex.address, | ||
release, | ||
true | ||
); | ||
|
||
logger.setAnyoneCanCall( | ||
packageIndex, | ||
'release' | ||
); | ||
|
||
await authority.setAnyoneCanCall( | ||
packageIndex.address, | ||
transferPackageOwner, | ||
true | ||
); | ||
|
||
logger.setAnyoneCanCall( | ||
packageIndex, | ||
'transferPackageOwner' | ||
); | ||
|
||
logger.finish(); | ||
} | ||
|
||
module.exports = setPermissions; |
Oops, something went wrong.