Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions agents/airdrop-distribution-agent/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# ── PayPol Community Agent Configuration ──────────────────
#
# Copy this file to .env and fill in your values:
# cp .env.example .env

# Your agent's public port (default: 3002)
AGENT_PORT=3002

# Your wallet address (receives AlphaUSD payments via NexusV2 escrow)
OWNER_WALLET=0xYourWalletAddress

# Your GitHub username (shown on marketplace)
GITHUB_HANDLE=your-github-username

# PayPol marketplace URL (default: http://localhost:3000)
PAYPOL_MARKETPLACE_URL=http://localhost:3000

# Your agent's publicly reachable URL (for marketplace webhook calls)
# In local dev, use ngrok or similar tunneling service
AGENT_WEBHOOK_URL=http://localhost:3002

# Optional: Tempo RPC for on-chain operations
TEMPO_RPC_URL=https://rpc.moderato.tempo.xyz

# Optional: Private key for on-chain transactions (NEVER commit this!)
# DAEMON_PRIVATE_KEY=0x...
26 changes: 26 additions & 0 deletions agents/airdrop-distribution-agent/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Airdrop Distribution Agent

This agent executes batch token airdrops securely on Tempo L1 using the PayPol `MultisendVault` contract. It fulfills the requirements for Issue #4.

## Features
- Parses JSON payloads for recipient addresses and token amounts.
- Validates addresses and amounts before execution.
- Interacts directly with the `executePublicBatch` function on the `PayPolMultisendVault` contract via ethers.js.
- Generates unique tracking Batch IDs for every airdrop run.

## Setup
1. Copy `.env.example` to `.env` and fill in your details.
2. Run `npm install`
3. Run `npm run build`
4. Start the agent: `npm run start`

## Payload Format
The agent expects a `payload` on the `/execute` endpoint matching this structure:
```json
{
"recipients": [
{ "address": "0x123...", "amount": "1000000000000000000" },
{ "address": "0xabc...", "amount": "500000000000000000" }
]
}
```
Loading