在本教程中,我们将学习如何使用以太坊的Whisper协议创建简单的聊天CLI。尽管本教程中的所有操作都在你的控制台中进行,但是你应该能够重新使用我们在你自己的应用程序中提供的JS,并对如何发送和显示不同类型的消息有一个很好的了解,以及使用Whisper可以构建什么。
我们了解到,没有多少DAPP开发人员希望以状态的方式使用Whisper(作为一个庞大的多用户消息传递协议),而是将有关DAPP中与其交互的特定(通常是重要的)信息移动。本教程旨在为你提供所需的技能,以适应你的需要:你应该既知道足够容易插入到任何状态聊天,以及如何使用Whisper为你自己的工作到最后。许多其他团队已经开始这样做了,例如,你可以在Bloom blog上找到更多关于如何将基本概念扩展到有趣系统的信息。
我们专门为本教程创建了这个存储库。如果你想帮助社区,可以在不同的分支下添加额外的教程。不过,在克隆存储库之前,让我们确保正确设置了所有依赖项,尤其是nodejs和go-ethereum。我们将使用最新版本的Geth、Whisper和EmochtJS来帮助你了解Whisper今天的样子。
NodeJS 8.10+
node version
> 8.10+
如果需要更新节点,请 install nvm
并安装/使用LTS版本。下面为你提供了macos/linux命令:
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
nvm install --lts
nvm use lts
Go-ethereum 1.8.17+
geth version
> 1.8.17+
如果你需要install geth
,你可以使用下面的MacOS命令:
brew tap ethereum/ethereum
brew install ethereum
/* Just to upgrade */
brew upgrade ethereum
如果你使用的是Linux发行版:
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get install ethereum
/* Just to upgrade */
sudo apt-get update ethereum
启动geth节点
要使用Whisper,你需要一个正在运行的geth节点。可以执行以下命令以使用所需的最小选项启动节点:
geth --testnet --syncmode=light --ws --wsorigins=mychat --shh --wsapi=web3,shh,net
这里,我们连接到Ropsten,确保我们没有验证完整的块(只有headers),确保websockets
使用特定的源(我们稍后将在JS中使用),确保启用了Whisper,即shh
,并且web
、shh
和net
API对我们可用。
设置和浏览
现在我们已经设置了所有的先决条件,我们需要克隆这个repo并安装依赖项。
git clone https://github.com/status-im/whisper-tutorial.git
cd whisper-tutorial
npm install
安装完所有依赖项后,