@0xgabi/hardhat-aragon v0.1.0
Aragon Hardhat plugin
Hardhat plugin for publishing Aragon apps to Aragon Package Manager.
Required plugins
This plugin requires:
Installation
yarn add --dev @1hve/hardhat-aragon @nomiclabs/hardhat-ethers ethers hardhat-deployAnd add the following statement to your hardhat.config.js:
require('@1hive/hardhat-aragon')
require('@nomiclabs/hardhat-ethers')
require('hardhat-deploy')Or, if you are using TypeScript, add this to your hardhat.config.ts:
import '@1hive/hardhat-aragon'
import '@nomiclabs/hardhat-ethers'
import 'hardhat-deploy'Tasks
This plugin provides the publish task, which allows you to publish an Aragon app to the Aragon Package Manager.
Usage
hardhat [GLOBAL HARDHAT OPTIONS] publish --contract <STRING> [--dry-run] [--only-content] [--skip-app-build] [--skip-validation] bump [...constructorArgs]Options
--contract: Contract address previously deployed.--dry-run: Output tx data without broadcasting.--only-content: Prevents contract compilation, deployment, and artifact generation.--skip-app-build: Skip application build.--skip-validation: Skip validation of artifacts files.
Positional Arguments
bump: Type of bump (major, minor or patch) or semantic version
constructorArgs: Constructor arguments for the app contract. (default:
[])
Config extensions
You need to add the following aragon config to your hardhat.config file:
module.exports = {
networks: {
mainnet: { ... }
},
aragon: {
appEnsName: string // counter.open.aragonpm.eth
appContractName: string // Counter
}
};Additionaly you can also configure the optional aragon and ipfs configs:
module.exports = {
networks: {
mainnet: { ... }
},
aragon: {
appEnsName: string // counter.open.aragonpm.eth
appContractName: string // Counter
appRoles: Role[]
appSrcPath: string // app/
appBuildOutputPath: string // dist/
appBuildScript: string // build/
ignoreFilesPath: string // .
},
ipfs: {
url: string // https://ipfs.infura.io:5001/
gateway: string // https://ipfs.io/
pinata: {
key: "YOUR_PINATA_API_KEY"
secret: "YOUR_PINATA_API_SECRET_KEY"
}
}Where Role has the interface:
interface Role {
name: string // 'Create new payments'
id: string // 'CREATE_PAYMENTS_ROLE'
params: string[] // ['Token address', ... ]
}Finally the plugin also extend the hardhat network configuration to allow a custom appEnsName and ensRegistry per network:
networks: {
hardhat: {
ensRegistry: '0xaafca6b0c89521752e559650206d7c925fd0e530',
},
rinkeby: {
appEnsName: 'counter.aragonpm.eth',
ensRegistry: '0x98df287b6c145399aaa709692c8d308357bc085d',
...
},
},Environment extensions
This plugins adds an ipfs object to the Hardhat Runtime Environment.
This object has the same API that ipfs-http-client.
This object is already initialized and ready to interact with the IPFS network. You can configure the node url to connect with on the hardhat.config file.
Note The plugin default
urlishttp://localhost:5001/assuming you have a local IPFS node at that endpoint running. You can configure a customurlnode likehttps://ipfs.infura.io:5001/if you don't want to run your own node.