Kyber Tutorial – Creazione di uno scambio decentralizzato

Jan 20, 2023 | Cripto Defi | 0 commentaires

Apparsa nel 2017, la rete Kyber è un progetto basato sul protocollo Ethereum che cerca di decentralizzare completamente lo scambio senza fiducia di criptovalute sulla blockchain. Utilizzando la rete Kyber, gli utenti dovrebbero essere in grado di convertire o scambiare istantaneamente qualsiasi criptovaluta.

Ecco un tutorial per impostare uno scambio decentralizzato minimalista. Infatti, consentirà solo lo scambio della coppia ETH/MANA. Il token di ingresso è ETH e il token di uscita MANA.

Dettagli tecnici importanti : Questo tutorial è codificato in JavaScript su una macchina Ubuntu. Ricorda che questo sviluppo sta avvenendo all’interno della rete Kovan di Ethereum (Testnet).

1. Configurazione di Web3

var Web3 = require('web3');
var url = '
var web3 = new Web3(url);

Aggiungiamo la libreria Web3 al nostro script che facciamo interagire con un nodo Ethereum Kovan fornitoci da Infura.

2. Recupero dello smart contract ABI Proxy di rete Kyber

var abi_KNP = [ ... ];

Prendiamo l’ABI dello smart contract Proxy di rete Kyber ici.

3. Creazione di un portafoglio

var wallet = await web3.eth.accounts.wallet.add('0x87214a3bad248a1e82e0a86a107bdb020d740e9d3ce4f8c64b025f0f1e60adcd');

Aggiungiamo un portafoglio esistente, precedentemente alimentato con un rubinetto Kovan.

4. Creazione dell’istanza del contratto intelligente Proxy di rete Kyber

var KyberNetworkProxy = new web3.eth.Contract(abi_KNP,'0x692f391bCc85cefCe8C237C01e1f636BbD70EA4D');

Creiamo un’istanza del contratto intelligente Proxy di rete Kyber con la sua ABI e il suo indirizzo sulla rete Kovan.

5. Impostazione dell’affare

var amount ='10000000000000000';
var uint256Amount = web3.eth.abi.encodeParameter('uint256',amount);
var rates = await KyberNetworkProxy.methods.getExpectedRate('0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee','0xcb78b457c1F79a06091EAe744aA81dc75Ecb1183',uint256Amount).call();
var gasEstimated = await KyberNetworkProxy.methods.swapEtherToToken('0xcb78b457c1F79a06091EAe744aA81dc75Ecb1183',rates.slippageRate).estimateGas({from:wallet.address,value:10000000000000000});

La variabile Quantità rappresenta il numero di WEI che vogliamo scambiare.
La variabile uint256Importo rappresenta la variabile Quantità codificato in uint256.
La variabile aliquote recupera lo slippage rate, cioè il valore di prestito consigliato per evitare possibili problemi durante il cambio.
La variabile gasStimato rappresenta il gas che deve essere fornito per la prossima transazione.

6. Distribuzione della transazione

var trade = await KyberNetworkProxy.methods.swapEtherToToken('0xcb78b457c1F79a06091EAe744aA81dc75Ecb1183',rates.slippageRate).send({from:wallet.address,gas:gasEstimated,value:10000000000000000});

Questa funzione avvia la transazione sulla Blockchain. Questo invia un importo di 0,01 ETH per recuperare l’equivalente in MANA.

7. Verifica su kovan.etherscan.io

Recuperiamo l’indirizzo del nostro Wallet (0x102fFcdc8E00A259695b4E243c9724435aD625bB) che stiamo cercando
su kovan.etherscan.io. Possiamo quindi vedere che la transazione è stata eseguita.

Completezza del codice

var Web3 = require('web3');
var url = '
var web3 = new Web3(url);

var abi_KNP = [ ... ];

async function run() {

	var wallet = await web3.eth.accounts.wallet.add('0x87214a3bad248a1e82e0a86a107bdb020d740e9d3ce4f8c64b025f0f1e60adcd');
    var balance = await web3.eth.getBalance(wallet.address);
    console.log('Adresse de mon Wallet : ' + wallet.address);
    console.log('Solde avant l échange (en WEI) : ' + balance);

	var KyberNetworkProxy = new web3.eth.Contract(abi_KNP,'0x692f391bCc85cefCe8C237C01e1f636BbD70EA4D');

	var amount ='10000000000000000';
    var uint256Amount = web3.eth.abi.encodeParameter('uint256',amount);
	var rates = await KyberNetworkProxy.methods.getExpectedRate('0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee','0xcb78b457c1F79a06091EAe744aA81dc75Ecb1183',uint256Amount).call();
	var gasEstimated = await KyberNetworkProxy.methods.swapEtherToToken('0xcb78b457c1F79a06091EAe744aA81dc75Ecb1183',rates.slippageRate).estimateGas({from:wallet.address,value:10000000000000000});
	
	var trade = await KyberNetworkProxy.methods.swapEtherToToken('0xcb78b457c1F79a06091EAe744aA81dc75Ecb1183',rates.slippageRate).send({from:wallet.address,gas:gasEstimated,value:10000000000000000});

	var balance = await web3.eth.getBalance(wallet.address);
	console.log('Solde après l échange (en WEI) : ' + balance);
}
run();