如何在沒有區塊鏈的情況下開始耳語?
我正在Whisper之上編寫一個聊天應用程序;該應用程序應該管理乙太坊節點的生命週期。
一種建構方法是在後台使用wnode並以程式方式使用 stdout/stdin 與其通信。但是,我更喜歡使用
web3.shh
API,所以我需要一個 Ethereum/Whisper 客戶端,它在 Whisper 的東西旁邊提供 RPC 介面。geth似乎很合適。但是,預設情況下,它似乎啟動了區塊鏈的東西和其他東西,而我只需要它來耳語。所以:
1-如何開始
geth
以使其提供絕對零區塊鏈內容和僅耳語內容(+ rpc)?2-如何讓它成為一個引導節點耳語和檢索它的
enode
網址?3-如何配置它以使用其他引導節點?旗幟是
--bootnodes
用來竊竊私語的嗎?基本上,我希望能夠執行此處範例中的操作,但使用
geth
,沒有不必要的成本:> wnode -standalone -forwarder -ip=127.0.0.1:30379 my public key: 0x040ef7acd60781c336c52056b3782f7eae45be2063e591ac6b78472dc27ba770010bde445ffd2f3623ad656f3859e00d11ef518df4916c4d4e258c60b15f34c682 enode://15454fc65bbf0031155f4eee83fa732f1454c314e9f78ade9cba4d4a098d29edbf5431764ee65b200169025c3f900cacc3348a000dda7a8a0d9643d0b7618712@127.0.0.1:30379 Bootstrap Whisper node started ... Then, in another tab: > wnode -test -boot=enode://15454fc65bbf0031155f4eee83fa732f1454c314e9f78ade9cba4d4a098d29edbf5431764ee65b200169025c3f900cacc3348a000dda7a8a0d9643d0b7618712@127.0.0.1:30379 ............................ Whisper node started Connected to peer. ............................
更新
我自己沒有嘗試過接受的答案,但我從作者那裡確認他/她嘗試過,並且解決方案似乎滿足所有要求。
執行 Status 的 go 伺服器(在 docker 鏡像中)會做你想做的事:沒有區塊鏈同步,外加一個符合 JSONRPC 標準的暴露的 HTTP API 介面。
遵循這些說明對我有用: https ://status.im/technical/run_status_node.html
即
docker run --rm \ -p 8545:8545 \ -v $(pwd)/http-enabled.json:/config/config.json \ statusteam/status-go:0.16.0 \ -register \ -log DEBUG \ -c /config/config.json
然後用像這樣的呼叫來測試它
curl -X POST "http://localhost:8545" -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"shh_newKeyPair","params":[],"id":1}'
存檔(僅限 Geth)
為了完整起見,我的舊答案。您
geth
只能在啟用了 Whispershh
模組的情況下執行,並且syncmode=light
. 這並不完全符合您的要求(它仍然同步區塊鏈),但比執行完整節點更輕量/更快,並且比訪問您不需要或不想公開的其他 API 模組更安全。你可以從這樣的標誌開始
geth --rinkeby --syncmode=light --rpcaddr=0.0.0.0 --shh --rpcapi=shh --rpc --rpcport 8547
主網和 rinkeby 消息之間沒有技術差異,因為耳語消息是短暫的,並且在鏈上不安全,但主網耳語消息不會與 rinkeby 對等方交換,反之亦然。