π Multi-chain Cryptocurrency Batch Reward Distribution Platform - Secure, Efficient, and User-Friendly Desktop Application
π Languages / θ―θ¨ / Idiomas / Langues / Sprachen / ΡΠ·ΡΠΊΠΈ / Ψ§ΩΩΨΊΨ© / μΈμ΄ / θ¨θͺ / TiαΊΏng Viα»t / TΓΌrkΓ§e: πΊπΈ English | π¨π³ δΈζ | πͺπΈ EspaΓ±ol | π«π· FranΓ§ais | π©πͺ Deutsch | π΅πΉ PortuguΓͺs | π·πΊ Π ΡΡΡΠΊΠΈΠΉ | πΈπ¦ Ψ§ΩΨΉΨ±Ψ¨ΩΨ© | π°π· νκ΅μ΄ | π―π΅ ζ₯ζ¬θͺ | π»π³ TiαΊΏng Viα»t | πΉπ· TΓΌrkΓ§e
CryptoCast Desktop is a professional cross-platform desktop application built on Electron, designed for marketing campaigns, airdrop distribution, and community rewards, supporting batch token distribution on EVM-compatible chains and Solana.
- EVM Chains: Ethereum, Polygon, BSC, Arbitrum, Optimism, Base, Avalanche, etc.
- Solana: Mainnet and devnet support
- Smart Contracts: Pre-deployed batch transfer contracts, optimized for gas fees
- Large-Scale Processing: Import addresses and amounts from CSV files
- Batch Transfers: ERC-20 and Solana (SPL) Token batch sending
- Real-Time Progress: Visualized distribution progress and status monitoring
- Local-First: All sensitive data (such as private keys) are encrypted and stored locally, never passing through any server
- Isolated Wallets: Each campaign uses an independent derived wallet, isolating fund risks
- Fully Offline: Core functions can operate in offline mode (transaction signing, etc.)
- Cross-Platform: Supports Windows and macOS (Intel & Apple Silicon)
- Intuitive Interface: Modern design with simple and clear interaction
- Cost Estimation: Real-time gas fee and total cost estimation
- Transaction History: Complete transaction history and status tracking
- Structured Logging: Winston logging system for easy debugging and issue tracking
- Architecture Design - System architecture and technical decisions
- Development Guide - Development environment setup and workflow
- API Documentation - Internal API documentation
- Testing Guide - Testing strategy and execution
- Contributing Guide - How to contribute to the project
- Changelog - Version update history
- Development Roadmap - Feature planning and development plan
| Platform | Download Link | Description |
|---|---|---|
| Windows (x64) | π₯ Download Installer | Supports Windows 10 and above |
| macOS (Intel) | π₯ Download DMG | x64 architecture Mac |
| macOS (Apple Silicon) | π₯ Download DMG | M1/M2/M3 chip Mac |
π Visit the Releases page to view all versions
Windows:
- Download
CryptoCast Setup *.exefrom the Releases page - Run the installer and follow the prompts to complete installation
macOS:
- Download the corresponding architecture
.dmgfile from the Releases page- Intel Mac: Download
*-x64.dmgor*-mac.dmg - Apple Silicon Mac: Download
*-arm64.dmg
- Intel Mac: Download
- Double-click to open the DMG file and drag
CryptoCastto theApplicationsfolder - On first run, you need to allow it in System Preferences (System Preferences β Security & Privacy)
Note: The current version is an unsigned build, intended for development and testing purposes only.
As the application is not code-signed, the operating system may block it from running. Please follow these steps according to your operating system:
Windows:
- If you encounter the "Windows protected your PC" prompt when running the installer, click "More info" in the popup.
- Then click "Run anyway".
macOS:
Method 1: Shortcut (Recommended)
- Find the CryptoCast application in Finder.
- Right-click (or hold Control and click) on the application icon.
- Select "Open" from the menu.
- In the warning dialog, click "Open".
Method 2: System Settings
- If you encounter the "Cannot open..." warning when double-clicking, click "Cancel".
- Open "System Settings" > "Privacy & Security".
- Find the blocking prompt at the bottom of the page and click "Open Anyway".
β If prompted "App is damaged": This is a common blocking mechanism by macOS for unsigned applications. There are two solutions:
Method 1: Local Installation without root permissions (Recommended)
- Drag CryptoCast.app to the user home directory Applications folder (
~/Applications)- Open Terminal and execute the following command (no sudo required):
xattr -cr ~/Applications/CryptoCast.app- Now you can launch the application normally from the
~/Applicationsfolder- It's recommended to create a Dock icon for the application: drag the application to the Dock bar
Method 2: System-level Installation (requires administrator privileges)
- Drag the application to the
/Applicationsfolder- Open Terminal and execute the following command:
sudo xattr -cr /Applications/CryptoCast.app- Enter the administrator password to open normally
- Node.js 24+
- npm (or yarn/pnpm)
- Git
git clone https://github.com/viaweb3/cryptocast-desktop.git
cd cryptocast-desktopnpm installnpm run dev# Build application for current platform
npm run build
# Build for specific platforms
npm run build:win # Windows x64
npm run build:mac-intel # macOS Intel (x64)
npm run build:mac-arm # macOS Apple Silicon (arm64)Build artifacts are located in the release/ directory.
# Generate EVM test airdrop list (333 addresses)
node scripts/generate-evm-airdrop.js
# Generate Solana test airdrop list (333 addresses)
node scripts/generate-solana-airdrop.jscryptocast-desktop/
βββ π src/
β βββ π main/ # Electron main process (Node.js backend)
β β βββ π index.ts # Application entry point
β β βββ π preload.ts # Preload script (IPC security bridge)
β β βββ π database/ # SQLite database
β β β βββ π db-adapter.ts # Database adapter
β β β βββ π sqlite-schema.ts # Database structure and migrations
β β βββ π ipc/ # IPC communication handlers
β β β βββ π handlers.ts # Implementation of all IPC channels
β β βββ π services/ # Core business logic
β β β βββ π CampaignService.ts # Campaign management
β β β βββ π WalletService.ts # Wallet management
β β β βββ π BlockchainService.ts # Generic blockchain service
β β β βββ π SolanaService.ts # Solana-specific service
β β β βββ π GasService.ts # Gas estimation service
β β β βββ π ... # Other services
β β βββ π utils/ # Utility functions
β β
β βββ π renderer/ # Electron renderer process (React frontend)
β βββ π src/
β βββ π App.tsx # Application root component
β βββ π main.tsx # React entry point
β βββ π components/ # UI components
β βββ π pages/ # Page-level components
β βββ π hooks/ # Custom React Hooks
β βββ π contexts/ # React Context
β βββ π utils/ # Frontend utility functions
β
βββ π contracts/ # Smart contracts (Solidity)
β βββ π src/
β β βββ π BatchAirdropContract.sol # EVM batch airdrop contract
β βββ π foundry.toml # Foundry configuration
β
βββ π package.json # Project configuration and dependencies
βββ π vite.config.ts # Vite configuration
βββ π electron-builder.json # Electron Builder packaging configuration
βββ π jest.config.mjs # Jest testing configuration
- React: UI framework
- TypeScript: Type system
- Vite: Build tool
- TailwindCSS: CSS framework
- DaisyUI: TailwindCSS component library
- React Router: Routing
- Node.js 24+: Runtime environment
- Electron 39.2.2: Cross-platform desktop application framework
- SQLite: Local database
- TypeScript 5.7.3: Type system
- Winston 3.18.3: Structured logging system
- ethers.js: EVM chain interaction library
- @solana/web3.js: Solana chain interaction library
- Foundry: Solidity development and testing framework
- Jest: Unit/integration testing
- @testing-library/react: React component testing
The application backend logic is split into multiple services located in src/main/services/, including:
- CampaignService: Responsible for creating, managing, and executing airdrop campaigns
- WalletManagementService / WalletService: Manages user wallets, including creation, import, and secure storage
- ChainManagementService / ChainService: Manages and connects to different blockchain networks (EVM & Solana)
- ContractService: Responsible for deploying and interacting with smart contracts
- GasService / PriceService: Estimates transaction fees and retrieves token prices
- SolanaService: Handles all Solana-specific logic
- CampaignEstimator / CampaignExecutor: Responsible for campaign cost estimation and execution, respectively
The application uses SQLite as the local database, with table structures defined in src/main/database/sqlite-schema.ts.
-- Campaigns Table
CREATE TABLE campaigns (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
chain_type TEXT NOT NULL CHECK (chain_type IN ('evm', 'solana')),
chain_id INTEGER,
token_address TEXT NOT NULL,
status TEXT NOT NULL,
total_recipients INTEGER NOT NULL,
wallet_address TEXT,
contract_address TEXT,
...
);
-- Recipients Table
CREATE TABLE recipients (
id INTEGER PRIMARY KEY AUTOINCREMENT,
campaign_id TEXT NOT NULL,
address TEXT NOT NULL,
amount TEXT NOT NULL,
status TEXT NOT NULL CHECK (status IN ('PENDING', 'PROCESSING', 'SENT', 'FAILED')),
tx_hash TEXT,
FOREIGN KEY (campaign_id) REFERENCES campaigns (id) ON DELETE CASCADE
);
-- Transactions Table
CREATE TABLE transactions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
campaign_id TEXT NOT NULL,
tx_hash TEXT NOT NULL UNIQUE,
tx_type TEXT NOT NULL,
status TEXT NOT NULL,
...
FOREIGN KEY (campaign_id) REFERENCES campaigns (id) ON DELETE CASCADE
);
-- Blockchain Networks Table
CREATE TABLE chains (
id INTEGER PRIMARY KEY AUTOINCREMENT,
type TEXT NOT NULL CHECK (type IN ('evm', 'solana')),
name TEXT NOT NULL UNIQUE,
rpc_url TEXT NOT NULL,
...
);- Windows:
%APPDATA%\\cryptocast\\ - macOS:
~/Library/Application Support/cryptocast/ - Linux:
~/.config/cryptocast/
# Run all unit and integration tests
npm test
# Generate coverage report
npm run test:coverageWe welcome all forms of contribution! Please read the CONTRIBUTING.md file for details.
This project is licensed under the MIT License.