// the find
GMWalletApp/epusdt
开源优雅的跨平台收款网关 GM Pay(formerly known as EPUSDT)
Self-hosted crypto payment gateway in Go that accepts USDT, USDC, ETH, TRX, and BNB across TRC20, ERC20, BEP20, Solana, and Polygon, routing funds directly to your own wallets with no middleman cut. Aimed at operators of proxy/VPN panels, AI API distributors, and digital goods stores who need stablecoin payments without a custodial processor. Ships as a single binary that runs against SQLite, MySQL, or PostgreSQL.
The database abstraction layer (mdb_sqlite.go, mdb_mysql.go, mdb_postgres.go) is clean — SQLite mode with zero external dependencies is a real feature, not a toy. Per-chain listener architecture (listen_eth.go, listen_sol_job.go, listen_trc20_block.go) is well-organized: each chain gets its own goroutine with shared RPC health monitoring, making the multi-chain story believable rather than bolted-on. Multi-wallet round-robin address assignment is built in from the start, which is the correct answer to concurrent payment collision rather than an afterthought. A third-party security audit was completed in May 2026, which is unusual for a project at this star count and worth crediting.
The frontend source code is not in the repo — www/assets is hundreds of pre-built, content-hashed JS bundles with no build toolchain, package.json, or component source visible anywhere. You cannot audit or customize the admin UI without reverse-engineering minified output. The amount-increment matching scheme (add 0.0001 per collision, max 100 slots per wallet) is a pragmatic hack that breaks under concurrent load with no documented fallback when all slots are exhausted. The primary integration ecosystem (V2Board, SSPanel, dujiaoka) consists of VPN/proxy panel software that is legally gray or outright banned in many jurisdictions — the gateway inherits that compliance risk regardless of what the lengthy disclaimer says. Webhook reliability is murky: there is no visible dead-letter queue or persistent retry log in the service layer, so a brief callback outage means manual order reconciliation.