Pygo

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

Pygo

Created At

ETHOnline 2025

Project Description

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>.
  1. 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=....
  1. 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.
  1. 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.
background image mobile

Join the mailing list

Get the latest news and updates

Pygo | ETHGlobal