Skip to content

Commit

Permalink
Merge pull request #29 from Rocket-Rescue-Node/jms/daniel-refactor-merge
Browse files Browse the repository at this point in the history
Merge 3 PRs into master
  • Loading branch information
jshufro authored Dec 6, 2023
2 parents 1163055 + 6958f7a commit 518be33
Show file tree
Hide file tree
Showing 27 changed files with 1,568 additions and 60 deletions.
4 changes: 4 additions & 0 deletions docs/src/SUMMARY.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
# Summary

- [About](./about.md)
- [How To Connect](./how-to-connect/SUMMARY.md)
- [... As a Rocket Pool Node Operator](./how-to-connect/rp.md)
- [... As a Solo Staker](./how-to-connect/solo.md)
- [... and Disconnect](./how-to-connect/disconnect.md)
- [Donate](./donate.md)
- [FAQ](./faq.md)
- [Terms and Conditions](./tandc.md)
Expand Down
10 changes: 6 additions & 4 deletions docs/src/about.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
At its core, Rocket Rescue Node is a community-operated Ethereum node which can be used by node operators as an emergency fallback node during maintenance.

Rocket Rescue Node was first created to help [Rocket Pool](https://rocketpool.net/) Node Operators survive The Merge in September '22, but quickly proved its lasting utility.
In November '23, we launched solo validator support.
In December 2023, we launched solo validator support.


We have [received a pDAO grant](https://dao.rocketpool.net/t/january-2023-gmc-call-for-grant-applications-deadline-is-january-15th/1335/3) to help ensure its ongoing available to the community.
Expand All @@ -12,9 +12,10 @@ Under the hood, Rocket Rescue Node is actually five nodes to maximize Beacon Cli
For more information, see the [Tech Specs](./tech-specs/SUMMARY.md).

## Limits
Currently, a single node is restricted to using Rocket Rescue Node **four times per year, for 15 days at a time**.
Currently, a single Rocket Pool node is restricted to using Rocket Rescue Node **four times per year, for 15 days at a time**.
Solo stakers are restricted to using the Rocket Rescue Node **twice per year, for 10 days at a time**.
Re-requesting access before the window ends will **not** consume additional quota nor will it extend your access, **unless less than 2 days remain**.
Therefore, if you lose your access URL, you can rerequest access to retrieve it, up until 13 days after it was created.
Therefore, if you lose your access URL, you can rerequest access to retrieve it, up to 8 or 13 days after it was created.

## Maintainers
The rescue node is currently maintained by:
Expand All @@ -38,7 +39,8 @@ The rescue node is currently maintained by:
## Credits
- @poupas - prototype, rescue-api, design, infrastructure, security
- @Patches - rescue-proxy, credentials library, design, general administrative stuff
- @hanniabu.eth - rescue-ui website
- @hanniabu.eth - original rescue-ui website
- @dmccartney - new rescue-ui website with solo support
- @sleety.eth - logo design

## Open Source
Expand Down
24 changes: 12 additions & 12 deletions docs/src/faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@
<details>
<summary>How often can I use the Rescue Node?</summary>

Four times per year.
Rocket Pool Node operators can use it four times per year.
Solo stakers can use it twice per year.

Each token is valid for fifteen days.

Each token is valid for ten or fifteen days, respectively, for solo stakers and Rocket Pool node operators.
If you lose your token, you can simply repeat the request process to retrieve it.
This will not count against your usage limits unless less than 48 hours remain, in which case a new token valid for 15 additional days will be issued.
This will not count against your usage limits unless less than 48 hours remain, in which case a new token valid for 10/15 additional days will be issued.


</details>
Expand All @@ -23,7 +25,9 @@ Your Rescue Node URL, from `~/.rocketpool/override/validator.yml` will work as a
<details>
<summary>How can I check that I successfully connected to the Rescue Node?</summary>

Most validator clients will log a message containing the url.
As of Smartnode v1.11.1, `rocketpool node status` will contain a message telling you that you are using the Rescue Node, and how much longer you have access.

Addtionally, most validator clients will log a message containing the url.
You can see if it connected by running:
```
docker logs rocketpool_validator |& grep rescuenode.com
Expand All @@ -39,14 +43,10 @@ Follow your validators on [beaconcha.in](https://beaconcha.in/) to verify that t
</details>

<details>
<summary>How can I disconnect from the Rescue Node?</summary>

Edit your `~/.rocketpool/override/validator.yml` file again, and remove all the lines you added when you connected- normally everything after the `x-rp-comment` line.
Next, run `rocketpool service start`.
<summary>Why do I have to submit a signed message to connect?</summary>

If you're having trouble, the following commands will also reset the file:
```
rm ~/.rocketpool/override/validator.yml; rocketpool service install -d; rocketpool service start
```
The signed message allows us to enforce our quotas.
We don't save it, or broadcast it, or use it for any other purpose.

</details>

9 changes: 9 additions & 0 deletions docs/src/how-to-connect/SUMMARY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@

# Connecting to the Rescue Node

To use the Rescue Node, you need to first request a credential.
You can do this at [https://rescuenode.com](https://rescuenode.com).

If you're a **Rocket Pool Node Operator**, sign the message as instructed with smartnode and proceed to [this section](rp.md).

If you're a **Solo Staker**, connect the your withdrawal wallet to the site and submit your signed proof of custody before proceeding to [this section](solo.md).
38 changes: 38 additions & 0 deletions docs/src/how-to-connect/disconnect.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# How To Disconnect

Disconnecting from the Rescue Node is as simple as undoing the changes you did when you originally connected.

## Rocket Pool Node Operators

If you're using the Smartnode Addon, simply uncheck the `Enabled` box in `rocketpool service config`.
Save and exit, and restart the containers when prompted.

If you connected manually, follow these steps:

Revert `~/.rocketpool/override/validator.yml` to its original state from your backup:
```
cp ~/.rocketpool/override/validator.yml.bak ~/.rocketpool/override/validator.yml
```

Save, exit, and run `rocketpool service start`.

<div class="warning">

If you didn't create a backup or it isn't disconnecting you, you can replace the file with these commands:
```
rocketpool service stop
rm ~/.rocketpool/override/validator.yml
rocketpool service install -d
rocketpool service start
```

</div>

## Solo Stakers

Docker Compose and Systemd users should review the [Connection Guide](solo.md) and restore their backed up configs to disconnect.
Don't forget to `sudo systemctl daemon-reload` and restart, or to `docker compose up -d` to restart.

eth-docker users can use `git diff` to check which files have been modified, and `git restore` to restore them to their original states.
If you modified your `.env` file, edit it and restore `CL_NODE=` variable to the value before you connected (default is `CL_NODE=http://consensus:5052).
Run `./ethd update` and `./ethd up` to apply the changes.
Binary file added docs/src/how-to-connect/nodestatus.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
135 changes: 135 additions & 0 deletions docs/src/how-to-connect/rp.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
# How To Connect As a Rocket Pool Node Operator

After following the steps from the [previous section](SUMMARY.md), the website will present you with the easiest way to connect.

As of Smartnode v1.11.1, this is to use the Rescue Node Addon in the Addons section of `rocketpool service config`.

Enable the addon and paste your username and password from the website.
Press `<enter>` after pasting, or your changes won't be saved.

Save and exit.
Restart the mentioned containers when prompted.

You can check you completed the process by running `rocketpool node status`. At the bottom of the output you should see a message like this:

![Node Status Output](./nodestatus.png)

---

## Manually Connecting (without the Addon)

If you haven't upgraded to v1.11.1 yet, or want to connect the old way, follow these steps.

First, back up your `~/.rocketpool/override/validator.yml` file using this command:
```
cp ~/.rocketpool/override/validator.yml ~/.rocketpool/override/validator.yml.bak
```

Modify your `~/.rocketpool/override/validator.yml` file using a text editor, e.g. `nano`:
```
nano ~/.rocketpool/override/validator.yml
```

<div class="warning">

This file is whitespace sensitive!

You must use **spaces** instead of tabs, and the alignment must match the example.

</div>

Edit the file to look **exactly** as this example does, but with your credentials instead of `USERNAME` / `PASSWORD`, and with your client name instead of `CLIENT`.

## Examples

### Example for Most Clients
<div class="warning">

This example is for:

- lighthouse
- lodestar
- nimbus
- teku

Prysm users should go to [the following example](#example-for-prysm).

</div>

```yaml
# Enter your own customizations for the validator container here. These changes will persist after upgrades, so you only need to do them once.
#
# See https://docs.docker.com/compose/extends/#adding-and-overriding-configuration
# for more information on overriding specific parameters of docker-compose files.

version: "3.7"
services:
validator:
x-rp-comment: Add your customizations below this line
environment:
- "CC_API_ENDPOINT=https://USERNAME:[email protected]"
```
### Example for Prysm
```yaml
# Enter your own customizations for the validator container here. These changes will persist after upgrades, so you only need to do them once.
#
# See https://docs.docker.com/compose/extends/#adding-and-overriding-configuration
# for more information on overriding specific parameters of docker-compose files.

version: "3.7"
services:
validator:
x-rp-comment: Add your customizations below this line
environment:
- "CC_RPC_ENDPOINT=prysm-grpc.rescuenode.com:443"
- "VC_ADDITIONAL_FLAGS=--grpc-headers=rprnauth=USERNAME:PASSWORD --tls-cert=/etc/ssl/certs/ca-certificates.crt"
```
## Applying the Changes
After modifying the file, save and exit.
Run `rocketpool service start` to apply the changes.

You can monitor the validator for errors using `rocketpool service logs validator`.
See the [FAQ](../faq.md) for more details on how to verify the changes were effective.

<div class="warning">

Once connected, **do not forget** to [disconnect](disconnect.md) before 15 days, or to request a new credential on the 14th day.

Failure to do so will result in **missed attestations and other duties**.

</div>

---

## Advanced Usage

<div class="warning">

Most users should not integrate this way.

These steps are not required if you followed the above guide.

</div>

The Rescue Node can also function as a fallback for all clients.
Users who want to be able to submit transactions (i.e., to claim rewards or launch minipools) while their primary EC is syncing or undergoing maintenance can use this method.


Rescue Node only provides a Consensus Client API- not an Execution Client API.
Thus, in order to use it as a fallback, you must bring your own alternative Execution Layer API, such as an [Infura Web3 URL](https://infura.io).

To set this up, run `rocketpool service config` and go to `Fallback Clients`.
Check `Use Fallback Clients`.

1. Insert the `Execution Client URL` (e.g, the Infura Web3 URL).
1. In the `Beacon Node (HTTP) URL` box, insert `https://USERNAME:[email protected]`, substituting USERNAME/PASSWORD/CLIENT.
1. **If using Prysm** follow these additional steps:
- In the `Beacon Node JSON-RPC URL` box insert `prysm-grpc.rescuenode.com:443`
- Go back to the main config and edit your `Consensus Client Settings`->`Additional Validator Client Flags` to contain `--grpc-headers=rprnauth=USERNAME:PASSWORD --tls-cert=/etc/ssl/certs/ca-certificates.crt`, substituting your USERNAME/PASSWORD.

As usual, changes are effective after running `rocketpool service start`.
Loading

0 comments on commit 518be33

Please sign in to comment.