A USSD-based Bitcoin Lightning payment system that integrates Africa's Talking USSD API, Python, MeTTa language for symbolic reasoning, and Bitcoin Lightning Network.
# Bitcoin Lightning USSD System
A USSD-based Bitcoin Lightning payment system that integrates Africa's Talking USSD API, Python Flask, MeTTa language for symbolic reasoning, and Bitcoin Lightning Network.
## 🚀 Features
- **USSD Interface**: Interactive USSD menus for Bitcoin Lightning payments
- **Lightning Network**: Support for LND, LNbits, and mock backends
- **MeTTa Integration**: Symbolic reasoning for state management and validation
- **M-Pesa Integration**: Simulated KES ↔ Bitcoin conversions
- **Multi-language**: English and Swahili support
- **Real-time Balances**: Sync between MeTTa knowledge base and Lightning API
## 📱 USSD Menu Structure
```
Bitcoin Lightning
Balance: X sats
1. Send BTC → Enter phone → Enter amount → Confirm
2. Receive BTC → Enter amount → Get invoice code
3. Send Invoice → Enter phone → Enter amount → Send via SMS
4. Top Up M-Pesa → Enter KES → Enter M-Pesa code → Convert
5. Withdraw M-Pesa → Enter KES → Enter M-Pesa number → Convert
0. Exit
```
## 🏗️ Architecture
```
USSD Request → Flask App → USSDHandlers → MeTTa + Lightning API
↓
Africa's Talking Response
```
### Components
1. **app.py**: Flask USSD endpoint handling Africa's Talking protocol
2. **handlers.py**: Business logic with MeTTa integration
3. **lightning.py**: Lightning Network API wrapper (LND/LNbits/Mock)
4. **atoms_simple.metta**: MeTTa knowledge base for users, balances, rules
5. **test_ussd.py**: Test suite for USSD flows
## 🛠️ Installation
### 1. Environment Setup
```bash
# Ubuntu setup
sudo apt update
sudo apt install python3.12-venv -y
# Create project
mkdir MeTTaProject
cd MeTTaProject
python3 -m venv venv
source venv/bin/activate
# Install dependencies
pip install hyperon==0.2.2 flask requests
```
### 2. Project Structure
```
MeTTaProject/
├── app.py # Flask USSD handler
├── handlers.py # Lightning + MeTTa functions
├── lightning.py # Lightning API wrapper
├── atoms_simple.metta # MeTTa knowledge b …