Сколько стоит загрузить смарт-контракт?

Я использую локальную тестовую сеть Ethereum, и мне кажется, что цена загрузки смарт-контракта слишком высока.

Это код смарт-контракта:

contract Transfer {
    address owner;

    function Transfer () {
        owner = msg.sender;
    }

    modifier isOwner ()
    {
        if (owner == msg.sender) {
            _;
        }
        else
        {
            revert();
        }
    }

    function sendEther (address dst) isOwner payable {
        if(msg.value<=0) revert();
        dst.transfer(msg.value);
    }

    function getBalance () constant isOwner returns (uint) {
        return msg.sender.balance;
    }

    function () payable  
    {
        if(msg.value<=0) revert();
        owner.transfer(msg.value);
    }

}

После развертывания с помощью трюфеля я увидел, что баланс учетной записи, с которой был развернут этот контракт, уменьшился на 0,045 эфира, что по сегодняшнему обменному курсу составляет около 15 долларов.

Не знаю, нормально ли это, но мне кажется, что это слишком дорого.

Цена на газ в моей тестовой сети составляет 20000000000, а текущая цена на газ (увиденная на https://ethstats.net/ ) еще выше (35500000000). Так что, если я не ошибаюсь, развертывание в основной сети будет еще дороже!

Итак, вкратце, мой вопрос: это нормальная цена или я что-то упускаю?

РЕДАКТИРОВАТЬ: Браузер Solidity говорит, что для этого самого контракта «Создание: 20435 + 126600», что означает менее 1 доллара… трюфель каким-то образом крадет мой эфир?!

Заранее большое спасибо! :)

Ответы (2)

Вы что-то упускаете.

Количество газа, которое требуется для отправки транзакции, зависит от объема обработки, которую должны выполнить майнеры. Разумным показателем этого является количество входных данных, связанных с транзакцией.

При отправке контракта вы отправляете закодированный байт-код контракта. Затраты, которые вы понесли, значительно превышают такие простые контракты. Без подробностей о том, как именно вы представили контракт, никто не может знать, сделали ли вы что-то не так.

35,5 Gwei — текущая средняя цена на газ. Вы можете указать любую цену на газ. Примерные цены на газ приведены здесь . Он просто определяет, насколько быстро ваша транзакция будет добыта.

О, ладно... Так что, может быть, трюфель берет с меня безумно высокую плату за мгновенную публикацию контракта. Это было бы очень логичным объяснением. Большое спасибо, Томас! :)

Вы можете установить лимит газа и цену на газ для каждой сети в truffle.jsВот пример truffle.js,

module.exports = {
  // See <http://truffleframework.com/docs/advanced/configuration>
  // to customize your Truffle configuration!
    migrations_directory: "./migrations",
    networks: {
        development: {
        host: "127.0.0.1",
        network_id: "*", // Match any network id
        gas: 13245300
    },
    ropsten: {
      host: "localhost",
      network_id: "3",
      gas: 4600624,
      gasPrice: 22000000000,
      from: "address to own the contract"
    },
    mainnet: {
      host: "localhost",
      network_id: "1",
      gas: 4324530, 
      gasPrice: 2000000000, 
      from: "address to own the contract"    
    }   
}      
};

когда вы пытаетесь развернуть, сделайте что-то вроде truffle migrate --network ropsten --reset.