Я настраиваю dApp (трюфельный фреймворк) с договором условного депонирования, который удерживает деньги от покупателя продукта до того, как он будет передан продавцу. Когда пользователь нажимает «заказать», я могу выполнить eth.sendTransaction от покупателя к контракту. Я хочу, чтобы платеж был выпущен, когда пользователь нажимает «полученный товар», и я не могу вызвать функцию, которая освобождает платеж продавцу от web3js. Я получаю эту ошибку:
Error: invalid address
at inputAddressFormatter
Это потому, что MetaMask не позволяет контракту (поскольку он не импортирован как учетная запись) выполнять передачу? Если да, то что мне следует изменить в моем контракте?
Вот мой код контракта:
function EscrowPayment(address _seller){
// constructor
buyer = msg.sender;
seller = _seller;
}
function getSeller() constant returns(address) {
return seller;
}
function () payable{
}
function payoutToSeller() payable {
seller.transfer(this.balance);
}
В качестве примечания, я могу вызвать payoutToSeller() через консоль трюфеля, и это работает.
Эта ошибка обычно означает, что вы указали отправителю неверный адрес. Это может произойти, потому что:
Вы можете увидеть несколько примеров правильного определения учетных записей в этом руководстве: https://github.com/MetaMask/faq/blob/master/DEVELOPERS.md#partly_sunny-web3---ethereum-browser-environment-check
джву
DanF