Estoy tratando de diseñar un SmartContract para un Token y tengo algunos problemas con los cálculos de gas. Cuando un usuario envía un token a alguien, me gustaría que hubiera una tarifa. Donde se pone confuso para mí es el gas. Leí que se debe pagar un mínimo de 21k en gasolina para todas las transacciones, pero no está claro qué se incluye en esto. Leí que almacenar datos (SSTORE) cuesta 20 000 en gasolina la primera vez, 5 000 en gasolina para actualizaciones y 5 000 para restablecer (poner a cero) + obtienes un reembolso de 15 000 en gasolina. Según tengo entendido, cuando envía tokens, esto solo actualiza el saldo en dos billeteras (¿usando SSTORE?), Por lo tanto, debería ser uno de los siguientes:
así que no estoy seguro de entender de dónde viene el límite de 21k/cómo se calcula. Es importante que entienda lo anterior, porque determinará cómo escribo mi código.
No he podido encontrar esta información en ninguna parte, alguien me dijo que las transacciones internas cuestan menos de 21k, alguien más me dijo que todas las transacciones son operaciones SSTORE y 21k es solo un límite inferior al costo de una transacción, por lo que si tuviera un usuario que envía algunos tokens a una billetera existente (Vanilla ERC-20 SmartContract) sería 5k + 5k + 11k (tarifa de red) = 21k pero si tuviera algunas otras operaciones (incluido el envío de transacciones internas) haciendo que el gas supere los 21k tendría 5k + 5k + other_ops >= 21k
El algoritmo que estoy tratando de escribir es:
Hay marcas de tiempo involucradas en los cálculos, por lo tanto, dividí esto en el costo del gas (excluyendo todos los demás costos de cálculo):
Total : 25k - 70k gasolina
¿Es esto correcto? ¿O el paso 3 costará 21k en gasolina y los pasos 4 + 5 (juntos) también costarán 21k en gasolina, así:
Total : 52k - 82k gasolina
¡Gracias! Charla
No estoy seguro de entender de dónde viene el límite de 21k/cómo se calcula
21K gas
no es un límite de gas, sino el costo mínimo de gas para una transacción que se envía desde una cuenta de propiedad externa (es decir, fuera de la cadena).
Esta restricción no se aplica a una transacción que se envía desde una cuenta de contrato inteligente (es decir, desde la cadena).
1. update timestamp variable UserA (SSTORE) : 5k gas (or 20k if 1st time) 2. update timestamp variable UserB (SSTORE) : 5k gas (or 20k if 1st time) 3. send fee to fee wallet (update fee wallet balance using SSTORE internally?) : 5k gas 4. update UserA balance from sending tokens to UserB & Fee wallet (using SSTORE internally?): 5k gas 5. update UserB balance from receiving tokens sent by UserA (using SSTORE internally?): 5k gas (or 20k if 1st time) Total : 25k - 70k gas
buena vibración
gabriel
buena vibración
buena vibración
gabriel
buena vibración