# What is XdYe?

{% hint style="info" %}
**Good to know:** all the information provided in this Gitbook is for educational purposes. Understanding decentralized technology is what builds and increases trust. In order to raise the usage of DeFi and its trust we need to understand the basis.
{% endhint %}

Before getting in to how **XdYe** works we need to understand what is a **DEX** (Decentralized Exchange) a peer-to-peer (P2P) marketplace that connects cryptocurrency buyers and sellers.&#x20;

In contrast to centralized exchanges (CEXs), decentralized platforms are non-custodial, meaning a user remains in control of their private keys when transacting their ERC-20 with the platform.

## What do we need for creating XdYe?

Creating a DEX can be quite scary if you look at Uniswap Documentation for example. In order to create a DEX we need to understand its core fundamentals and then we will be ready to develop it.

{% hint style="info" %}
**Good to know:** everyone can easily fork a Github Repo and create its own DEX with more or less difficulties, in XdYe we want to explain, understand and develop the main core pillars of what a DEX actually is. While also adding some extra functionalities like Farming and Staking capabilities.
{% endhint %}

For those that just want to get deeper on some aspects we have created this **index** so you can easily navigate along this Documentation.

{% hint style="warning" %}
**Attention:** We recommend to go through all the documentation by reading all pages until the end and navigate to next page/document so you make sure you understand all XdYe Concepts and Fundamentals of all protocols, procedures and implementations.
{% endhint %}

### Technology **Knowledge**:

A brief basic introduction to the main technology used. The most important aspect of this Documentation is to understand XdYe Core Fundamentals so this is a high-level concept introduction.

{% content-ref url="technology/blockchain" %}
[blockchain](https://rogercapone.gitbook.io/xdye-documentation/technology/blockchain)
{% endcontent-ref %}

{% content-ref url="technology/solidity" %}
[solidity](https://rogercapone.gitbook.io/xdye-documentation/technology/solidity)
{% endcontent-ref %}

{% content-ref url="technology/truffle" %}
[truffle](https://rogercapone.gitbook.io/xdye-documentation/technology/truffle)
{% endcontent-ref %}

{% content-ref url="technology/react" %}
[react](https://rogercapone.gitbook.io/xdye-documentation/technology/react)
{% endcontent-ref %}

{% hint style="warning" %}
**Advice:** you can use a wide variety of tools, frameworks and environments in order to successfully build a DEX, f.e. you could use Hard Hat instead of Truffle but in order to show and explain we need to focus in one methodology.&#x20;
{% endhint %}

### Smart Contracts

Due to the importance of this section we have decided to first give an overall understanding and then break down each one of the Smart Contracts we have used on XdYe Contract Structure.&#x20;

We have also provide a link to each Smart Contract Source Code and an explanation of each one of them.

{% content-ref url="smart-contracts/contracts-overview" %}
[contracts-overview](https://rogercapone.gitbook.io/xdye-documentation/smart-contracts/contracts-overview)
{% endcontent-ref %}

{% hint style="info" %}
**Good to know:** This is a crucial section to go through in order to understand XdYe DEX core fundamentals. Basically is the back-end of our XdYe Dapp.
{% endhint %}

### XdYe Deployment

One of the most important steps when we are building a DEX is the Smart Contract's deployment.&#x20;

Now that we have seen the main Smart Contracts, we are ready to introduce the deployment procedure we have used for XdYe DEX.

{% content-ref url="xdye-deployment/deployment-overview" %}
[deployment-overview](https://rogercapone.gitbook.io/xdye-documentation/xdye-deployment/deployment-overview)
{% endcontent-ref %}

{% hint style="info" %}
**Good to know:** We could have used Remix for managing deployments, in order to explore other deployment possibilities we have used Truffle CLI in order to perform blockchain deployments.
{% endhint %}

### XdYe Testing

Before deploying XdYe Smart Contract structure to a mainnet or in our case of study to testnet we need to perform multiple test in order to get sure our contract/back-end structure works as expected.&#x20;

Blockchain and smart contracts are immutable so we need to be conscious of that fact before deploying them.&#x20;

This is why it is so important to test as much as possible all smart contracts.&#x20;

{% content-ref url="testing-smart-contracts/testing-overview" %}
[testing-overview](https://rogercapone.gitbook.io/xdye-documentation/testing-smart-contracts/testing-overview)
{% endcontent-ref %}

### How to use XdYe

Now that the platform is up and running, we will explain in simple terms how you can use XdYe Dapp.&#x20;

Here you can go to XdYe deployed Dapp:

{% embed url="<https://rogercapone.github.io/xdye/#/>" %}
XdYe Dapp on Volta TestNet
{% endembed %}

This is a user friendly visual explanation. We have tried to mix it with concepts we have seen along with this Documentation.

{% content-ref url="how-to-use-xdye/dashboard" %}
[dashboard](https://rogercapone.gitbook.io/xdye-documentation/how-to-use-xdye/dashboard)
{% endcontent-ref %}

{% content-ref url="how-to-use-xdye/exchange" %}
[exchange](https://rogercapone.gitbook.io/xdye-documentation/how-to-use-xdye/exchange)
{% endcontent-ref %}

{% content-ref url="how-to-use-xdye/liquidity" %}
[liquidity](https://rogercapone.gitbook.io/xdye-documentation/how-to-use-xdye/liquidity)
{% endcontent-ref %}

{% content-ref url="how-to-use-xdye/pools" %}
[pools](https://rogercapone.gitbook.io/xdye-documentation/how-to-use-xdye/pools)
{% endcontent-ref %}

{% content-ref url="how-to-use-xdye/farms" %}
[farms](https://rogercapone.gitbook.io/xdye-documentation/how-to-use-xdye/farms)
{% endcontent-ref %}

### My Reflexion

Finally I have included a small reflexion.

{% content-ref url="my-reflexion/p\_opinion" %}
[p\_opinion](https://rogercapone.gitbook.io/xdye-documentation/my-reflexion/p_opinion)
{% endcontent-ref %}
