Search projects, hackathons, sponsors and tech

    ← All projects

    Pygo

    A service that allows users to send PYUSD and check crypto prices over SMS

    Demo

    About

    What if every phone number could be a stablecoin wallet? Pygo lets anyone send and receive ETH and PYUSD on Ethereum using plain SMS; no apps or internet needed. Users register with a PIN, get a custodial wallet, check balances, send tokens with a two-step SMS confirmation, fetch BTC/ETH prices via Pyth Hermes, and retrieve their wallet address. It’s designed as a simple, secure bridge between feature phones and crypto.

    How it's made

    1. Core: - Node.js + Express API with MongoDB (Mongoose) for users, transactions, and pending confirmations. - Twilio handles inbound/outbound SMS; an SMS parser interprets commands (REGISTER, BALANCE, SEND, CONFIRM, YES, WALLET, PRICE). - Custodial wallets are generated per user with ethers.js; private keys are AES-encrypted at rest; PINs are salted SHA-256 hashes; accounts lock after repeated failures. - Transactions use ethers.js: native ETH sends and ERC‑20 transfer for PYUSD; balances refresh from chain. - Two-step send flow: creates a short‑lived PendingTransaction with TTL; user confirms with YES or CONFIRM <CODE> <PIN>. 2. Prices (Pyth Hermes) - Primary path uses price feed IDs via v2/updates/price/latest?ids[]&parsed=true (env-configured for BTCUSD/ETHUSD). - Fallback discovery with v2/price_feeds?query=... if IDs aren’t set; final fallback to v2/price/latest?symbols=.... 3. Notable hacks/pragmatics - Symbol normalization and feed discovery to handle BTC/ETH variants if IDs aren’t provided. - Simple formatting rules for prices and token decimals (18 for ETH, env-configurable for PYUSD). - Minimal, explicit SMS templates and confirmations to fit the 160‑char UX, with helpful errors. 4. Stack - Express, Mongoose, ethers.js, Twilio, CryptoJS (AES/SHA‑256), Winston, Pyth Hermes HTTP. - Configurable via env: ETH RPC/chain, PYUSD address/decimals, Twilio creds, encryption key, Pyth feed IDs.