6.2 KiB
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, no installation required. To configure lbrycrd
you need to create a file at ~/.lbrycrd/lbrycrd.conf
,
containing the following:
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, and run the following not inside the environment:
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 !
.
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:
sudo chown -R lbryum /var/lbryum-server
When installed, append/use the following config options to the /etc/lbryum.conf
file:
[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. To install it, run the following inside the virtual environment:
cd lbryum
pip2 install -r requirements.txt
pip2 install -e .
After installation completes, you must set the config option for lbryum using:
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:
{
"chain": "lbrycrd_regtest",
"default_servers": {
"localhost": {
"t": "50001"
}
}
}
lbry
Download source from here, and run the following inside the environment:
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:
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:
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:
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:
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
lbrycrdd
sudo runuser -l lbryum -c 'lbryum-server --conf=/etc/lbryum.conf'
lbryum daemon start
lbrynet-daemon
Generate blocks
lbrycrd-cli generate 5
Get a wallet address
lbryum getunsusedaddress
Send credits from lbrycrd to your wallet
lbrycrd-cli sendtoaddress <address> <num_of_credits>