Anton Bukov k06aaa@gmail.com
Denis Bukov zzomrot.ne@gmail.com
Mikhail Melnik by.zumzoom@gmail.com
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.
Meta.one developers proposed ERC1133 specification to allow 3rd-party software to expose inner properties and even manipulate Meta.Stacks.
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:
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.
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:
As Martin Köppelmann from Gnosis (link?) metioned that after some simplifications formula can be represented in another way:
Adding different weights of token shares to this formula gives:
When arbiter sends
Arbitrageurs will like the following formula, which founds best
We expanded this idea to store multiple tokens (
While price
//TODO: Safe proportions change
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.
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
//TODO: BTCRelay
//TODO: Multisig bridge validators
//TODO: Team members
Bskt: a smart contract for creating decentralized token portfolios. https://github.com/cryptofinlabs/bskt-whitepaper/ ↩︎
{Set} Protocol: A Specification for Token Abstraction. https://setprotocol.com/pdf/set_protocol_whitepaper.pdf ↩︎
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/ ↩︎
On Path Independence. https://vitalik.ca/general/2017/06/22/marketmakers.html ↩︎
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 ↩︎
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 ↩︎
Kyber Network. https://kyber.network/about/company ↩︎
Uniswap Whitepaper. https://hackmd.io/C-DvwDSfSxuh-Gd4WKE_ig ↩︎