stratis masternode...the stratis masternode operates in a totally decentralized and trust-less...

38
Page | 1 © 2017 Stratis Group, Ltd. Proprietary and Confidential STRATIS MASTERNODE Windows Installation Guide

Upload: others

Post on 21-Jun-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 1 © 2017 Stratis Group, Ltd. Proprietary and Confidential

STRATIS MASTERNODE

Windows Installation Guide

Page 2: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 2 © 2017 Stratis Group, Ltd. Proprietary and Confidential

1. Table of Contents 1. Table of Contents ............................................................................................................................ 2

2. Introduction .................................................................................................................................... 4

3. Pre-Requisites ................................................................................................................................. 5

3.1. NET Core 2.0 SDK ................................................................................................................... 5

3.1.1. Download .NET Core SDK and its dependencies ............................................................... 5

3.1.2. Install .NET Core SDK ......................................................................................................... 5

3.2. Tor Expert Bundle .................................................................................................................. 7

3.2.1. Download Tor .................................................................................................................... 7

3.2.2. Install Tor ........................................................................................................................... 7

3.3. Git .......................................................................................................................................... 8

3.3.1. Download Git..................................................................................................................... 8

3.3.2. Install Git ........................................................................................................................... 9

3.4. Bitcoin Core ......................................................................................................................... 15

3.4.1. Download Bitcoin Core Wallet ........................................................................................ 15

3.4.2. Install Bitcoin Core Wallet ............................................................................................... 15

3.4.3. Configure Bitcoin Core Wallet ......................................................................................... 19

3.4.4. Bitcoin Core Configuration Summary .............................................................................. 20

3.4.5. Launch Bitcoin Core Wallet ............................................................................................. 20

3.5. Stratis QT Wallet .................................................................................................................. 22

3.5.1. Download Stratis QT Wallet ............................................................................................ 22

3.5.2. Install Stratis QT Wallet ................................................................................................... 22

3.5.3. Configure Stratis QT Wallet ............................................................................................. 23

3.5.4. Stratis QT Configuration Summary.................................................................................. 25

3.5.5. Launch Stratis QT Wallet ................................................................................................. 25

4. Install and Configure Masternode ................................................................................................ 30

4.1. Clone BreezeProject ............................................................................................................ 30

4.2. Configure Breeze Server ...................................................................................................... 30

4.3. Breeze.conf Summary .......................................................................................................... 31

4.4. Configure NTumbleBit Server .............................................................................................. 32

4.5. Server.config Summary ....................................................................................................... 34

5. Running the Stratis Masternode ................................................................................................... 35

5.1. Preparing for Masternode registration ............................................................................... 36

5.2. Preparing MasterNode start-up script ................................................................................ 35

5.3. Running the Stratis MasterNode for the first time (Registration Phase) .... Error! Bookmark

not defined.

Page 3: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 3 © 2017 Stratis Group, Ltd. Proprietary and Confidential

5.4. Activating the Stratis Masternode ....................................................................................... 37

5.5. Confirm “tumbler.ecdsakeyaddress” Address .................................................................... 38

5.6. Make Collateral Transaction ................................................... Error! Bookmark not defined.

5.7. Confirm Discoverability ....................................................................................................... 38

Page 4: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 4 © 2017 Stratis Group, Ltd. Proprietary and Confidential

2. Introduction

This document details the steps required to configure and run a Stratis Masternode. All installation

steps have been carried out on a vanilla Window Server 2012 Virtual Machine. It is recommended

that you follow this guide on a vanilla platform. If you choose to utilize a cloud service provider,

please ensure that you are not breaching any terms of service by operating a Stratis Masternode or

any of its dependency components (e.g. Tor)

To progress through this document there is a requirement for you to have 250,000 STRAT available

for collateral. The high STRAT requirement is not something that is dictated by Stratis Group Ltd, it is

dictated by the technology.

It should be noted that in the current implementation of the Masternode the collateral shouldn’t be

used for staking. This is because the funds would be moved away from the collateral address as part

of staking and the Breeze clients would consider the Masternode registration invalid due to

insufficient collateral funds.

The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no

one (not even Masternode) can steal the funds trusted to the protocol.

The BTC in reserves will need to be in a Bitcoin Core wallet used by the Masternode, as it is required

to create escrow transactions to the client’s destination wallets. It is recommended that the BTC

balance be a multiply of the expected volume of clients multiplied by 5. This calculation assumes

that each client will have funds for at least 5 tumbling cycles.

Rewards to the operators will be distributed in the form of a tumbler fee paid by Breeze Privacy

Protocol client users directly to the operator that processes their Privacy Protocol transaction.

Depending on the operator’s jurisdiction there may be legal and tax related specific requirements

and/or restrictions. It is highly recommended all operators seek legal and financial advice before

operating a Stratis Masternode.

This is a decentralized network that is not managed, controlled or administered by Stratis.

Page 5: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 5 © 2017 Stratis Group, Ltd. Proprietary and Confidential

3. Pre-Requisites There are a few applications that need to be installed prior to embarking on configuring the Stratis

Masternode.

The following section will provide details on where to obtain the installers and how to install the

products.

3.1. NET Core 2.0 SDK .NET Core is the platform that the Stratis Masternode has been developed upon. Therefore, you will

need to install the .NET Core 2.0.0 SDK or newer.

3.1.1. Download .NET Core SDK and its dependencies Links to the installers can be found below. Click the link below to download .NET Core 2.0.0 SDK and

Visual C++ Redistributable for Visual Studio 2015.

.NET Core 2.0.0 SDK

• https://github.com/dotnet/core/blob/master/release-notes/download-archives/2.0.0-

download.md

Visual C++ Redistributable for Visual Studio 2015

• https://www.microsoft.com/en-in/download/details.aspx?id=48145

3.1.2. Install .NET Core SDK After launching the installer, you will be presented with the following window.

Page 6: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 6 © 2017 Stratis Group, Ltd. Proprietary and Confidential

Click “Install” to progress with the installation.

Page 7: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 7 © 2017 Stratis Group, Ltd. Proprietary and Confidential

Click the “Close” button to continue.

Follow the same procedure to install Visual C++ Redistributable for Visual Studio 2015.

3.2. Tor Expert Bundle Tor is an acronym for “The Onion Router” and is a free software that enables anonymous

communication on the internet.

3.2.1. Download Tor Navigate to the below URL to download the Tor Expert Bundle ZIP archive.

https://www.torproject.org/download/download.html.en

3.2.2. Install Tor Once downloaded, open the ZIP archive and view the contents, as per the below screenshot.

Page 8: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 8 © 2017 Stratis Group, Ltd. Proprietary and Confidential

Extract the contents of the ZIP archive to a location on the local disk of the desktop or server you are

using. For this document the contents have been extracted to a folder on the desktop named “Tor”

This location is referenced later in this document, therefore, it is recommended you follow the same steps and store the Tor Expert Bundle on your desktop within the Tor folder.

3.3. Git Git is required to clone the Stratis BreezeProject repository from GitHub. The repository contains

source code of the Masternode.

3.3.1. Download Git Navigate to the URL below to download the Git Installer. This should be the top most file with .exe

extension.

https://github.com/git-for-windows/git/releases

Page 9: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 9 © 2017 Stratis Group, Ltd. Proprietary and Confidential

3.3.2. Install Git Once downloaded, run the Setup.

There might be a Security Warning pop-up. Press Run to start the installer.

Click the “Next” button to continue.

Page 10: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 10 © 2017 Stratis Group, Ltd. Proprietary and Confidential

Click the “Next” button to continue.

Click the “Next” button to continue.

Page 11: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 11 © 2017 Stratis Group, Ltd. Proprietary and Confidential

Click the “Next” button to continue.

Click the “Next” button to continue.

Page 12: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 12 © 2017 Stratis Group, Ltd. Proprietary and Confidential

Click the “Next” button to continue.

Click the “Next” button to continue.

Page 13: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 13 © 2017 Stratis Group, Ltd. Proprietary and Confidential

Click the “Next” button to continue.

Click the “Next” button to continue.

Page 14: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 14 © 2017 Stratis Group, Ltd. Proprietary and Confidential

Click the “Next” button to continue.

The installation is now in progress, wait for the progress bar to complete.

Page 15: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 15 © 2017 Stratis Group, Ltd. Proprietary and Confidential

The installation process is now complete, click the “Finish” button to complete the installation.

3.4. Bitcoin Core Wallet The Bitcoin Core wallet is required as it will be leveraged by the Stratis Masternode. When executing

the privacy protocol, the transactions will be processed via the Bitcoin Core Wallet.

3.4.1. Download Bitcoin Core Wallet Navigate to the URL below to download the Bitcoin Core Wallet.

https://bitcoin.org/en/download

3.4.2. Install Bitcoin Core Wallet Once downloaded, run the setup.

Page 16: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 16 © 2017 Stratis Group, Ltd. Proprietary and Confidential

Click the “Next” button to continue.

Click the “Next” button to continue.

Page 17: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 17 © 2017 Stratis Group, Ltd. Proprietary and Confidential

Click the “Install” button to continue.

Page 18: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 18 © 2017 Stratis Group, Ltd. Proprietary and Confidential

The above dialog confirms that the installation has been successful.

Ensure that the checkbox “Run Bitcoin Core” is not selected for and click the “Finish” button.

Page 19: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 19 © 2017 Stratis Group, Ltd. Proprietary and Confidential

3.4.3. Configure Bitcoin Core Wallet Changes are required in the Bitcoin Core configuration to enable RPC communication between

Bitcoin Core and Stratis Masternode. Masternode requires access to Bitcoin Core via RPC protocol to

create and verify transactions on the bitcoin blockchain.

Run the below PowerShell script-block to create a new bitcoin.conf configuration file and open it

within Notepad.

The Bitcoin.conf file will now be open within a new instance of Notepad. There are a few lines that

are required to be added, these are detailed below.

Configuration option Explanation

Server

This setting instructs the Bitcoin Core client to accept JSON-RPC commands sent by the Stratis Masternode. For additional security the port on which the RPC service is running (default port on Bitcoin Main network is 8332) should be firewalled to prevent external access. You need to set the value of this parameter to 1. Example: server=1

Prune

The Prune parameter defines how many blocks should be retained, this reduces storage requirements. It is recommended that this value is set to 2000. Example: prune=2000

Rpcuser

This determines the username securing the RPC connection to the Bitcoin Core. Example: rpcuser=bitcoinuser

Please take note of the value entered here, you should use the same username in the server.config configuration explained later in this document.

Rpcpassword

The value should be a unique password for the user account provided in the rpcuser parameter above Please choose a secure password for this configuration option.

# Forcefully Create "bitcoin.conf"

New-Item -Path $env:APPDATA\Bitcoin\bitcoin.conf -ItemType File -Force

# Open "bitcoin.conf" in notepad

Start-Process notepad -ArgumentList "$env:APPDATA\Bitcoin\bitcoin.conf"

PowerShell Script Code

Page 20: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 20 © 2017 Stratis Group, Ltd. Proprietary and Confidential

Example: rpcpassword=password

Please take note of the value entered here, you should use the same password in the server.config configuration explained later in this document.

3.4.4. Bitcoin Core Wallet Configuration Summary After completing the previous steps, you should now have a bitcoin.conf configuration with the following detail. Lines starting with # are comments which could be optionally added to the configuration to remind Masternode operator of each option meaning.

Your configuration should not match the above, your rpcuser and rpcpassword should be unique to

you. Once you have confirmed the content, please save the file and close it.

3.4.5. Launch Bitcoin Core Wallet Upon first running the Bitcoin Core Wallet, you are prompted as to where you would like to store the

blockchain. Ensure “Use the default data directory” is selected and click the “Ok” button to continue.

# server=1 tells Bitcoin-Qt and bitcoind to accept JSON-RPC commands

server=1

# Enable pruning to reduce storage requirements by deleting old blocks.

# This mode is incompatible with -txindex and -rescan.

# 0 = default (no pruning).

# 1 = allows manual pruning via RPC.

# >=550 = target to stay under in MiB.

prune=2000

# rpcuser and rpcpassword to secure the JSON-RPC api

rpcuser=bitcoinuser

rpcpassword=password

bitcoin.conf

Page 21: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 21 © 2017 Stratis Group, Ltd. Proprietary and Confidential

Do not be concerned by the warning of free space, later in the guide you will configure pruning that

will reduce the storage requirement.

The data directory is referenced later in this document. It is recommended that you leave the value as default.

Page 22: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 22 © 2017 Stratis Group, Ltd. Proprietary and Confidential

The Bitcoin Core Wallet is now running and synchronizing with the blockchain.

You can continue through this document without the Bitcoin Core Wallet being fully synchronized,

however, the Stratis Masternode will not be fully functional until synchronization has completed.

This can take some time.

3.5. Stratis QT Wallet The Stratis QT Wallet is a forked instance of the Bitcoin Core Wallet, it serves as an interim staking

wallet until the Stratis Full Node is ready for mainnet.

3.5.1. Download Stratis QT Wallet Navigate to the below URL to download the Stratis QT Wallet.

https://github.com/stratisproject/stratisX/releases

3.5.2. Install Stratis QT Wallet Once downloaded, open the ZIP archive and view the contents as per the below screenshot.

Page 23: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 23 © 2017 Stratis Group, Ltd. Proprietary and Confidential

Extract the “stratis-qt” executable from the ZIP archive to a location on the local disk of the desktop

or server you are using. For this document the contents have been extracted directly to the desktop.

This location is referenced later in this document, therefore, it is recommended you follow the same steps and store the Stratis-QT executbale on the desktop.

3.5.3. Configure Stratis QT Wallet Changes are required in the Stratis QT Wallet configuration to enable RPC communication between

Stratis QT Wallet and Masternode. This is used by the Masternode to perform Masternode

registration during the first run or after any configuration change.

In addition the Masternode is performing a collateral balance check upon each startup.

Page 24: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 24 © 2017 Stratis Group, Ltd. Proprietary and Confidential

Run the below PowerShell script-block to create a new stratis.conf configuration file and open it

within Notepad.

The stratis.conf file will now be open within a new instance of Notepad. There are a few lines that

are required to be added, these are detailed below.

Configuration option Explanation

Server

This setting instructs the Stratis QT client to accept JSON-RPC commands sent by the Masternode. For additional security the port on which the RPC service is running (default port on StratisMain network is 16174) should be firewalled to prevent external access. You need to set the value of this parameter to 1. Example: server=1

Rpcuser

This determines the username securing the RPC connection to the Stratis QT Wallet. Example: rpcuser=stratisuser

Please take note of the value entered here, you should use the same username in the breez.conf configuration explained later in this document.

Rpcpassword

The value should be a unique password for the user account provided in the rpcuser parameter above. Please choose a secure password for this configuration option. Example: rpcpassword=password

Please take note of the value entered here, you should use the same username in the breez.conf configuration explained later in this document.

# Forcefully Create "stratis.conf"

New-Item -Path $env:APPDATA\Stratis\stratis.conf -ItemType File -Force

# Open "stratis.conf" in notepad

Start-Process notepad -ArgumentList "$env:APPDATA\Stratis\stratis.conf"

PowerShell Script Code

Page 25: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 25 © 2017 Stratis Group, Ltd. Proprietary and Confidential

3.5.4. Stratis QT Wallet Configuration Summary After completing the previous steps, you should now have a stratis.conf configuration with the

following detail. Lines starting with # are comments which could be optionally added to the

configuration to remind Masternode operator of each option meaning.

Your configuration should not match the above, your rpcuser and rpcpassword should be unique to

you. Once you have confirmed the content, please save the file and close it.

3.5.5. Launch Stratis QT Wallet Double-Click on the stratis-qt executable.

You may receive a security warning, click the “Run” button to continue.

The wallet is now running; however, it needs to fully synchronize with the Stratis Blockchain, this can

take some time. Progress is visible at the bottom of the application.

# server=1 tells Stratis-Qt to accept JSON-RPC commands

server=1

# rpcuser and rpcpassword to secure the JSON-RPC api

rpcuser=stratisuser

rpcpassword=password

stratis.conf

Page 26: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 26 © 2017 Stratis Group, Ltd. Proprietary and Confidential

You can continue through this document without the Stratis QT Wallet being fully synchronized,

however, you will be unable to successfully launch the Stratis Masternode until synchronization is

complete.

Page 27: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 27 © 2017 Stratis Group, Ltd. Proprietary and Confidential

The synchronization completion will be evident by the red (out of sync) text being no longer visible.

3.5.6. Create Stratis registration fee address Masternode needs to register on the Stratis blockchain before it could be discovered by Breeze

clients. The registration fee address will be used to keep small funds (about 0.1 STRAT) required to

perform registration.

Page 28: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 28 © 2017 Stratis Group, Ltd. Proprietary and Confidential

Navigate to the “Receive” menu in Stratis QT Wallet. Enter label “Registration Fee”, highlight the

address and click the “Copy Address” button.

There is no need to send any funds to registration fee address at this stage.

We will refer later in this document to this address as “Registration Fee”

3.5.7. Create Stratis collateral address The new address will be used to hold 250,000 STRAT as collateral. Please ensure that this address is

used in breeze.conf file as explained in section 4.2.

Page 29: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 29 © 2017 Stratis Group, Ltd. Proprietary and Confidential

Navigate to the “Receive” menu in Stratis QT Wallet. Enter label “Collateral address”, highlight the

address and click the “Copy Address” button.

We will refer later in this document to this address as “Collateral address”

Page 30: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 30 © 2017 Stratis Group, Ltd. Proprietary and Confidential

4. Install and Configure Masternode You will now focus on obtaining the required code to run a Stratis Masternode, in addition, you will

cover all the required configuration changes that are necessary to have a fully functional Stratis

Masternode.

4.1. Clone BreezeProject Executing the below PowerShell script-block will download the code and submodules required to run

the Stratis Masternode.

4.2. Configure Breeze Server You now need to create a configuration file for the BreezeServer which will be used to set up

configuration values in relation to the Stratis blockchain.

Run the below PowerShell script-block to create a configuration file and open it within Notepad.

The breeze.conf file will now be open within a new instance of Notepad. There are a few lines that

are required to be added, these are detailed below.

# Set Destination Directory

$Path = "$env:USERPROFILE\Desktop\MasterNode"

# Query Destination Directory and Create if not present.

if (-Not (Get-Item -Path $Path)) {

New-Item -ItemType Directory -Path $Path

}

# Move to Destination Directory

Set-Location $Path

# Obtain Code

git clone "https://www.github.com/BreezeHub/BreezeProject.git/"

git checkout v1.0.0

# Move to BreezeProject Directory

Set-Location .\BreezeProject

# Restore Dependencies

dotnet restore

PowerShell Script Code

# Forcefully Create "breeze.conf"

New-Item -Path $env:APPDATA\BreezeServer\breeze.conf -ItemType File -Force

# Open "breeze.conf" in notepad

Start-Process notepad -ArgumentList

"$env:APPDATA\BreezeServer\StratisMain\breeze.conf"

PowerShell Script Code

Page 31: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 31 © 2017 Stratis Group, Ltd. Proprietary and Confidential

Configuration option Explanation

network

This parameter defines what network the Masternode will operate on. For the purpose of this guide, you will be running on mainnet. Example: network=main

rpc.url

This is the address of the RPC service hosted by the Stratis QT Wallet. Example: rpc.url=http://127.0.0.1:16174

rpc.user

This is the username used by the Masternode when connecting to Stratis QT over RPC protocol. Example: rpc.user=stratisuser

The username should match the value set in rpcuser value in stratis.conf configuration.

rpc.password

This is the password used by the Masternode when connecting to Stratis QT over RPC protocol. Example: rpc.password=password

The password should match the value set in rpcpassword value in stratis.conf configuration.

tumbler.ecdsakeyaddress

This is the address which has been set by the Masternode operator to hold 250,000 STRAT collateral. Also note that the 250,000 STRAT collateral does not need to be sent to the address yet, this is covered later in the guide. The address should be generated as explained in section 5.3. Each time this value is changed the Masternode should be restarted to re-read the configuration file. Example: tumbler.ecdsakeyaddress=SY2q6zvgKaL947YZX3k2j6tCqTVs6FggfL

The address SY2q6zvgKaL947YZX3k2j6tCqTVs6FggfL has been used only as an example. You should generate your own Stratis address.

4.3. Breeze.conf Summary After completing the previous steps, you will have a unique configuration file that resembles the below. Lines starting with # are comments which could be optionally added to the configuration to remind Masternode operator of each option meaning.

Page 32: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 32 © 2017 Stratis Group, Ltd. Proprietary and Confidential

Your configuration should not match the above, your rpc.user, rpc.password and

tumbler.ecdsakeyaddress should be unique to you. Once you have confirmed the content, please

save the file and close it.

4.4. Configure NTumbleBit Server You now need to create the NTumbleBitServer configuration which will be used to set up

configuration values in relation to the Bitcoin blockchain.

Execute the below PowerShell script-block to create and open the configuration file.

The server.config file will now be open within a new instance of Notepad. There are a few lines that

are required to be added, these are detailed below.

Configuration option Explanation

rpc.url

This is the address of the RPC service hosted by the Bitcoin Core Wallet. Example: rpc.url=http://localhost:8332/

rpc.user

This is the username used by the Masternode when connecting to Bitcoin Core over RPC protocol. Example: rpc.user=bitcoinuser

# Create "server.config" New-Item -Path $env:APPDATA\NTumbleBitServer\Main\server.config -ItemType File -Force

# Open "server.config" Start-Process notepad -ArgumentList "$env:APPDATA\NTumbleBitServer\Main\server.config"

PowerShell Script Code

# Name of the network to use

network=main

# Address, username and password to the RPC interface of the Stratis QT

rpc.url=http://127.0.0.1:16174

rpc.user=stratisuser

rpc.password=password

# Masternode collateral address on the Stratis blockchain

tumbler.ecdsakeyaddress=SY2q6zvgKaL947YZX3k2j6tCqTVs6FggfL

breeze.conf

Page 33: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 33 © 2017 Stratis Group, Ltd. Proprietary and Confidential

The username should match the value set in rpcuser value in bitcoin.conf configuration.

rpc.password

The value should be a unique password for the user account provided in the rpc.user parameter. Example: rpc.password=password

The username should match the value set in rpcpassword value in bitcoin.conf configuration.

tumbler.fee

This is a BTC value that determines the fee that will be imposed on users utilizing your Masternode instance, at present all Masternodes are required to use the same fee. That is 1.55% of the denomination value 0.1 BTC which is 0.00155. Example: tumbler.fee=0.0001

The Masternode instance will not be discovarable byt the Breeze clients in case the fee has been set to any other value.

cycle

To enhance the privacy provided by the protocol, it is necessary for all participants to use standard transaction amounts enforced by the Stratis Masternode. The cycle definitions have distinct names and lengths. Currently only the kotori cycle is usable on mainnet. Example: cycle=kotori

tor.enabled

This parameter enables Tor. Tor provides privacy to the user by routing their request through multiple intermediate nodes. This secure connectivity layer is used by the Stratis Masternode to allow clients to remain anonymous when connect to Masternode. This setting must be set to true. Example: tor.enabled=true

tor.server

Tor provides privacy to the user by routing their request through multiple intermediate nodes. This secure connectivity layer is used by the Stratis Masternode to allow clients to safely connect to it. This setting must be set to true. Example: tor.server=127.0.0.1:9051

tor.cookiefile

Page 34: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 34 © 2017 Stratis Group, Ltd. Proprietary and Confidential

This parameter defines the path to the Tor authentication cookie. The default location on Windows OS is: C:\Users\%USERNAME%\AppData\Roaming\Tor\control_auth_cookie Please replace the %USERNAME% value with your logged-on user, if in doubt, you can enter the below PowerShell script-block into a new PowerShell window to return the value.

Example: tor.cookiefile= C:\Users\TestVM\AppData\Roaming\Tor\control_auth_cookie

4.5. Server.config Summary After completing the previous steps, you will now have a unique configuration file that resembles

the below. Lines starting with # are comments which could be optionally added to the configuration

to remind Masternode operator of each option meaning.

# Address, username and password to the RPC interface of the Bitcoin QT

rpc.url=http://localhost:8332/

rpc.user=bitcoinuser

rpc.password=password

# Masternode tumbler fee; currently the only valid value is 0.00155

tumbler.fee=0.00155

# Name of the tumbling cycle used; currently the only valid option is kotori

cycle=kotori

# Tor configuration

tor.enabled=true

tor.server=127.0.0.1:9051

tor.cookiefile= C:\Users\TestVM\AppData\Roaming\Tor\control_auth_cookie

server.config

Write-Host "$env:APPDATA\Tor\control_auth_cookie"

PowerShell Script Code

Page 35: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 35 © 2017 Stratis Group, Ltd. Proprietary and Confidential

5. Running the Stratis Masternode In this section we will prepare script to launch Masternode, transfer required funds and start

Masternode for the first time.

5.1. Preparing MasterNode start-up script To ensure consistency, it is advised that you launch the node via a script. The PowerShell script-block

provided below is based upon all the steps followed in the document.

Open “PowerShell ISE” and copy the above script-block into it.

# Launch Tor

Write-Host "Checking for existing Tor Process..." -ForegroundColor Yellow

if (-Not (Get-Process -Name tor)) {

Start-Process $env:USERPROFILE\Desktop\Tor\Tor\Tor.exe -ArgumentList "-

controlport 9051 -cookieauthentication 1"

}

# Check for Bitcoin Core Process

Write-Host "Checking for existing Bitcoin Process..." -ForegroundColor

Yellow

if (-Not (Get-Process -Name bitcoin-qt)) {

Start-Process $env:ProgramFiles\Bitcoin\bitcoin-qt.exe

}

# Wait 30 Seconds

Write-Host "Waiting 30 Seconds before launching Stratis Masternode..." -

ForegroundColor Yellow

Start-Sleep 30

# Launch Stratis Masternode

Write-Host "Launching Stratis Masternode" -ForegroundColor Cyan

Set-Location

$env:USERPROFILE\Desktop\Masternode\BreezeProject\Breeze.BreezeServer

# To force Masternode registration please run the below command with -

forceRegistration switch (i.e. dotnet run -forceRegistration)

dotnet run

PowerShell Script Code

Page 36: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 36 © 2017 Stratis Group, Ltd. Proprietary and Confidential

Save the script by selecting “File” > “Save As” and save it to an easily accessible location, in this

example it has been saved it to the Desktop.

You can now run the Stratis Masternode by right-clicking the newly created PowerShell script named

“Run Stratis Masternode.PS1”

You may receive the following prompt upon running the PowerShell script.

Type “Y” and hit “Enter“ to continue.

Whilst the script is running, be sure to accept any Security Warning dialogs by clicking the “Run”

button to continue.

5.2. Preparing for Masternode registration Masternode registration requires small STRAT balance to be available in the Stratis wallet configured

in previous step. This is used to register Masternode on the Stratis network so that it could be

discovered by Breeze Clients. It is recommended that the Stratis walled have a balance of at least 0.1

STRAT reserved in its “Registration Fee” address.

Registration cost at the time of writing this document is 0.00019 STRAT per registration.

Page 37: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 37 © 2017 Stratis Group, Ltd. Proprietary and Confidential

When the Masternode is started it checks if it has been registered on the Stratis blockchain. In case

the registration is not found or one of the Masternode parameters have changed a new registration

will be performed. It is also possible to force Masternode to send registration transactions using the

-forceRegistration switch.

The registration process requires access to Stratis QT wallet over RPC connection which have been

configured in the previous steps. Once the registration is done the Stratis Masternode does not need

further access to the Stratis QT wallet unless the server needs to be re-registered.

Please follow the steps below to send coins to the Stratis wallet which will be used to fund the

registration transaction. Following steps assume that the Stratis wallet doesn’t have any funds.

Please ensure that the Stratis QT Wallet has sufficient balance in “Registration Fee” address and

launch Masternode using the script prepared in previous step.

This completes the registration phase. You should expect an output like the above.

5.3. Transferring funds to the Stratis collateral address You are now running a Stratis Masternode, it has advertised itself to the network and is discoverable

by users of the Breeze Privacy Protocol client, however, it requires activation.

To complete the activation process, you will need to send 250,000 (or more) STRAT to the Collateral

Address. Once that transaction has been confirmed, your Stratis Masternode will be activated and

functional for users of the Breeze Privacy Protocol Client.

Now the registration process is complete, the Breeze Clients with Breeze Privacy Protocol will

monitor that address for a deposit of 250,000 STRAT.

It will only monitor 40 Blocks from the moment it registered meaning the transaction must occur

within approximately 40 minutes. If this is not done, the registration process will need to be

repeated.

Page 38: STRATIS MASTERNODE...The Stratis Masternode operates in a totally decentralized and trust-less manner, meaning that no one (not even Masternode) can steal the funds trusted to the

Page | 38 © 2017 Stratis Group, Ltd. Proprietary and Confidential

To force Masternode to perform another registration please modify the “Run Stratis

Masternode.PS1” script to include additional command line switch to the dotnet run command.

Please remember to remove that switch from the script as soon as the registration is performed so

that it will not be repeated the next time the script is run.

5.4. Confirm “tumbler.ecdsakeyaddress” Address Confirm the address specified in the breeze.conf. In this guide, the example used was the value

SY2q6zvgKaL947YZX3k2j6tCqTVs6FggfL

5.5. Confirm Discoverability You will now have an activated Stratis Masternode and will receive your processing fees in the

Bitcoin Core Wallet.

# To force Masternode registration please run the below command with -

forceRegistration switch (i.e. dotnet run -forceRegistration)

dotnet run -forceRegistration

PowerShell Script Code