A secure lbry wallet daemon written in Go
Go to file
2022-10-31 21:21:45 -07:00
.github/workflows ci: update github Worflow, and Go 1.19 2022-08-04 21:40:57 -07:00
chain config: remove SigNet and SimNet related code 2022-09-28 23:42:21 -07:00
internal rpc: implement rescanblockchain 2022-10-31 19:53:16 -07:00
netparams config: remove SigNet and SimNet related code 2022-09-28 23:42:21 -07:00
rpc/legacyrpc rpc: implement rescanblockchain 2022-10-31 19:53:16 -07:00
snacl [lbry] fork from btcsuite to lbryio 2022-05-24 10:31:06 -07:00
tools ci: add tools package to lock Go tooling versions 2022-08-04 21:40:37 -07:00
waddrmgr config: remove SigNet and SimNet related code 2022-09-28 23:42:21 -07:00
wallet wallet: break recovery() to recovery() and rescanblockchain() 2022-10-31 19:53:16 -07:00
walletdb consolidate: remove obsoleted files 2022-09-28 22:27:03 -07:00
wtxmgr ci: run "make fmt" 2022-08-08 01:26:02 -07:00
.gitignore [lbry] fork from btcsuite to lbryio 2022-05-24 10:31:06 -07:00
.golangci.yml ci: update github Worflow, and Go 1.19 2022-08-04 21:40:57 -07:00
.goreleaser.yml [lbry] ci: support GoReleaser 2022-05-24 11:00:43 -07:00
config.go wallet: update passphrase user experience. 2022-10-31 19:53:16 -07:00
Dockerfile ci: update github Worflow, and Go 1.19 2022-08-08 01:26:02 -07:00
Dockerfile.goreleaser [lbry] ci: support GoReleaser 2022-05-24 11:00:43 -07:00
go.mod go mod: update lbcd to v0.22.118 2022-10-31 19:53:16 -07:00
go.sum go mod: update lbcd to v0.22.118 2022-10-31 19:53:16 -07:00
lbcwallet.go wallet: update passphrase user experience. 2022-10-31 19:53:16 -07:00
LICENSE Improve wallet atomicity. 2018-05-23 19:38:56 -07:00
log.go consolidate: remove gRPC APIs 2022-09-19 16:04:51 -07:00
Makefile ci: update github Worflow, and Go 1.19 2022-08-04 21:40:57 -07:00
params.go [lbry] fork from btcsuite to lbryio 2022-05-24 10:31:06 -07:00
README.md doc: update README.md 2022-10-31 21:21:45 -07:00
rpcserver.go config: unify lbcd and lbcwallet RPC credentails 2022-09-28 23:29:20 -07:00
sample-lbcwallet.conf config: remove SigNet and SimNet related code 2022-09-28 23:42:21 -07:00
signal.go btcwallet: handle signal SIGTERM 2016-05-05 16:50:03 -04:00
signalsigterm.go build: pin mid Go version to 1.16, run new go mod tidy 2022-05-24 03:09:33 -07:00
walletsetup.go wallet: update passphrase user experience. 2022-10-31 19:53:16 -07:00

lbcwallet

lbcwallet implements HD Wallet functionality which conforms to BIP0032, BIP0043, and BIP0044.

Security

We take security seriously. Please contact security regarding any security issues. Our PGP key is here if you need it.

Build from Source Code

Requires Go 1.19 or newer. Install Go according to its installation instructions.

git clone https://github.com/lbryio/lbcwallet
cd lbcwallet
go build .

lbcd & lbcwallet

lbcwallet is not an SPV client and requires connecting to a lbcd node for asynchronous blockchain queries and notifications over websockets.

lbcwallet can serve wallet related RPCs and proxy lbcd RPCs to the assocated lbcd. It's sufficient for a user to connect just the lbcwallet instead of both.

sequenceDiagram
    actor C as lbcctl
    participant W as lbcwallet (port: 9244)
    participant D as lbcd (port: 9245)

    rect rgb(200,200,200)
    Note over C,W: lbcctl --wallet balance
    C ->>+ W: getbalance
    W -->>- C: response
    end

    rect rgb(200,200,200)
    Note over C,D: lbcctl --wallet getblockcount (lbcd RPC service proxied by lbcwallet)
    C ->>+ W: getblockcount
    W ->>+ D: getblockcount
    D -->>- W: response
    W -->>- C: response
    end

Getting Started

Create a new wallet with a randomly generated seed or an existing one.

lbcwallet --create

Do you have an existing wallet seed you want to use? (n/no/y/yes) [no]: no
Your wallet generation seed is: 3d005498ad5e9b7439b857249e328ec34e21845b7d1a7d2a5641d4050c02d0da

The created wallet protects the seed with a default passphrase ("passphrase"), which can be override with -p option:

lbcwallet --create -p my-passphrase

Start wallet server, and connect it to a lbcd instance.

lbcwallet --rpcuser=rpcuser --rpcpass=rpcpass # --rpcconnect=localhost:9245

At startup, the wallet will try to unlock itself with the default passphrase (passphrase) or an user provided one (using -p option).

If the passphrase does not match, the wallet remains locked. User can lock/unlock the wallet using walletlock and walletpassphrase RPCs.

lbcwallet --rpcuser=rpcuser --rpcpass=rpcpass -p my_passphrase

Contributing

Contributions to this project are welcome, encouraged, and compensated. The integrated github issue tracker is used for this project. All pull requests will be considered.

License

lbcwallet is licensed under the liberal ISC License.