From b964419686089fa896490fc9e50e38a459e5f2b8 Mon Sep 17 00:00:00 2001 From: Vitalis Salis Date: Wed, 13 Dec 2023 11:08:08 +0400 Subject: [PATCH] docs: Combine docs into less pages, update overview, and finality renaming (#178) --- README.md | 146 +++++++++++++------------ docs/eots.md | 111 +++++++++++++++++++ docs/eotsd/eotsd-config.md | 56 ---------- docs/eotsd/eotsd-startup-guide.md | 38 ------- docs/finality-provider.md | 173 ++++++++++++++++++++++++++++++ docs/finality-toolset.png | Bin 0 -> 75814 bytes docs/interacting-with-daemons.md | 67 ------------ docs/vald/vald-config.md | 80 -------------- docs/vald/vald-startup-guide.md | 36 ------- 9 files changed, 356 insertions(+), 351 deletions(-) create mode 100644 docs/eots.md delete mode 100644 docs/eotsd/eotsd-config.md delete mode 100644 docs/eotsd/eotsd-startup-guide.md create mode 100644 docs/finality-provider.md create mode 100644 docs/finality-toolset.png delete mode 100644 docs/interacting-with-daemons.md delete mode 100644 docs/vald/vald-config.md delete mode 100644 docs/vald/vald-startup-guide.md diff --git a/README.md b/README.md index 766ff02a..2b33473b 100644 --- a/README.md +++ b/README.md @@ -1,62 +1,36 @@ -# BTC-Validator +# Finality Provider -## 1. Overview - -BTC-Validator is a standalone program crafted for the creation and management of BTC -validators. The program includes a CLI functionality for the creation, management, -and storage of validator keys, as well as the creation and registration of validators -on the consumer chain. - -Once a validator is registered on the chain, BTC-Validator consistently polls for new -blocks. It actively engages with the blockchain by sending finality signatures and -committing public randomness at regular intervals. - -The program consists of two essential components: the **EOTS manager Daemon** and the -**Validator Daemon**. - -#### 1. EOTS Manager Daemon - -The EOTS Daemon is responsible for managing EOTS keys, producing EOTS randomness and -EOTS signatures - -**Note:** EOTS stands for Extractable One Time Signature. You can read more about it -in -the [Babylon BTC Staking Litepaper](https://docs.babylonchain.io/assets/files/btc_staking_litepaper-32bfea0c243773f0bfac63e148387aef.pdf). -The BTC validator will commit a unique EOTS randomness at each future height it needs -to vote. If the BTC validator votes for two blocks using the same committed EOTS -randomness, then its secret key will be extracted and all of its BTC delegations will -be slashed on Bitcoin, ensuring slashable safety. +A toolset crafted for the creation and +management of Finality Providers. -1. **EOTS Key Management:** - - Generates [Schnorr](https://en.wikipedia.org/wiki/Schnorr_signature) key pairs - for the validator using the - [BIP-340](https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki) - standard. - - Persists generated key pairs in the - internal [bolt db](https://github.com/etcd-io/bbolt) storage. - -2. **Randomness Generation:** - - Generates lists of EOTS randomness pairs based on the EOTS key, chainID, and - block height. - - The randomness is deterministically generated and tied to specific parameters. - -3. **Signature Generation:** - - Signs EOTS using the private key of the validator and corresponding secret - randomness for a given chain at a specified height. - - Signs Schnorr signatures using the private key of the validator. - -#### 2. Validator Daemon - -The Validator Daemon is responsible for committing public randomness and submitting -finality signatures. +## 1. Overview -1. **Finality Signatures:** - - Sends the finality signature to the consumer chain (Babylon) for each - registered validator and for each block there's an EOTS randomness commitment. +Finality providers are responsible for voting +at a finality round on top of [CometBFT](https://github.com/cometbft/cometbft). +Similar to any native PoS validator, +a finality provider can receive voting power delegations from BTC stakers, and +can earn commission from the staking rewards denominated in Babylon tokens. + +The finality provider toolset does not have +any special hardware requirements +and can operate on standard mid-sized machines +running a UNIX-flavored operating system. +It consists of the following programs: +- *Babylon full node*: An instance of a Babylon node connecting to + the Babylon network. Running one is not a strict requirement, + but it is recommended for security compared to trusting a third-party RPC node. +- *Extractable One-Time Signature (EOTS) manager*: + A daemon responsible for securely maintaining the finality provider’s + private key and producing extractable one time signatures from it. +- *Finality Provider*: A daemon managing the finality provider. + It connects to the EOTS manager to generate EOTS public randomness and + finality votes for Babylon blocks, which it submits to Babylon through + the node connection. + +The following graphic demonstrates the interconnections between the above programs: + +![Finality Provider Interconnections](./docs/finality-toolset.png) -2. **EOTS Randomness Commitment:** - - Ensures the generation of EOTS randomness commitment on the Babylon ledger for - each block the BTC validator intends to vote for. ## 2. Installation @@ -72,14 +46,14 @@ the [official Go installation guide](https://golang.org/doc/install). To get started, clone the repository to your local machine from Github: ```bash -$ git clone git@github.com:babylonchain/btc-validator.git +$ git clone git@github.com:babylonchain/finality-provider.git ``` You can choose a specific version from -the [official releases page](https://github.com/babylonchain/btc-validator/releases) +the [official releases page](https://github.com/babylonchain/finality-provider/releases) ```bash -$ cd btc-validator # cd into the project directory +$ cd finality-provider # cd into the project directory $ git checkout ``` @@ -87,7 +61,7 @@ $ git checkout ```bash # cd into the project directory -$ cd btc-validator +$ cd finality-provider # installs the compiled binaries to your # $GOPATH/bin directory allowing access @@ -98,14 +72,13 @@ $ make install The above will produce the following binaries: - `eotsd`: The daemon program for the EOTS manager. -- `vald`: The daemon program for the btc-validator. -- `valcli`: The CLI tool for interacting with the btc-validator daemon. -- `covd`: The daemon program for the covenant emulator. +- `fpd`: The daemon program for the finality-provider. +- `fpcli`: The CLI tool for interacting with the finality-provider daemon. To build locally, ```bash -$ cd btc-validator # cd into the project directory +$ cd finality-provider # cd into the project directory $ make build ``` @@ -113,24 +86,49 @@ The above will lead to a build directory having the following structure: ```bash $ ls build - ├── covd ├── eotsd - ├── valcli - └── vald + ├── fpcli + └── fpd ``` -## 3. EOTS Daemon Configuration +## 3. Setting up a finality provider + +#### 3.1. Setting up a Babylon Full Node + +Before setting up the finality provider toolset, +an operator must ensure a working connection with a Babylon full node. +It is highly recommended that operators run their own node to avoid +trusting third parties. Instructions on how to set up a full Babylon node +can be found in +[the Babylon documentation](https://docs.babylonchain.io/docs/user-guides/btc-timestamping-testnet/setup-node). -Follow the [eots configuration guide](docs/eotsd/eotsd-config.md). +The finality provider requires a Babylon keyring with loaded funds to be attached to it +in order to be able to send transactions to Babylon. +To setup such a keyring, follow the instructions in +[the Babylon documentation](https://docs.babylonchain.io/docs/user-guides/btc-timestamping-testnet/getting-funds). -## 4. Starting the EOTS Daemon +#### 3.2. Setting up the EOTS Manager -Follow the [eots startup guide](docs/eotsd/eotsd-startup-guide.md). +After a node and a keyring have been set up, +the operator can set up and run the +Extractable One Time Signature (EOTS) manager daemon. +A complete overview of the EOTS manager, its operation, and +its configuration options can be found in the +[EOTS Manager page](docs/eots.md) -## 5. Validator Daemon Configuration +#### 3.3. Setting up a Finality Provider -Follow the [vald configuration guide](docs/vald/vald-config.md). +The last step is to set up and run +the finality daemon. +A complete overview of the finality daemon, its operation, and +its configuration options can be found in the +[Finality page](docs/finality-provider.md). -## 6. Starting the Validator Daemon +## 4. Delegations & Rewards -Follow the [vald startup guide](docs/vald/vald-startup-guide.md). +A finality provider receives BTC delegations through delegators +interacting with Babylon and choosing it as the recipient of their delegations. +To perform a self-delegation, +the operator can either visit the staking web app we provide, +or run the Babylon [BTC Staker program](https://github.com/babylonchain/btc-staker) once. +The BTC staker connects to a Bitcoin wallet and Babylon to perform delegations. diff --git a/docs/eots.md b/docs/eots.md new file mode 100644 index 00000000..880206c3 --- /dev/null +++ b/docs/eots.md @@ -0,0 +1,111 @@ +# EOTS Manager + +## 1. Overview + +The EOTS daemon is responsible for managing EOTS keys, +producing EOTS randomness, and using them to produce EOTS signatures. + +**Note:** EOTS stands for Extractable One Time Signature. You can read more about it +in +the [Babylon BTC Staking Litepaper](https://docs.babylonchain.io/assets/files/btc_staking_litepaper-32bfea0c243773f0bfac63e148387aef.pdf). +In short, the EOTS manager produces EOTS public/private randomness pairs. +The finality provider commits the public part of this pairs to Babylon for +every future block height that they intend to provide a finality signature for. +If the finality provider votes for two different blocks on the same height, +they will have to reuse the same private randomness which will lead to their +underlying private key being exposed, leading to the slashing of them and all their delegators. + +The EOTS manager is responsible for the following operations: +1. **EOTS Key Management:** + - Generates [Schnorr](https://en.wikipedia.org/wiki/Schnorr_signature) key pairs + for a given finality provider using the + [BIP-340](https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki) + standard. + - Persists generated key pairs in the + internal Cosmos keyring. +2. **Randomness Generation:** + - Generates lists of EOTS randomness pairs based on the EOTS key, chainID, and + block height. + - The randomness is deterministically generated and tied to specific parameters. +3. **Signature Generation:** + - Signs EOTS using the private key of the finality provider and the corresponding secret + randomness for a given chain at a specified height. + - Signs Schnorr signatures using the private key of the finality provider. + +The EOTS manager functions as a daemon controlled by the `eotsd` tool. + +## 2. Configuration + +The `eotsd init` command initializes a home directory for the EOTS +manager. This directory is created in the default home location or in a location +specified by the `--home` flag. + +```bash +$ eotsd init --home /path/to/eotsd/home/ +``` + +After initialization, the home directory will have the following structure + +```bash +$ ls /path/to/eotsd/home/ + ├── eotsd.conf # Eotsd-specific configuration file. + ├── logs # Eotsd logs +``` + +If the `--home` flag is not specified, then the default home location will +be used. For different operating systems, those are: + +- **MacOS** `~/Library/Application Support/Eotsd` +- **Linux** `~/.Eotsd` +- **Windows** `C:\Users\\AppData\Local\Eotsd` + +Below are some of the important parameters in the `eotsd.conf` file. + +```bash +# Default address to listen for RPC connections +RpcListener = localhost:15813 + +# Type of keyring to use, +# supported backends - (os|file|kwallet|pass|test|memory) +# ref https://docs.cosmos.network/v0.46/run-node/keyring.html#available-backends-for-the-keyring +KeyringBackend = file + +# Possible database to choose as backend +Backend = bbolt + +# Path to the database +Path = bbolt-eots.db + +# Name of the database +Name = default +``` + +To see the complete list of configuration options, check the `eotsd.conf` file. + +## 3. Starting the EOTS Daemon + +You can start the EOTS daemon using the following command: + +```bash +$ eotsd --home /path/to/eotsd/home +``` + +This will start the rpc server at the address specified in the configuration under +the `RpcListener` field. It can also be overridden with custom address using +the `--rpclistener` flag. + +```bash +$ eotsd --rpclistener 'localhost:8081' + +time="2023-11-26T16:35:04-05:00" level=info msg="RPC server listening on 127.0.0.1:8081" +time="2023-11-26T16:35:04-05:00" level=info msg="EOTS Manager Daemon is fully active!" +``` + +All the available cli options can be viewed using the `--help` flag. These options +can also be set in the configuration file. + +**Note**: It is recommended to run the `eotsd` daemon on a separate machine or +network segment to enhance security. This helps isolate the key management +functionality and reduces the potential attack surface. You can edit the +`EOTSManagerAddress` in the configuration file of the finality provider +to reference the address of the machine where `eotsd` is running. diff --git a/docs/eotsd/eotsd-config.md b/docs/eotsd/eotsd-config.md deleted file mode 100644 index 497ab9f3..00000000 --- a/docs/eotsd/eotsd-config.md +++ /dev/null @@ -1,56 +0,0 @@ -## EOTS daemon (`eotsd`) configuration: - -The `eotsd` tool serves as a control plane for the EOTS Daemon. Below, -instructions are provided for configuring the `eotsd` daemon. - -The `eotsd init` command initializes a home directory for the EOTS -manager. This directory is created in the default home location or in a location -specified by the `--home` flag. - -```bash -$ eotsd init --home /path/to/eotsd-home/ -``` - -After initialization, the home directory will have the following structure - -```bash -$ ls /path/to/eotsd-home/ - ├── eotsd.conf # Eotsd-specific configuration file. - ├── logs # Eotsd logs -``` - -If the `--home` flag is not specified, then the default home location will -be used. For different operating systems, those are: - -- **MacOS** `~/Library/Application Support/Eotsd` -- **Linux** `~/.Eotsd` -- **Windows** `C:\Users\\AppData\Local\Eotsd` - -Below are some of the important parameters in the `eotsd.conf` file. - -```bash -# Path to EOTSD configuration file -ConfigFile = /Users//Library/Application Support/Eotsd/eotsd.conf - -# Default address to listen for RPC connections -RpcListener = localhost:15813 - -# Directory to store EOTS manager keys -KeyDirectory = /Users//Library/Application Support/Eotsd/data - -# Type of keyring to use, -# supported backends - (os|file|kwallet|pass|test|memory) -# ref https://docs.cosmos.network/v0.46/run-node/keyring.html#available-backends-for-the-keyring -KeyringBackend = file - -# Possible database to choose as backend -Backend = bbolt - -# Path to the database -Path = bbolt-eots.db - -# Name of the database -Name = default -``` - -To see the complete list of configuration options, check the `eotsd.conf` file. diff --git a/docs/eotsd/eotsd-startup-guide.md b/docs/eotsd/eotsd-startup-guide.md deleted file mode 100644 index a8144754..00000000 --- a/docs/eotsd/eotsd-startup-guide.md +++ /dev/null @@ -1,38 +0,0 @@ -## Prerequisites - -1. **Install Binaries:** - Follow the instructions in - the [installation section](../../README.md#2-installation) to install the required - binaries. - -2. **EOTS Daemon Configuration:** - Follow the instructions in the [EOTS Daemon Configuration](eotsd-config.md) guide - to configure the EOTS daemon. - -## Starting the EOTS Daemon - -You can start the EOTS daemon using the following command: - -```bash -$ eotsd --home /path/to/eotsd/home -``` - -This will start the rpc server at the address specified in the configuration under -the `RpcListener` field. It can also be overridden with custom address using -the `--rpclistener` flag. - -```bash -$ eotsd --rpclistener 'localhost:8081' - -time="2023-11-26T16:35:04-05:00" level=info msg="RPC server listening on 127.0.0.1:8081" -time="2023-11-26T16:35:04-05:00" level=info msg="EOTS Manager Daemon is fully active!" -``` - -All the available cli options can be viewed using the `--help` flag. These options -can also be set in the configuration file. - -**Note**: It is recommended to run the `eotsd` daemon on a separate machine or -network segment to enhance security. This helps isolate the key management -functionality and reduces the potential attack surface. You can edit the -`EOTSManagerAddress` in `vald.conf` to reference the address of the machine -where `eotsd` is running. diff --git a/docs/finality-provider.md b/docs/finality-provider.md new file mode 100644 index 00000000..8a12a13b --- /dev/null +++ b/docs/finality-provider.md @@ -0,0 +1,173 @@ +# Finality Provider + +## 1. Overview + +The Finality Provider Daemon is responsible for +monitoring for new Babylon blocks, +committing public randomness for the blocks it +intends to provide finality signatures for, and +submitting finality signatures. + +The daemon can manage and perform the following operations for multiple +finality providers: +1. **Creation and Registration**: Creates and registers finality + providers to Babylon. +2. **EOTS Randomness Commitment**: The daemon monitors the Babylon chain and + commits EOTS public randomness for every Babylon block each + finality provider intends to vote for. The commit intervals can be specified + in the configuration. + The EOTS public randomness is retrieved through the finality provider daemon's + connection with the [EOTS daemon](eots.md). +3. **Finality Votes Submission**: The daemon monitors the Babylon chain + and produces finality votes for each block each maintained finality provider + has committed to vote for. + +The daemon is controlled by the `fpd` tool. +The `fpcli` tool implements commands for interacting with the daemon. + +## 2. Configuration + +The `fpd init` command initializes a home directory for the +finality provider daemon. +This directory is created in the default home location or in a +location specified by the `--home` flag. + +```bash +$ fpd init --home /path/to/fpd/home/ +``` + +After initialization, the home directory will have the following structure + +```bash +$ ls /path/to/fpd/home/ + ├── fpd.conf # Fpd-specific configuration file. + ├── logs # Fpd logs +``` + +If the `--home` flag is not specified, then the default home directory +will be used. For different operating systems, those are: + +- **MacOS** `~/Library/Application Support/Fpd` +- **Linux** `~/.Fpd` +- **Windows** `C:\Users\\AppData\Local\Fpd` + +Below are some important parameters of the `fpd.conf` file. + +**Note**: +The finality provider daemon requires the existence of a keyring that contains +an account with Babylon token funds to pay for transactions. +The configuration below requires to point to the path where this keyring is stored +and specify the account name under the `KeyDirectory` and `Key` config values respectively. + +```bash +# Address of the EOTS Daemon +EOTSManagerAddress = 127.0.0.1:15813 + +# Babylon specific parameters + +# Babylon chain ID +ChainID = chain-test + +# Babylon node RPC endpoint +RPCAddr = http://localhost:26657 + +# Babylon node gRPC endpoint +GRPCAddr = https://localhost:9090 + +# Name of the key in the keyring to use for signing transactions +Key = + +# Type of keyring to use, +# supported backends - (os|file|kwallet|pass|test|memory) +# ref https://docs.cosmos.network/v0.46/run-node/keyring.html#available-backends-for-the-keyring +KeyringBackend = test + +# Directory where keys will be retrieved from and stored +KeyDirectory = /path/to/fpd/home +``` + +To see the complete list of configuration options, check the `fpd.conf` file. + +## 3. Starting the Finality Provider Daemon + +You can start the finality provider daemon using the following command: + +```bash +$ fpd --home /path/to/fpd/home +``` + +This will start the RPC server at the address specified in the configuration under +the `RawRPCListeners` field. A custom address can also be specified using +the `--rpclisten` flag. + +```bash +$ fpd --rpclisten 'localhost:8082' + +time="2023-11-26T16:37:00-05:00" level=info msg="successfully connected to a remote EOTS manager at 127.0.0.1:8081" +time="2023-11-26T16:37:00-05:00" level=info msg="Starting Finality Provider App" +time="2023-11-26T16:37:00-05:00" level=info msg="Version: 0.2.2-alpha commit=, build=production, logging=default, debuglevel=info" +time="2023-11-26T16:37:00-05:00" level=info msg="Starting RPC Server" +time="2023-11-26T16:37:00-05:00" level=info msg="RPC server listening on 127.0.0.1:8082" +time="2023-11-26T16:37:00-05:00" level=info msg="Finality Provider Daemon is fully active!" +``` + +All the available CLI options can be viewed using the `--help` flag. These options +can also be set in the configuration file. + +## 4. Create and Register a Finality Provider + +A finality provider named `my-finality-provider` can be created in the internal +storage ([bolt db](https://github.com/etcd-io/bbolt)) +through the `fpcli create-finality-provider` command. +This finality provider is associated with a BTC public key which +serves as its unique identifier and +a Babylon account to which staking rewards will be directed. + +```bash +$ fpcli create-finality-provider --key-name my-finality-provider \ + --chain-id chain-test --passphrase mypassphrase +{ + "btc_pk": "903fab42070622c551b188c983ce05a31febcab300244daf7d752aba2173e786" +} +``` + +The finality provider can be registered with Babylon through +the `register-finality-provider` command. +The output contains the hash of the Babylon +finality provider registration transaction. + +```bash +$ fpcli register-finality-provider \ + --btc-pk 903fab42070622c551b188c983ce05a31febcab300244daf7d752aba +{ + "tx_hash": "800AE5BBDADE974C5FA5BD44336C7F1A952FAB9F5F9B43F7D4850BA449319BAA" +} +``` + +To verify that your finality provider has been created, +we can check the finality providers that are managed by the daemon and their status. +These can be listed through the `fpcli list-finality-providers` command. +The `status` field can receive the following values: + +- `1`: The finality provider is active and has received no delegations yet +- `2`: The finality provider is active and has staked BTC tokens +- `3`: The finality provider is inactive (i.e. had staked BTC tokens in the past but not + anymore OR has been slashed) + +The `last_committed_height` field is the Babylon height up to which the finality provider +has committed EOTS randomness + +```bash +$ fpcli list-finality-providers +{ + "finality-providers": [ + ... + { + "babylon_pk_hex": "0251259b5c88d6ac79d86615220a8111ebb238047df0689357274f004fba3e5a89", + "btc_pk_hex": "903fab42070622c551b188c983ce05a31febcab300244daf7d752aba2173e786", + "last_committed_height": 265, + "status": 1 + } + ] +} +``` diff --git a/docs/finality-toolset.png b/docs/finality-toolset.png new file mode 100644 index 0000000000000000000000000000000000000000..c165ba2159ecc3fdfd42f7e6f520147c0090e05c GIT binary patch literal 75814 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¦ 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 Ti=}#kf|trIO{Fpgi=h7jm$!DQ literal 0 HcmV?d00001 diff --git a/docs/interacting-with-daemons.md b/docs/interacting-with-daemons.md deleted file mode 100644 index 923612a6..00000000 --- a/docs/interacting-with-daemons.md +++ /dev/null @@ -1,67 +0,0 @@ -# Interacting with daemons - -Before proceeding, make sure you have installed the required binaries, configured and -started both EOTS and the BTC validator daemon. - -- [Starting the EOTS daemon](./eotsd/startup-guide.md) -- [Starting the BTC validator daemon](./vald/startup-guide.md) - -The following guide will show how to interact with the daemons to create a BTC -validator and register it to Babylon. - -### 1. Creating a BTC validator - -A BTC Validator named `my_validator` can be created in the internal -storage ([bolt db](https://github.com/etcd-io/bbolt)) -through the `valcli daemon create-validator` command. This validator is associated -with a BTC public key, serving as its unique identifier, and a Babylon account to -which staking rewards will be directed. - -```bash -$ valcli daemon create-validator --key-name my-validator --chain-id chain-test ---passphrase mypassphrase -{ - "btc_pk": "903fab42070622c551b188c983ce05a31febcab300244daf7d752aba2173e786" -} -``` - -### 2. Registering a validator to Babylon - -The BTC validator can be registered with Babylon through the `register-validator` -command. The output contains the hash of the validator registration Babylon -transaction. - -```bash -$ valcli daemon register-validator --btc-pk 903fab42070622c551b188c983ce05a31febcab300244daf7d752aba -{ - "tx_hash": "800AE5BBDADE974C5FA5BD44336C7F1A952FAB9F5F9B43F7D4850BA449319BAA" -} -``` - -### 3. Querying the validators managed by the daemon - -The BTC validators that are managed by the daemon can be listed through the -`valcli daemon list-validators` command. The `status` field can receive the following -values: - -- `1`: The Validator is active and has received no delegations yet -- `2`: The Validator is active and has staked BTC tokens -- `3`: The Validator is inactive (i.e. had staked BTC tokens in the past but not - anymore OR has been slashed) - The `last_committed_height` field is the Babylon height up to which the Validator - has committed sufficient EOTS randomness - -```bash -$ valcli daemon list-validators -{ - "validators": [ - ... - { - "babylon_pk_hex": "0251259b5c88d6ac79d86615220a8111ebb238047df0689357274f004fba3e5a89", - "btc_pk_hex": "903fab42070622c551b188c983ce05a31febcab300244daf7d752aba2173e786", - "last_committed_height": 265, - "status": 1 - } - ] -} -``` diff --git a/docs/vald/vald-config.md b/docs/vald/vald-config.md deleted file mode 100644 index cb47f3c4..00000000 --- a/docs/vald/vald-config.md +++ /dev/null @@ -1,80 +0,0 @@ -## Prerequisites - -#### Create a Babylon keyring with funds - -The `vald` daemon requires a keyring with loaded funds to pay for the transactions. -These transactions include randomness commits and vote submissions. Follow this -guide [Getting Testnet Tokens](https://docs.babylonchain.io/docs/user-guides/btc-timestamping-testnet/getting-funds) -to create a keyring and request funds. - -## Validator daemon (`vald`) configuration - -The `vald` tools serves as a control plane for the Validator Daemon. -Below, instructions are provided for configuring the daemons. - -The `vald init` command initializes a home directory for the BTC -validator daemon. This directory is created in the default home location or in a -location specified by the `--home` flag. - -```bash -$ vald init --home /path/to/vald-home/ -``` - -After initialization, the home directory will have the following structure - -```bash -$ ls /path/to/vald-home/ - ├── vald.conf # Vald-specific configuration file. - ├── logs # Vald logs -``` - -If the `--home` flag is not specified, then the default home directory -will be used. For different operating systems, those are: - -- **MacOS** `~/Library/Application Support/Vald` -- **Linux** `~/.Vald` -- **Windows** `C:\Users\\AppData\Local\Vald` - -Below are some important parameters of the `vald.conf` file. - -**Note:** - -The `Key` parameter in the config below is the name of the key in the keyring to use -for signing transactions. Use the key name you created -in [Create a Babylon keyring with funds](#create-a-babylon-keyring-with-funds) - -```bash -# Address of the EOTS Daemon -EOTSManagerAddress = 127.0.0.1:15813 - -# Babylon specific parameters - -# Chain id of the chain (Babylon) -ChainID = chain-test - -# Address of the chain's RPC server (Babylon) -RPCAddr = http://localhost:26657 - -# Address of the chain's GRPC server (Babylon) -GRPCAddr = https://localhost:9090 - -# Name of the key in the keyring to use for signing transactions -Key = node0 - -# Type of keyring to use, -# supported backends - (os|file|kwallet|pass|test|memory) -# ref https://docs.cosmos.network/v0.46/run-node/keyring.html#available-backends-for-the-keyring -KeyringBackend = test - -# Directory to store validator keys in -KeyDirectory = /Users//Library/Application Support/Vald/data -``` - -To change the babylon rpc/grpc address, you can set - -```bash -RPCAddr = https://rpc.devnet.babylonchain.io:443 -GRPCAddr = https://grpc.devnet.babylonchain.io:443 -``` - -To see the complete list of configuration options, check the `vald.conf` file. diff --git a/docs/vald/vald-startup-guide.md b/docs/vald/vald-startup-guide.md deleted file mode 100644 index b8069f23..00000000 --- a/docs/vald/vald-startup-guide.md +++ /dev/null @@ -1,36 +0,0 @@ -## Prerequisites - -1. **Install Binaries:** - Follow the instructions in - the [installation section](../../README.md#2-installation) to install the required - binaries. - -2. **Validator Daemon Configuration:** - Follow the instructions in the [Validator Daemon Configuration](vald-config.md) - guide to configure the validator daemon. - -## Starting the Validator Daemon - -You can start the validator daemon using the following command: - -```bash -$ vald --home /path/to/vald/home -``` - -This will start the RPC server at the address specified in the configuration under -the `RawRPCListeners` field. A custom address can also be specified using -the `--rpclisten` flag. - -```bash -$ vald --rpclisten 'localhost:8082' - -time="2023-11-26T16:37:00-05:00" level=info msg="successfully connected to a remote EOTS manager at 127.0.0.1:8081" -time="2023-11-26T16:37:00-05:00" level=info msg="Starting ValidatorApp" -time="2023-11-26T16:37:00-05:00" level=info msg="Version: 0.2.2-alpha commit=, build=production, logging=default, debuglevel=info" -time="2023-11-26T16:37:00-05:00" level=info msg="Starting RPC Server" -time="2023-11-26T16:37:00-05:00" level=info msg="RPC server listening on 127.0.0.1:8082" -time="2023-11-26T16:37:00-05:00" level=info msg="BTC Validator Daemon is fully active!" -``` - -All the available cli options can be viewed using the `--help` flag. These options -can also be set in the configuration file.