Backend server for SDL
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
jahway603 ce0572ecf9 Merge pull request 'merge jahway branch into master branch' (#2) from jahway into master 3 years ago
cmd/server new lightwalletd deb build script 3 years ago
common changed DenioD's github lightwalletd links to git.hush.is lightwalletd links 3 years ago
contrib/debian fixed deb pkg script for ARM 3 years ago
doc/man manually created manpage 3 years ago
frontend working towards lightwalletd deb package 3 years ago
parser changed DenioD's github lightwalletd links to git.hush.is lightwalletd links 3 years ago
testdata Test against the first 20 mainnet blocks 5 years ago
util fixed deb pkg script for ARM 3 years ago
vendor Remove zmq from scaffolding stuff in go 5 years ago
walletrpc add coinsupply rpc to lightwalletd 4 years ago
.gitignore updated README 3 years ago
AUTHORS added AUTHORS file 3 years ago
LICENSE added correct LICENSE file 3 years ago
Makefile arm build scripts 3 years ago
README.md added Makefile 3 years ago
go.mod changed DenioD's github lightwalletd links to git.hush.is lightwalletd links 3 years ago
go.sum port to hush 5 years ago
start.sh added CLI options to README 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 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 or Debian, 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
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. Compile lightwalletd

Run the build script.

make build

3. 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 (Option A) or without NGINX (Option B).

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 for us instead):

./lightwalletd -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:

./lightwalletd -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

4. 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 with your own below)

git clone https://git.hush.is/hush/silentdragonlite-cli
cd silentdragonlite-cli
cargo build --release
./target/release/silentdragonlite-cli --server https://lite.example.org

Lightwalletd Command-line Options

These are the current different command line options for lightwalletd:

CLI option Default What it does
-bind-addr 127.0.0.1:9067 address and port to listen on
-tls-cert blank the path to a TLS certificate
-tls-key blank the path to a TLS key file
-no-tls false Disable TLS, serve un-encrypted traffic
-log-file blank log file to write to
-log-level logrus.InfoLevel log level 1 thru 7 (something from logrus)
-conf-file blank conf file to pull RPC creds from
-cache-size 40000 number of blocks to hold in the cache

Support

For support or other questions, join us on Telegram, or tweet at @MyHushTeam, or toot at our Mastodon or join Telegram Support.

License

GPLv3 or later