Set AWS Lambda Executor
Create Lambda Function
Go to AWS Lambda, and click "Create Function"
Select :
Select Author from Scratch.
Create new user in the Permission Tab. Click Create Function
You will see this page
Scroll down until you see Function Code Panel click Actions - Upload .ZIP file.
You can get the .zip here
Go to Configuration - Environment variabeles - Edit
Environment variables section and add 2 environment variables: MAX_EXECUTABLE to 8192 (8 MB) and MAX_DATA_SIZE to 256.
Go to Configuration - General Configuration - Edit Basic Settings and update the runtime configurations.
512MB RAM and 12 seconds timeout is Recommended.
Create Trigger
Click Add Trigger - API Gateway
Then Follow like the image below
Click "Add", And your Trigger for Lambda Executor is Ready.
Yoda Executor Configuration
# clear old yoda config, Optional
rm -rf ~/.yoda
yoda config chain-id laozi-mainnet
yoda config node http://localhost:26657 #Your Node Port
yoda config broadcast-timeout "5m"
yoda config rpc-poll-interval "1s"
yoda config max-try 5
yoda config validator $(bandd keys show wallet -a --bech val)
Add 5 REPORTER wallet
yoda keys add REPORTER_1
yoda keys add REPORTER_2
yoda keys add REPORTER_3
yoda keys add REPORTER_4
yoda keys add REPORTER_5
You can recover existing wallet with this command , and so on
yoda keys add REPORTER_1 --recover
Fund your Reporter wallet
bandd tx multi-send 1uband $(yoda keys list -a) --gas=1000000 --gas-prices=0.0025uband --gas-adjustment=1.5 --from mywallet --chain-id laozi-mainnet -y
Set the Executor Variable
Replace <EXECUTOR_URL> to yours
export EXECUTOR_URL=<EXECUTOR_URL>
If you wondering where is the Executor URL
Set Config Executor
yoda config executor "rest:${EXECUTOR_URL}?timeout=10s"
Start Yoda using systemctl
sudo tee /etc/systemd/system/yoda.service > /dev/null << EOF
[Unit]
Description=Yoda Daemon
After=network-online.target
[Service]
User=$USER
ExecStart=$USER/go/bin/yoda run
Restart=always
RestartSec=3
LimitNOFILE=4096
[Install]
WantedBy=multi-user.target
EOF
Start Yoda
sudo systemctl daemon-reload
sudo systemctl enable yoda
sudo systemctl start yoda
Check the logs using journalctl
journalctl -fu yoda -o cat
Logs Should look like this
... systemd[...]: Started Yoda Daemon.
... yoda[...]: I[...] ⭐ Creating HTTP client with node URI: tcp://localhost:26657
... yoda[...]: I[...] 🚀 Starting WebSocket subscriber
... yoda[...]: I[...] 👂 Subscribing to events with query: tm.event = 'Tx'...
Wait for the Band Node to be synced , After Band node is synced you can add and activate your reporter Oracle with this simple command
Add Reporter wallet to Oracle
bandd tx oracle add-reporters $(yoda keys list -a) --gas=1000000 --gas-prices=0.0025uband --gas-adjustment=1.5 --from wallet --chain-id laozi-mainnet
Activate Oracle
bandd tx oracle activate --gas=1000000 --gas-prices=0.0025uband --gas-adjustment=1.5 --from wallet --chain-id laozi-mainnet
Useful Commands
Multi Send Band to Reporter wallet
bandd tx multi-send 1uband $(yoda keys list -a) --gas=1000000 --gas-prices=0.0025uband --gas-adjustment=1.5 --from mywallet --chain-id laozi-mainnet -y
Add Reporter wallet to Oracle
bandd tx oracle add-reporters $(yoda keys list -a) --gas=1000000 --gas-prices=0.0025uband --gas-adjustment=1.5 --from wallet --chain-id laozi-mainnet
Activate Oracle
bandd tx oracle activate --gas=1000000 --gas-prices=0.0025uband --gas-adjustment=1.5 --from wallet --chain-id laozi-mainnet
Check Oracle Status
bandd query oracle validator $(bandd keys show -a wallet --bech val) --chain-id laozi-mainnet
Output :