No se pudo implementar el contrato a través de sendTransaction

Estoy tratando de implementar un contrato ( disponible en Etherscan.io ). Procedo siguiendo los pasos: copie su código de creación de contrato y guárdelo en crCodevariable. Luego traté de ejecutar el siguiente código;

 async function deployWithCreationCode(){

    var myTrx = await web3.eth.sendTransaction({
      from: account1,
      data: crCode 
  });
  console.log(myTrx)
}

Aquí está mi salida.

UnhandledPromiseRejectionWarning: Error: Returned error: base fee exceeds gas limit

Como resolverlo ?

Respuestas (1)

En su crCodevariable, después del Código de creación de contrato , debe agregar Argumentos de constructor .

Ambas piezas de código de bytes están disponibles para usted en la URL que ha vinculado en su pregunta.

Alternativamente, dado que el código fuente del contrato también está disponible en ese enlace, puede compilarlo y luego implementarlo de la "forma estándar" (usando deployla función web3.js).

De hecho, esta es definitivamente la forma recomendada, porque los Argumentos del Constructor dados en ese enlace pueden incluir direcciones de cuentas o contratos que no son "suyos".

pero parece que ya se agregaron en el código de creación ..., sin embargo, he hecho lo mismo que sugeriste ... pero sigue siendo el mismo error ... Por cierto. cuando copio el código de creación del contrato, en el código VS y lo asigno a crCode, no se muestra completamente (debido a una cadena muy grande). Quiero decir que si presiono el botón 'finalizar' del teclado, no pude ver su último carácter... creo que existió... En segundo lugar, si uso alternativamente a través de .deploy (según mi pregunta anterior), si "la forma estándar es no es factible para mí, entonces CÓMO podría dar esos argumentos ... actualice su respuesta.
@AmirAli: 1. Le recomiendo que copie el código de creación largo en un archivo y, en su código de implementación, lo lea desde el archivo (en lugar de incrustarlo en su programa). 2. ¿Qué quiere decir con "la forma estándar no me es factible"? Explique qué es exactamente lo que no es factible, porque generalmente necesita resolver ese problema en lugar de buscar otras formas. En cualquier caso, para saber qué argumentos debe pasar de la "forma estándar" (usando la función de implementación web3.js), debe buscar la constructorfunción en el código fuente y averiguar qué se requiere para la construcción.
no es factible para mí ... significa que tengo que implementar muchos contratos a través del programa, allí no pude personalizar mi programa para guardar y asignar parámetros de constructor para cada contrato por separado. y luego desplegar. De manera estándar, sé, dar argumentos, cómo compilar, cómo implementar... ... 2. sí, tienes razón, en algún momento, no busco otras formas... porque la actualidad parece fácil para mi escenario... .. OK tratare de encontrar cual es mejor en mi caso... muchas gracias
@AmirAli: Como dije. ¡Este método de copiar los argumentos de construcción de otra persona es propenso a fallar miserablemente! Cualquier argumento que sea una dirección de una cuenta o un contrato, potencialmente hará que el contrato implementado sea inutilizable para usted, incluso si logra implementarlo sin revertir (debido a varias comprobaciones o llamadas que el constructor podría estar haciendo a cualquiera de esas direcciones ). Así que entiendo que está buscando el "camino corto", pero tenga en cuenta que este intento probablemente terminará por un camino mucho más largo que el que está tratando de evitar.