Отправить транзакцию с использованием MetaMask, введенного в сеть 3

Введенные метамаски web3 выдает ошибку при использованииweb3.eth.sendTransaction()

web3.eth.sendTransaction({from:web3.eth.accounts[0], to:'', data: // hash to interact with contraact, gas:85000});

введите описание изображения здесь

Как можно использовать Metamask, чтобы веб-сайт предлагал пользователю подписать транзакцию?

Это сообщение об ошибке было довольно плохим, оно будет улучшено в будущей версии благодаря вашему вопросу! github.com/MetaMask/metamask-plugin/pull/751

Ответы (2)

Вам не хватает последнего аргумента для sendTransactionобратного вызоваfunction(error, transactionHash) { ... }

В часто задаваемых вопросах по MetaMask говорится:

All Async — думайте о MetaMask как о легком клиенте

У пользователя нет полной цепочки блоков на своем компьютере, поэтому поиск данных может быть немного медленным. По этой причине мы не можем поддерживать большинство синхронных методов. Исключением является:

eth_accounts (web3.eth.accounts)

eth_coinbase (web3.eth.coinbase)

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

См. вики Эфириума об «использовании обратных вызовов»

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

Таким образом, все вызовы web3.js должны иметь обратный вызов в качестве последнего аргумента: единственные вызовы, где это не требуется, — for web3.eth.accountsи web3.eth.coinbase. Общая форма обратного вызова function(error, result).

Полезно об этих двух командах. я собираюсь использоватьdeasync
Нет четкого руководства о том, как успешно заставить это работать где угодно. Код правильно отформатированной кнопки, которая работает с MetaMask, был бы полезен. Это плохо документировано.
@TrumpPaiPence, попробуйте найти и связаться со службой поддержки MetaMask.
var receiver = "0x541209bd9C60cDb11A5076b785ba1BD44cd15768";  
var sender = web3.eth.accounts[0];
web3.eth.sendTransaction({to:receiver,
                        from:sender, 
                       value:web3.toWei("0.5", "ether")}
                        ,function (err, res){});