BaseDrop is an open-source Web3 payment protocol that lets users send cryptocurrency using a simple shareable link — no wallet address required on the recipient side.
Instead of copying long hex addresses and worrying about network compatibility, a sender locks funds in an on-chain escrow, generates a payment link, shares it anywhere, and the recipient claims the funds in one click.
Built on Base. Focused on simplicity, security, and real on-chain settlement.
Crypto payments should be as easy as sending a message.
The biggest UX barrier in Web3 today is the wallet address. BaseDrop removes it entirely.
Instead of this:
0x8a1e6F3B9c2D4A0E5f7C1B8D3E2A4F6C9D1E3B5F
Users simply share a link:
https://basedrop-protocol.vercel.app/claim/abc123
The recipient opens the link, connects any wallet, and claims the funds.
No address copying. No network confusion. No friction.
Lock crypto in escrow and generate a unique claimable link in seconds.
https://basedrop-protocol.vercel.app/claim/<payment-id>
Share it anywhere:
- WhatsApp, Telegram, Discord
- Email or SMS
- QR code
- Social media
Funds are locked inside an audited on-chain escrow contract until claimed or cancelled.
- Trustless payments — no intermediary holds your funds
- Sender can cancel any unclaimed payment and recover funds at any time
- Immutable settlement — no server can redirect or block a claim
Recipients simply:
- Open the payment link
- Connect their wallet
- Claim the funds
No wallet address exchange. No account creation.
| Token | Network | Decimals |
|---|---|---|
| ETH (native) | Base Sepolia | 18 |
| USDC | Base Sepolia | 6 |
All fund transfers happen on Base — low fees, fast confirmations, transparent on-chain verification.
BaseDrop uses a hybrid architecture combining on-chain settlement with off-chain indexing.
User
│
▼
Frontend (Next.js 16 — App Router)
│
▼
API Layer (Next.js Route Handlers + Neon PostgreSQL)
│
├──► Escrow Smart Contract (Base Sepolia)
│
└──► Database (Neon PostgreSQL — serverless)
Sender connects wallet
│
▼
Select token (ETH / USDC) + amount + optional expiry
│
▼
Funds locked in on-chain Escrow contract
│
▼
Unique payment link generated
│
▼
Sender shares link (chat, email, QR code)
│
▼
Recipient opens link + connects wallet
│
▼
Recipient claims → contract releases funds directly to wallet
Sender can cancel any unclaimed payment at any time to recover funds.
The Escrow.sol contract is deployed on Base Sepolia and handles all fund custody and settlement.
Contract Address
0x59C16998dFc090642EFFdc485c81adAc64d3ef91
Core Interface
// Lock funds and create a payment
function createPayment(
bytes32 paymentId,
address token,
uint256 amount,
uint256 expiry
) external payable;
// Recipient claims — releases funds to their wallet
function claimPayment(bytes32 paymentId, address receiver) external;
// Sender cancels and recovers funds
function cancelPayment(bytes32 paymentId) external;Security Properties
ReentrancyGuardon all state-changing functions- Only the original sender can cancel a payment
claimPayment()can only be executed once per payment ID- On-chain expiry enforced at the contract level
- ERC-20 transfer success verified before state change
- No admin key — no one can drain or redirect escrowed funds
- Built with OpenZeppelin v5 contracts as base
https://basedrop-protocol.vercel.app
Demo flow:
- Connect wallet (MetaMask, Coinbase Wallet, WalletConnect, Porto)
- Select token and enter amount
- Create payment — funds locked on-chain
- Copy the generated link or scan QR code
- Share the link with recipient
- Recipient opens link, connects wallet, claims funds
| Layer | Technology |
|---|---|
| Frontend | Next.js 16.1.6 (App Router) · React 19 · TypeScript |
| Styling | Tailwind CSS 4 · Framer Motion · Lucide React |
| Web3 | wagmi v3 · viem v2 · RainbowKit v2 |
| Wallets | MetaMask · Coinbase Wallet · WalletConnect · Porto |
| Smart Contracts | Solidity ^0.8.20 · Hardhat · OpenZeppelin v5 |
| Database | Neon PostgreSQL (serverless) |
| Infrastructure | Vercel · GitHub |
| Network | Base Sepolia (Chain ID: 84532) |
basedrop/
│
├── app/
│ ├── page.tsx # Create payment page
│ ├── layout.tsx # Global layout + metadata
│ ├── providers.tsx # wagmi + RainbowKit providers
│ ├── globals.css
│ ├── constants/
│ │ └── contract.ts # ABI + contract + token addresses
│ ├── api/
│ │ ├── payments/
│ │ │ ├── route.ts # POST /api/payments
│ │ │ └── [paymentId]/
│ │ │ ├── route.ts # GET /api/payments/:id
│ │ │ ├── cancel/route.ts # POST /api/payments/:id/cancel
│ │ │ └── claim/route.ts # POST /api/payments/:id/claim
│ │ └── users/
│ │ └── [wallet]/
│ │ └── payments/route.ts # GET /api/users/:wallet/payments
│ └── claim/
│ └── [paymentId]/
│ └── page.tsx # Recipient claim page
│
├── contracts/
│ ├── contracts/
│ │ └── Escrow.sol # Core escrow contract
│ ├── scripts/
│ │ └── deploy.js # Hardhat deploy script
│ └── hardhat.config.js
│
├── scripts/
│ ├── check_balance.js
│ └── verify_contract.js
│
├── SUPABASE_SETUP.sql # Database schema
├── package.json
├── next.config.ts
├── vercel.json
└── README.md
Create a .env.local file in the project root:
# Database (Neon PostgreSQL)
POSTGRES_URL=your_neon_connection_string
# WalletConnect
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=your_walletconnect_project_id
# Contract (optional — defaults to deployed address)
NEXT_PUBLIC_ESCROW_ADDRESS=0x59C16998dFc090642EFFdc485c81adAc64d3ef91| Variable | Required | Description |
|---|---|---|
POSTGRES_URL |
✅ | Neon PostgreSQL connection string |
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID |
✅ | WalletConnect Cloud project ID |
NEXT_PUBLIC_ESCROW_ADDRESS |
Optional | Override the escrow contract address |
1. Clone the repository
git clone https://github.com/nayrbryanGaming/basedrop.git
cd basedrop2. Install dependencies
npm install3. Configure environment
cp .env.example .env.local
# Fill in your environment variables4. Initialize the database
psql $POSTGRES_URL -f SUPABASE_SETUP.sql5. Start the development server
npm run devOpen http://localhost:3000.
npm run buildDeploy Escrow.sol to Base Sepolia:
cd contracts
npm install
npx hardhat run scripts/deploy.js --network baseSepoliaUpdate NEXT_PUBLIC_ESCROW_ADDRESS in your environment with the deployed address.
BaseDrop is optimized for deployment on Vercel.
- Push repository to GitHub
- Import project at vercel.com/new
- Configure the three environment variables
- Deploy
Security is a core design priority.
- Non-custodial — the application server never touches user funds
- Escrow model — all funds are held by the on-chain contract, not a wallet controlled by us
- Reentrancy protection —
ReentrancyGuardon every state-changing function - Access control — only the original sender can cancel; claim can only execute once
- Expiry enforcement — enforced at the contract level, not the application layer
- Verified ERC-20 transfers — transfer success confirmed before state is updated
- No admin keys — no privileged role can drain, redirect, or freeze escrow funds
| Use Case | Description |
|---|---|
| Freelance Payments | Pay contractors instantly without exchanging wallet addresses |
| Creator Tipping | Accept crypto tips via a shareable link |
| Community Rewards | Distribute rewards across Discord, Telegram, or X |
| Gift Crypto | Send crypto as a gift link — recipient claims when ready |
| Invoice Settlement | Replace manual invoice + transfer flow with a single link |
| Phase | Status | Milestone |
|---|---|---|
| Phase 1 | ✅ Complete | Escrow.sol deployed on Base Sepolia |
| Phase 2 | ✅ Complete | Full API layer (create, claim, cancel, history) |
| Phase 3 | ✅ Complete | Frontend — create page + claim page |
| Phase 4 | ✅ Complete | ETH + USDC multi-token support |
| Phase 5 | ✅ Complete | Live wallet balance display with MAX button |
| Phase 6 | 🔜 Planned | Payment link analytics dashboard |
| Phase 7 | 🔜 Planned | Batch payment creation |
| Phase 8 | 🔜 Planned | Link expiration controls (UI) |
| Phase 9 | 🔜 Planned | Base Mainnet deployment |
| Phase 10 | 🔜 Planned | Developer SDK + Payment API |
Contributions are welcome.
- Fork the repository
- Create a feature branch:
git checkout -b feat/your-feature - Commit your changes:
git commit -m "feat: description" - Push to the branch:
git push origin feat/your-feature - Open a pull request
Please follow Conventional Commits format.
BaseDrop is fully open source under the MIT License.
github.com/nayrbryanGaming/basedrop
Vincentius Bryan Kwandou
Web3 developer focused on blockchain infrastructure and crypto payment systems.
MIT License — open source and free to use.
| Live App | basedrop-protocol.vercel.app |
| Smart Contract | View on Basescan |
| Demo Video | Watch on YouTube |
| Founder Intro | Watch on YouTube Shorts |
| GitHub | nayrbryanGaming/basedrop |
| Founder | linkedin.com/in/bryankwandou |