{"id":27037848,"url":"https://github.com/geeknik/mempool-partyline","last_synced_at":"2026-04-30T15:31:21.531Z","repository":{"id":286202160,"uuid":"960704149","full_name":"geeknik/mempool-partyline","owner":"geeknik","description":"Anarcho-ephemeral Mempool Messaging System with TUI","archived":false,"fork":false,"pushed_at":"2025-08-25T00:23:22.000Z","size":76,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-17T11:00:31.763Z","etag":null,"topics":["bitcoin","chat","encryption","infosec","mempool","messaging","privacy","security"],"latest_commit_sha":null,"homepage":"https://deepforkcyber.com/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/geeknik.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-04-04T22:47:24.000Z","updated_at":"2026-02-26T05:25:25.000Z","dependencies_parsed_at":"2025-04-04T23:37:01.767Z","dependency_job_id":null,"html_url":"https://github.com/geeknik/mempool-partyline","commit_stats":null,"previous_names":["geeknik/mempool-partyline"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/geeknik/mempool-partyline","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geeknik%2Fmempool-partyline","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geeknik%2Fmempool-partyline/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geeknik%2Fmempool-partyline/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geeknik%2Fmempool-partyline/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/geeknik","download_url":"https://codeload.github.com/geeknik/mempool-partyline/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geeknik%2Fmempool-partyline/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32469344,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"ssl_error","status_checked_at":"2026-04-30T13:12:06.837Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bitcoin","chat","encryption","infosec","mempool","messaging","privacy","security"],"created_at":"2025-04-05T02:18:02.398Z","updated_at":"2026-04-30T15:31:21.509Z","avatar_url":"https://github.com/geeknik.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# Mempool Partyline\n\nAn anarcho-ephemeral messaging system that uses Bitcoin's mempool for private, encrypted communication.\n\n## Overview\n\nMempool Partyline enables secure, anonymous messaging by embedding encrypted messages within the Bitcoin mempool using OP_RETURN transactions. Messages exist only temporarily in the mempool until transactions are confirmed, providing an ephemeral communication channel that leaves minimal permanent traces.\n\n## Features\n\n- **End-to-end encryption** using AES with password-derived keys\n- **Ephemeral messaging** - messages exist only in the mempool\n- **Anonymous communication** - no account registration required\n- **Multiple interfaces**:\n  - Console-based UI for simple usage\n  - Curses-based TUI with enhanced features\n  - Daemon mode for background monitoring\n- **Flexible message monitoring**:\n  - ZMQ-based real-time notification (preferred)\n  - Polling-based fallback for nodes without ZMQ\n- **User-friendly features**:\n  - Message history with timestamps\n  - Custom nicknames\n  - Config file management\n  - Interactive setup wizard\n\n## Requirements\n\n- Python 3.7+\n- Bitcoin Core node with JSON-RPC and (optionally) ZMQ enabled\n- Some bitcoin testnet coins for sending messages\n\n### Python Dependencies\n\n- `zmq` - ZeroMQ for real-time mempool monitoring\n- `pycryptodome` - For AES encryption\n- `python-bitcoinrpc` - For Bitcoin Core RPC communication\n- `curses` - For the TUI interface (included in Python standard library)\n\n## Installation\n\n1. Clone this repository:\n   ```\n   git clone https://github.com/geeknik/mempool-partyline.git\n   cd mempool-partyline\n   ```\n\n2. Install dependencies:\n   ```\n   python -m venv venv\n   source venv/bin/activate\n   pip install zmq pycryptodome python-bitcoinrpc\n   ```\n\n3. Run the setup wizard:\n   ```\n   python mempool_partyline.py --setup\n   ```\n\n## Bitcoin Node Configuration\n\nMempool Partyline requires a Bitcoin Core node with JSON-RPC enabled. For optimal performance, ZMQ should also be enabled.\n\nAdd the following to your `bitcoin.conf` file:\n\n```\n# JSON-RPC Configuration\nserver=1\nrpcuser=yourrpcuser  # Choose a secure username\nrpcpassword=yourrpcpass  # Choose a secure password\nrpcallowip=127.0.0.1\n\n# ZMQ Configuration (Optional but recommended)\nzmqpubrawtx=tcp://127.0.0.1:28332\n```\n\n### Running on Testnet\n\nFor testing, it's recommended to use Bitcoin's testnet:\n\n```\ntestnet=1\n```\n\n## Usage\n\n### First-Time Setup\n\nThe first time you run Mempool Partyline, it will guide you through configuration:\n\n```\npython mempool_partyline.py --setup\n```\n\nThis will:\n- Create a configuration directory\n- Prompt for Bitcoin Core RPC credentials\n- Set your preferred nickname\n- Set up encryption keys\n\n### Running the Application\n\n#### Console UI\n\n```\npython mempool_partyline.py\n```\n\n#### Text User Interface (TUI)\n\n```\npython mempool_partyline.py --tui\n```\n\n#### Daemon Mode (Just listen for messages)\n\n```\npython mempool_partyline.py --daemon\n```\n\n### Sending Messages\n\nIn the console or TUI, type your message and press Enter to send. The application will create a Bitcoin transaction with your encrypted message and broadcast it to the network.\n\nThe message will be visible to any other Mempool Partyline users who share the same encryption password.\n\n## Configuration\n\nConfiguration is stored in `~/.config/mempool_partyline/config.json` and includes:\n\n- Bitcoin Core RPC credentials\n- ZMQ endpoint information\n- User nickname\n- Logging settings\n\nYou can modify this file directly or run the setup wizard again.\n\n## Security Considerations\n\n- **Encryption Password**: All users must share the same encryption password to communicate\n- **Transaction Costs**: Each message may require a small Bitcoin transaction fee\n- **Privacy**: While messages are encrypted, the fact that you're sending/receiving data via OP_RETURN is visible on the blockchain\n- **Ephemeral**: Messages only exist in the mempool until the transaction is confirmed\n\n## Advanced Usage\n\n### Creating a Closed Group\n\nFor private group communication, all participants should:\n\n1. Use the same encryption password\n2. Configure their Bitcoin nodes to connect directly to each other (using `addnode=`)\n3. Potentially run with `blocksonly=1` to prevent your messages from being relayed outside your private network\n\n### Custom Network Configuration\n\nFor completely private communication, you can:\n\n1. Run a private Bitcoin regtest network\n2. Configure all participants to connect only to this network\n3. Use Mempool Partyline as normal\n\n## Troubleshooting\n\n### Common Issues\n\n#### \"No UTXOs available for transaction\"\n\nYou need testnet coins to send messages. Get some from a testnet faucet.\n\n#### \"Failed to connect to Bitcoin node\"\n\nCheck your Bitcoin Core is running and RPC credentials are correct.\n\n#### \"ZMQ listener failed, falling back to polling\"\n\nYour Bitcoin Core may not have ZMQ enabled. Add the ZMQ configuration in bitcoin.conf and restart.\n\n## Logs\n\nLogs are stored in `~/.config/mempool_partyline/partyline.log` and can help diagnose issues.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Disclaimer\n\nThis software is provided for educational and research purposes only. Using this software may require compliance with local regulations regarding encryption and privacy. Users are responsible for their own compliance with applicable laws.\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeeknik%2Fmempool-partyline","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgeeknik%2Fmempool-partyline","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeeknik%2Fmempool-partyline/lists"}