Wall•E is a Bitcoin Wallet written in Zig.
WARNING: This is just an attempt to learn Bitcoin and Zig. Do not use this project with real BTC.
Run src/main.zig
zig build run
Run src/p.zig (used for debugging)
zig build run-p
zig build test
zig build test --summary all -- src/bip39/bip39.zig src/bip38/bip38.zig
See devbox.json
devbox shell
Use Dockerfile to run bitcoin node using bitcoin-core. node/bitcoin.conf can be used as bitcoin config to run regtest with rpcuser walle and pwd password.
docker build -t btcnode .
docker volume create btcnode
docker run --rm --name btcnode -v btcnode:/bitcoin-25.0/data -p 18444:18443 btcnode
For mac users use this code to build docker image.
docker build -t btcnode -f Dockerfile.arm .
The first time you run the node you need to create a new wallet (it is no longer created automatically, if the walle was already created use loadwallet) then you can getnewaddress.
bitcoin-cli -rpcuser=walle -rpcpassword=password -rpcport=18443 createwallet walle
bitcoin-cli -rpcuser=walle -rpcpassword=password -rpcport=18443 getnewaddress
Test bitcoin node from outside container:
curl --verbose -L --user walle --data-binary '{"jsonrpc": "1.0", "id": "walle", "method": "getblockchaininfo", "params": []}' -H 'content-type: text/plain;' 0.0.0.0:18444
Join WALL•E's Discord channel to chat with the contributors and understand next steps, available tasks and bugs to be fixed.
- BIP39 (Mnemonic generation)
- BIP32 (HD Wallets)
- Serialized Extendend Private/Public Key (https://learnmeabitcoin.com/technical/keys/hd-wallets/extended-keys/)
- BIP38 (Encrypting Bitcoin Private Key)
- BIP44
- ECDSA Signatures
- Segwit
- Bech32
- BTC Node integration
- Wallet Sync
- Legacy Wallet
- Script Hash (P2SH, P2WSH)
- Transactions
- CLI
- Taproot