Akropolis MVU v1.0
A demonstration of the core customer user journey is now available on Ethereum testnet.
Dear Akropolis Community,
We are excited to share our MVU. Akropolis is building the next-generation financial infrastructure to leverage blockchain to address the 3 main individual consumer pain-points of the US$43 trillion pensions sector:
- Individual has no self-sovereignty over their assets: pension funds are regularly being raided across the globe, both in developed and developing economies.
- No “single source of truth” in record-keeping and no or poor portability of records, leading to hundreds of millions of employer contributions being left on the table by the user, which is essentially free money.
- Individual pensions contributions are massively eroded through high hidden fees at every step in the value chain.
Importantly, the overarching lack of transparency leads to moral hazard and poor economic outcomes to individuals.
This is why at Akropolis, we are designing an alternative financial infrastructure to address some of the common failings of the existing system in a future-proof manner. Our protocol is structured to enable the following functionality:
- Anyone, whether it is a community, a state or a business, will be able to set up and maintain an autonomous digital pension fund/scheme, making it either formal or informal at one’s one discretion and at negligible cost. An autonomous digital pension fund is a trustless scheme represented by a body of smart contracts with modular funding, ownership, governance and incentive structures that can be adopted;
- A beneficiary / an individual user will be able to invest in a broad universe of tokenized assets. Instances of negligent sales are completely eliminated by ensuring that only funds with a profile matching the individual’s circumstances are made available. All individual contributions and matching employer contributions are recorded on a string unique to each self-sovereign ID, which in time will be linked to one’s digital wallet;
- A system of incentives is created and updated to ensure minimization of moral hazard and alignment of interests. More on that later.
With this in mind, the MVU v1.0 presented below is a simple demonstration of Akropolis basic functionality by virtue of a snapshot of an individual user’s journey.
This proof-of-concept enables an individual to create their own digital pension portfolio, invest in an appropriate fund, set up a regular savings commitment and stake AKT tokens in return for discounts and rewards.
Many important aspects of the Akropolis Platform that are currently under development are out of scope or only partially represented in this MVU, including:
- Full digital pension fund functionality
- Full asset management functionality & DEX integration
- Identity management
- Reporting / Reputation
- Additional contributions and recurring payments
- Programmatic wills
All contributions made to a fund are stored immutably on-chain, ensuring that individuals can prove their ownership of assets at any time by asserting their self-sovereign identity. For the purposes of the MVU this simply means that you must be in possession of the private key associated with your Ethereum account that owns shares, i.e. ERC-20 compatible tokens, in the fund.
No personally identifiable data is currently required to use the demo. In future, all personal data will be encrypted and stored securely off-chain.
If you wish to provide your feedback on the demo, you can do so here.
In this section we’ll go through the demo providing screenshots and explaining what is happening on each of them.
Step 1 — Planner
The journey starts by making a plan for your retirement. We keep this as simple as possible for individuals who are not financially savvy by making assumptions for inflation rate and average return on investments. In future, these figures will be driven by localised data from oracles and real historical fund performance from Akropolis platform itself.
Step 2 — Selecting a fund
To make it simple, we give the user a choice of three funds. In future, individuals will be able to choose from a broad universe of funds that will be filtered and prioritised based on properties such as age, appetite for risk, and eligibility — the user will have to pass through a KYC process first that will classify them as either a retail or sophisticated investor to ensure funds are not mis-sold.
The canonical fund registry is kept on-chain and each fund is a separate contract that issues shares to the individual in the form of ERC-20 tokens. A reporting module will aggregate and process both on and off chain data in order to provide real-time signals on the fund’s risk rating and the fund manager’s historical performance.
Step 3 — Making a commitment
At this point in the journey you will need to have an Etheruem-enabled browser that’s switched to Ropsten testnet and has some test ether. We provide instructions for each of these steps along with a test ether faucet.
The user is asked to make a commitment of saving a regular amount. This could be as little as 0.01 ETH, or as much as the user currently has in their wallet, and it can be over a weekly, monthly or quarterly interval. The commitment must be made for a period of time between 1 to 5 years.
Step 4 — Staking AKT tokens
AKT token is not required in order to use the Akropolis platform, however, there will be 3 key benefits to those who choose to use it:
- Access to premium products
- Discounts on fees
- Rewards for sticking to your savings goal for the full commitment length
Full details of the discount structure and reward pool mechanism will be provided in the forthcoming technical whitepaper.
Step 5 — Confirmation and transactions
At this point you will be asked to confirm that you want to go ahead, choosing “Confirm” will initiate one or two transactions that you’ll have to sign from your wallet.
If you chose to stake AKT tokens then there will be a transaction at this point to call out the approve function on the AKT token contract, allowing the ‘PortfolioFunctional’ contract to transfer the appropriate number of AKT tokens from your wallet.
The next transaction will create the individual’s digital pension portfolio and make the first contribution. ‘Create New User Portfolio’ function is called out in the ‘PortfolioFunctional’ contract, this is a payable function that will require payment for the initial contribution amount, passing this through to the chosen fund contract’s ‘invest’ function. The fund contract will in turn issue ERC-20 tokens back to the individual representing their share of ownership of the fund’s assets.
The Akropolis protocol is being designed to be blockchain agnostic, however we have chosen the Ethereum public blockchain and the Solidity smart contract language for the first implementation due to their relative maturity.
For the purposes of this proof of concept, only the bare minimum contract functionality required to demonstrate the concept has been included. Many important modules that will comprise the Akropolis protocol are currently in development and are either mocked or excluded from this POC.
The smart contract architecture has been designed with upgradability in mind; data storage and business logic are kept in separate contracts.
Let’s take a quick look at the contracts behind the POC:
The portfolio is provided by three contracts:
- Portfolio.sol — contains data structures
- PortfolioData.sol — contains all persisted data
- PortfolioFunction.sol — contains all business logic
This pattern for upgradable contracts, separating out business logic and data, along with the naming convention of *Data.sol and *Functional.sol is used throughout. This allows for the deployment of new versions of the *Functional.sol contract that will continue to include the original *Data.sol contract.
Let’s take a look at the ‘Create New User Portfolio’ function in PortfolioFunctional.sol:
This function is called when the user completes step 5 and it deals with a number tasks in order to minimise the number of transactions that the user is required to make at this point.
You’ll note that the function supports investment in more than one fund, yet in the UI we have restricted the user to investing in only one fund at the moment for simplicity. First we perform some checks related to the support for investment in multiple funds, ensuring that arrays of funds and amounts are aligned. Then in the case that the user has chosen to deposit AKT tokens, we ensure that this contract has been granted sufficient allowance to transfer those tokens from the user’s wallet, and if so, the transfer can be made.
Next, the system is calling out the function in a smart contract for each fund that the user is investing to, and then calling out the the fund’s ‘invest’ function depositing a specific amount of ETH to the fund.
The fund allocation and commitment data is then stored in the PortfolioData.sol contract using the NewUserAllocation and NewUserCommitment functions.
In future any personal data that is collected will be kept encrypted off-chain. Portfolios will have multiple possible governance structures to deal with personal pensions, employer-matched pensions, and other group investing structures. Oracles will be used to provide important signals such as a change of employment, or a death, triggering changes in access to the portfolio.
Fund functionality is provided by four contracts:
- FundFactory.sol — deals with creating new funds
- FundRegistry.sol — keeps track of all funds that have been created
- FundData.sol — contains data for a single fund
- FundFunctional.sol — contains business logic for a single fund
To understand the relationship between these contracts, let’s take a look at an extract from the Truffle migration script that we use when deploying the example funds for the demo:
First we deploy the FundFactory, then the FundRegistry, then we ask the FundFactory to create three new Funds. For each of these three funds, FundFactory will deploy a new FundFunctional and FundData contract, it will then call the FundRegistry to register the address of these new fund contracts.
When the funds are initialised, we pass in arguments for the fund name, description and other data that will appear in the UI such as expected annual return, fund manager rating and risk rating. Of course in future these values will be provided by an oracle and the Akropolis Reporting module that will use a range of both on and off-chain data such as price feeds from exchanges in order to calculate these ratings.
The fund contracts included in this POC only provide the most basic functionality as required to power the UI. Funds are at the centre of Akropolis’s asset management module and we are currently working on developing full digital pension funds in partnership with Melonport, building on their already powerful asset management platform. Some of the pension-specific features we’re adding to Melon funds include time locks and distribution rules, risk management systems, governance systems, taxation rules and personalisation / compliance modules to eliminate mis-selling.
Disclaimer: All images and numbers represented in this document are for illustration purpose only. Actual product may vary due to produce enhancement and ongoing development.
Join our official Telegram chatroom to learn more about Akropolis.