204 lines
6.2 KiB
Markdown
204 lines
6.2 KiB
Markdown
# Regtest Setup
|
||
|
||
## Why use a regtest server
|
||
A regtest server provides for a way to instantly generate blocks so that transactions can be instantaneous, which ultimately means no waiting for confirmations from the blockchain. Also, it’s not a problem if you accidentally corrupt your wallet, since no real funds are lost! Delete the files and setup a new one.
|
||
|
||
## Setup
|
||
|
||
To begin setting up the network, there are a few things you need.
|
||
|
||
You'll need a Linux or a Mac distribution to run all this. A virtual machine is fine.
|
||
Note: These instructions specifically were tested on Ubuntu version 16.04.
|
||
|
||
### Virtual Environment
|
||
|
||
First up it's a good idea to create a Python virtual environment. This requires you to have a functional python2.7 setup, with the Python package manager `pip` installed. To create a new virtual environment in a folder `lbry-env`, run this:
|
||
`virtualenv -p /usr/bin/python2.7 lbry-env`
|
||
To enter the environment, run:
|
||
`source lbry-env/bin/activate`.
|
||
|
||
### lbrycrd
|
||
|
||
You need to download a build of `lbrycrd` from [here](https://github.com/lbryio/lbrycrd/releases/), no installation required. To configure `lbrycrd` you need to create a file at `~/.lbrycrd/lbrycrd.conf`,
|
||
containing the following:
|
||
```ini
|
||
rpcuser=test
|
||
rpcpassword=test
|
||
rpcport=18332
|
||
regtest=1
|
||
server=1
|
||
txindex=1
|
||
daemon=1
|
||
listen=0
|
||
discover=0
|
||
```
|
||
|
||
### lbryum-server
|
||
|
||
To install lbryum-server, you first need to install the package `leveldb`. After that, download the source from [here](https://github.com/lbryio/lbryum-server/releases), and run the following _not_ inside the environment:
|
||
```bash
|
||
cd lbryum-server
|
||
sudo pip2 install -r requirements.txt
|
||
```
|
||
|
||
If you're not running debian/\*buntu or a derivative of those, you need to edit the `configure` file a bit. In line 11, remove the `apt-get` line and manually install the required packages. In line 51, change `adduser` to `useradd` and on the same line, change `--disabled-password` to `-p !`.
|
||
|
||
```bash
|
||
sudo ./configure
|
||
sudo python2 setup.py install
|
||
```
|
||
The `sudo ./configure` command creates a new user in the system by the name "lbryum", which is the user through which we'll be running the server. lbryum-server also needs W/R access to `/var/lbryum-server`.
|
||
To do that run:
|
||
```bash
|
||
sudo chown -R lbryum /var/lbryum-server
|
||
```
|
||
When installed, append/use the following config options to the `/etc/lbryum.conf` file:
|
||
```ini
|
||
[lbrycrdd]
|
||
lbrycrdd_host = localhost
|
||
lbrycrdd_port = 18332
|
||
# user and password from lbrycrd.conf
|
||
lbrycrdd_user = test
|
||
lbrycrdd_password = test
|
||
|
||
[network]
|
||
type=lbrycrd_regtest
|
||
```
|
||
|
||
### lbryum
|
||
|
||
To install lbryum, first download the source from [here](https://github.com/lbryio/lbryum/releases). To install it, run the following inside the virtual environment:
|
||
```bash
|
||
cd lbryum
|
||
pip2 install -r requirements.txt
|
||
pip2 install -e .
|
||
```
|
||
|
||
After installation completes, you must set the config option for lbryum using:
|
||
```bash
|
||
lbryum setconfig default_servers '{ "localhost": { "t": "50001" }}'
|
||
lbryum setconfig chain 'lbrycrd_regtest'
|
||
```
|
||
|
||
Alternatively, you can create a file `touch ~/.lbryum/config` and paste the following config:
|
||
```json
|
||
{
|
||
"chain": "lbrycrd_regtest",
|
||
"default_servers": {
|
||
"localhost": {
|
||
"t": "50001"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
### lbry
|
||
|
||
Download source from [here](https://github.com/lbryio/lbry/releases), and run the following inside the environment:
|
||
```bash
|
||
cd lbry
|
||
pip2 install -r requirements.txt
|
||
pip2 install -e .
|
||
mkdir ~/.lbrynet
|
||
touch ~/.lbrynet/daemon_settings.yml
|
||
```
|
||
|
||
Append the following in the newly created `~/.lbrynet/daemon_settings.yml` file:
|
||
```yml
|
||
blockchain_name: lbrycrd_regtest
|
||
lbryum_servers:
|
||
- localhost:50001
|
||
reflect_uploads: false
|
||
share_usage_data: false
|
||
use_upnp: false
|
||
```
|
||
|
||
### Last step
|
||
Go to the `lbryum` folder once again and run:
|
||
```bash
|
||
pip2 install -e .
|
||
```
|
||
This is to ensure that `lbrynet-daemon` uses the correct wallet.
|
||
|
||
## Firing up the regtest server
|
||
|
||
### Wallet backup
|
||
|
||
To start off, if you've already used LBRY on your machine, you need to backup the wallet by copying the folders `~/.lbrynet` and `~/.lbryum` and then deleting them to start from fresh. Run
|
||
`mkdir ~/.lbryum`
|
||
|
||
Now it should be all set-up. Just execute the commands in the following order, and the regtest server should be good to go.
|
||
|
||
### 1) lbrycrd
|
||
|
||
To run the `lbrycrd` daemon, run the following in the `lbrycrd` folder:
|
||
`./lbrycrdd`
|
||
|
||
To generate blocks, run `./lbrycrd-cli generate <num_of_blocks>`
|
||
You'll need to generate some blocks to get the network going. Start off by generating at least 100.
|
||
`./lbrycrd-cli generate 173`
|
||
|
||
If you'd prefer a more verbose output from lbrycrdd, run lbrycrd using:
|
||
`./lbrycrdd -printtoconsole`
|
||
|
||
### 2) lbryum-server
|
||
|
||
To run the server, run:
|
||
```bash
|
||
sudo runuser -l lbryum -c 'lbryum-server --conf=/etc/lbryum.conf'
|
||
```
|
||
Note: conf flag can be left out if the config is in the default directory(default: `/etc/lbryum.conf`)
|
||
|
||
### 3) lbryum
|
||
|
||
To run the lbryum, run:
|
||
```bash
|
||
lbryum daemon start
|
||
```
|
||
|
||
Generate some more blocks, get a wallet address by running:
|
||
`lbryum getunusedaddress`
|
||
and then send some credits to your wallet by doing
|
||
`./lbrycrd-cli sendtoaddress <address> <num_of_credits>`
|
||
|
||
### 4) lbry
|
||
|
||
You can now run `lbrynet-daemon`, and it should connect to the `lbryum`. Now you can use the regtest stack as you would normally use lbryum.
|
||
|
||
## Shutdown
|
||
|
||
To stop the network, run `lbrynet-cli daemon_stop`, `lbryum daemon stop`, and kill the `lbryum-server` process and stop lbrycrd by `lbrycrdd-cli stop`. If you want to use your wallet and the official servers again, backup the new regtest wallet, and replace it with your own.
|
||
|
||
## Note 1
|
||
You need to generate a few blocks every time you make a new transaction in the form of send, receive, claim, update, publish, support, tip, etc. for it to show up in the daemon and lbryum, etc.
|
||
|
||
## Note 2
|
||
If something goes wrong and you get a "Block not found" error, remember to delete `/var/lbryum-server` before trying again.
|
||
|
||
## Cheatsheet
|
||
|
||
#### Required processes in the correct order
|
||
```bash
|
||
lbrycrdd
|
||
|
||
sudo runuser -l lbryum -c 'lbryum-server --conf=/etc/lbryum.conf'
|
||
|
||
lbryum daemon start
|
||
|
||
lbrynet-daemon
|
||
```
|
||
|
||
#### Generate blocks
|
||
```bash
|
||
lbrycrd-cli generate 5
|
||
```
|
||
|
||
#### Get a wallet address
|
||
```bash
|
||
lbryum getunsusedaddress
|
||
```
|
||
|
||
#### Send credits from lbrycrd to your wallet
|
||
```bash
|
||
lbrycrd-cli sendtoaddress <address> <num_of_credits>
|
||
```
|