Переопределенный параметр адреса Ganache Web3 -0.2 - PullRequest
0 голосов
/ 14 мая 2018

Кто-нибудь знает, почему мой параметр игнорируется, когда я запускаю dapp?

Эта функция вызывается, когда я нажимаю кнопку, чтобы отправить сумму X на счет в ganache, адрес которого я ввожу в форму HTML при использовании dapp.

    App.contracts.EthereumPractice.deployed().then(function (instance) {
        return instance.sendMoney.sendTransaction(addressInput.value, {
             from: web3.eth.accounts[0],
             value: etherAmount
        }); 
    },

Я совершенно уверен, что переменная ^ etherAmount не является проблемой, поскольку деньги отправляются, они просто отправляются не в то место (адрес договора не является адресом импортированного аккаунта ganache).

Моя функция солидности принимает параметр адреса и переводит деньги в значение этого параметра адреса, так что же я делаю неправильно в части Web3?

Вот функция солидности для тех, кто просто хочет дважды проверить, что

function sendMoney(address _sendToThisAddress) public {
    _sendToThisAddress.transfer(this.balance);
}

Когда моя метамаска всплывает, она игнорирует параметр адреса и вместо этого переводит деньги прямо на адрес договора, а не на адрес учетной записи импорта ganache, на который я пытаюсь отправить деньги.

1 Ответ

0 голосов
/ 14 мая 2018

Есть пара ошибок с вашим кодом. Вы должны отметить функцию как payable, и вы переводите весь остаток по договору, а не то, что отправляете. Когда вы отправляете эфир в функцию payable, эфир принадлежит контракту. Оттуда вы можете отправить его (или другую сумму) на другой адрес. Если вы пытаетесь отправить именно то, что отправлено вашим клиентом, на параметр адреса, вы должны сделать следующее:

function sendMoney(address _sendToThisAddress) public payable {
    _sendToThisAddress.transfer(msg.value);
}
...