---
# System prepended metadata

title: 'WIP: The ~~Missing~~ Collator Guide'

---

# WIP: The ~~Missing~~ Collator Guide

Guide on manually setting up a parachain with a collator using custom keys.

### Prerequisites
You should be comfortable with the following tutorial:
- https://docs.substrate.io/tutorials/build-a-blockchain/add-trusted-nodes

## Setup
Clone, checkout, build Polkadot:
```
git clone https://github.com/paritytech/polkadot
cd polkadot
git checkout release-v0.9.37
cargo b -r
```

Clone, checkout, build the parachain template:
```
git clone https://github.com/substrate-developer-hub/substrate-parachain-template
cd substrate-parachain-template
git checkout polkadot-v0.9.37
cargo b -r
```

Use Substrate's key command to generate a random secret phrase and Sr25519 keys (for BABE):
> You will need to clone and compile [Substrate](https://github.com/paritytech/substrate) for this:
```
./target/release/substrate key generate --scheme Sr25519 --password-interactive
```

Use the secret phrase to derive Ed25519 keys:
```
./target/release/substrate key inspect --password-interactive --scheme Ed25519 "pig giraffe ceiling enter weird liar orange decline behind total despair fly"
```
Make sure you have all the keys:
- https://substrate.stackexchange.com/questions/9019/the-given-validation-code-was-rejected-by-the-pvf-pre-checking-vote/9036#9036



## Notes that could be helpful to create this guide:

> The following was taken from a SE and may be useful to get us started with creating this doc:
```
I managed to:

set the aura key,
ext.session.setKeys to set public key
rpc.author.insertKeys to set private key
add it to the Invulnerables list and
let a new session start
I can see that session.queuedKeys storage has all of three collators' keys included but only the first two (already existing ones) are producing blocks.

- https://substrate.stackexchange.com/questions/4671/new-collators-not-producing-blocks

session.queuedKeys -> you have to wait for next session

```

---

```
polkadot 
  --name=${POD_NAME} 
  --base-path=/chain-data 
  --keystore-path=/keystore 
  --chain=${CHAIN} 
  --validator 
  --database=rocksdb 
  --pruning=1000 
  --prometheus-external 
  --prometheus-port 9615 
  --unsafe-rpc-external 
  --unsafe-ws-external 
  --rpc-cors=all 
  --rpc-methods=unsafe 
  --node-key $(cat /vault/secrets/nodekey-d-${POD_INDEX}) 
  --log="runtime=debug" 
  --log="parachain=debug" 
  --telemetry-url='wss://submit.telemetry.parity-stg.parity.io/submit/ 1' 
  --execution wasm 
  --public-addr=/ip4/${EXTERNAL_IP}/tcp/${RELAY_CHAIN_P2P_PORT} 
  --listen-addr=/ip4/0.0.0.0/tcp/${RELAY_CHAIN_P2P_PORT} 
  --listen-addr=/ip4/0.0.0.0/tcp/3033
```


```
I'm using the following command to run the parachain:

./target/release/parachain-template-node --collator \
  --chain raw-parachain-chainspec.json \
  --base-path /tmp/parachain/pubs-demo \
  --port 50333 \
  --ws-port 8855 \
  -- \
  --execution wasm \
  --chain rococo \
  --port 50343 \
  --ws-port 9988 \
  --sync warp
and in the chain spec I'm using rococo as the relay_chain and Live as the chainType.
```