- Clone with --recursive or remember to pull the submodules for solidity dependencies
-
Copy
.env.example
to.env
and set the right vars -
Join the your Telegram Group associated with the chat ID in
.env
to get notifications -
Install WAVS natively
TODO: use the docker images and adjust the commands here accordingly
git clone https://github.com/Lay3rLabs/WAVS.git ~/WAVS
cd ~/WAVS && just install-native ~/wavs-config ~/wavs-data
- Build all the contracts and components
just build
That's it!
- Start the backend
just start-backend
This may take some time if you've never started the backend before, but subsequent start-ups should be quick.
- Deploy contracts and services
just deploy
This may take some time if you've never deployed before, but subsequent deployments should be quick.
- Execute a token transfer
just transfer
You should get a Telegram notification in the group
- Stop the backend
just stop-backend
Almost everyting is in the justfiles (using wavs-cli
and forge
to do the heavy lifting).
The way this works is it watches for ERC20 events. When an event is picked up it runs in two workflows in one service:
- "prepare" - writes a random uuid into filestorage (let's call this "operator id"), and sends a WAVS message through the pipeline
- "commit" - checks that the saved operator id matches the message, and sends out the telegram notification
This isn't bulletproof, but it more-or-less ensures that only one operator sends the message, and that it was verified
The only thing copy/pasted from WAVS are solidity interfaces.