🚨 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@latest
To test this project locally, clone the repo and run:
# install dependencies
npm install
# run tests
truffle test
To use the code we provide an NPM package:
# install dependencies
npm install @runningbeta/r8-app
The 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: