He descargado contratos con sus abi y json. Tengo que desplegarlos. cuando extraigo el código de bytes de los archivos descargados y luego lo asigno a mi data
variable para implementar el contrato que da el siguiente error; La misma pregunta relacionada con el error se hizo anteriormente aquí , pero no se da respuesta.
UnhandledPromiseRejectionWarning: Error: The data field must be HEX encoded data.
aquí está mi código;
async function deployCon(key) {
var v = constructorParameters[key].input.length;
// console.log("deploy for contract : ", v)
const contract = new web3.eth.Contract(abi[key]);
if(v == 0) {
params = {
data: "0x" + bytecode[key],
};
}
else {
params = {
data: "0x" + bytecode[key],
arguments: constructorParameters[key].input
};
}
const transaction = contract.deploy(params);
const options = {
data: transaction.encodeABI(),
gas: await transaction.estimateGas({from: account1})
};
const signed = await web3.eth.accounts.signTransaction(options, privateKey1);
receipt = await web3.eth.sendSignedTransaction(signed.rawTransaction);
console.log(`Contract deployed at address: ${receipt.contractAddress}`);
return receipt;
}
y aquí está mi valor de código de bytes [clave]
606060405260018054600160a060020a031916........
NOTA: Acabo de probar el código anterior para el contrato, consulte aquí
Su Bytecode no es un número hexadecimal.
Anteponga un 0x
.
Por ejemplo0x606060405260018054600160a060020a031916...
EDITAR: No importa, ya lo hiciste. Aquí hay otro intento. Convierte la cadena a hexadecimal.
parseInt("0x6060604...", 16)
Tome nota de la base 16
. Deje este valor sin cambios.
Podría ayudar a otros: tuve el mismo problema, resultó que tenía un espacio vacío en la última línea de la cadena de bytecode, al eliminarlo se solucionó el problema
buena vibración
Amir Alí
Niklas Feurstein
Amir Alí