🚨 Everything in this repo is highly experimental software.
This is a simplified version of the system being used by the AragonOS and ZepplinOS systems.
Proxy contracts are being increasingly used as both as an upgradeability mechanism and a way to save gas when deploying many instances of a particular contract. EIP897 standard proposes a set of interfaces for proxies to signal how they work and what their main implementation is.
You will need Truffle framework:
# Make sure we have the latest truffle version
npm uninstall -g truffle
npm install -g truffle@latestTo test this project locally, clone the repo and run:
# install dependencies
npm install
# run tests
truffle testTo use the code we provide an NPM package:
# install dependencies
npm install @runningbeta/r8-appThe pattern used is Upgradeability using Unstructured Storage as described in this repo and in this blog post by Zeppelin.
Understanding the DELEGATECALL Ethereum opcode is key to understanding the upgradeable proxy pattern.
Other projects using a delegate proxy pattern: