Tengo la siguiente función y no quiero firmar manualmente la transacción cada vez que se llama, ¿cómo puedo configurar una forma de firmar esta transacción con un objeto? He visto sendRawTransaction y account.signTransaction pero no puedo encontrar una manera de implementarlos en mi problema.
this.contractObject = this.contractObject = {from: this.account, gas:300000};
this.contract.methods.createCountry(arg1, 1rg2, arg3).send(this.contractObject, (err, res) => {
if (err) {
throw err;
} else {
console.log(res);
}
})
La siguiente función se agrega en un lote, no sé si esto importará.
Primero, necesita generar su transacción, aquí hay un ejemplo:
let tx_builder = contractInstance.methods.myMethod(arg1, arg2, ...);
let encoded_tx = tx_builder.encodeABI();
let transactionObject = {
gas: amountOfGas,
data: encoded_tx,
from: from_address,
to: contract_address
};
Luego puede firmar la transacción, utilizando la dirección y la clave privada de esta dirección específica. Cuando esté firmado, puede enviarlo al nodo:
web3g.eth.accounts.signTransaction(transactionObject, private_key, function (error, signedTx) {
if (error) {
console.log(error);
// handle error
} else {
web3g.eth.sendSignedTransaction(signedTx.rawTransaction)
.on('receipt', function (receipt) {
//do something
});
}
Editar: después de firmarlo, no tiene que enviarlo. Puede agregarlo a la solicitud por lotes.
jaspe
jaspe
Iteración 122442
jaspe
jaspe