Перевод денег между счетами в солидности - PullRequest
0 голосов
/ 12 февраля 2020

Я пишу договор, в котором хочу перевести деньги (присутствующие на счете владельца договора, а не договора) на адрес счета, переданный функции в договоре.

по какой-то причине этот код не будет работать

function payBill(uint value, address account) payable public {
    account.transfer(value);
    transactionCount += 1;
    transactionAmount += value;
}

1 Ответ

1 голос
/ 13 февраля 2020

Ваша проблема может быть связана с любым кодом внешнего интерфейса, не только с этим. У вас есть два варианта.

  1. получить этот другой адрес пользователя из договора и затем выполнить прямую транзакцию между двумя учетными записями (пример здесь https://web3js.readthedocs.io/en/v1.2.6/web3-eth.html#id80)

  2. отправьте значение (см. Здесь https://web3js.readthedocs.io/en/v1.2.6/web3-eth-contract.html#id33) при вызове метода payBill. Если вы этого не сделаете, значение по умолчанию равно нулю, и вы не видите никакой передачи.

Также, пожалуйста, обратите внимание на это https://diligence.consensys.net/blog/2019/09/stop-using-soliditys-transfer-now/

РЕДАКТИРОВАТЬ:

то, что вы пытаетесь сделать здесь, также не выполнимо. Для этого в договоре должно быть указано количество средств, которое вы хотите перевести. Это связано с тем, что при использовании метода оплаты вы отправляете средства в контракт, но средства будут включены в контракт только после принятия транзакции. С другой стороны, вы пытаетесь отправить это количество средств другому пользователю, не имея их в договоре. Вот почему вы никогда не видите баланса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...