Scripting Guide
Automate Privacy Boost operations with shell scripts and batch processing.JSON Output
Use--output json (or -o json) for machine-readable output:
Copy
# Get all balances as JSON
privacy-boost balances --output json
# Parse with jq
privacy-boost balances -o json | jq '.[] | select(.symbol == "WETH")'
# Get specific field
privacy-boost status -o json | jq -r '.privacy_address'
Environment Setup
Configuration Script
Create a setup script:Copy
#!/bin/bash
# setup-env.sh
export NETWORK="${1:-op-sepolia}"
case $NETWORK in
op-sepolia)
export PRIVACY_BOOST_CHAIN_ID=11155420
export PRIVACY_BOOST_INDEXER_URL="https://test-api.privacy-boost.sunnyside.io/indexer"
export PRIVACY_BOOST_PROVER_URL="https://test-api.privacy-boost.sunnyside.io/prover"
export PRIVACY_BOOST_RPC_URL="https://sepolia.optimism.io"
export PRIVACY_BOOST_SHIELD_CONTRACT="0xB22fD661b322F10d4B7cd0cFcb9578C485423119"
export PRIVACY_BOOST_WETH_CONTRACT="0x4200000000000000000000000000000000000006"
;;
local)
export PRIVACY_BOOST_CHAIN_ID=31337
export PRIVACY_BOOST_INDEXER_URL="http://localhost:8081"
export PRIVACY_BOOST_PROVER_URL="http://localhost:8080"
export PRIVACY_BOOST_RPC_URL="http://localhost:8545"
;;
esac
echo "Environment configured for $NETWORK"
Copy
source setup-env.sh op-sepolia
Secure Key Loading
Copy
#!/bin/bash
# load-key.sh
# From environment (set elsewhere)
if [ -n "$PRIVATE_KEY" ]; then
echo "Using PRIVATE_KEY from environment"
exit 0
fi
# From file
KEY_FILE="${HOME}/.privacy-boost/key"
if [ -f "$KEY_FILE" ]; then
export PRIVATE_KEY=$(cat "$KEY_FILE")
echo "Loaded key from file"
exit 0
fi
# From pass (password manager)
if command -v pass &> /dev/null; then
export PRIVATE_KEY=$(pass show crypto/privacy-boost)
echo "Loaded key from pass"
exit 0
fi
echo "No private key found!"
exit 1
Automation Scripts
Daily Deposit Script
Copy
#!/bin/bash
# daily-deposit.sh
set -e
source setup-env.sh mainnet
source load-key.sh
TOKEN="0x4200000000000000000000000000000000000006" # WETH
AMOUNT="0.1"
# Login
privacy-boost login --private-key "$PRIVATE_KEY"
# Check balance
BALANCE=$(privacy-boost balance --token "$TOKEN" --output json | jq -r '.shielded_balance')
echo "Shielded balance: $BALANCE"
# Deposit
echo "Depositing $AMOUNT..."
TX=$(privacy-boost deposit --token "$TOKEN" --amount "$AMOUNT" --human --output json | jq -r '.tx_hash')
echo "Deposit TX: $TX"
# Logout
privacy-boost logout
Batch Transfer Script
Copy
#!/bin/bash
# batch-transfer.sh
set -e
TRANSFERS_FILE="${1:-transfers.csv}"
TOKEN="0x4200000000000000000000000000000000000006"
# CSV format: privacy_address,amount
# 0x1234...,0.1
# 0x5678...,0.2
source setup-env.sh mainnet
source load-key.sh
privacy-boost login --private-key "$PRIVATE_KEY"
# Read and process transfers
while IFS=',' read -r recipient amount; do
# Skip header or empty lines
[[ "$recipient" == "privacy_address" ]] && continue
[[ -z "$recipient" ]] && continue
echo "Sending $amount to $recipient..."
TX=$(privacy-boost send \
--token "$TOKEN" \
--amount "$amount" \
--recipient "$recipient" \
--output json | jq -r '.tx_hash')
echo " TX: $TX"
# Small delay between transactions
sleep 2
done < "$TRANSFERS_FILE"
privacy-boost logout
echo "Batch complete!"
Monitor Balance Script
Copy
#!/bin/bash
# monitor-balance.sh
TOKEN="${1:-0x4200000000000000000000000000000000000006}"
THRESHOLD="${2:-1.0}"
INTERVAL="${3:-300}" # 5 minutes
source setup-env.sh mainnet
source load-key.sh
privacy-boost login --private-key "$PRIVATE_KEY"
while true; do
BALANCE=$(privacy-boost balance --token "$TOKEN" --output json | jq -r '.shielded_balance')
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
echo "[$TIMESTAMP] Shielded balance: $BALANCE wei"
sleep "$INTERVAL"
done
Error Handling
Retry Logic
Copy
#!/bin/bash
# retry.sh
MAX_RETRIES=3
RETRY_DELAY=5
retry() {
local n=1
local cmd="$@"
until [ $n -gt $MAX_RETRIES ]; do
echo "Attempt $n: $cmd"
if eval "$cmd"; then
return 0
fi
echo "Failed, waiting ${RETRY_DELAY}s..."
sleep $RETRY_DELAY
((n++))
done
echo "Failed after $MAX_RETRIES attempts"
return 1
}
# Usage
retry "privacy-boost deposit --token $TOKEN --amount 1.0 --human"
Error Notifications
Copy
#!/bin/bash
# with-notification.sh
notify_error() {
local message="$1"
# Slack webhook
if [ -n "$SLACK_WEBHOOK" ]; then
curl -X POST -H 'Content-type: application/json' \
--data "{\"text\":\"Privacy Boost Error: $message\"}" \
"$SLACK_WEBHOOK"
fi
# Email (using mail command)
# echo "$message" | mail -s "Privacy Boost Error" admin@example.com
}
# Trap errors
trap 'notify_error "Script failed at line $LINENO"' ERR
# Your operations
privacy-boost deposit --token "$TOKEN" --amount 1.0 --human
Cron Jobs
Daily Balance Report
Copy
# Run every day at 9 AM
0 9 * * * /path/to/balance-report.sh >> /var/log/privacy-boost.log 2>&1
Copy
#!/bin/bash
# balance-report.sh
source /path/to/setup-env.sh mainnet
source /path/to/load-key.sh
privacy-boost login --private-key "$PRIVATE_KEY"
echo "=== Daily Balance Report ==="
echo "Date: $(date)"
echo ""
privacy-boost balances
privacy-boost logout
Auto-Deposit on Low Balance
Copy
# Check every hour
0 * * * * /path/to/auto-deposit.sh >> /var/log/privacy-boost.log 2>&1
Copy
#!/bin/bash
# auto-deposit.sh
MIN_SHIELDED="0.5" # ETH
DEPOSIT_AMOUNT="1.0"
TOKEN="0x4200000000000000000000000000000000000006"
source /path/to/setup-env.sh mainnet
source /path/to/load-key.sh
privacy-boost login --private-key "$PRIVATE_KEY"
BALANCE=$(privacy-boost balance --token "$TOKEN" --output json | jq -r '.shielded_balance')
echo "$(date): Shielded balance: $BALANCE wei"
privacy-boost logout
Integration Examples
With GitHub Actions
Copy
# .github/workflows/daily-deposit.yml
name: Daily Deposit
on:
schedule:
- cron: '0 9 * * *'
workflow_dispatch:
jobs:
deposit:
runs-on: ubuntu-latest
steps:
- name: Download CLI
run: |
curl -L https://github.com/privacy-boost/releases/latest/download/privacy-boost-linux-amd64.tar.gz | tar xz
chmod +x privacy-boost
- name: Run Deposit
env:
PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }}
PRIVACY_BOOST_INDEXER_URL: ${{ vars.INDEXER_URL }}
PRIVACY_BOOST_PROVER_URL: ${{ vars.PROVER_URL }}
PRIVACY_BOOST_RPC_URL: ${{ secrets.RPC_URL }}
PRIVACY_BOOST_CHAIN_ID: 1
run: |
./privacy-boost login --private-key "$PRIVATE_KEY"
./privacy-boost deposit --token ${{ vars.TOKEN }} --amount 1000000000000000000
Next Steps
- Commands Reference - All CLI commands
- API Reference - Library API documentation