Использование Whisper с web3.js

Я пытался понять, как взаимодействовать с шепотом, используя web3. Мне удалось успешно отправить (и получить) сообщение с помощью geth console, но не удалось сделать то же самое с помощью web3.js.

Не могли бы вы предоставить короткий фрагмент JavaScript, который успешно отправляет и получает сообщение шепотом?

- какой провайдер вы используете? (веб3.сетпровидер)? - в чем была ошибка при использовании web3.js?

Ответы (2)

С запущенным Geth (я использовал geth --rinkeby --fast --cache=512 console --shh --rpc --rpccorsdomain '*' --ws --wsorigins '*') и web3.js v1 в браузере введите в консоль браузера:

> web3.shh.setProvider("ws://localhost:8546") // must use websockets (read this on https://ethereum.stackexchange.com/a/34840/6014)
> web3.shh.newKeyPair().then(console.log) // logs key pair
> web3.shh.subscribe("messages", {privateKeyID: keyPair}, (err, msg) => console.log("msg received!", msg)) // returns subscription that will log the message when it's received
> web3.shh.getPublicKey(keyPair).then(console.log) // logs public key

> web3.shh.post({pubKey: publicKey, ttl: 10, payload: '0xffffffdddddd1122', powTime: 3, powTarget: 0.5}) // sends the message

Этот пример работает для Whisper v5: https://github.com/gballet/whisper-chat-example