From bd302126a392ee15d789cc1cc6b5af825ca1eafb Mon Sep 17 00:00:00 2001
From: Hugo Trentesaux <hugo@trentesaux.fr>
Date: Fri, 7 Oct 2022 15:56:20 +0200
Subject: [PATCH] wip document bootstrap process

---
 docs/dev/img/pipeline_screenshot.png | Bin 0 -> 27237 bytes
 docs/dev/launch-a-live-network.md    | 103 ++++++++++++++++++++++++---
 2 files changed, 93 insertions(+), 10 deletions(-)
 create mode 100644 docs/dev/img/pipeline_screenshot.png

diff --git a/docs/dev/img/pipeline_screenshot.png b/docs/dev/img/pipeline_screenshot.png
new file mode 100644
index 0000000000000000000000000000000000000000..2c2870de4baa32f9f9f0a5a18bb280c7be926366
GIT binary patch
literal 27237
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

literal 0
HcmV?d00001

diff --git a/docs/dev/launch-a-live-network.md b/docs/dev/launch-a-live-network.md
index a5d192e52..3c8513eeb 100644
--- a/docs/dev/launch-a-live-network.md
+++ b/docs/dev/launch-a-live-network.md
@@ -1,6 +1,59 @@
 # How to launch a live network
 
-## 1. Choose the currency type
+Launching a new live network is more difficult than spawning a local blockchain. Follow this process if you know what you are doing and you already experimented a bit with local blockchains. Part of this process is automated with Rust scripts, including interaction with GitLab's GraphQL API. Do not hesitate to improve and complete it (see TODOs inside `xtask/**/*.rs` files).
+
+## Requirements
+
+In order to build in a standardized environment, you need Docker. 
+
+- see docker docs to [install docker](https://docs.docker.com/engine/install/)
+- make sure you can run docker as non-root user with `docker info`
+
+## Preparation
+
+### Runtime tag
+
+When launching a new network, you're likely to use a new runtime for the genesis. Our runtime tags use `xxyy` version numbers where `x` corresponds to major change and `y` hotfix or minor change.
+
+1. Make sure to move any issue or merge request assigned to the choosen milestone `runtime-xxyy` to the next one. This prevents from forgetting unfinished work.
+1. Check that the [CI on master](https://git.duniter.org/nodes/rust/duniter-v2s/-/pipelines?scope=all&page=1&ref=master) is passing. This is necessary to build the docker images.
+1. Increment the `spec_version` in the code. Example `spec_version: 300` -> `spec_version: 400`.
+
+At this point, you might want to merge this commit in master and publish the branch (TODO automate).
+
+### Release tasks
+
+We choose [`xtask`](https://github.com/matklad/cargo-xtask/) to run Rust scripts using `cargo`. To build these scripts, just run:
+
+```bash
+cargo xtask # this will build the scripts and show the available commands
+```
+
+To interact with GitLab, the `release_runtime` script uses the environment variable `GITLAB_TOKEN` which must contain a token with write permission on the repository. Go to your [personal access token preferences](https://git.duniter.org/-/profile/personal_access_tokens) to generate one and `export` it (you might want to add it to your `.bashrc`). You can then run this command:
+
+```bash
+cargo xtask release-runtime 400 # requires to run docker as non-root user
+```
+
+This command does the following things (use your system monitor to track de progress as it produces not log):
+
+1. download the [`paritytech/srtool`](https://docs.substrate.io/reference/command-line-tools/srtool/) (Substrate Runtime TOOLbox) docker image (about 2 minutes with a good connection). It is a docker container enabling to build the Substrate WebAssembly runtime in a deterministic way (machine-independant).
+1. build gdev runtime in release mode using `srtool` (about 5 minutes depending on your computing power). The target is put in the `runtime/gdev/target` folder (about 2GB).
+1. generate release notes using the template in `xtask/res`
+1. publish the relase with the notes on GitLab using your `GITLAB_TOKEN`
+
+### Substrate client docker image
+
+Go to the pipeline and run the manual tasks as shown on the below screenshot.
+
+- `build_release_manual`
+- `deploy_docker_release_sha`
+
+![pipeline screenshot](./img/pipeline_screenshot.png)
+
+## Deployment
+
+### Choose the currency type
 
 Ensure that the currency type you want has the requirements.
 
@@ -9,14 +62,14 @@ For now, only `gdev` is supported.
 In the commands that will be indicated afterwards, you will have to replace `CURRENCY` by the
 currency type you have chosen.
 
-## 2. Choose the docker image
+### Choose the docker image
 
-Choose or build the docker image that contains the version of the code thut you want to use.
+Choose the docker image that contains the version of the code that you want to use.
 
 In the commands that will be indicated afterwards, you will have to replace `TAG` by the tag of the
 docker image that you have chosen.
 
-## 3. Generate the session keys of genesis authority
+### Generate the session keys of genesis authority
 
 Generate a random secret phrase:
 
@@ -39,17 +92,19 @@ $ docker run --rm -it --entrypoint duniter duniter/duniter-v2s:TAG key generate-
 Session Keys: 0x87189d723e1b2826c243bc433c718ac26ba60526932216a09102a254d54462b890a0c2866034db9d05f8193a95fe5af8d5e12ab295a501c17c95cdbeaf226d6290a0c2866034db9d05f8193a95fe5af8d5e12ab295a501c17c95cdbeaf226d6290a0c2866034db9d05f8193a95fe5af8d5e12ab295a501c17c95cdbeaf226d62
 ```
 
-## 4. Paste sessions keys in the genesis configuration file
+### Paste sessions keys in the genesis configuration file
 
-An example of genesis configuration file: `resources/gdev.json`
+An example of genesis configuration file: `resources/gdev.json`. Paste your session keys in your `smith` identity with key `session_keys`.
 
-## 5. Generate raw spec
+### Generate raw spec
 
 ```bash
 ./scripts/gen-live-network-raw-spec.sh CURRENCY "<path/to/your/genesis/config/file>"
 ```
 
-## 6. Generate the docker compose and prepare nodes keys
+This builds the specs using debug version of Duniter.
+
+### Generate the docker compose and prepare nodes keys
 
 ```bash
 ./scripts/create-live-network.sh "<your secret phrase>" CURRENCY "<path/to/dist/folder>"
@@ -60,8 +115,6 @@ root of the distribution folder:
 
 ```bash
 scp -r -P SSH_PORT "<path/to/dist/folder>" user@ip:/remote/dist/path
-cd "<path/to/dist/folder>"
-docker compose up -d
 ```
 
 Then, on the server:
@@ -70,3 +123,33 @@ Then, on the server:
 cd "<path/to/dist/folder>"
 docker compose up -d
 ```
+
+## Finalization
+
+The following steps should be completed when you are satisfied with the network.
+
+### Rotate session keys
+
+You should rotate session keys for more secured keys (the one you used before are still in your bash history and your clipboard and could have been intercepted by an attacker). Update the raw chainspec json file with your new session keys.
+
+TODO explain how with polkadotjs + vpn
+
+### Inject chainspec
+
+Once you updated your session keys, inject the runtime code inside the raw chainspec.
+
+```bash
+cargo xtask inject-runtime-code --runtime runtime/gdev/target/srtool/release/wbuild/gdev-runtime/gdev_runtime.compact.compressed.wasm --raw-spec resources/gdev-raw.json 
+```
+
+### Publish image
+
+TODO
+
+### Tell the other smith
+
+Once you completed all these steps, the other smith can pull the docker image with a genesis containing your bootnode with the correct session keys. They can base their `docker-compose.yml` on the `duniter-validator` template.
+
+---
+
+TODO rusty-hook pb?
\ No newline at end of file
-- 
GitLab