LibertyPie Core

Version 1.0

November 2020

Abstract

This document describes a trustless, permissionless & autonomous P2P and DeFi protocol that will enable anyone to buy or sell selected cryptocurrencies instantly & securely.

Introduction

In 2019, the P2P marketplace had a total volume of $2.9 billion on LocalBitcoins and $1.6 billion on Paxful with other regional and global exchanges accounting for over $5 billion.

2020 and beyond is expected to surpass all previous years in terms of trading volume with India’s P2P marketplace processing a trade volume of up to $4.4 million per week.

Global giants in the cryptocurrency exchange sector such as Binance &  Huobi have also tapped into the P2P market to bring more adoption to the masses.

Peer-to-Peer crypto-asset trading is a unique form of market where users trade directly within themselves without a middleman.

Problems

The revolution of cryptocurrencies has given birth to several innovative products such as centralized exchanges including P2P platforms with Paxful and Localbitcoin as few examples.

Recently, most people are not very happy with centralized P2P platforms.

By default, most P2P platforms limit users’ accounts thereby restricting transactions.

Most users have to go through a lot of stress to lift these limits which might seem impossible in emergency cases.

Since most centralized P2P exchanges hold custody of their users’ funds, these funds are always at risk because they are saved on the server’s hot wallet which is highly susceptible to hacking.

Other times, users are denied access to their assets by disabling withdrawal, this can cause frustrations on the side of the user. As the popular saying goes:

 Not your keys, not your coins”

Finally, most P2P platforms have been an avenue for fraudsters where innocent people are duped simply because they want to trade.

Solutions

We believe all technologies should be accessible to anyone and at any place in full without restrictions or limits.

Moreover, the main reason for the invention of the blockchain & cryptocurrencies is to give people the advantage of becoming keepers of their own funds, like the slogan goes, be your own bank. So keeping custody of users' funds to use a platform is highly against the principle of blockchain and decentralization.

LibertyPie Protocol

LibertyPie v1 is the first version of the protocol, developed in 2020 on the Ethereum & Binance Smart Chain (BSC) which would later be deployed on other blockchain platforms.

The protocol was developed to be permissionless & autonomous, due to this nature, it will exist as long as the blockchain it was deployed on exists. It is a trustless, non-custodial & smart contract-based P2P exchange with cross-chain asset support & a fraud protection mechanism.

LibertyPie is not a company or firm, but rather a code, it is governed by the DAO (Decentralized Autonomous Organization) structure of governance, where no individual, entity, or corporation owns the network but rather decision making is based on codes (smart contracts) and by the efforts of the community.

Key Features

Design Principle

LibertyPie is built to be 100% decentralized, open-sourced, and deployable on most EVM based public blockchains.

Anyone can design their own user interface to interact with the protocol.  

Most features are built with modularity in mind, this way a module can be replaced using its contract address.

Price Feeds & Oracles

Price feeds  & oracles are one of the essential modules of the protocol, LibertyPie cannot work as required without an up to date price feed of supported assets.

Fortunately, the protocol natively supports different price feeds sources & oracles.

Cross-chain oracles such as ChainLink & Band Protocol are supported on both deployed versions on Binance Smart Chain and Ethereum.

On the other hand, PancakeSwap price feeds are supported on Binance Smart Chain while Uniswap & Compound’s open price feeds are supported on Ethereum.

Unisawp Based Price Feeds

Uniswap & PancakeSwap uses a Uniswap v2 based smart contract,  this has direct support for price feeds.

function getAmountsIn(uint amountOut, address[] memory path) internal view returns (uint[] memory amounts);

The above code demonstrates how to get the latest price between two assets using the Uniswap v2 smart contract.

Compound’s Open Price Feed

Compound’s open price feed is only supported on Ethereum, it adds an extra layer against vector attacks by combining Coinbase oracle with Uniswap price feeds.

UniswapAnchoredView view = UniswapAnchoredView(0xABCD...);

uint price = view.price("ETH");

Using open price feed to fetch the latest price for Ethereum

Offers

Offers are ads presented by traders to buy or sell a particular asset under their terms.

Users have the liberty to create a new offer, modify or disable an existing offer. All offers are saved on the blockchain, some metadata such as the offer description and terms are stored on decentralized file storage such as IPFS to avoid the additional gas cost.

To create a new offer from the contract, call the newOffer method as shown below.

function newOffer(

       address  _assetAddress,

        string  memory _offerType,

        uint256  _priceMargin,

        string   memory countryCode,

        uint256  paymentTypeId,

        uint256  expiry,

        string extraDataHash 

    ) external

_assetAddress: The contract address of the asset you wish to create the offer for, note that the offer creation will fail if the asset is not supported

_offerType: The offer type, it’s either  buy or sell

_priceMargin:  The profit or loss percent added to the asset price, this helps in the calculation of the final price for the asset.

countryCode:  A two-letter iso code of the offer  target country, for example, CA  for Canada

paymentTypeId: The targeted payment type for the offer,  this parameter is of the type uint256. Payment types & their ids can be fetched with the contract code below

function getAllPaymentTypes() external view returns( PaymentTypeStruct[] memory  )

expiry: set this parameter greater than 0 if you wish the offer to expire after some time. Expiry is implemented as

bool hasOfferExpired  = (OfferEntry.expiry > 0) && (OfferEntry.expiry < block.timestamp);

extraDataHash:  This is the hash of extra data such as trade terms and instructions stored on decentralized storage protocol IPFS.

Offer Pricing Mechanism

An offer price is calculated using the asset’s market price summed with the price margin percentage provided during the offer creation.

           

Trades

Starting a trade on LibertyPie initializes as a gasless operation,  the trade data is encrypted and temporally stored on IPFS until the asset to be traded has been deposited into the escrow contract.

As a  security measure, the escrow in a trade won’t be executed until both parties are online and ready to proceed with the trade.

The following pattern depicts  a trade on LibertyPie

Data Security & Privacy

During every trade, a unique asymmetric public-private keypair is generated for each participant of the trade including guardians.   The public keys from these keypairs are exchanged while keeping the private keys to only their owners.

Data exchanged during trades such as payment details & chat messages are very private and mostly restricted to the trade participants; this is where the exchanged public keys are used in encrypting data between the participants.

Data Encryption Algorithm

Data transfer between the participants is always done using a secure HTTPS connection but most of the content and documents stored on IPFS such as chat messages are encrypted before storage.

The encryption is done using the state of the art military grade level encryption algorithm AES-GCM (  Advanced Encryption Standard in Galois/Counter Mode) inside the user’s browser.

Client Side KeyPair Generation

 let key = window.crypto.subtle.generateKey(

    {

      name: "AES-GCM",

      length: 256

    },

    true,

    ["encrypt", "decrypt"]

  );

Client Side Data Encryption

async function encrypt(string,key) {

  let encoded = new TextEncoder().encode(string);

  let iv = crypto.getRandomValues(new Uint8Array(12));

  let encrypted = await crypto.subtle.encrypt({"name":"AES-GCM","iv":iv}, key, encoded);

  return encrypted = {"encrypted":encrypted, "iv": iv};

}

Client Side Data  Decryption

async function decrypt(encrypted,iv, key) {

  let decrypted = await crypto.subtle.decrypt({"name":"AES-GCM","iv":iv}, key,encrypted);

  let decoded = new TextDecoder().decode(decrypted);

  return decoded;

}

User Rating

Every user on the network will be rated based on their trade and feedback from other traders. After every successful trade, both parties will have a +1 rating, moreover, a merchant or the initiator can decide to give feedback using the rating widget after the trading closes.

Guardians summoned to moderate a trade can also rate any of the parties based on their behavior. Users with the best rating will have their offers shown on top of the offer list always.

In rare cases, the community can vote on banning a merchant if any dubious activity is suspected.

Trading Fee  

Every successful trade on LibertyPie will attract a 0.25% fee, this fee will be taken automatically from the asset deposited into the escrow contract.

If the trade fails or is canceled, the fee will not be charged as no transaction took place.

Trade Rewards

As part of the token distribution plan, traders involved in every successful trade will receive an amount of XPIE tokens, this is to help boost user adoption and also to compensate the traders for the gas used.

XPIE Token rewards will be distributed to traders based on the amount traded. Both the buyer and seller will receive the reward once the trade is completed successfully.

Trade Moderation

When starting a trade, the user can optionally enable a guardian (mediator) involvement in the trade, the guardian will supervise the trade from start to finish, this will help spot fraud by any of the parties even before it happens.

During the trade, the initiator or merchant can summon a guardian immediately to moderate the trade if it was not done during the start of the trade.

Guardians 

A guardian is anyone willing to dedicate his or her time and effort to help protect the network against fraud and bad actors for a reward.

Guardians help in moderating a trade if optionally added to the trade, they must also respond to the summons of a trader any time during a trade.

Secondly, guardians help in dispute resolution on the network.

If any trader or merchant has a problem with a trade, they can seek a dispute resolution where a minimum of 3 guardians is tasked to solve the issue.

Guardians are rewarded from the fee vault collected from trades at the end of the month.

Becoming a Guardian

To become a  guardian, you need to stake at least 10,000 XPIE  tokens in the guardian contract.

After the staking, you will need to open a proposal on why the community should vote and accept you as a guardian.

If the majority of the votes approve your position as a guardian, you will be automatically approved on the guardian contract. If you are voted against as a guardian, You will need to unstake your XPIE  tokens from the guardian contract.

Guardians Rating

Guardians are rated based on the feedback from the traders and successful operations handled. This helps eliminate the bad from the good. If a  guardian misses more than 3 summons, 50 XPIE will be deducted from his staked account.

Also once a guardian’s staked tokens amount goes below 10,000 XPIE, the guardian will be disabled from being summoned and thus will not be rewarded on trades.

In extreme cases, guardians can be blacklisted, in rare situations like this, the guardian will lose all his staked XPIE tokens.

Guardians Rewards

Guardians will earn from two different sources:

  1. DeFi Vault: Staking in the guardian contract will mint a GPIE token which can be staked into the DeFi vault for yields.
  2. Every successful trade attracts a fee of 0.25%  which 0.1%  is distributed to the guardians either summoned or on standby.

Offline Mode

Guardians are free to set an offline mode if they wish to take a break, this way, they won’t be punished by the network for not responding to the summons of traders.

Note: Once you are on offline mode, rewards from fees will be cut off. DeFi vault’s earnings won’t be affected.

XPIE Governance Token

XPIE is the native governance token for the LibertyPie protocol.

Currently, it has a total supply of 990,000,000 XPIE.

The protocol’s decision making and future improvements depend on the community of XPIE token holders.

Holders can vote on proposals or start a new proposal to be voted on.

Any address with 9,900,000 XPIE (1% of current XPIE max supply)  or more delegated to it is eligible to start a new governance proposal which is an executable code.

All proposals have a maximum of 3days voting period.

If a proposal reaches 495,000,000 votes (5% of current XPIE max supply) or more, it will be considered as passed and will be queued in the TimeLock contract which will be executed after 3days.

Token Distribution

The tokens are distributed in a free and fair manner; the community is the first-class citizens on the network, so 50% of the total supply will be allocated to them.

Community Allocation:  50%

This will be distributed to the community through different events and mechanisms over a period of time. Below is the distribution table.

   Year

Distribution Treasury

  %

    One

198,000,000

  40%

    Two

148,500,000

  30%

    Three

99,000,000

   20%

    Four

49,500,000

   10%

 

Team Allocation: 20%

This allocation goes to the team members, co-founders & advisory board, there will be a  vesting period of 36 months where the tokens will be locked into a smart contract, after this period, 10% will be released for every 3 months interval.

Initial Fund Raising: 25%

This is the initial funds needed to run the project, listing on exchanges, providing liquidity, marketing and temporally paying the developers.

Ecosystem Fund: 5%

This fund will be used for strategic partnership & incentivization to grow the network.

LibertyPie DeFi

LibertyPie protocol is not only for P2P only but has DeFi features where token holders can benefit from staking selected assets into the DeFi vault. Rewards in the DeFi vault will be given in XPIE tokens.

Using multiple strategies that will be created by the team and community, the vault will select the best yields for users who stake their assets.

Competitors

Bisq Network

Bisq is one of our closest competitors, Bisq is a decentralized bitcoin exchange network. Bisq has distributed its application for major platforms like Windows / macOS creating a decentralized network to allow users to trade.

LibertyPie on the other hand takes a stepwise approach to gain maximum volume/liquidity by providing access to an easy-to-use web interface to reduce the hustle of onboarding and allowing altcoins to pair with fiat directly.

Localcryptos

LocalCryptos is a peer‐to‐peer custody‐less encrypted marketplace for buying and selling ether selected crypto assets. Though they boast of being a decentralized marketplace, much of their implementation relies heavily on centralized servers which they host and maintain.

Moreover, users must go through the hustle of creating accounts where personal data are collected which defeats the principle of decentralization.

LibertyPie unleashes the power of smart contracts to achieve 100% decentralization without compromising liberty & privacy.

References 

https://www.crowdfundinsider.com/2020/06/162226-paxful-enters-india-market-quickly-emerges-as-top-p2p-bitcoin-marketplace/

 

https://www.binance.com/en/blog/421499824684900370/Binance-Launches-Global-PeertoPeer-P2P-Merchant-Program

https://www.entrepreneur.com/article/359292

https://p2pfinancenews.co.uk/2020/08/25/is-cryptocurrency-gaining-momentum-in-the-p2p-space