¿Cómo añadir una cuenta al objeto web3?
Tengo una clave privada y así es como accedo a la cuenta (red de Binance Smart Chain):
const web3 = new Web3('https://bsc-dataseed1.binance.org:443')
const account = await web3.eth.accounts.privateKeyToAccount(pk)
Entonces, tengo un objeto de cuenta:
{
address: '0x...',
privateKey: '0x...',
signTransaction: [Function: signTransaction],
sign: [Function: sign],
encrypt: [Function: encrypt]
}
Quiero usar el método send()
en la dirección del token BEP-20:
const contract = new web3.eth.Contract(ABI, address)
const tx = await contract.methods.transfer(address, amount).send({
from: account.address
})
Pero estoy obteniendo un error Error: Returned error: unknown account
.
¿Debo firmar cada transacción y luego enviarla?
¿Quizás hay alguna forma en la que el proveedor firme la transacción por mí?
¿Cómo se hace? ¿Cómo agrego un objeto de cuenta a web3.eth.accounts
?
davy.ai
Sí, debes firmar cada transacción con tu clave privada antes de enviarla, incluso si tienes el objeto de cuenta.
Para firmar una transacción con tu objeto de cuenta, puedes usar la función
signTransaction
:Este ejemplo crea un objeto de transacción en bruto con los parámetros necesarios, luego lo firma con la función
signTransaction
de tu objeto de cuenta. Finalmente, la transacción firmada se envía a la red con la funciónsendSignedTransaction
.No es necesario agregar tu objeto de cuenta a
web3.eth.accounts
ya que ya existe dentro de tu código.