¿Es Ownable.sol transferOwnership() una función costosa de ejecutar, o la estoy ejecutando mal?

Tengo un token ERC20 simple y me gustaría transferir la propiedad de este contrato a una nueva dirección usando la función Ownable.sol transferOwnership()

Cuando ejecuto este contrato, parece que esta llamada de función me costará aproximadamente 1,5 ETH (!!!) si utilizo un precio de gasolina competitivo (215 GWEI). Eso parece muy costoso considerando que tengo entendido que todo lo que está sucediendo es que una variable se está actualizando en la cadena de bloques.

¿Estoy ejecutando algo mal? Aquí está la información de etherscan, he intentado ejecutarlo con una tarifa de gas muy baja, pero aún parece costar 0.15 ETH (probablemente nunca se agregará a un bloque a este precio)

https://etherscan.io/tx/0xb9c184899d8d19e53464509aabd3383508a2320ea67613d3f327a393d8961999

Aquí está mi código:

const Web3 = require('web3');
const TestToken= artifacts.require('TestToken.sol');
const web3 = new Web3('https://ropsten.infura.io/v3/<MYKEY>');

module.exports = async function (deployer, network, accounts) {
  const ADMIN_ADDRESS = "...";
  const NEW_ADMIN = "...";


  const TEST_TOKEN= await TestToken.at("...");
  console.log('TEST governance token address: ' + TEST_TOKEN.address);

  const TEST_OWNER = await TEST_TOKEN.owner();
  
  console.log('The owner of the TEST governance token is: ' + TEST_OWNER);
  console.log('Transferring Ownership Now');
  
  let result = await TEST_TOKEN.transferOwnership(NEW_ADMIN);
  const NEW_TEST_OWNER = await TEST_TOKEN.owner();


  console.log('The new owner of the TEST governance token is: ' + NEW_TEST_OWNER);

Respuestas (1)

Tiene razón, la transferOwnershipfunción solo cambia el estado de una sola variable en el contrato, por lo que no debería requerir demasiado gas. La parte costosa es que emite un evento, que en realidad almacena datos en un bloque y eso es realmente costoso.

Una posible solución es que podría esperar hasta que EIP-1559 se fusione con la red principal, lo que debería hacer que las tarifas de gas disminuyan hasta 100 veces, o si está realizando su propia implementación de ERC20Token, podría simplemente eliminar la emisión del evento.