Estoy usando la versión 2.1 de Truffle y estoy tratando de enviar éter de prueba a mi contrato usando Testrpc. Ejecuto testrpc -u 0 -u 1
Y las cuentas muestran un saldo de 99351632199997083360 wei Estoy tratando de enviar Ether a una función que contiene el modificador pagadero y devuelve verdadero (sin código interno), y regresa con un salto de VM.
function fund() payable returns (bool) {
return true;
}
Y este es el javascript de trufa llamando a la función
var projectBeingFunded = Project.at(projectToFund);
return projectBeingFunded.fund({from: account, amount:amountToGive});
}).then(function(txHash) {
waitForTransaction();
return web3.eth.getTransactionReceipt(txHash);
}).then(function(receipt) {
console.log("transaction receipt");
console.log(receipt.valueOf());
setStatus("Project successfully funded");
}).catch(function(e) {
console.log(e);
setStatus("Project funding didn't work");
Está enviando un argumento llamado monto, no un pago en Ether.
return projectBeingFunded.fund({from: account, amount:amountToGive});
Eso sería casi apropiado si la función del contrato leyera:
function fund(uint amount) returns(bool) {}
en realidad sería:
return projectBeingFunded.fund(amountToGive, {from: account});
Pero en realidad dice que no se esperan argumentos, y se espera ETH:
function fund() payable returns (bool) { ...
El argumento inesperado es un SALTO. Entonces, prueba esto:
return projectBeingFunded.fund({from: account, value: amountToGive});
Donde cantidad para dar es un uint en Wei y el remitente tiene esa cantidad de dinero, como supongo que es el caso.
Espero eso ayude.
Rob Hitchens
bturner
function fund() payable returns (bool)
desde dentro de otro contrato en solidez?