• Discover
  • Developers
  • Aragon Developer Portal
  • Project
  • Network
← Back to home
  • menu

    home-The basics

    menu

    The basics

    • Getting started
    • Glossary
    • The stack
    • Permissions
    • Forwarding
    • Upgradeability
    • Package management
    • Templates
    • The Aragon client
    • Human readable transactions

    Guides

    • Your first Aragon app
    • Buidler plugin migration
    • Publish to aragonPM
    • Custom Deploy
    • The Agent app
    • Signers

      • Frame
      • Metamask
    • Troubleshooting

    aragonCLI

    • Introduction
    • Main commands
    • DAO commands
    • APM commands
    • IPFS commands
    • Global configuration

    aragonPM

    • Introduction
    • Architecture
    • Reference documentation

    aragonOS

    • Introduction
    • Motivations
    • Developing with aragonOS
    • Reference documentation
    • Migrating to aragonOS 4 from aragonOS 3
    • Reference (aragonOS 3)

    aragonAPI

    • Introduction
    • JavaScript

      • Quick Start
      • App API
      • React API
      • Wrapper
      • Providers
      • Architecture of apps
      • Background Scripts

    aragonUI

    • Introduction

    App Center

    • Introduction
    • Preparing assets
    • Submitting Your App to the App Center
    Edit

    Upgradeability

    Make your app upgradeable to fix bugs and push enhancements

    The ACL and Forwarders allow you to create apps that are interoperable and generic so you don't have to reimplement any governance or authentication logic whatsoever. This is thanks to Proxies. A Proxy is a very simple smart contract which consists of decoupling the instance of a particular smart contract with the location of its actual business logic.

    All a Proxy does is delegate calls to another contract which contains its actual logic.

    This allows for upgradeability since you can always interact with the same Ethereum address for the smart contract but its logic can be upgraded over time.

    Proxies help enable the decoupling of authentication and logic since you do not need to authenticate any particular version of the smart contract but rather a reference to it that never changes.

    We created EIP897, which has been merged, in order to standarize how Proxy interfaces work across all the ecosystem.

    The aragonOS Kernel takes care of maintaining the mapping between the Proxy address of an app and the address where its actual logic lives. Then, upgrading an app is as easy as:

        kernel.setApp(kernel.APP_BASES_NAMESPACE(), appId, newAppCodeAddr)
    
    ← ForwardingPackage management →
    HomeDiscoverProjectNetwork
    DevelopersBug bountyGrantsGovernance
    ContributeBlogWikiAraCon

    Be part of the conversation

    Subscribe to our newsletter