Try   HackMD

Meta.one Whitepaper – meta.one

Anton Bukov k06aaa@gmail.com
Denis Bukov zzomrot.ne@gmail.com
Mikhail Melnik by.zumzoom@gmail.com

Abstract

Meta.one company introduces sevearal crypto-solutions for everyday use: Meta.Stacks protocol, Meta.Liquidity protocol, Meta.Bridge protocol.

Dealing with crypto portfolio of multiple crypto assets may be difficult, especially rebalancing it to the desired proportions. Meta.Stacks protocol provides an ERC20 token abstraction over multiple ERC20 subtokens, that allows you to easily manage desired asset proportions and keeps it balanced automagically. Your ownership of the tokens becomes indirect (via stacks smart contract) but stays as secure and trustless as direct tokens ownership. Funds are able to launch their own strategy in the form of new token, which value is insured by nested tokens. Thus token price will be driven by fund's secret strategy.

Storing tokens in automatically rebalancing stacks allows Meta.one to introduce Meta.Liquidity protocol. Which uses META token stored on stack to define probability of stack to be chosen for the concrete change operation.

A lot of users wondering if they will be able to use Meta.Stacks protocol with coins in another blockchains, and we are honored to introduce you Meta.Bridge Protocol – technology allowing any other coins to be trustless mapped to the Ethereum blockchain without needance to trust anyone. It will also allow us to bridge out META token to other blockchains supporting smart-contract, to expand Meta.Stacks and Meta.Liquidity protocols to other blockchains.

1. Meta.Stacks Protocol

1.1. ERC1133 Specification

Meta.one developers proposed ERC1133 specification to allow 3rd-party software to expose inner properties and even manipulate Meta.Stacks.

1.2. Token Aggregation

Ethereum tokens aggreagation is already discovered and implemented by a few projects: getbskt.com[1] and tokensets.com[2]. Their implementations did not cover all possible cases.

Stack capitalization consists of subtokens valuations and at any time is fully secured by the tokens. Anyone is possible to mint/burn stack buy providing/extracting subtokens in some proportion.

An implementation should take into account the following possible cases:

  • Some tokens may become untransferable (paused/locked/freezed)
  • Some tokens may be upgraded (token smart contract address changed)
  • Some new tokens may be AirDropped to Meta.Stack smart contract

To fulfill all requirements and resolve all possible issues we developed smart contract interface with the following methods:

function mint(uint256 _value) public;
function burn(uint256 _value) public;
function burnSome(uint256 _value, ERC20[] someTokens) public;

Method mint allows deposit tokens to issue stack until at least one of it's tokens becomes untransferable. Method burnSome allows to withdraw upgraded tokens with AirDropped tokens.

1.3. Portfolio Rebalancing

The idea of two tokens rebalancing on a single smart contract by arbitragers was initially proposed by Vitalik Buterin[3][4][5] and currently is used in several exchange projects: Bancor.network[6], Kyber.network[7] and Uniswap.io[8]. The smart contract just holds two tokens and allows to exchange one for another and computes return value based on superposition principle: it supposes portfolio is already balanced. And every arbitrage opportunity allows to equilibrate token value proportions with a small reward for arbitrager. Initially formula looks this way:

bX(1+pX)=by(1+px),px=axbx,where bT – balance of token T on smart contract,aT – amount of token T to be exchanged.

As Martin Köppelmann from Gnosis (link?) metioned that after some simplifications formula can be represented in another way:

bXbY=k,where bT – balance of token T,k – some invariant value.

Adding different weights of token shares to this formula gives:

{bXsXbYsY=k,(bXsX+aX)(bYsYaY)=k,where bT – balance of token T,aT – amount of token T being exchanged,sT – share of token T,k – some invariant value.

When arbiter sends

aX volume of fallen token
X
to recieve some amount
aY
of risen token
Y
, returning amount will be calculated with the following formula:

aY=aXbYsXsY(aXsX+bX)
where bT – balance of token T on smart contract,sT – share of token T on Meta.Stack balance,aT – amount of token T to be exchanged.

Arbitrageurs will like the following formula, which founds best

aX value to maximize profit
aXpXaYpY
for known token prices
pT
:

aX=bXbYpY(1f)pXsXsYbXsX
where bT – balance of token T on smart contract,sT – share of token T,pT – price of token T,aT – amount of token T to be exchanged.f – MultiToken exchange fee.

We expanded this idea to store multiple tokens (

N) and allowed to setup desired proportions/shares
sT
on smart contract creation:

sTij=1NsTj=bTipTij=1NbTjpTj,{i1NTiT;(r,s)1N,rsTrTs;sTibTipTi=sTjbTjpTj,{i,j1NTi,TjT;
where bT – balance of token T on smart contract,sT – share of token T on Meta.Stack balance,pT – price of token T in reference currency,T – set of N possible tokens.

While price

pT remains unknown to smart contract, it just supposes it is always balanced in desired proportions
sT
.

1.4. Strategy Copying

//TODO: Safe proportions change

2. Meta.Exchange Protocol

2.1. Liquidity providers reward

Meta.Stacks can be used as an exchange by calling exactly the same method change the arbitragers use to rebalance stacks. The more liquidity stacks have - the more beneficial exchange rate will be provided. This means stack holders should receive additional reward as liquidity providers.

Bancor Network allows liquidity providers to store liquidity on Token Relays and give them XXXBNT tokens as their shares. But holding XXXBNT tokens means having auto-rebalancing portfolio of XXX and BNT. Multi-token holders are free to store any tokens on multi-tokens to earn additional profit.

2.2. Tokenomics

But choosing one of the stacks for the concrete exchange operation is a challenge and we decided to issue our own token META to solve this problem. Storing this token on multi-token defines probability for operation to happen on this smart contract. For example if two stacks contains META and one contains two times more META tokens than another – this will leads for first to have 2 times more operations and receive 2 times more fees. Multi-token

i of
N
selection probability
pi
can be computed with the following formula:

pi=firij=1Nfjrj,{i1N;
where ri – return amount by exchange i,fi – META token balance of exchange i.

3. Meta.Bridge Protocol

3.1. Inter-chain trustless communication

//TODO: BTCRelay

3.2. Inter-chain trusted communication

//TODO: Multisig bridge validators

Team

//TODO: Team members

References


  1. Bskt: a smart contract for creating decentralized token portfolios. https://github.com/cryptofinlabs/bskt-whitepaper/ ↩︎

  2. {Set} Protocol: A Specification for Token Abstraction. https://setprotocol.com/pdf/set_protocol_whitepaper.pdf ↩︎

  3. Let's run on-chain decentralized exchanges the way we run prediction markets. https://www.reddit.com/r/ethereum/comments/55m04x/lets_run_onchain_decentralized_exchanges_the_way/ ↩︎

  4. On Path Independence. https://vitalik.ca/general/2017/06/22/marketmakers.html ↩︎

  5. Improving front running resistance of x*y=k market makers. https://ethresear.ch/t/improving-front-running-resistance-of-x-y-k-market-makers/1281 ↩︎

  6. Bancor Protocol. Continuous Liquidity for Cryptographic Tokens through their Smart Contracts. https://storage.googleapis.com/website-bancor/2018/04/01ba8253-bancor_protocol_whitepaper_en.pdf ↩︎

  7. Kyber Network. https://kyber.network/about/company ↩︎

  8. Uniswap Whitepaper. https://hackmd.io/C-DvwDSfSxuh-Gd4WKE_ig ↩︎