Как рассчитываются транзакционные издержки Ethereum?

Я изучаю технологию блокчейна для своего клиента. Я понимаю понятие "газ" в вычислительных затратах. Мы рассматриваем возможность создания криптовалюты в качестве альтернативы использованию традиционной платежной платформы для решения замкнутого цикла. Я хочу получить представление о «стоимости транзакции», связанной с простой платежной транзакцией с использованием сети ethereum. Я нахожу метод расчета не совсем ясным. Кто-нибудь может помочь?

стоимость простой транзакции такая же 21 000 за отправку любого количества эфиров? то же самое для отправки 1 эфира, что и для отправки 500 эфиров?

Ответы (4)

Расчет gas* gascost, поэтому простая транзакция будет стоить21,000 gas * 20 GWei/gas = .00042 ETH

Вы также должны учитывать любые valueпереводы в транзакции. Таким образом, полная формула будет gas* gascost+ value.

Простая транзакция, которая передает стоимость, но не имеет дополнительных данных и не запускает какой-либо код EVM (получатель не является смарт-контрактом), потребляет ровно 21000 единиц газа. Вам просто нужно знать цену на газ, чтобы рассчитать стоимость сделки.

Цена на газ по умолчанию составляла 20 Gwei (20 * 10 -9 ETH), но сейчас рекомендуется использовать более низкое значение. Воспользуйтесь сервисом ETH Gas Station , чтобы получить актуальную статистику о ценах на газ.

Вы также можете оптимизировать расходы, отправляя несколько платежей за одну транзакцию, используя простой смарт-контракт. Не вдаваясь в подробности, один платеж в рамках такой транзакции обойдется вам в ~10000 единиц газа.

Как бы вы отправили несколько платежей в одной транзакции, используя простые транзакции. Я знаю, что это легко сделать из смарт-контракта, но я не видел никакого кода для комбинированных простых транзакций.
@BokkyPooBah, для этого вы должны использовать контракт, другого варианта нет.
Как цена отправки по контракту может быть постоянной (10000 ед.)? Каждая инструкция отправки будет потреблять некоторое количество газа, поэтому она должна идти линейно с количеством отправок? Хотите уточнить?

Я создал частную тестовую сеть Ethereum и инициировал транзакцию 5 эфиров с одной учетной записи на другую. Баланс на обоих счетах составляет 20 Ether перед транзакцией. После транзакции:введите описание изображения здесь

Таким образом, стоимость транзакции составляет 0,0004575186 эфира, что составляет примерно 0,00663 доллара США по сегодняшнему обменному курсу.

Дополнительную информацию о ценах можно найти в «Приложении G. Таблица комиссий» желтой бумаги Ethereum .

Комиссия за транзакцию определяется (gasConsumed * gasPrice). Для простой транзакции количество gasConsumed всегда равно 21 000, и вы можете установить лимит газа на 21 000, чтобы прервать транзакцию, если узел попытается превысить ожидаемые 21 000 газа.

На данный момент рекомендуемая MyEtherWallet.com цена на газ составляет 21 Gwei, что в основном является «рыночной ценой» на газ. Итак, вы смотрите на (21 000 * 21) = 441 000 Gwei для отправки любого количества эфира сегодня. Это чертовски выгодно, если вы хотите отправить 1 эфир (1 000 000 000 Gwei), который сейчас оценивается примерно в 330 долларов!

Чтобы отправить 1 Эфир, вы платите всего (441 000/1 000 000 000) или 0,0441% комиссии за транзакцию! Самое замечательное в этом то, что если вы отправляете 2 эфира, то (gasConsumed * gasPrice) остается прежним, и стоимость вашей транзакции может быть сокращена вдвое (441 000/2 000 000 000) 0,02205%, потому что это все еще одна транзакция.

Лично это абсолютно нелепое значение, и я написал некоторый код на C#, чтобы платить всем трудолюбивым майнерам 1,5% комиссии за транзакцию. Таким образом, мне не нужно заботиться о том, сколько, по моему мнению, платят другие в любой момент времени и какова стоимость эфира в любой момент времени.

Вам, вероятно, лучше получить среднее значение, если вы обычный пользователь, но с компьютером с воздушным зазором ваша единственная незащищенность — это неправильное понимание ценности того, что вы держите, поэтому я планирую рассмотреть любые возможности с локально подписанными транзакциями в фиксированный процент от суммы, которую я перевожу.

    decimal gasLimit = 30000;
    decimal etherToSend = .4m;
    decimal desiredFeePercentage = .015;

    decimal 1.5GetGasPriceInWeiForTransactionFeePercentage(gasLimit, desiredFeePercentage, etherToSend); // 200000000000 wei gasPrice for a transaction costing a max of 30,000 gas

    public decimal GetGasPriceInWeiForTransactionFeePercentage(
        decimal gasLimit,
        decimal desiredTransactionFeeAsPercent,
        decimal amountOfEtherToSend)
    {
        decimal transactionFeesInEther = amountOfEtherToSend * desiredTransactionFeeAsPercent;
        decimal transactionCostInWei = transactionFeesInEther * AMOUNT_OF_WEI_IN_ETHER;
        decimal requiredGasPriceInWei = transactionCostInWei / gasLimit;
        return requiredGasPriceInWei;
    }