Browse Source

doc/testnet/node: add screenshots, missing steps and high level general info

darkfi 1 year ago
parent
commit
1b472264f7

BIN
doc/src/testnet/img/init-wallet.png


BIN
doc/src/testnet/img/localnet-with-balance.png


BIN
doc/src/testnet/img/localnet.png


BIN
doc/src/testnet/img/make-minerd-darkfid-drk.png


BIN
doc/src/testnet/img/makedarkfid.png


BIN
doc/src/testnet/img/makeminerd.png


BIN
doc/src/testnet/img/step1.png


BIN
doc/src/testnet/img/step10.png


BIN
doc/src/testnet/img/step11.png


BIN
doc/src/testnet/img/step12.png


BIN
doc/src/testnet/img/step13.png


BIN
doc/src/testnet/img/step14.png


BIN
doc/src/testnet/img/step2.png


BIN
doc/src/testnet/img/step3.png


BIN
doc/src/testnet/img/step4.png


BIN
doc/src/testnet/img/step5.png


BIN
doc/src/testnet/img/step6.png


BIN
doc/src/testnet/img/step7.png


BIN
doc/src/testnet/img/step8.png


BIN
doc/src/testnet/img/step9.png


+ 177 - 29
doc/src/testnet/node.md

@@ -1,21 +1,55 @@
 Compiling and Running a Node
 Compiling and Running a Node
 =========================
 =========================
 
 
-Since this is still an early phase, we will not be installing any of
-the software system-wide. Instead, we'll be running all the commands
-from the git repository, so we're able to easily pull any necessary
-updates.
-
 Please read the whole document first before executing commands, to
 Please read the whole document first before executing commands, to
 understand all the steps required and how each component operates.
 understand all the steps required and how each component operates.
-Unless instructed otherwise, each daemon exists/runs on its own
-shell, so don't stop a running one to start another.
+Unless instructed otherwise, each daemon runs on its own shell, so don't
+stop a running one to start another.
+
 We also strongly suggest to first execute next guide steps on a
 We also strongly suggest to first execute next guide steps on a
 [local environment](#local-deployment) to become familiar with
 [local environment](#local-deployment) to become familiar with
 each command, before broadcasting transactions to the actual network.
 each command, before broadcasting transactions to the actual network.
 
 
+## Overview
+
+This tutorial will cover the three DarkFi blockchain components and
+their current features. The components covered are:
+
+* `darkfid` is the DarkFi fullnode. It validates blockchain transactions
+and stays connected to the p2p network. 
+* `drk` is a CLI wallet. It provides an interface to smart contracts such
+as Money and DAO, manages our keys and coins, and scans the blockchain
+to update our balances.
+* `minerd` is the DarkFi mining daemon. It connects to `darkfid` over
+RPC, which triggers commands for it to mine blocks.
+
+The config files for `darkfid` and `drk` are sectioned into three parts,
+each marked `[network_config]`. The sections look like this:
+
+* `[network_config."mainnet"]`
+* `[network_config."testnet"]`
+* `[network_config."localnet"]`
+
+At the top of the `darkfid` and `drk` config file, we can modify the
+network being used by changing the following line:
+
+```
+# Blockchain network to use
+network = "testnet"
+```
+
+This enables us to configure `darkfid` and `drk` for different contexts,
+namely mainnet, testnet and localnet. Mainnet is not active yet. Localnet
+can be setup by following the instructions [here](#local-deployment). The
+rest of this tutorial assumes we are setting up a testnet node.
+
 ## Compiling
 ## Compiling
 
 
+Since this is still an early phase, we will not be installing any of
+the software system-wide. Instead, we'll be running all the commands
+from the git repository, so we're able to easily pull any necessary
+updates.
+
 Refer to the main [DarkFi](../index.html) page for instructions on how
 Refer to the main [DarkFi](../index.html) page for instructions on how
 to install Rust and necessary deps.
 to install Rust and necessary deps.
 
 
@@ -26,35 +60,78 @@ can compile the `darkfid` node and the `drk` wallet CLI:
 $ make darkfid drk
 $ make darkfid drk
 ```
 ```
 
 
+![make1](img/makedarkfid.png)
+
 This process will now compile the node and the wallet CLI tool.
 This process will now compile the node and the wallet CLI tool.
 When finished, we can begin using the network. Run `darkfid` and `drk`
 When finished, we can begin using the network. Run `darkfid` and `drk`
-once so their config files are spawned on your system. This config files
-will be used by `darkfid` and `drk` in order to configure themselves.
-The defaults are already preset for using the testnet network.
+once so their config files are spawned on your system. These config files
+will be used to `darkfid` and `drk`.
+
+Please note that the exact paths may differ depending on your local setup.
 
 
 ```
 ```
 $ ./darkfid
 $ ./darkfid
 Config file created in "~/.config/darkfi/darkfid_config.toml". Please review it and try again.
 Config file created in "~/.config/darkfi/darkfid_config.toml". Please review it and try again.
+```
+
+![step1](img/step1.png)
+
+```
 $ ./drk wallet --address
 $ ./drk wallet --address
 Config file created in "~/.config/darkfi/drk_config.toml". Please review it and try again.
 Config file created in "~/.config/darkfi/drk_config.toml". Please review it and try again.
 ```
 ```
 
 
+![step2](img/step2.png)
+
 ## Running
 ## Running
 
 
+### Using Tor
+
+DarkFi supports Tor for network-level anonymity. To use the testnet over
+Tor, you'll need to make some modifications to the `darkfid` config
+file.
+
+For detailed instructions and configuration options on how to do this,
+follow the [Tor Guide](../nodes/tor-guide.md#configure-network-settings).
+
 ### Wallet initialization
 ### Wallet initialization
 
 
-Now it's time to initialize your wallet. For this we use a separate
+Now it's time to initialize your wallet. For this we use `drk`, a separate
 wallet CLI which is created to interface with the smart contract used
 wallet CLI which is created to interface with the smart contract used
 for payments and swaps.
 for payments and swaps.
 
 
-We simply have to initialize a wallet, and create a keypair:
+First, you need to change the password in the `drk` config. Open
+your config file in a text editor (the default path is
+`~/.config/darkfi/drk_config.toml`). Look for the section marked
+`[network_config."testnet"]` and change this line:
+
+```
+# Password for the wallet database
+wallet_pass = "changeme"
+```
+
+Once you've changed the default password for your testnet wallet, we can
+proceed with the wallet initialization. We simply have to initialize a
+wallet, and create a keypair.
 
 
 ```
 ```
 $ ./drk wallet --initialize
 $ ./drk wallet --initialize
+```
+
+![step3](img/step4.png)
+
+```
 $ ./drk wallet --keygen
 $ ./drk wallet --keygen
+```
+
+![step4](img/step5.png)
+
+```
 $ ./drk wallet --default-address 1
 $ ./drk wallet --default-address 1
 ```
 ```
 
 
+![step5](img/step6.png)
+
 The second command will print out your new DarkFi address where you
 The second command will print out your new DarkFi address where you
 can receive payments. Take note of it. Alternatively, you can always
 can receive payments. Take note of it. Alternatively, you can always
 retrieve your default address using:
 retrieve your default address using:
@@ -63,24 +140,39 @@ retrieve your default address using:
 $ ./drk wallet --address
 $ ./drk wallet --address
 ```
 ```
 
 
+![step6](img/step7.png)
+
 ### Miner
 ### Miner
 
 
-If you want to help secure the network, you can participate in the mining
-process, by running the native `minerd` mining daemon. First, compile it:
+It's not necessary for broadcasting transactions or proceeding with the
+rest of the tutorial (`darkfid` and `drk` handle this), but if you want
+to help secure the network, you can participate in the mining process
+by running the native `minerd` mining daemon.
+
+To mine on DarkFI we need to connect the `minerd` RPC to the `darkfid`
+full node, which will initiate the mining process. We'll also need to
+add a recipient to `darkfid` that specifies where the mining rewards
+will be minted to. 
+
+First, compile it:
 
 
 ```
 ```
 $ make minerd
 $ make minerd
 ```
 ```
 
 
+![make1](img/makeminerd.png)
+
 This process will now compile the mining daemon. When finished, run
 This process will now compile the mining daemon. When finished, run
 `minerd` once so that it spawns its config file on your system. This
 `minerd` once so that it spawns its config file on your system. This
-config file will be used by `minerd` in order to configure itself.
+config file is used to configure `minerd`.
 
 
 ```
 ```
 $ ./minerd
 $ ./minerd
 Config file created in "~/.config/darkfi/minerd_config.toml". Please review it and try again.
 Config file created in "~/.config/darkfi/minerd_config.toml". Please review it and try again.
 ```
 ```
 
 
+![step7](img/step8.png)
+
 Once that's in place, you can run it again and `minerd` will start,
 Once that's in place, you can run it again and `minerd` will start,
 waiting for requests to mine blocks.
 waiting for requests to mine blocks.
 
 
@@ -88,34 +180,76 @@ waiting for requests to mine blocks.
 $ ./minerd
 $ ./minerd
 ```
 ```
 
 
-You now have to configure `darkfid` to use your wallet address as the
-rewards recipient, when submitting blocks to `minerd` to mine. Open
-your config file with your editor of choice (default path is
-`~/.config/darkfi/darkfid_config.toml`) and find the `recipient` and
-`minerd_endpoint` options under the network configuration you will operate
-on (for testnet it is `[network_config."testnet"]`). Uncomment them by
-removing the `#` character at the start of line, and replace the
-`YOUR_WALLET_ADDRESS_HERE` string with your wallet address.
+![step8](img/step9.png)
+
+You now have to connect `minerd` to `darkfid` over RPC, and configure
+`darkfid` to use your wallet address as the rewards recipient, when
+submitting blocks to `minerd` to mine.
+
+Open your `darkfid` config file with a text editor (the default path
+is `~/.config/darkfi/darkfid_config.toml`). Find the `recipient` and
+`minerd_endpoint` options under `[network_config."testnet"]`, and
+uncomment them by removing the `#` character at the start of line,
+like this:
 
 
 ```
 ```
 # Put your `minerd` endpoint here (default for testnet is in this example)
 # Put your `minerd` endpoint here (default for testnet is in this example)
 minerd_endpoint = "tcp://127.0.0.1:28467"
 minerd_endpoint = "tcp://127.0.0.1:28467"
 # Put the address from `drk wallet --address` here
 # Put the address from `drk wallet --address` here
-recipient = "..."
+#recipient = "YOUR_WALLET_ADDRESS_HERE"
+```
+
+Now ensure that `minerd_endpoint` is set to the same value as the
+`rpc_listen` address in your `minerd` config (the default path
+is `~/.config/darkfi/minerd_config.toml`). Finally, replace the
+`YOUR_WALLET_ADDRESS_HERE` string with your `drk` wallet address that
+you can retrieve as follows:
+
+```
+$ ./drk wallet --address
 ```
 ```
 
 
+![step6](img/step7.png)
+
+Note: when modifying the `darkfid` config file to use with the
+testnet, be sure to change the values under the section marked
+`[network_config."testnet"]` (not localnet or mainnet!).
 
 
 ### Darkfid
 ### Darkfid
 
 
 Now that `darkfid` configuration is in place, you can run it again and
 Now that `darkfid` configuration is in place, you can run it again and
 `darkfid` will start, create the necessary keys for validation of blocks
 `darkfid` will start, create the necessary keys for validation of blocks
-and transactions, and begin syncing the blockchain. Keep it running,
-and you should see a `Blockchain synced!` message after some time.
+and transactions, and begin syncing the blockchain. 
 
 
 ```
 ```
 $ ./darkfid
 $ ./darkfid
 ```
 ```
 
 
+![step10](img/step10.png)
+
+As its syncing, you'll see periodic messages like this:
+
+```
+[INFO] Blocks received: 4020/4763
+```
+
+This will give you an indication of the current progress. Keep it running,
+and you should see a `Blockchain synced!` message after some time.
+
+If you're running `minerd`, you should see a notification from the
+`minerd` terminal like this:
+
+```
+[INFO] [RPC] Server accepted conn from tcp://127.0.0.1:44974/
+```
+
+![step11](img/step11.png)
+
+This means that `darkfid` and `minerd` are connected over RPC and `minerd`
+can start mining.
+
+![step12](img/step12.png)
+
 ### Wallet sync
 ### Wallet sync
 
 
 In order to receive incoming coins, you'll need to use the `drk`
 In order to receive incoming coins, you'll need to use the `drk`
@@ -127,18 +261,25 @@ and then to subscribe to new blocks:
 
 
 ```
 ```
 $ ./drk scan
 $ ./drk scan
+```
+
+![step13](img/step13.png)
+
+```
 $ ./drk subscribe
 $ ./drk subscribe
 ```
 ```
 
 
+![step14](img/step14.png)
+
 Now you can leave the subscriber running. In case you stop it, just
 Now you can leave the subscriber running. In case you stop it, just
 run `drk scan` again until the chain is fully scanned, and then you
 run `drk scan` again until the chain is fully scanned, and then you
 should be able to subscribe again.
 should be able to subscribe again.
 
 
 ## Local Deployment
 ## Local Deployment
 
 
-For development we recommend running master, and use the existing
-`contrib/localnet/darkfid-single-node` folder, which provides
-the corresponding configurations to operate.
+For local (non-testnet) development we recommend running master, and
+use the existing `contrib/localnet/darkfid-single-node` folder, which
+provides the corresponding configurations to operate.
 
 
 First, compile `darkfid` node, `minerd` mining daemon and the `drk`
 First, compile `darkfid` node, `minerd` mining daemon and the `drk`
 wallet CLI:
 wallet CLI:
@@ -147,6 +288,8 @@ wallet CLI:
 $ make darkfid minerd drk
 $ make darkfid minerd drk
 ```
 ```
 
 
+![make3](img/make-minerd-darkfid-drk.png)
+
 Enter the localnet folder, and initialize a wallet:
 Enter the localnet folder, and initialize a wallet:
 
 
 ```
 ```
@@ -154,12 +297,16 @@ $ cd contrib/localnet/darkfid-single-node/
 $ ./init-wallet.sh
 $ ./init-wallet.sh
 ```
 ```
 
 
+![init](img/init-wallet.png)
+
 Then start `darkfid` and wait until its initialized:
 Then start `darkfid` and wait until its initialized:
 
 
 ```
 ```
 $ ./tmux_sessions.sh
 $ ./tmux_sessions.sh
 ```
 ```
 
 
+![localnet](img/localnet.png)
+
 After some blocks have been generated we
 After some blocks have been generated we
 will see some `DRK` in our test wallet.
 will see some `DRK` in our test wallet.
 On a different shell(or tmux pane in the session),
 On a different shell(or tmux pane in the session),
@@ -169,6 +316,7 @@ folder again and check wallet balance
 ```
 ```
 $ ./wallet-balance.sh
 $ ./wallet-balance.sh
 ```
 ```
+![localnet](img/localnet-with-balance.png)
 
 
 Don't forget that when using this local node, all operations
 Don't forget that when using this local node, all operations
 should be executed inside the `contrib/localnet/darkfid-single-node`
 should be executed inside the `contrib/localnet/darkfid-single-node`