Hardhat plugin for publishing Aragon apps to Aragon Package Manager.
This plugin requires:
yarn add --dev @1hve/hardhat-aragon @nomiclabs/hardhat-ethers ethers hardhat-deploy
And 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'This plugin provides the publish task, which allows you to publish an Aragon app to the Aragon Package Manager.
hardhat [GLOBAL HARDHAT OPTIONS] publish --contract <STRING> [--dry-run] [--only-content] [--skip-app-build] [--skip-validation] bump [...constructorArgs]--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.
-
bump: Type of bump (major, minor or patch) or semantic version
-
constructorArgs: Constructor arguments for the app contract. (default:
[])
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',
...
},
},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 defaulturlishttp://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.