Markdown linter (#1309)

* Add markdown linting

- add linter default rules
- adapt rules to current code
- fix the code for linting to pass
- add CI check

fix #1243

* Fix markdown for Substrate
* Fix tooling install
* Fix workflow
* Add documentation
* Remove trailing spaces
* Update .github/.markdownlint.yaml

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Fix mangled markdown/lists
* Fix captalization issues on known words
This commit is contained in:
Chevdor
2023-09-04 11:02:32 +02:00
committed by GitHub
parent 830fde2a60
commit a30092ab42
271 changed files with 6289 additions and 4450 deletions
+46 -21
View File
@@ -1,26 +1,33 @@
# Subkey
Subkey is a commandline utility included with Substrate. It allows generating and restoring keys for Substrate based chains such as Polkadot, Kusama and a growing number of parachains and Substrate based projects.
Subkey is a commandline utility included with Substrate. It allows generating and restoring keys for Substrate based
chains such as Polkadot, Kusama and a growing number of parachains and Substrate based projects.
`subkey` provides a few sub-commands to generate keys, check keys, sign messages, verify messages, etc...
You can see the full list of commands with `subkey --help`. Most commands have additional help available with for instance `subkey generate --help` for the `generate` command.
You can see the full list of commands with `subkey --help`. Most commands have additional help available with for
instance `subkey generate --help` for the `generate` command.
## Safety first
`subkey` does not need an internet connection to work. Indeed, for the best security, you should be using `subkey` on a machine that is **not connected** to the internet.
`subkey` does not need an internet connection to work. Indeed, for the best security, you should be using `subkey` on a
machine that is **not connected** to the internet.
`subkey` deals with **seeds** and **private keys**. Make sure to use `subkey` in a safe environment (ie. no one looking over your shoulder) and on a safe computer (ie. no one able to check your command history).
`subkey` deals with **seeds** and **private keys**. Make sure to use `subkey` in a safe environment (ie. no one looking
over your shoulder) and on a safe computer (ie. no one able to check your command history).
If you save any output of `subkey` into a file, make sure to apply proper permissions and/or delete the file as soon as possible.
If you save any output of `subkey` into a file, make sure to apply proper permissions and/or delete the file as soon as
possible.
## Usage
The following guide explains *some* of the `subkey` commands. For the full list and the most up to date documentation, make sure to check the integrated help with `subkey --help`.
The following guide explains *some* of the `subkey` commands. For the full list and the most up to date documentation,
make sure to check the integrated help with `subkey --help`.
### Install with Cargo
You will need to have the Substrate build dependencies to install Subkey. Use the following two commands to install the dependencies and Subkey, respectively:
You will need to have the Substrate build dependencies to install Subkey. Use the following two commands to install the
dependencies and Subkey, respectively:
Command:
@@ -58,19 +65,26 @@ Secret phrase `hotel forest jar hover kite book view eight stuff angle legend de
---
☠️ DO NT RE-USE ANY OF THE SEEDS AND SECRETS FROM THIS PAGE ☠️.
You can read more about security and risks in [SECURITY.md](./SECURITY.md) and in the [Polkadot Wiki](https://wiki.polkadot.network/docs/learn-account-generation).
You can read more about security and risks in [SECURITY.md](./SECURITY.md) and in the [Polkadot
Wiki](https://wiki.polkadot.network/docs/learn-account-generation).
---
The output above shows a **secret phrase** (also called **mnemonic phrase**) and the **secret seed** (also called **Private Key**). Those 2 secrets are the pieces of information you MUST keep safe and secret. All the other information below can be derived from those secrets.
The output above shows a **secret phrase** (also called **mnemonic phrase**) and the **secret seed** (also called
**Private Key**). Those 2 secrets are the pieces of information you MUST keep safe and secret. All the other information
below can be derived from those secrets.
The output above also show the **public key** and the **Account ID**. Those are the independant from the network where you will use the key.
The output above also show the **public key** and the **Account ID**. Those are the independant from the network where
you will use the key.
The **SS58 address** (or **Public Address**) of a new account is a reprensentation of the public keys of an account for a given network (for instance Kusama or Polkadot).
The **SS58 address** (or **Public Address**) of a new account is a reprensentation of the public keys of an account for
a given network (for instance Kusama or Polkadot).
You can read more about the [SS58 format in the Substrate Docs](https://docs.substrate.io/reference/address-formats/) and see the list of reserved prefixes in the [SS58 Registry](https://github.com/paritytech/ss58-registry).
You can read more about the [SS58 format in the Substrate Docs](https://docs.substrate.io/reference/address-formats/)
and see the list of reserved prefixes in the [SS58 Registry](https://github.com/paritytech/ss58-registry).
For instance, considering the previous seed `0xa05c75731970cc7868a2fb7cb577353cd5b31f62dccced92c441acd8fee0c92d` the SS58 addresses are:
For instance, considering the previous seed `0xa05c75731970cc7868a2fb7cb577353cd5b31f62dccced92c441acd8fee0c92d` the
SS58 addresses are:
- Polkadot: `16m4J167Mptt8UXL8aGSAi7U2FnPpPxZHPrCgMG9KJzVoFqM`
- Kusama: `JLNozAv8QeLSbLFwe2UvWeKKE4yvmDbfGxTuiYkF2BUMx4M`
@@ -129,13 +143,17 @@ Secret phrase `soup lyrics media market way crouch elevator put moon useful ques
SS58 Address: 5He5pZpc7AJ8evPuab37vJF6KkFDqq9uDq2WXh877Qw6iaVC
```
Using the `inspect` command (see more details below), we see that knowning only the **secret seed** is no longer sufficient to recover the account:
Using the `inspect` command (see more details below), we see that knowning only the **secret seed** is no longer
sufficient to recover the account:
```bash
subkey inspect "soup lyrics media market way crouch elevator put moon useful question wide"
```
which recovers the account `5Fe4sqj2K4fRuzEGvToi4KATqZfiDU7TqynjXG6PZE2dxwyh` and not `5He5pZpc7AJ8evPuab37vJF6KkFDqq9uDq2WXh877Qw6iaVC` as we expected. The additional user-defined **password** (`extra_secret` in our example) is now required to fully recover the account. Let's inspect the the previous mnemonic, this time passing also the required `password` as shown below:
which recovers the account `5Fe4sqj2K4fRuzEGvToi4KATqZfiDU7TqynjXG6PZE2dxwyh` and not
`5He5pZpc7AJ8evPuab37vJF6KkFDqq9uDq2WXh877Qw6iaVC` as we expected. The additional user-defined **password**
(`extra_secret` in our example) is now required to fully recover the account. Let's inspect the the previous mnemonic,
this time passing also the required `password` as shown below:
```bash
subkey inspect --password extra_secret "soup lyrics media market way crouch elevator put moon useful question wide"
@@ -161,7 +179,8 @@ subkey inspect --public < pubkey | address >
**NOTE**: While you will be able to recover the secret seed from the mnemonic, the opposite is not possible.
**NOTE**: For obvious reasons, the **secrets** cannot be recovered from passing **public data** such as `pubkey` or `address` as input.
**NOTE**: For obvious reasons, the **secrets** cannot be recovered from passing **public data** such as `pubkey` or
`address` as input.
command:
@@ -181,7 +200,8 @@ Secret Key URI `0xa05c75731970cc7868a2fb7cb577353cd5b31f62dccced92c441acd8fee0c9
### Signing
`subkey` allows using a **secret key** to sign a random message. The signature can then be verified by anyone using your **public key**:
`subkey` allows using a **secret key** to sign a random message. The signature can then be verified by anyone using your
**public key**:
```bash
echo -n <msg> | subkey sign --suri <seed|mnemonic>
@@ -201,11 +221,13 @@ output:
9201af3788ad4f986b800853c79da47155f2e08fde2070d866be4c27ab060466fea0623dc2b51f4392f4c61f25381a62848dd66c5d8217fae3858e469ebd668c
```
**NOTE**: Each run of the `sign` command will yield a different output. While each signature is different, they are all valid.
**NOTE**: Each run of the `sign` command will yield a different output. While each signature is different, they are all
valid.
### Verifying a signature
Given a message, a signature and an address, `subkey` can verify whether the **message** has been digitally signed by the holder (or one of the holders) of the **private key** for the given **address**:
Given a message, a signature and an address, `subkey` can verify whether the **message** has been digitally signed by
the holder (or one of the holders) of the **private key** for the given **address**:
```bash
echo -n <msg> | subkey verify <sig> <address>
@@ -234,7 +256,8 @@ Error: SignatureInvalid
### Using the vanity generator
You can use the included vanity generator to find a seed that provides an address which includes the desired pattern. Be warned, depending on your hardware this may take a while.
You can use the included vanity generator to find a seed that provides an address which includes the desired pattern. Be
warned, depending on your hardware this may take a while.
command:
@@ -256,7 +279,9 @@ Secret Key URI `0x8c9a73097f235b84021a446bc2826a00c690ea0be3e0d81a84931cb4146d66
`Bob` now got a nice address starting with their name: 1**bob**YxBPjZWRPbVo35aSwci1u5Zmq8P6J2jpa4kkudBZMqE.
**Note**: While `Bob`, having a short name (3 chars), got a result rather quickly, it will take much longer for `Alice` who has a much longer name, thus the chances to generate a random address that contains the chain `alice` will be much smaller.
**Note**: While `Bob`, having a short name (3 chars), got a result rather quickly, it will take much longer for `Alice`
who has a much longer name, thus the chances to generate a random address that contains the chain `alice` will be much
smaller.
## License