Mi objetivo es enviar una transacción firmada para crear un contrato inteligente, sin embargo, me enfrento a un problema que no he podido resolver durante algunos días:
Cuando envío la transacción (en una cadena privada), hay dos finales diferentes:
- 1 Web3js me dice que funcionó, puedo ver la transacción en el bloque. Sin embargo, al intentar contactar con el contrato, tengo el siguiente resultado:
Error: no se pudo decodificar uint256 de ABI: 0x
Cuando trato de correr eth.getCode(contractAddress)
en Geth, regresa0x
- 2 Web3js me dice que la transacción no ha sido minada por 50 bloques (el nodo no tuvo tiempo de minar 50 bloques). Pero puedo ver la transacción en el bloque (en geth).
Aquí está el código que uso:
web3g = result;
getContractInstance(function (error, instance) {
if (error) {
console.log(error);
} else {
let newContract = instance;
let deploy = newContract.deploy({
data: bytecode,
arguments: [MY ARGS]
}).encodeABI();
let gas = web3g.utils.toHex(3000000);
let gasPrice = web3g.utils.toHex(21000000000);
let gasLimit = web3g.utils.toHex(4000000);
let nonce;
web3g.eth.getTransactionCount(req.body.sender_address)
.then(function (result) {
nonce = result;
nonce = web3g.utils.toHex(nonce);
let transactionObject = {
gas: gas,
gasPrice: gasPrice,
gasLimit: gasLimit,
data: deploy,
from: req.body.sender_address,
nonce: nonce
};
web3g.eth.accounts.signTransaction(transactionObject, req.body.private_key, function (error, signedTx) {
if (error) {
console.log(error);
} else {
console.log(signedTx);
web3g.eth.sendSignedTransaction(signedTx.rawTransaction)
.on('confirmation', function (number, receipt) {
if (number == 1) {
// do stuff
¿Alguien puede indicarme qué estoy haciendo mal?
Nota: puedo enviar una transacción firmada utilizando el método anterior para transferir ether entre direcciones.
Editar: la estimación de gas devuelve lo siguiente: error: error devuelto: el gas requerido excede la asignación o siempre falla la transacción
Enfrenté problemas similares al crear transacciones firmadas y terminé desarrollando este paquete. https://www.npmjs.com/package/web3js-raw . Debería resolver tu problema.
Iteración 122442
quim
Iteración 122442
Iteración 122442
Iteración 122442
quim
Iteración 122442
quim