77 lines
1.6 KiB
JavaScript
77 lines
1.6 KiB
JavaScript
/**
|
|
* https://github.com/aragon/aragonOS/blob/v4.0.0/truffle-config.js
|
|
*/
|
|
const homedir = require('homedir')
|
|
const path = require('path')
|
|
|
|
const HDWalletProvider = require('truffle-hdwallet-provider')
|
|
const HDWalletProviderPrivkey = require('truffle-hdwallet-provider-privkey')
|
|
|
|
const DEFAULT_MNEMONIC = 'explain tackle mirror kit van hammer degree position ginger unfair soup bonus'
|
|
|
|
const defaultRPC = (network) =>
|
|
`https://${network}.infura.io`
|
|
|
|
const configFilePath = (filename) =>
|
|
path.join(homedir(), `.aragon/${filename}`)
|
|
|
|
const mnemonic = () => {
|
|
try {
|
|
return require(configFilePath('mnemonic.json')).mnemonic
|
|
} catch (e) {
|
|
return DEFAULT_MNEMONIC
|
|
}
|
|
}
|
|
|
|
const settingsForNetwork = (network) => {
|
|
try {
|
|
return require(configFilePath(`${network}_key.json`))
|
|
} catch (e) {
|
|
return { }
|
|
}
|
|
}
|
|
|
|
// Lazily loaded provider
|
|
const providerForNetwork = (network) => (
|
|
() => {
|
|
let { rpc, keys } = settingsForNetwork(network)
|
|
rpc = rpc || defaultRPC(network)
|
|
|
|
if (!keys || keys.length == 0) {
|
|
return new HDWalletProvider(mnemonic(), rpc)
|
|
}
|
|
|
|
return new HDWalletProviderPrivkey(keys, rpc)
|
|
}
|
|
)
|
|
module.exports = {
|
|
networks: {
|
|
development: {
|
|
host: 'localhost',
|
|
port: 7545,
|
|
network_id: '*'
|
|
},
|
|
mainnet: {
|
|
network_id: 1,
|
|
provider: providerForNetwork('mainnet')
|
|
},
|
|
rinkeby: {
|
|
network_id: 4,
|
|
provider: providerForNetwork('rinkeby')
|
|
},
|
|
kovan: {
|
|
network_id: 42,
|
|
provider: providerForNetwork('kovan')
|
|
},
|
|
goerli: {
|
|
network_id: 5,
|
|
provider: providerForNetwork('goerli')
|
|
}
|
|
},
|
|
compilers: {
|
|
solc: {
|
|
version: "0.4.24"
|
|
}
|
|
}
|
|
}
|