LogoLogo
These products have been deprecated and are no longer being maintained. For a better experience and support, please check out our new stack Aragon OSx.
Aragon Legacy Documentation
Aragon Legacy Documentation
  • 🔷Aragon
    • Aragon Legacy Documentation
    • Aragon Values, Finances, and Legal
      • Legal and technical infrastructure
      • Financial infrastructure
      • Meet your DAO support network
    • Learn about DAOs
      • What is a DAO?
      • Why do we need DAOs?
      • What is decentralized autonomous governance?
      • What is the AN DAO?
      • TAO Voting
      • Why use Aragon to build a DAO?
  • 🌐Products
    • Prerequisites
    • Quickstart
    • Setting up a Metamask Wallet
      • Getting started with Ethereum
      • Getting started with Goerli Testnet
      • Getting started with Polygon
      • Getting started with Mumbai Testnet
      • Getting started with Harmony
      • Getting started with Harmony testnet
      • Getting started with Metis Andromeda
      • Getting started with Stardust Testnet
      • Getting started with BSC Testnet
      • How to sign a transaction?
      • Import your seed wallet to Metamask
      • Gas Tracker
    • Setting up a Frame Wallet
    • Setting up a Gnosis Safe MultiSig Wallet
    • Aragon Client
      • What is Aragon Client
      • How to create a DAO
        • Templates
        • Using the Company Template
        • Using the Membership Template
        • Use the Reputation template
      • How to create a DAO on Polygon
      • How to create a DAO on Harmony
      • How to navigate your DAO
        • Home
        • The Apps
          • Tokens App
          • Voting App
          • Finance App
          • Agent App
            • How to install the Agent App in your DAO
            • Using Agent with Frame
        • System Setting
          • Permissions Setting
          • App Center
          • Organization Setting
      • After you've started a DAO
        • How to change the Quorum of your DAO
          • Change Quorum using Aragon Console
          • Change Quorum using EVMcrispr
        • How to create a Legal Wrapper for your DAO with Otoco
        • How to Operate your DAO from your Mobile Phone
      • How to Brick your DAO 🧱
    • Aragon Govern
      • What is Aragon Govern?
      • How to create a Govern DAO
      • Navigate into your Govern DAO
        • How to mint and assign DAO tokens to others
        • How to deposit funds
        • Challenging a transaction
      • Reasons for the delay period in the transaction
      • Collateral for scheduling or challenging a transaction. Why?
      • Acting as a guardian for an Aragon Govern dispute
      • Using the Client DAO with the Govern DAO
    • Aragon Voice
      • What is Aragon Voice?
      • Creating a voting proposal
      • Creating a voting proposal using your token
      • Voting on a proposal
    • Aragon Vocdoni
      • What is Aragon Vocdoni
      • Creating a Vodconi organization
      • Accessing your Vocdoni organization
      • Navigating your Vocdoni organization
        • Creating a voting proposal
        • Voting on a proposal (anonymous voting disabled)
        • Voting on a proposal (anonymous voting enabled)
    • Aragon Court
      • What is Aragon Court
      • Court Dashboard
      • Dispute lifecycle
      • Acting as guardian for a dispute
      • Glossary
  • 🛠️Developers
    • Legacy Developer Documentation
    • General Tools
      • The Basics
        • Before starting
        • Quick start
        • Tech Stack
        • App permissions
        • Forwarding
        • Upgradeability
        • Package management
        • Templates
        • Aragon client
        • Human readable transactions
      • Guides
        • How to create your first custom DAO using Aragon CLI!
        • How to use the Agent App
          • Installing Aragon Agent from aragonCLI
          • Setting and Checking permissions
          • Interacting with Aragon Agent
        • How to build your first Aragon App!
        • How to publish an Aragon App to aragonPM
        • How to migrate existing Aragon App to Buidler plugin
        • How to change the Quorum of your DAO
          • Change Quorum using Aragon Console
          • Change Quorum using EVMcrispr
        • Deploying Aragon Client in new Chains
          • Deployments information
            • Harmony testnet
            • BSC Tesnet
            • Harmony
            • Metis stardust
            • Metis Andromeda
        • How to Brick your DAO 🧱
        • How to sign with Web3 providers
          • Setting up a Metamask Wallet
            • Import your seed phrase into Metamask
            • Import your private key into Metamask
            • Sign a transaction with Metamask
          • Setting up a Frame Wallet
            • Sign a Transaction with Frame
        • Troubleshooting
      • aragonOS
        • Introduction
        • Motivations
        • Developing with aragonOS
        • Reference documentation
        • Migrating to aragonOS 4 from aragonOS 3
        • Reference (aragonOS 3)
        • Smart Contract References
          • ACL
            • ACL
            • ACLSyntaxSugar
            • ACLHelpers
            • IACL
            • IACLOracle
          • APM
            • APMNamehash
            • APMRegistry
            • APMInternalAppNames
            • Repo
          • APPS
            • AppProxyBase
            • AppProxyPinned
            • AppProxyUpgradeable
            • AppStorage
            • AragonApp
            • UnsafeAragonApp
          • COMMON
            • Autopetrified
            • ConversionHelpers
            • DelegateProxy
            • DepositableDelegateProxy
            • DepositableStorage
            • EtherTokenConstant
            • IForwarder
            • IForwarderFee
            • IVaultRecoverable
            • Initializable
            • IsContract
            • Petrifiable
            • ReentrancyGuard
            • SafeERC20
            • TimeHelpers
            • Uint256Helpers
            • UnstructuredStorage
            • VaultRecoverable
          • ENS
            • ENSConstants
            • ENSSubdomainRegistrar
          • EVMSCRIPT
            • EVMScriptRegistry
            • EVMScriptRunner
            • IEVMScriptExecutor
            • IEVMScriptRegistry
            • EVMScriptRegistryConstants
            • ScriptHelpers
          • EVMSCRIPT/EXECUTORS
            • BaseEVMScriptExecutor
            • CallsScript
          • FACTORY
            • APMRegistryFactory
            • AppProxyFactory
            • DAOFactory
            • ENSFactory
            • EVMScriptRegistryFactory
          • KERNEL
            • IKernel
            • IKernelEvents
            • Kernel
            • KernelAppIds
            • KernelNamespaceConstants
            • KernelProxy
            • KernelStorage
      • aragonCLI
        • Introduction
        • Main commands
        • DAO commands
        • APM commands
        • IPFS commands
        • Global configuration
      • aragonPM
        • Introduction
        • Architecture
        • Reference documentation
      • aragonAPI
        • Introduction
        • Javascript
          • Quick Start
          • App API
          • React API
          • Wrapper
          • Providers
          • Architecture of apps
          • Background Scripts
      • aragonUI
        • Getting started
        • How to upgrade
        • BASE
          • Spacing
          • Colors
          • Text styles
          • Icons
          • Main
        • ACTIONS
          • Button
          • ContextMenu
        • NAVIGATION
          • Tabs
          • Pagination
          • BackButton
          • Link
          • Header
        • STRUCTURE
          • Bar
          • Box
          • Card
          • Split
          • DataView
          • Table
          • EmptyStateCard
          • IdentityBadge
          • TransactionBadge
          • Tag
          • Accordion
          • Timer
          • TokenAmount
          • EthIdenticon
          • TransactionProgress
        • DATA ENTRY
          • AutoComplete
          • DateRangePicker
          • DropDown
          • Switch
          • Radio
          • CheckBox
          • Slider
          • TextInput
          • SearchInput
          • AddressField
          • RadioGroup
          • RadioList
          • TextCopy
          • Field
        • VISUALIZATION
          • CircleGraph
          • LineChart
          • Distribution
        • FEEDBACK
          • Info
          • ProgressBar
          • LoadingRing
          • Toast
          • SyncIndicator
          • FloatIndicator
        • OVERLAYS
          • Help
          • Popover
          • Modal
          • SidePanel
        • ADVANCES
          • ButtonBase
          • FocusVisible
          • PublicUrl
          • Redraw
          • RedrawFromDate
          • Root
          • RootPortal
          • Viewport
      • aragonDS
        • Guidelines
          • Layout
          • Color
          • Iconography
          • Typography
          • Illustrations
        • Components
          • Overview
      • Aragon Connect
        • Guides
          • Aragon Basics
          • Getting started
          • Usage with React
        • Advanced
          • Custom Subgraph queries
          • Writing an App Subgraph
          • Writing an App Connector
        • Connectors
          • Organizations
          • Tokens app
          • Voting app
          • Finance app
        • API reference
          • connect()
          • App
          • Connectors
          • Organization
          • Permission
          • Repo
          • Role
          • TransactionIntent
          • TransactionPath
          • TransactionRequest
          • Types
          • Errors
      • App Center
        • App Center
        • Preparing Assets
        • Submitting Your App to the App Center
    • Product Tools
      • Aragon Govern
        • README
        • Introduction
          • Concepts and background
            • Govern Core concepts
            • ERC3000
          • Developers
            • Getting started
            • Govern.js API
            • Historical deployments
            • GraphQL API
            • Smart contracts breakdown
        • Deployments
          • Mainnet
          • Rinkeby
        • Packages
          • ERC 3k
          • Govern Console
          • Govern contract utils
          • Types
          • govern-create
          • Govern Server
          • govern-subgraph
          • govern-token
          • govern.js
      • Aragon Vocdoni
    • Aragon Client Glossary
  • THE ANT TOKEN
    • Aragon Network Token
      • About ANT
      • Historical token sale
    • ANTv1
      • Non-standard behaviours and gotchas
      • About the MiniMe token
      • The initial token sale flow
    • ANTv2
      • Upgrade portal
        • Troubleshooting
      • Contract interaction
      • Migrating on-chain liquidity
    • Developers
      • Quick start
      • Integrating ANT
      • Historical deployments
      • Security policy
  • ‼️FAQ
    • Products
      • Aragon Client
        • Where is my DAO?
        • DAO creation taking a long time to confirm
        • DAO is taking a long time to load
        • Failed DAO creation transaction
        • Why do I see a Blue Screen?
        • An unexpected error has occurred
        • App does not appear in Firefox
        • Receiving funds directly to the Agent or Vault address
        • How to Recover Funds accidentally sent to an Aragon App address
        • Depositing EURS in the Finance app
        • Which templates are available on the Ethereum Network?
        • Which templates are available on the Polygon Network?
        • Which templates are available on the Harmony Network?
        • Which templates are available on the Metis Andromeda Network?
        • How to delete a DAO
      • Aragon Govern
        • Which was the wallet address used to create the Aragon Govern DAO?
        • Where are my DAO tokens?
        • How to delete a DAO
        • How can I transfer funds to the Aragon Govern DAO?
      • Aragon Vocdoni
        • Is Vocdoni easy to use?
        • Is Vocdoni anonymous?
        • Is Vocdoni free?
        • Is my data safe with Vocdoni?
        • As an Organization, what can I do with Vocdoni?
      • Aragon Court
        • What is the current duration of the different stages of a dispute?
        • Dispute - Which fees need to be paid to create a dispute?
        • Dispute - Do I need to put collateral to create a dispute?
        • Appeals - How much money is needed to appeal a dispute? And to confirm the appeal? What is it for?
        • Appeals - If I have tokens staked or activated, can I lose them if I appeal a dispute?
        • Appeals - What happens to the collateral put up
        • Voting - Is a majority needed to win a vote?
        • Voting - What happens if there is a tie?
        • Voting - What does "Refuse to vote" mean? What happens if it's the most voted option?
        • Voting - Another guardian tried to collude. Can I punish this guardian?
        • Voting - What's the penalty for leaked votes?
        • Governance - Which parameters of Court can be changed? How?
        • Governance - Do parameter changes affect ongoing disputes?
        • Technical - Where is the Court "hosted"?
        • Technical - Where can I find the source code and technical documentation for Aragon Court?
        • ANJ conversion - What date will the lock-up period end?
        • ANJ conversion - If I have not staked my $ANJ, do I still get the lockup period price?
        • ANJ conversion - Will I get the 0.044 conversion if I convert after September 5th 2021?
        • ANJ conversion - How much will it cost to be a Guardian in Aragon Court with $ANT?
        • I can't see my tokens in the Dashboard
        • I activated my tokens but I can't see my probability of being drafted
    • Miscellaneous
      • Metamask wallet transaction alert
      • Is Aragon open source?
      • Where can I browse through the DAOs created on Aragon?
      • How to migrate from "old" DAI to "new" DAI
      • Security notice for organizations created before Aragon 0.8
      • General troubleshooting tips
    • ANT Token
      • What can I do with ANT?
      • Who holds ANT?
      • Who are the biggest ANT holders?
      • Long-term holding ANT - What benefits?
      • Can I delegate my network votes to somebody else?
      • Can I do flash loans with ANT?
      • Is there an ANT options market?
      • Are you planning to launch new network tokens?
      • My wallet isn't available on the Upgrade Portal
      • How can connect my Ledger to the Upgrade Portal?
      • I accidentally sent my "old" ANT to an exchange
      • ANJ conversion - What is the minimum number of $ANJ I need to participate in the 0.044 conversion?
      • ANJ conversion - What is the conversion rate ANJ to ANT v2?
Powered by GitBook
On this page
  • Introduction
  • Official Aragon Client deployments
  • Good Manners
  • Deploying
  • Before you start
  • Step 1
  • Step 2
  • Step 3
  • Step 4
  • Step 5

Was this helpful?

  1. Developers
  2. General Tools
  3. Guides

Deploying Aragon Client in new Chains

PreviousChange Quorum using EVMcrisprNextDeployments information

Last updated 2 years ago

Was this helpful?

Introduction

This guide will run you through how to deploy Aragon to other EVM compatible chains.

This deployment is self-sufficient and does not pose a requirement on other contracts already deployed to the target chain.

Before you begin, make sure that there are no official deployments to the network you will be targeting.

Official Aragon Client deployments

Network Name
ENS Registry
Type
Deployment

Ethereum Mainnet

0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e

Official

Ethereum Rinkeby

0x98df287b6c145399aaa709692c8d308357bc085d

Official

Ethereum Ropsten

0x6afe2cacee211ea9179992f89dc61ff25c61e923

Official

Polygon Mumbai

0x431f0eed904590b176f9ff8c36a1c4ff0ee9b982

Official

Polygon Mainnet

0x3c70a0190d09f34519e6e218364451add21b7d4b

Official

Harmony Testnet

0xbc7828fa8665c637901ad5abd5c7e647c9ab140f

Official

xDAI

0xaafca6b0c89521752e559650206d7c925fd0e530

Trusted Partner

Harmony

0x843ddfab8406e752d03fa75dbb275070f368658d

Official

BSC Testnet

0x843ddfab8406e752d03fa75dbb275070f368658d

Official

Good Manners

  1. Please verify all contracts that you have deployed with the target network scanner unless they are automatically verified.

  2. Notify the Aragon team about your plans to deploy to the target network.

  3. Keep the team in close loops about the issues you encounter as well as any ambiguity during the process.

  4. Do not change the smart contract code.

  5. Any automation and new scripts are welcome. Create a PR for the respective Github repository.

Deploying

Before you start

  1. We will use notation <target network> to represent the network we are deploying to. It should be consistent throughout this tutorial.

  2. Make sure that you use one account thought the tutorial. You will need Private key and some network tokens to pay for gas.

Step 1

Description: Provide an account that will be used to deploy contracts as well as rpc connection to the target network.

This account will be the owner of the deployed Aragon infrastructure. To be considered an official deployment we will need to transfer all permissions from this account to an official Aragon account.

  • To provide access to an account using a Private Key:

    1. Create a file nano ~/.aragon/<target network>_key.json

    2. Add the following inside the file

    {
      "rpc": "<RPC url for your target network, for example "<https://rpc-mainnet.matic.network>" for Polygon>",
      "keys": ["Your Private Key"]
    }
  • To provide access to an account using a Seed Phrase:

    1. Create a file nano ~/.aragon/mnemonic.json

    2. Add the following inside the file

    {
      "rpc": "<RPC url for your target network, for example "<https://rpc-mainnet.matic.network>" for Polygon>",
    "mnemonic": "your mnemonic phrase..."
    }

Step 2

  1. Checkout to master branch instead of default next branch.

    The master branch contains AragonOS v4.4.0 latest stable version. Whereas the next has more features, but we don’t want a disputable feature for now.

  2. Run yarn

  3. Run yarn add @aragon/truffle-config-v4

  4. Update node_modules/@aragon/truffle-config-v4/truffle-config.js with the new network information

    Example:

    mumbai: {network_id: 80001,provider: providerForNetwork('mumbai'),gas: 6.9e6}
  5. Run yarn compile

  6. Deploy ENS to the target network

    In case the network does not have an official ENS registry, one should deploy it themselves using provided ENSFactory.

    If there is an official ENS deployment, you can use it or deploy a new ENS. If you decide on using an official ENS, make sure to purchase the aragonpm.eth domain with the key provided in step 1.

    Run the command below in AragonOS repo, substituting placeholder values:

    OWNER=<Your Public Key> npx truffle exec --network <target network> scripts/deploy-test-ens.js
  7. Deploy DaoFactory

    DAO factory will already include other contracts that are necessary for the contract deployment. It is a very large contract, and we are aware that some networks do not offer enough gas per block to deploying it.

    You might encounter RPC failing due to making too many calls in a short period of time. As a solution split the deployment script into several subparts or use a more reliable RPC in step 1.

    Run the command below in AragonOS repo, substituting placeholder values:

    OWNER=<Your Public Key> npx truffle exec --network <target network> scripts/deploy-daofactory.js
  8. Deploy APM (Aragon Package Manager) to the target network

    As a workaround, you should deploy the APM in the AragonOS repository.

    Run the command below in AragonOS repo, substituting placeholder values:

    OWNER=<Your Public Key> ENS=<ENS Registry address from step>  DAO_FACTORY=<DAO Factory address from step 2> npx truffle exec --network <target network> scripts/deploy-apm.js

Step 3

  1. Clone the repo master branch.

  2. Run yarn to install packages

  3. Setup truffle-config on node_modules/@aragon/truffle-config-v4/truffle-config.js as previous step

  4. Update the truffle.js to point to the right truffle-config. Basically replace its contents with

    module.exports = require("@aragon/truffle-config-v4")
  5. run yarn compile to build the contracts

  6. Run the following script:

    OWNER=<Your public key> ENS=<ENS Registry address from step> npx truffle exec --network <target network> scripts/deploy-beta-aragonid.js

Step 4

  1. Provide your Private Key

    ETH_KEYS=0x<Your Private Key>
  2. Update node_modules/@aragon/hardhat-config/hardhat.config.js with the new network information. Ex:

    mumbai: providerForNetwork('mumbai')
  3. Deploy an app

    Repeat this for each app inside the \\apps directory. We will use the Finance app here as an example.

    IMPORTANT: Do not try to deploy voting-disputable and agreement apps they require Aragon Court instance present on the target network.

    1. Navigate to the apps directory (\\apps\\finance)

    2. Change arapp.json

      In the environment part add information about your target network.

      For the registry variable specify ENS address that we have obtained in step 2.

          "<target netwrok>": {
            "registry": "<ENS Registry address>", 
            "appName": "finance.aragonpm.eth", // app name
            "network": "<target network>"
          }
    3. Run yarn

    4. Run yarn compile to generate contracts

    5. Run yarn build to build the UI App part

    6. Start a local version of IPFS with ipfs daemon

    7. Publish the App to APM

      npx hardhat publish major --network mumbai --ipfs-api-url <http://localhost:5001>
    8. Download the files that were uploaded to IPFS with ipfs get <CID>. The CID is available from previous step

Step 5

  1. Provide your Private Key

    ETH_KEYS=0x<Your Private Key>
  2. Go to /shared directory and run yarn and then yarn link

    If you have problems with node version on installing dependencies, add --ignore-engines to the command

  3. Deploy a template

    Repeat this for each template inside the /templates directory. We will use the Company template here as an example.

    IMPORTANT: Please only try to deploy company, reputation and membership templates, as other templates do not contain all required components.

    1. Navigate to the templates directory (/templates/company)

    2. Run yarn link @aragon/templates-shared

    3. Run yarn to install dependencies

    4. setup truffle-config on node_modules/@aragon/truffle-config-v4/truffle-config.js as previous step

    5. Change arapp.json

      In the environment part add information about your target network.

      For the registry variable specify ENS address that we have obtained in step 2.

         "<target network>": {
            "registry": "<ENS Registry address>", 
            "appName": "finance.aragonpm.eth", // app name
            "network": "<target network>",
      	    "wsRPC": "<RPC url for your target network, for example wss://matic-testnet-archive-ws.bwarelabs.com for Polygon>"
          }
    6. switch to node 10

    7. Run yarn compile

    8. switch to node 12

    9. Change package.json

      Add a new script below to the scripts section.

      Please note that if you are using the official ENS, then you should also acquire the aragonid.eth domain for the step below to work.

      "deploy:<target network>": "truffle exec ./scripts/deploy.js --network <target network> --ens <ENS Registry address from step 2> --dao-factory <DAO Factory address from step 2>"
    10. Run yarn deploy:<target network> to deploy the Template

      "deploy:<target network>": "truffle exec ./scripts/deploy.js --network <target network> --ens <ENS Registry address from step 2> --dao-factory <DAO Factory address from step 2> --mini-me-factory <MiniMe Factory address that we have just deployed>"
    11. Start a local version of IPFS with ipfs daemon

    12. Publish the Template to APM

      npx hardhat compile && npx hardhat publish major --contract <Template contract that we got in previous step> --network <target network> --ipfs-api-url <http://localhost:5001/>

Description: Deploy , which contains all main contracts, to the target network. This will allow creating new DAOs as well as publish apps to APM.

Clone repository

You should be able to deploy in its own repository. However, currently, it does not work due to an unknown issue. If you could fix it, it would be greatly appreciated and you will get rewarded!

Description: Deploy .

Description: Deploy standard to the AragonPM.

Clone repository

Create .env file in the root directory of the repository with the following content:

If you don't have IPFS installed, check here how to install it

Compress the folders that were downloaded and send to so they can be pinned.

Description: Deploy standard to the AragonPM.

Clone repository

Create .env file in the root directory of the repository with the following content:

This should deploy additionally and . Copy the address and when deploying the next template add it to the script in step 7:

If you don't have IPFS installed, check here how to install it

🛠️
Deployment information
AragonOS
AragonOS
APM
AragonID
Aragon Apps
Aragon Apps
Aragon Apps
https://docs.ipfs.io/install/command-line/
product@aragon.org
DAO Templates
DAO Templates
Aragon Apps
AragonId
MiniMe Token Factory
MiniMe Token Factory
https://docs.ipfs.io/install/command-line/
Aragon
Aragon
Aragon
Aragon
Aragon
Aragon
1Hive
Aragon
Aragon