Я использую консоль трюфеля для проверки своего контракта, но у меня не получается передать аргумент. Например, у меня есть такой метод
function sendEtherTo(address addr) public payable {
require(addr != 0x0);
require(msg.value > 0);
addr.transfer(msg.value);
}
Я пытаюсь использовать sendTransaction
, но не могу понять, как передать аргумент.
Этот:
web3.eth.sendTransaction({from: web3.eth.accounts[1], to: myContract.address, data: myContract.sendEtherTo.sendTransaction(web3.eth.accounts[2]), value: web3.toWei(10, "finney")})
В результате мой testrpc вылетает с ошибкой в трюфеле
Error: Invalid JSON RPC response: undefined
Я пробовал следующее, что я успешно сделал в web3
web3.eth.sendTransaction({from: web3.eth.accounts[1], to: myContract.address, data: myContract['sendEtherTo'].getData(web3.eth.accounts[2]), value: web3.toWei(10, "finney")})
но это говорит мне, что getData
это не определено
Truffle заключает контракты в пользовательский объект, который не предоставляет getData
, но мы можем использовать этот request
метод для получения параметров для sendTransaction
.
const MyContract = artifacts.require('MyContract');
contract('MyContract', function(accounts) {
it('Call with sendTransaction', async () => {
const myContract = await MyContract.deployed();
// We want to call foo(23) on myContract
const data = myContract.foo.request(23);
// Here data.params[0].data contains the parameters to the call
const txhash = web3.eth.sendTransaction({
from: accounts[0],
to: myContract.address,
value: 1,
data: data.params[0].data
});
});
});
Исмаэль
myContract
? Если звонитьmyContract.sendEtherTo()
напрямую, работает?Нулик
Исмаэль