From 7aa2ea2690a6092d60c9f43e3566160036102381 Mon Sep 17 00:00:00 2001
From: Sebastian Kunert <skunert49@gmail.com>
Date: Tue, 14 Mar 2023 15:56:32 +0100
Subject: [PATCH] README: Document usage of RPC node (#2313)

* Update readme

* Improve

* Apply suggestions from code review

Co-authored-by: Koute <koute@users.noreply.github.com>

* Quote urls

* Apply suggestions from code review

Co-authored-by: Michal Kucharczyk <1728078+michalkucharczyk@users.noreply.github.com>

---------

Co-authored-by: Koute <koute@users.noreply.github.com>
Co-authored-by: Michal Kucharczyk <1728078+michalkucharczyk@users.noreply.github.com>
---
 cumulus/README.md | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/cumulus/README.md b/cumulus/README.md
index b78d7fdd2b6..df95e3d9273 100644
--- a/cumulus/README.md
+++ b/cumulus/README.md
@@ -37,6 +37,39 @@ and treat as best.
 A Polkadot [collator](https://wiki.polkadot.network/docs/en/learn-collator) for the parachain is
 implemented by the `polkadot-parachain` binary (previously called `polkadot-collator`).
 
+### Relaychain Interaction
+To operate a parachain node a connection to the corresponding relaychain is necessary. This can be achieved in one of two ways:
+1. Run a full relaychain node within the parachain node (default)
+2. Connect to an external relaychain node via websocket RPC
+
+#### In-process Relaychain Node
+If an external relaychain node is not specified (default behavior) then a full relaychain node will be spawned within the same process.
+
+This node has all of the typical components of a normal Polkadot node, and will have to fully sync with the relaychain to work.
+
+##### Example command
+```shell=
+#                                                          In-process node with this chainspec is spawned
+#                                                                                |
+#                                                                    |-----------------------|
+polkadot-parachain --chain parachain-chainspec.json --tmp -- --chain relaychain-chainspec.json
+```
+
+#### External Relaychain Node
+An external relaychain node can be connected via websocket RPC by using the  `--relay-chain-rpc-urls` command line argument. This option accepts one or more space-separated websocket URLs to a full relay chain node. By default only the first URL will be used, with the rest acting as a backup in case the connection to the first node will be lost.
+
+Parachain nodes using this feature won't have to fully sync with the relay chain to work, so in general they will use significantly less system resources.
+
+**Note:** At this time any parachain nodes using this feature will still spawn a very cut down relaychain node in-process, hence even though they lack the majority of normal Polkadot subsystems they will still need to be able to directly connect to the relay chain network.
+##### Example command
+```shell=
+#                                                                                     Perform runtime calls and fetch                                                     Still required since we connect
+#                                                                                     data via RPC from here.                      Backup node                            to the relaychain network
+#                                                                                               |                                       |                                           |
+#                                                                                |---------------------------------| |----------------------------------------|            |-----------------------|
+polkadot-parachain --chain parachain-chainspec.json --tmp --relay-chain-rpc-urls "ws://relaychain-rpc-endpoint:9944" "ws://relaychain-rpc-endpoint-backup:9944" -- --chain relaychain-chainspec.json
+```
+
 ## Installation and Setup
 Before building Cumulus SDK based nodes / runtimes prepare your environment by following Substrate [installation instructions](https://docs.substrate.io/main-docs/install/).
 
-- 
GitLab