https://github.com/epmw/epmw
Ergo Poor Man's Wallet
https://github.com/epmw/epmw
Last synced: 5 days ago
JSON representation
Ergo Poor Man's Wallet
- Host: GitHub
- URL: https://github.com/epmw/epmw
- Owner: epmw
- License: gpl-3.0
- Created: 2023-10-15T16:56:40.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-12-16T17:15:05.000Z (over 1 year ago)
- Last Synced: 2024-08-03T14:51:45.386Z (9 months ago)
- Language: C
- Size: 1.19 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ergo - Ergo Poor Man's Wallet (EPMW) - low-cost, DIY hardware wallet project using commodity hardware. [`Hardware`] *(Experimental)* (💼 Wallets <a id="wallets"></a> / 🛟 Wallet Utilities & Recovery <a id="utilities--recovery"></a>)
README
# Ergo Poor Man's Wallet
## About project
The Ergo Poors Man's Wallet (EPMW) project is a simple, DIY, low-cost hardware wallet for Ergo cryptocurrency, which was created during ErgoHackVII hackathon from the Ergo Hackathon series in October 2023. The wallet is designed to be affordable, with a total cost of around $10, including shipping cost of components to Europe.## Motivation
While hardware wallets are the safest option for storing cryptocurrency, there has been always lack of hardware wallet options within the Ergo ecosystem.The integration of Ergo's necessary functionalities into Ledger hardware wallet firmware took almost a year, and as far as I am aware, it is still only available in some development mode. Additionally, Ledger is not open source or open hardware (as per my knowledge).
At one point in the past, Trezor refused integration of projects that ranked lower in terms of market capitalization than the top 50, meaning it currently also lacks support for Ergo.
I, the original author of this project, have wanted to create my own open source and open hardware wallet for Ergo since my first interaction with the Ergo community in the spring of 2021. However, since its only my side project and I'm not devoting almost any time to it, while also programming everything from scratch with emphasis on the security of a such device, I can for sure tell that the release time of my own wallet proof-of-concept will only continue being postponned. Even when completed in the future, a premium-looking hardware wallet with a touch display and many "professional" features would come at a significant cost, making it unaffordable for the poorest members of the community or those holding only small amounts of the ergo cryptocurrency. Supply chain issues, government-related problems such as taxes and custom fees during device importation from foreign countries, further compound this problem.
This is where Ergo Poor Man's Wallet (EPMW) comes into play. The vision of EPMW is to be low-cost and assembled from easily obtainable components that cost just a few dollars, available online or even in many local hardware stores. While EPMW may look like a DIY project with a tangle of wires, it can be easily assembled by anyone without requiring tools such as a soldering iron nor even a screwdriver. You simply connect a few wires, and you're ready to go. This design choice aligns with Ergo's manifesto, ensuring that even the less fortunate members of the ergo community can afford it - since DIY assembly costs around $10, without the need for any additional equipment.
## Goals
- Create an open-source and open-hardware wallet that can be DIY-built by anyone, even without prior electronics experience, in their own home in just a few minutes.
- Offer an affordable wallet option, allowing even those with limited financial resources, students, or anyone curious about Ergo to be able to easily afford and assemble it.
- Build the wallet from components that are cheap and readily accessible worldwide, ensuring a decentralized procurement process and eliminating Ergo community members dependency on a single hardware wallet manufacturer.
- Provide software along with a user-friendly tutorials, making it possible for individuals without ANY programming experience to compile and upload the firmware to the wallet they build. This ensures that the wallet remains functional and usable by users even in case that the project would be abandoned by developpers.
- Empower members of the Ergo community with a proof-of-concept example, giving them a foundation to create their own wallets or contribute to the EPMW project by developing various extensions.## FAQ
- Q: Does this mean you have stopped working on your own wallet?
- A: No, I have not. The purpose of EPMW is to serve as an initial catalyst for developers across the Ergo community, providing them with a starting point to create their own wallets or extend EPMW's firmware. While I continue to work on my more advanced wallet project independently, developers have access to a "demo" project with simple hardware that they can easily assemble in their living room (for a ridiculous low price in comparison with other options). I hope it will gain traction, and others will contribute to EPMW or create spin-off projects.## Current state
State after the hackathon:### Currently working:
- UART like communication with PC via built-in USB
- OLED display
- Buttons
- Ergo related cryptography (xpub generation, address generation, ergo schnorr signing).
- Wallet pretends to be initialized and use hardcoded mnemonic to derive the wallet's xpub from it, which is shown on the OLED display (QR code works when scanned by any compatible wallet such as Ergo Mobile Wallet in xpub import mode and the xpub is equal to the xpub derived from the same mnemonic in the other wallets software (Nautilus, Ergo mobile wallet))
- Build tools### Has to be implemented:
- Entropy gathering from both user taps (there are already prepared push button interrupts for this usecase)
- Entropy from phase noise between precise xtal oscilator (on bluepill pcb) vs non-precise RC oscilator (built-in)
- Wallet initialization procedure - generation of private key, showing user mnemonic seed
- Communication protocol between PC and HW wallet
- Python client for desktop which will be crafting transactions and sending them to be signed to HW device
- Ergo transaction parsing within the device (to show user which transaction is he going to sign)