WEB3DEV

Cover image for Como Construir uma Exchange Descentralizada (DEX) como a Uniswap
Panegali
Panegali

Posted on • Atualizado em

Como Construir uma Exchange Descentralizada (DEX) como a Uniswap

Tutorial Passo a Passo para construir uma DEX como a Uniswap

As exchanges descentralizadas, também conhecidas como DEXs, são mercados peer-to-peer onde negociantes de criptomoedas fazem transações diretamente sem entregar a gestão de seus fundos a um intermediário ou custodiante. Estas transações são facilitadas pelo uso de acordos auto-executáveis escritos em códigos, chamados de contratos inteligentes. Para entender melhor as exchanges descentralizadas, leia meu artigo anterior sobre DEX.

Neste artigo, vou lhe ensinar como construir uma Exchange Descentralizada (DEX) como a Uniswap.

Construir uma Exchange Uniswap é simples. Em primeiro lugar, precisamos de três conjuntos de código:

  1. Contrato de Fábrica
  2. Contrato de Roteamento
  3. Código Front-end

O Contrato de Fábrica é usado para a concepção do token LP, ele criará um token LP para cada par de troca. O Contrato de Roteamento é aquele chamado pelo usuário para interagir com o contrato de fábrica. O código fonte do Contrato de Fábrica pode ser encontrado aqui: https://etherscan.io/address/0x5c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f#code

Se você não estiver implantando o código na rede principal da Ethereum, você precisa adicionar a seguinte linha após a linha 398 do código fonte acima:

bytes32 public constant INIT_CODE_PAIR_HASH = keccak256(abi.encodePacked(type(UniswapV2Pair).creationCode));

1

Recomendamos o uso do Remix, se você não estiver familiarizado com ele, vá para o Remix!

Antes de implementar o contrato, temos que compilá-lo. Vá para o Solidity Compiler, selecione "Istanbul" para a versão EVM, marque "Enable optimization" para a configuração do Compiler e clique no botão "Compile".

2

Em seguida, vá para Deploy & Run Transaction, selecione "UniswapV2Factory - browser/xxx.sol" em contract.

3

4

Para implementar o contrato, é necessário o parâmetro _feeToSetter, que é o administrador do contrato. O endereço tem o direito de decidir quem poderia receber a taxa obtida com a realização desta troca.

5

Após a implementação do contrato, há duas etapas:

  1. Executar a função call setFeeTo para atribuir um endereço para receber as taxas de transação.

  2. Chamar o valor INIT_CODE_PAIR_HASH e gravá-lo, precisamos dele mais tarde.

Você pode encontrar o valor de INIT_CODE_PAIR_HASH como mostrado na imagem abaixo.

6

Trabalhamos então no Contrato de Roteamento, o código fonte do contrato de Roteamento pode ser obtido aqui: https://etherscan.io/address/0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D#code

Pesquise o código na linha 700:

hex’96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f’ // init code hash

Precisamos substituir o hash pelo que recebemos do Contrato de Fábrica INIT_CODE_PAIR_HASH. Em seguida, o contrato pode ser implantado. Dois parâmetros são necessários:

  1. Endereço do Contrato de Fábrica que acabamos de implementar
  2. Endereço WETH

O que é WETH?

A Exchange Uniswap funciona bem com tokens ERC20, mas ETH não é ERC20. Portanto, a exchange precisa de um conversor WETH para converter eth para WETH, um padrão ERC20. A taxa de câmbio é fixada em 1 para 1. Com base na rede que você está usando, escolha o endereço WETH abaixo como parâmetro de entrada.

Mainnet:’0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'
Ropsten:’0xc778417E063141139Fce010982780140Aa0cD5Ab’
Rinkeby:’0xc778417E063141139Fce010982780140Aa0cD5Ab’
Goerli:’0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6'
Kovan:’0xd0A1E359811322d97991E03f863a0C30C2cF029C’

Depois de compilar e implementar o Contrato de Roteamento, lembre-se de anotar os endereços de ambos os contratos e o código hash de inicialização.

O próximo passo é trabalhar no front-end dos códigos:

Podemos fazer o download do código do front-end pelos comandos:

git clone https://github.com/Uniswap/uniswap-interface.git
cd uniswap-interface
yarn

7

O endereço do contrato precisa ser substituído, precisamos substituir o endereço do contrato do roteador na linha 6 de /uniswap-interface/hide/constants/index.ts

Também precisamos procurar um endereço de fábrica e um código de hash init para substituição. Certifique-se de que o código no node_module/@uniswap também tenha sido substituído.

Depois de tudo, substituído, crie um repositório em seu GitHub. E digite os seguintes comandos na pasta de códigos front-end.

cd uniswap-interface
rm -rf .git
git init
git remote add origin https://github.com/{username}/{project name}.git
yarn add gh-pages
yarn build

Em seguida, edite package.json, substitua o valor da página inicial pelo nome https://username.github.io/project. Após salvar o arquivo, digite os seguintes comandos,

git add .
git commit -m “uniswap exchange deployment”
git put
yarn deploy

Depois que tudo estiver concluído, você poderá acessar sua Exchange pelo nome https://username.github.io/nome do projeto com uma carteira MetaMask.

Finalizando

Espero que você tenha entendido como é fácil construir uma exchange descentralizada (DEX) como a Uniswap.


Este artigo foi escrito por Ishan Shahzad e traduzido por Marcelo Panegali. O original pode ser encontrado aqui.

Top comments (0)