Отправка тестового эфира на Testrpc

Я использую Truffle версии 2.1 и пытаюсь отправить тестовый эфир на свой контракт с помощью Testrpc. Я запускаю testrpc -u 0 -u 1
И счета показывают баланс 993516321999997083360 wei Я пытаюсь отправить эфир в функцию, которая содержит модификатор payable и возвращает true (без внутреннего кода), и она возвращается с переходом VM.

    function fund() payable returns (bool) {

    return true; 
}

А это трюфельный javascript, вызывающий функцию

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");

Ответы (1)

Вы отправляете аргумент под названием сумма, а не платеж в эфире.

return projectBeingFunded.fund({from: account, amount:amountToGive});

Это было бы почти уместно, если бы функция контракта гласила:

function fund(uint amount) returns(bool) {}

На самом деле будет:

return projectBeingFunded.fund(amountToGive, {from: account});

Но на самом деле он говорит, что никаких аргументов не ожидается, и ожидается ETH :

function fund() payable returns (bool) { ...

Неожиданный аргумент - ПРЫЖОК. Итак, попробуйте следующее:

return projectBeingFunded.fund({from: account, value: amountToGive});

Где amountToGive — это uint в Wei, и у отправителя есть столько денег, как я предполагаю.

Надеюсь, поможет.

При ближайшем рассмотрении я понял, что действительно есть проблема с исходным синтаксисом, вызывающим JUMP, но я не очень хорошо ее описал. Исправлено, чтобы не вводить в заблуждение вас и других.
что, если я хочу вызвать эту функцию function fund() payable returns (bool)из другого контракта в Solidity?