Corro ganache, trufa y metmask. Si ejecuto el siguiente código, aparece un error en la función this.web3.eth.sendSignedTransaction():
EDITAR: cambié mi código a lo siguiente. Sin embargo, el error siguió siendo el mismo.
const encoded_tx = this.contract.methods.createCountry("NL", 100, 100, 100000000, this.account).encodeABI();
const nonce = await this.web3.eth.getBlockTransactionCount(this.account);
const rawTx = {
nonce: this.utils.toHex(nonce),
gasLimit: this.utils.toHex(3000000),
gasPrice: this.utils.toHex(this.utils.toWei('20', 'gwei')),
data: encoded_tx,
from: this.account,
to: this.contractAddress
};
let tx = new Tx(rawTx);
tx.sign(this.pvtKey);
let serializedTx = tx.serialize();
this.web3.eth.sendSignedTransaction('0x' + serializedTx.toString('hex'))
.on('receipt', console.log);
El error es el siguiente:
index.js:2178 Error: Returned error: {"id":6,"jsonrpc":"2.0","error":{"code":-32603}}
at Object.ErrorResponse (errors.js:29)
Ya no tengo idea de dónde buscar y siento que lo he intentado todo, ¿podría tener algo que ver con el hecho de que estoy conectado a metamask? Cuando trato de enviar esta transacción a través de metamask con eth.method.send(), la transacción no da un error y se comporta como se esperaba.
Para obtener el nonce, debe llamar web3.eth.getTransactionCount
y no getBlockTransactionCount
.
getTransactionCount
Obtenga los números de transacciones enviadas desde esta dirección.
getBlockTransactionCount
Devuelve el número de transacción en un bloque dado.
Para depurar las interacciones con ganache, puede comenzar ganache-cli --verbose
mostrando las interacciones entre el cliente y ganache y mostrará más detalles sobre las transacciones.
buena vibración
-32603
(o más precisamente, la representación hexadecimal de2^32 - 32603
).jaspe
jaspe
Iteración 122442
jaspe