/cryptopower

A cross-platform SPV (DCR, BTC & LTC) privacy wallet built with go.

Primary LanguageGoISC LicenseISC

Cryptopower Wallet for Mobile and Desktop

A cross-platform desktop wallet built with gio.

Links

Features

  • Multi-Coin support - Native SPV wallets for Decred, Bitcoin and Litecoin.
  • Coin Control - It allows users to select exact addresses and outputs to be used in a transaction.
  • CoinShuffle++ - CoinShuffle++ (CSPP) is a mixing protocol used to create Decred CoinJoin transactions.
  • Staking - This allows users to purchase tickets via DCR’s PoS (Proof-Of-Stake) consensus implementation.
  • Governance - This allows users to vote on Decred Proposals, Consensus changes and Treasury Spendings.
  • Set gap limit - Users can choose a custom gap limit for use with address discovery.
  • Instant Exchange - Instant exchanging between assets using (Flyp.me, Godex, Changenow, Trocador).
  • Fee Rates API - This allows for custom fee selection when sending BTC transactions.
  • Transaction note - This allows for a note/description when sending transactions.
  • DCRDEX has been implemented with current trading pairs; LTC/DCR & DCR/BTC. It is currently under beta testing.
  • Users can now send transactions to multiple recipients at a go.
  • Users can now export transactions for better record keeping.
  • An improved User Interface for easier accessibility and use.
  • Users can switch between mainnet and testnet right from the settings page

Desktop App

Mobile App

Building

  • Set up instant exchange private key: copy file ./libwallet/instantswap/instant_example.json into ./libwallet/instantswap/instant.json. Then replace with your own key. For now, the supported instant exchange are: trocador, changenow, godex and flypme (flypme does not require a private key)

For taking the api keys. Please go to the instant exchange websites

Note: You need to have Go 1.21 or above to build.

Then go build.

Linux

To build cryptopower on Linux these gio dependencies are required.

Arch Linux: pacman -S vulkan-headers libxkbcommon-x11

FreeBSD

To build cryptopower on FreeBSD you will need to pkg install vulkan-headers as root. This is a gio dependency.

Running cryptopower

General usage

By default, cryptopower runs on Mainnet network type. However, cryptopower can run on testnet by issuing commands on the terminal in the format:

cryptopower [options]
  • Run ./cryptopower --network=testnet to run cryptopower on the testnet network.
  • Run ./cryptopower --network=dextest to run cryptopower with the decred dex simnet harness.
  • Run cryptopower -h or cryptopower help to get general information of commands and options that can be issued on the cli.
  • Use cryptopower <command> -h or cryptopower help <command> to get detailed information about a command.

Profiling

Cryptopower uses pprof for profiling. It creates a web server which you can use to save your profiles. To setup a profiling web server, run cryptopower with the --profile flag and pass a server port to it as an argument.

So, after running the build command above, run the command

./cryptopower --profile=6060

You should now have a local web server running on 127.0.0.1:6060.

To save a profile, you can simply use

curl -O localhost:6060/debug/pprof/profile

Contributing

See CONTRIBUTING.md

Other

Earlier experimental work with other user interface toolkits can be found at godcr-old.

Bootstrappable Cryptopower Builds

The reproduciblebuilds directory contains the files necessary to perform bootstrappable Cryptopower builds.

Bootstrappability furthers our binary security guarantees by allowing us to audit and reproduce our toolchain instead of blindly trusting binary downloads.

We achieve bootstrappability by using Docker.