@0xgabi/hardhat-aragon 中文文档教程
Aragon Hardhat plugin
用于将 Aragon 应用程序发布到 Aragon Package Manager 的 Hardhat 插件。
Required plugins
此插件需要:
Installation
yarn add --dev @1hve/hardhat-aragon @nomiclabs/hardhat-ethers ethers hardhat-deploy
并将以下语句添加到您的 hardhat.config.js:
require('@1hive/hardhat-aragon')
require('@nomiclabs/hardhat-ethers')
require('hardhat-deploy')
或者,如果您使用的是 TypeScript,请将其添加到您的 hardhat.config.ts:
import '@1hive/hardhat-aragon'
import '@nomiclabs/hardhat-ethers'
import 'hardhat-deploy'
Tasks
此插件提供了 publish
任务,它允许您将 Aragon 应用程序发布到 Aragon 包管理器。
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:bump 类型(主要、次要或补丁)或语义版本
constructorArgs:应用程序合约的构造函数参数。 (默认值:
[]
)
Config extensions
您需要将以下 aragon
配置添加到您的 hardhat.config
文件:
module.exports = {
networks: {
mainnet: { ... }
},
aragon: {
appEnsName: string // counter.open.aragonpm.eth
appContractName: string // Counter
}
};
此外,您还可以配置可选的 < code>aragon 和 ipfs
配置:
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"
}
}
Role
有接口:
interface Role {
name: string // 'Create new payments'
id: string // 'CREATE_PAYMENTS_ROLE'
params: string[] // ['Token address', ... ]
}
最后,插件还扩展了 hardhat 网络配置以允许自定义 appEnsName 和
ensRegistry
:
networks: {
hardhat: {
ensRegistry: '0xaafca6b0c89521752e559650206d7c925fd0e530',
},
rinkeby: {
appEnsName: 'counter.aragonpm.eth',
ensRegistry: '0x98df287b6c145399aaa709692c8d308357bc085d',
...
},
},
Environment extensions
此插件将 ipfs
对象添加到 Hardhat 运行时环境。
此对象具有与 ipfs-http-client
。
该对象已经初始化并准备好与 IPFS 网络交互。 您可以在 hardhat.config
文件中配置要连接的节点 url
。
注意
插件默认url
是http://localhost:5001/
假设您在该端点运行本地 IPFS 节点。 如果您不想运行自己的节点,可以配置自定义url
节点,例如https://ipfs.infura.io:5001/
。
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-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'
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 defaulturl
ishttp://localhost:5001/
assuming you have a local IPFS node at that endpoint running. You can configure a customurl
node likehttps://ipfs.infura.io:5001/
if you don't want to run your own node.