Coût en Fiat de toutes les transactions dans les tests Truffle de Smart Contracts Ethereum

Vendredi 20 avril 2018 - Blockchain - Ethereum - Truffle

Contrôler le coût des transactions que nos utilisateurs ont à payer est crucial dans le développement de nos dApps. Puisque nous implémentons de toute façons des tests de nos contrats, habituellement avec Truffle, pourquoi ne pas en profiter pour afficher le coût de chaque ?

Et mince, le coût de ma 2ème transaction est quasiment le double de la 1ère, alors qu'elle est beaucoup moins importante dans la dApp...

Cost in Fiat of Ethereum transactions

Comment implémenter les coûts dans les tests

D'abord on a besoin de ça :

npm install crypto-price --save-dev

Ensuite on peut écrire quelque chose comme :

var myContract = artifacts.require('./contracts/MyContract.sol');
var cryptoPrice = require('crypto-price');

var ethPrice;
var cost;

contract('myContract', function(accounts) {

  before( () => {
    return cryptoPrice.getCryptoPrice('EUR', 'ETH').then( (result) => {
      ethPrice = result.price;
    });
  });

  beforeEach( () => {
    cost = 0;
  });

  it('It should do thing1', function() {
    var contract;
    return myContract.deployed().then(function(instance) {
      contract = instance;
      return contract.mySendFunction({from: accounts[0]});
    }).then(function(result) {
      cost = ((web3.fromWei((result.receipt.gasUsed) * (web3.eth.gasPrice), 'ether')) * ethPrice).toFixed(2);
    }).then(function() {
      return contract.myCallfunction.call(accounts[1]);
    }).then(function(result) {
      assert.equal(result, true, 'It did not do thing1');
    });
  });

  afterEach( () => {
    console.log('Cost: ' + cost + '€');
  });

});

Ajouter un commentaire