Tengo problemas para enviar una dirección a un contrato implementado, mi función se ve así:
function addNote(uint _value, address _owner) public {
...
}
y cuando estoy enviando los parámetros:
contract.deployed().then(function(instance) {
return instance.addNote(value,"0x092f90acAbb3b23Aded64D59FB6f6Be97615476b");
})
.then(function(result) {
console.log(result);
})
.catch(function(error) {
console.log(error);
});
Estoy recibiendo este error:
Error: invalid address
at inputAddressFormatter (/Desktop/Server/node_modules/truffle-contract/node_modules/web3/lib/web3/formatters.js:274:11)
También cuando estoy agregando el último parámetro:
{
from: "0x092f90acAbb3b23Aded64D59FB6f6Be97615476b",
gas: 1000000
}
entonces el error es:
TypeError: Cannot read property 'constructor' of undefined
at /Desktop/Server/node_modules/truffle-contract/contract.js:96:1
¿Cuál es el problema?
Una dirección es un número hexadecimal de 20 bytes , por lo que no debe enviarla como una cadena. Intentar:
return instance.addNote(value, 0x092f90acAbb3b23Aded64D59FB6f6Be97615476b);
ACTUALIZACIÓN : el problema no está relacionado con la cadena de dirección. Porfavor lea abajo.
La parte confusa en su ejemplo específico es que está recibiendo un error que lo induce a creer erróneamente que hay algo mal con la función function addNote(uint _value, address _owner)
. Sin embargo, el error se trata de la invalidez de su web3.eth.defaultAccount
dirección, es decir, desde dónde se ejecutan las llamadas de su contrato.
Inmediatamente después de compilar y migrar sus contratos, haga lo siguiente:
web3.eth.defaultAccount = web3.eth.accounts[0];
truffle develop
y sigue mi respuesta anterior. No estoy seguro de qué dirección de servidor está utilizando. Echa un vistazo a este hilo para obtener más consejos.
kaki maestro del tiempo
addNote
?paelo
kaki maestro del tiempo
constructor
que resultó en este errorCannot read property 'constructor' of undefined
y está claro que elinvalid address
error desapareció al agregar elfrom
atributo.Nulik
kaki maestro del tiempo
Nulik
input
su contrato comoextra data
parámetro en la transacción. Solo tiene que proporcionar la especificación ABI correcta. Ahora, si desea administrar las direcciones como una cadena dentro del contrato, esa es una historia totalmente diferente y puede hacer todo, ya que EVM es una máquina completa de Turing y puede realizar cualquier tipo de cálculo genérico.Nulik
geth
en lugar de trufa, vas a entender mejor cómo funciona. medium.com/@gus_tavo_guim/…mijail vladimirov
contract.js
la línea 96?