¿Cómo se calculan los costos de transacción de Ethereum?

Estoy en el proceso de aprender la tecnología blockchain para un cliente mío. Entiendo el concepto de "gas" en costos computacionales. Estamos buscando crear una criptomoneda como alternativa al uso de una plataforma de pago tradicional para una solución de ciclo cerrado. Quiero tener una idea del "costo de transacción" asociado con una transacción de pago simple utilizando la red ethereum. El método de cálculo no me parece del todo claro. ¿Alguien puede ayudar?

¿El costo de una transacción simple es el mismo 21,000 para enviar cualquier cantidad de éteres? lo mismo para enviar 1 ether que para enviar 500 ether?

Respuestas (4)

El cálculo es gas* gascost, por lo que una transacción simple costará21,000 gas * 20 GWei/gas = .00042 ETH

También debe dar cuenta de cualquier valuetransferencia en la transacción. Así que la fórmula completa sería gas* gascost+ value.

La transacción simple que transfiere valor pero no tiene datos adicionales y no activa ningún código EVM (el destinatario no es un contrato inteligente) consume exactamente 21000 unidades de gas. Solo necesita saber el precio del gas para calcular el costo de la transacción.

El precio predeterminado de la gasolina era 20 Gwei (20 * 10 -9 ETH), pero se recomienda usar un valor más bajo ahora. Consulte el servicio ETH Gas Station para obtener estadísticas actualizadas sobre el precio del combustible.

También puede optimizar los costos enviando múltiples pagos en una sola transacción, utilizando un contrato inteligente simple. Sin entrar en detalles, un solo pago dentro de dicha transacción le costará ~10000 unidades de gasolina.

¿Cómo enviaría múltiples pagos en una sola transacción, usando transacciones simples? Sé que esto se hace fácilmente desde un contrato inteligente, pero no he visto ningún código para transacciones simples combinadas.
@BokkyPooBah, tienes que usar un contrato para esto, no hay otra opción.
¿Cómo puede ser constante el precio de envío por contrato (10000 unidades)? Cada instrucción de envío consumirá algo de gas, por lo que debería ser lineal con la cantidad de envíos. ¿Cuidado para elaborar?

Creé una red de prueba privada de Ethereum e inicié una transacción de 5 ether de una cuenta a otra. El saldo en ambas cuentas es de 20 Ether antes de la transacción. Después de la transacción:ingrese la descripción de la imagen aquí

Entonces, el costo de la transacción es 0.0004575186 Ether, que es aproximadamente 0.00663 USD al tipo de cambio de hoy.

Se puede encontrar más información sobre los precios en el "Apéndice G. Lista de tarifas" del documento amarillo de Ethereum .

La tarifa de transacción está determinada por (gasConsumed * gasPrice). Para una transacción simple, la cantidad de gas consumido es siempre 21 000 y puede establecer el límite de gas en 21 000 para cancelar la transacción si un nodo intenta superar los 21 000 gas esperados.

En este momento, el precio de gas sugerido por MyEtherWallet.com es de 21 Gwei, que es básicamente el "precio de mercado" del gas. Así que estás viendo (21 000 * 21) = 441 000 Gwei para enviar cualquier cantidad de Ether hoy. ¡Esa es una gran oferta si desea enviar 1 Ether (1,000,000,000 Gwei) que está valorado en alrededor de $ 330 dólares en este momento!

¡Para enviar 1 Ether, está pagando solo (441,000/1,000,000,000) o .0441% en tarifas de transacción! Lo bueno de esto es que si envía 2 Ether, el (gasConsumed * gasPrice) sigue siendo el mismo y el costo de su transacción se puede reducir a la mitad (441,000/2,000,000,000) .02205%, porque todavía es solo una transacción.

Personalmente, ese es un valor absolutamente ridículo y escribí un código c# para pagar a todos los mineros que trabajan arduamente una tarifa de transacción del 1,5%. De esta manera, no tengo que preocuparme por lo que creo que otros están pagando en un momento dado y cuál es el valor de Ether en un momento dado.

Probablemente sea mejor que obtenga el promedio si es un usuario normal, pero con una computadora con espacio de aire, su única inseguridad es no entender el valor de lo que tiene, así que planeo tratar cualquier posibilidad con transacciones firmadas localmente en una tasa de porcentaje fijo de la riqueza que estoy transfiriendo.

    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;
    }