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.

132 lines
5.3 KiB

# Overview
4 years ago
Hush Lightwalletd is a fork of [lightwalletd](https://github.com/adityapk00/lightwalletd) original from Zcash (ZEC).
3 years ago
It is a backend service that provides a bandwidth-efficient interface to the Hush blockchain for [SilentDragonLite cli](https://git.hush.is/hush/silentdragonlite-light-cli) and [SilentDragonLite](https://git.hush.is/hush/SilentDragonLite).
5 years ago
## Changes from upstream lightwalletd
5 years ago
This version of lightwalletd extends lightwalletd and:
* Adds support for HUSH
5 years ago
* Adds support for transparent addresses
* Adds several new RPC calls for lightclients
5 years ago
* Lots of perf improvements
* Replaces SQLite with in-memory cache for Compact Blocks
4 years ago
* Replace local Txstore, delegating Tx lookups to hushd
5 years ago
* Remove the need for a separate ingestor
5 years ago
## Running your own SDL lightwalletd
4 years ago
#### 0. First, install Go
You will need Go >= 1.13 which you can download from the official [download page](https://golang.org/dl/) or install via your OS package manager.
4 years ago
This [installation](https://golang.org/doc/install) document shows how to do it on various OS's.
3 years ago
If you're using Ubuntu or Debian, try:
```
$ sudo apt install golang
```
4 years ago
#### 1. Run a Hush node.
Either compile or build the [Hush Daemon (hushd)](https://git.hush.is/hush/hush3).
Next, change your HUSH3.conf file to something like the following:
```
rpcuser=user-CHANGETHIS
rpcpassword=pass-CHANGETHIS
rpcport=18031
5 years ago
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.
4 years ago
3 years ago
#### 2. Compile lightwalletd
Run the build script.
```
make
3 years ago
```
#### 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](https://certbot.eff.org/instructions)
3 years ago
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.
4 years ago
Create a new section for the NGINX reverse proxy:
```
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
4 years ago
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
4 years ago
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;
4 years ago
}
}
```
3 years ago
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 ~/.hush/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:
4 years ago
```
./lightwalletd -bind-addr 127.0.0.1:9067 -conf-file ~/.hush/HUSH3/HUSH3.conf -tls-cert /etc/letsencrypt/live/YOURWEBSITE/fullchain.pem -tls-key /etc/letsencrypt/live/YOURWEBSITE/privkey.pem
```
3 years ago
#### 4. Point the `silentdragonlite-cli` to this server
4 years ago
You should start seeing the frontend ingest and cache the Hush blocks after ~15 seconds.
4 years ago
3 years ago
Now, connect to your server! (Substitute with your own below)
5 years ago
```
3 years ago
git clone https://git.hush.is/hush/silentdragonlite-cli
cd silentdragonlite-cli
cargo build --release
./target/release/silentdragonlite-cli --server https://lite.example.org
```
3 years ago
* If you have trouble compiling silentdragonlite-cli, then [please refer to it's separate documentation here](https://git.hush.is/hush/silentdragonlite-cli) on how to build it and what pre-requisites need to be installed.
## Lightwalletd Command-line Options
These are the current different command line options for lightwalletd:
| CLI option | Default | What it does |
|------------|:--------------:|------------------------------:|
3 years ago
| -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 |
3 years ago
## Support
2 years ago
For support or other questions, join us on [Telegram](https://hush.is/telegram), or toot at our [Mastodon](https://fosstodon.org/@myhushteam) or join [Telegram Support](https://hush.is/telegram_support).
3 years ago
## License
GPLv3 or later