Jeffrey H. Johnson 8729acba84 multi: Add proper attributions, fixup imports, etc 3 years ago
..
chain 283823059a mainline/decred: apply code style best practices 3 years ago
cmd 31eb02b81a Add another noSyncFreeList param to bdb and get rid of silly dynamic typing 3 years ago
docs f8d4108d44 Restyled by prettier-markdown 3 years ago
internal adf2ac5e47 for merge optimization: mainline btcd/decred style 3 years ago
netparams 3c0f5cd2c5 Move some constants to other packages 3 years ago
rpc de9085043d Catchup to mainstream develop 3 years ago
snacl dde4805565 Add AMD64 highly parallel optimized SHA-256 hash 3 years ago
waddrmgr 8546baca9c Format code with yapf, autopep8, isort, standardrb, prettier, standardjs, rubocop, black and gofmt 3 years ago
wallet df98323b50 Update copyright, license, reporting info, docs. 3 years ago
walletdb f8d4108d44 Restyled by prettier-markdown 3 years ago
wtxmgr f8d4108d44 Restyled by prettier-markdown 3 years ago
README.md f8d4108d44 Restyled by prettier-markdown 3 years ago
config.go 415519ec2a Get rid of logger-zoo and replace with single log package which uses stack introspection to decide whether or not to log in a given file 3 years ago
params.go b971eebc54 pktwallet: Automatic changes of dependencies in order to reference the in-tree version 4 years ago
pktconv.sh dde1c903ed Added pktwallet to the tree in the precise form that it was in at state a21c60df5f7ae85ac3dca6f0ad460ea47175e435 in the pktwallet project repo 4 years ago
pktwallet.go 8729acba84 multi: Add proper attributions, fixup imports, etc 3 years ago
pktwallet_test_license_test.go 8729acba84 multi: Add proper attributions, fixup imports, etc 3 years ago
rpcserver.go adf2ac5e47 for merge optimization: mainline btcd/decred style 3 years ago
signal.go 415519ec2a Get rid of logger-zoo and replace with single log package which uses stack introspection to decide whether or not to log in a given file 3 years ago
signalsigterm.go 263564416b Changed over all of the code in pktd and pktwallet 4 years ago
walletsetup.go 283823059a mainline/decred: apply code style best practices 3 years ago

README.md

pktwallet

pktwallet is a daemon handling bitcoin wallet functionality for a single user. It acts as both an RPC client to pktd and an RPC server for wallet clients and legacy RPC applications.

Public and private keys are derived using the hierarchical deterministic format described by BIP0032. Unencrypted private keys are not supported and are never written to disk. pktwallet uses the m/44'/<coin type>'/<account>'/<branch>/<address index> HD path for all derived addresses, as described by BIP0044.

Due to the sensitive nature of public data in a BIP0032 wallet, pktwallet provides the option of encrypting not just private keys, but public data as well. This is intended to thwart privacy risks where a wallet file is compromised without exposing all current and future addresses (public keys) managed by the wallet. While access to this information would not allow an attacker to spend or steal coins, it does mean they could track all transactions involving your addresses and therefore know your exact balance. In a future release, public data encryption will extend to transactions as well.

pktwallet is not an SPV client and requires a connection to a local or remote pktd instance for asynchronous blockchain queries, as well as to receive notifications over websockets.

Wallet clients can use one of two RPC servers:

  1. A legacy JSON-RPC server mostly compatible with Bitcoin Core

The JSON-RPC server exists to ease the migration of wallet applications from Core, but complete compatibility is not guaranteed. Some portions of the API (and especially accounts) have to work differently due to other design decisions (mostly due to BIP0044). However, if you find a compatibility issue and feel that it could be reasonably supported, please report an issue. This server is enabled by default.

  1. An experimental RPC server

The RPC server uses a new API built for pktwallet, but, because the API is not stable, the server is feature gated behind a user configurations option (--experimentalrpclisten). If you a) don't mind applications breaking due to API changes, b) have issues with the legacy API, or c) need to get notifications for changes to the wallet, this is the RPC server to use.

Issue Tracker

The integrated GitHub issue tracker is used for this project.

License

pktwallet is licensed under the liberal ISC License.