Duke Leto
ce670a1085
|
3 years ago | |
---|---|---|
cmd/server | 4 years ago | |
common | 4 years ago | |
frontend | 4 years ago | |
parser | 4 years ago | |
testdata | 5 years ago | |
vendor | 5 years ago | |
walletrpc | 5 years ago | |
.gitignore | 5 years ago | |
README.md | 3 years ago | |
go.mod | 4 years ago | |
go.sum | 5 years ago | |
start.sh | 3 years ago |
README.md
Overview
Hush Lightwalletd is a fork of lightwalletd original from Zcash (ZEC).
It is a backend service that provides a bandwidth-efficient interface to the Hush blockchain for the SilentDragonLite cli and SilentDragonLite
Changes from upstream lightwalletd
This version of lightwalletd extends lightwalletd and:
- Adds support for HUSH
- Adds support for transparent addresses
- Adds several new RPC calls for lightclients
- Lots of perf improvements
- Replaces SQLite with in-memory cache for Compact Blocks
- Replace local Txstore, delegating Tx lookups to hushd
- Remove the need for a separate ingestor
Running your own SDL lightwalletd
0. First, install Go
You will need Go >= 1.13 which you can download from the official download page or install via your OS package manager.
This installation document shows how to do it on various OS's.
If you're using Ubuntu, try:
$ sudo apt install golang
1. Run a Hush node.
Either compile or build the Hush Daemon (hushd).
Next, change your HUSH3.conf file to something like the following:
rpcuser=user-CHANGETHIS
rpcpassword=pass-CHANGETHIS
rpcport=18031
server=1
daemon=0
txindex=1
rpcworkqueue=256
rpcallowip=127.0.0.1
rpcbind=127.0.0.1
Then start hushd
in your command window. You might need to run with -reindex
the first time if you are enabling the txindex
or insightexplorer
options for the first time. The reindex might take a while.
2. Get a TLS certificate and run the Lightwalletd frontend
First, get a TLS certificate:
On Ubuntu Linux, I SUGGEST YOU DO NOT USE SNAPD and just sudo apt install certbot
and then start on Step 7 of these instructions by the EFF
Next you decide how you want to setup lightwalletd - with or without NGINX.
Option A: "Let's Encrypt" certificate using NGINX as a reverse proxy
If you running a public-facing server, the easiest way to obtain a certificate is to use a NGINX reverse proxy and get a Let's Encrypt certificate.
Create a new section for the NGINX reverse proxy:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name your_host.net;
ssl_certificate /etc/letsencrypt/live/your_host.net/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/your_host.net/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
location / {
# Replace localhost:9067 with the address and port of your gRPC server if using a custom port
grpc_pass grpc://your_host.net:9067;
}
}
Then run the lightwalletd frontend with the following (Note: we use the "-no-tls" option as we are using NGINX as a reverse proxy and letting it handle the TLS authentication):
$ go run cmd/server/main.go -bind-addr your_host.net:9067 -conf-file ~/.komodo/HUSH3/HUSH3.conf -no-tls
Option B: "Let's Encrypt" certificate just using lightwalletd without NGINX
The other option is to configure lightwalletd to handle its own TLS authentication. Once you have a certificate that you want to use (from a certificate authority), pass the certificate to the frontend as follows:
$ sudo go run cmd/server/main.go -bind-addr 127.0.0.1:9067 -conf-file ~/.komodo/HUSH3/HUSH3.conf -tls-cert /etc/letsencrypt/live/YOURWEBSITE/fullchain.pem -tls-key /etc/letsencrypt/live/YOURWEBSITE/privkey.pem
3. Point the silentdragonlite-cli
to this server
You should start seeing the frontend ingest and cache the Hush blocks after ~15 seconds.
Now, connect to your server! (Substitute below)
$ git clone https://git.hush.is/hush/silentdragonlite-cli
$ cd silentdragonlite-cli
$ cargo build --release
$ ./target/release/silentdragonlite-cli --server https://lite.myhush.org