Skip to content

Commit

Permalink
Addressing comments from review
Browse files Browse the repository at this point in the history
  • Loading branch information
wilwade committed Mar 13, 2024
1 parent 37d17de commit 7d44e09
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 39 deletions.
67 changes: 34 additions & 33 deletions pages/Networks/Collator.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,21 +14,19 @@ Collators generally follow the same expectations outlined in [Polkadot's referen
### Suggested Minimums

- **CPU**
- AMD64/x86-64 compatible;
- Intel Ice Lake, or newer (Xeon or Core series); AMD Zen3, or newer (EPYC or Ryzen);
- 4 physical cores @ 3.4GHz;
- Simultaneous multithreading disabled (Hyper-Threading on Intel, SMT on AMD);
- ARM64 compatible
- ARM64 binaries are available, we do not yet have specific CPU suggestions.
- AMD64/x86-64 compatible
- Intel Ice Lake, or newer (Xeon or Core series); AMD Zen3, or newer (EPYC or Ryzen)
- 4 physical cores @ 3.4GHz.
- Simultaneous multithreading disabled (Hyper-Threading on Intel, SMT on AMD)
- **Storage**
- An NVMe SSD of 1 TB
- NVMe SSD of 1 TB
- In general, the latency is more important than the throughput.
- **Memory**
- 32GB DDR4 ECC.
- 32GB DDR4 ECC
- **System**
- Linux Kernel 5.16 or newer.
- Linux Kernel 5.16 or newer
- **Network**
- The minimum symmetric networking speed is set to 500 Mbit/s (= 62.5 MB/s).
- The minimum symmetric networking speed is set to 500 Mbit/s (= 62.5 MB/s)
- **Clock Synchronization**
- The system clock must be within a margin of the other collators.
- It is suggested to use [NTP](https://en.wikipedia.org/wiki/Network_Time_Protocol) or another similar method of maintaining clock synchronization.
Expand All @@ -46,7 +44,7 @@ For reproducibility, we use Amazon's [`c6i.4xlarge`](https://aws.amazon.com/ec2/
- **Memory**
- 32GB
- **System**
- Linux Kernel 5.16 or newer.
- Linux Kernel 5.16 or newer

## Key Types

Expand All @@ -55,47 +53,50 @@ There are five keys that matter for a Collator Node:
1. **The Networking Key**

- Can be auto-generated for most nodes.
- Can be set via CLI with `--node-key` or `--node-key-file`, usually for public bootnodes
- Can be set via CLI with `--node-key` or `--node-key-file`, usually for public bootnodes.
- Remember that `--node-key-file` reads the file bytes, so do not have trailing new lines or other whitespace.
- Used by `libp2p` for secure node communications and is the public key at the end of the node multiaddr.

2. **The Controller Account Key** (Sometimes referred to as the `Account ID`)

- Account used to control the Collator
- Account used to control the Collator.
- For an invulnerable Collator, this is the key that must be set by governance as "invulnerable".

3. **The Invulnerable Address Key**

- The address of the controller account
- The address of the controller account.
- Must be added to the invulnerables using `collatorSelection.setInvulnerables`.

4. **The Stash Account Key** (Sometimes referred to as the `Validator ID`)

- Not used with Collator selection
- Should be the same as the controller account
- Not used with Collator selection.
- Should be the same as the controller account.

5. **The Session Aura Key**

- "Owned" by the controller account
- Does the actual work of signing blocks
- "Owned" by the controller account.
- Does the actual work of signing blocks.
- Can be rotated by generating a new key on the node with `author_rotateKey`, then calling `session.setKeys` from the controller account.

## Collator Setup

<div class="warning">
Unauthorized access to Collator Node HTTP and WebSocket RPCs MUST be restricted for security.
</div>

1. Create a new full node and match or exceed the [collator requirements](#requirements).
1. [Download the latest release](https://github.com/LibertyDSNP/frequency/releases) (or use [docker](https://hub.docker.com/u/frequencychain)).
1. Remember that the Collator Node MUST be able to peer with others, but unauthorized access to HTTP and WebSocket RPCs MUST be restricted.

- Required flags
- `--collator` Telling your node to run as a collator
- `--collator` Telling your node to run as a collator.
- Suggested Flags
- `--base-path` Change where the data is stored
- `--name` Name your node for easy discovery on https://telemetry.polkadot.io and https://telemetry.frequency.xyz
- `--base-path` Change where the data is stored.
- `--name` Name your node for easy discovery on https://telemetry.polkadot.io and https://telemetry.frequency.xyz.
- Situational Flags
- Need to run `author_rotateKeys` or other protected calls, but have no access to call from localhost? **Remember: RPC Port MUST be protected from the public internet!**
- `--rpc-external` External RPC calls accepted
- `--rpc-methods=Unsafe` System commands like `author_rotateKeys` accepted externally
- `--rpc-port=9944` RPC port, 9944 is default
- Need to run `author_rotateKeys` or other protected calls, but have no access to call from localhost? Remember: RPC Port MUST be protected from the public internet.
- `--rpc-external` External RPC calls accepted.
- `--rpc-methods=Unsafe` System commands like `author_rotateKeys` accepted externally.
- `--rpc-port=9944` RPC port, 9944 is default.
- Example:

```
Expand All @@ -115,14 +116,14 @@ There are five keys that matter for a Collator Node:

### Controller & Session Key Setup

1. Generate a new Controller Account Aura Key: `subkey generate`
- (Optional) Add password `subkey generate --password [password here]`
1. Generate a new Session Key
1. Generate a new Controller Account Aura Key: `subkey generate`.
- (Optional) Add password `subkey generate --password [password here]`.
1. Generate a new Session Key.
- Node Generated
- Use `author_rotateKey` (localhost or "unsafe" RPC required)
- Returns the new public key
- Manually Generated via `subkey generate`
- Add to the node with `author_insertKey` (localhost or "unsafe" RPC required)
- Use `author_rotateKey` (localhost or "unsafe" RPC required).
- Returns the new public key.
- Manually Generated via `subkey generate`.
- Add to the node with `author_insertKey` (localhost or "unsafe" RPC required).
1. Register a Session Key
- Submit the Extrinsic: `session.setKeys`
- Sender: The Controller Account
Expand Down
2 changes: 1 addition & 1 deletion pages/Networks/Decentralization.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,5 +25,5 @@ This phase will test the incentivization as Frequency progresses to fully public

## Public Collators

- Collators are selected based on bond, governance support, and uptime that will be developed.
- Collators are selected based on bond, governance support, and uptime that will be developed in the future.
- Progression into this phase depends on the safety and security of the network.
10 changes: 5 additions & 5 deletions pages/Networks/Node.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ Releases are maintained on Frequency's [GitHub Repository](https://github.com/Li

## The Embedded Relay Chain Node

The Frequency Node has a built in relay chain node to support checking block validation.
To configure the embedded relay chain node at the command line place a `--` between the Frequency node options and the relay chain node options: `frequency [OPTIONS] [-- <RELAY_CHAIN_ARGS>...]`
The Frequency Node has a built in Relay Chain node to support checking block validation.
To configure the embedded Relay Chain node at the command line place a `--` between the Frequency node options and the Relay Chain node options: `frequency [OPTIONS] [-- <RELAY_CHAIN_ARGS>...]`

## Additional Resources

Expand Down Expand Up @@ -59,7 +59,7 @@ Please read over not just the notes here, but also the details of all the comman
## RPC Node

If you are running an RPC node there are several options to be aware of.
These are NOT all the options (see `--help`), but are the important ones.
These are NOT the only options (see `--help`), but are the important ones.

See also:

Expand All @@ -68,8 +68,8 @@ See also:

### Relay Chain Options

Each node also has a Relay Chain node as well and these options will often apply with different defaults to the Relay Chain.
The docker images do not pass through the ports for the relay chain, but if you are running using the binary, the options are available.
Each node also has a Relay Chain node and these options will often apply with different defaults to the Relay Chain.
The docker images do not pass through the ports for the Relay Chain, but if you are running using the binary, the options are available.

`frequency <parachain-args> -- <relay-chain-args>`

Expand Down
3 changes: 3 additions & 0 deletions theme/css/general.css
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,9 @@ blockquote {
margin: 20px;
padding: 0 20px;
border-inline-start: 2px solid var(--warning-border);
/* Increase the strength of the warning */
font-weight: bold;
border-bottom: 2px solid var(--warning-border);
}

.warning:before {
Expand Down

0 comments on commit 7d44e09

Please sign in to comment.