Guide to RocketPool Staking on Ethereum 2.0 For Existing Solo Stakers

23 min readJul 7, 2022

If you are an Ethereum Solo Staker who’s already got an active validator staking 32 ETH on Beacon Chain and looking for a step-by-step guide to use the same machine, execution and consensus client to setup a Rocket Pool minipool with 16 ETH, you are at the right place and hope this guide helps you. In case you are looking for a step-by-step guide to set up solo staking, you can use Somer Esat’s excellent guide for the same. I used this as a reference to set up mine in November 2020.

Prerequisites & Assumptions

This guide is only for Solo Stakers who already have a validator running on the beacon chain using the below configuration and are looking to create a Rocket Pool minipool on the same machine.

  • Ubuntu v20.04 (LTS) amd64 or newer installed
  • Execution Layer Client (Geth for example)
  • Consensus Layer Client (Teku or Prysm or Lighthouse. Others are not compatible with Rocket Pool for Hybrid Mode yet)

Also, assuming you have the following:

  • 16 ETH to deposit and create a new minipool
  • 1.6 ETH (10% of your ETH deposit) worth of RPL tokens. To be on the safe side, having a little bit of a buffer would be helpful. If RPL loses value against ETH and falls below the 10% threshold, you will not be able to claim the RPL rewards until it goes back above 10% threshold or you add more RPL to bring it above it. Please remember that unclaimed rewards before next checkpoint (28 days) will be forfeited. Beacon chain validator rewards and are not affected by this
  • An extra 0.03 ETH to 0.1 ETH for transaction fees. This will vary depending on the network’s gas situation when you set up the minipool. I use Etherscan blocks link to check the Base Fee for the latest few blocks to get an idea. Watchtheburn or are a few other options to check Base Fee as well. For instance, if the base fee is around 7 gwei, it will only cost 0.03 ETH in total fees to set this whole thing up. If it’s around 70 gwei, then you are looking at paying 0.3 ETH in fees. If gas fees are high when you are reading this, you can still complete 80% of the steps in this guide while you wait for a favorable fee environment to complete the rest. So you can’t go wrong in starting this anytime and prepare your staking machine!

Acknowledgements & Support

This guide is based on the information gathered from Rocket Pool Guides and many other online resources. Special thanks to Rocket Pool Discord members who were extremely helpful in answering questions and offering help. Please join the Rocket Pool Discord if you need any help. Shout out to r/ethfinance and r/ethstaker for helping me gain knowledge on Ethereum!


This article is for information purpose only. This is neither a financial nor a professional advise. The guide does not guarantee accuracy of information and is not responsible for damages or losses incurred by users following this article. Please read the Full Disclaimer available in the bottom of this page.


Please read this article for a quick introduction to Rocket Pool and how it works. At a high level, the following are the steps you will have to follow to accomplish creating a Rocket Pool node and minipool.

  1. Install Rocket Pool
  2. Configure Rocket Pool
  3. Configure Execution Layer Client
  4. Configure Consensus Layer Client
  5. Start Rocket Pool and Verify status
  6. Wallet Creation For Rocket Pool Node & Setting Withdrawal Address
  7. Deposit RPL, Ethereum and Create a minipool

1. Install Rocket Pool

The Rocket Pool Smartnode stack offers the ability to configure it based on various needs. For the sake of simplicity and to keep the focus on the assumption that you are building this on an existing Solo Staking machine, we are going to follow the Hybrid Configuration with External Clients option. In this mode, Rocket Pool will deploy Docker containers for its own processes and for a Validator client it manages, but will ignore the Execution client and Beacon Node containers for any external clients you already run and maintain. Since Rocket Pool will be creating and maintaining new validator keys for each of your node’s minipools, it is important that it runs its own Validator client.

Login to your Solo Staking machine and start executing the commands in the following order. Each #Step should be successful before you proceed to the next one.

#Step 1 — This will create a new folder:

mkdir -p ~/bin

#Step 2 — Identify the CPU architecture for your machine:

uname -m

The output of this command will print your architecture. Note that x86_64 is the same as x64 and amd64. Note that aarch64 is the same as arm64.

#Step 3 — Retrieve the Rocket Pool application from github. Execute Option A or B depending your CPU architecture

Option A — For x64 systems (most normal computers):

wget -O ~/bin/rocketpool


Option B — For arm64 systems, such as the Raspberry Pi:

wget -O ~/bin/rocketpool

#Step 4 — Make it a executable, so it has permissions to run:

chmod +x ~/bin/rocketpool

#Step 5 — Log out and Log back In. You need to do this because the path that you saved the CLI to (~/bin) may not be in your system's PATH variable (the list of places your system searches for executables) yet. Logging out and back in will put it there.

#Step 6 — Test the --version of Rocket Pool

rocketpool --version

You should see an output like this:

#Step 7 — Let’s install Rocket Pool. This will prepare your system with Docker, and load the Smartnode files so they’re ready to go.

rocketpool service install

You should see an output similar to the one below. It might take a minute or two to complete the installation depending on your system configuration.

Note: If you are doing this on a raspberry pi, you will have to make additional configuration changes to store the on-chain data to the external SSD and not on the MicroSD card. Please refer to “Configuring Docker’s Storage Location” section in Rocket Pool’s native guide, complete just those steps and come back to the next steps on this guide.

2. Configure Rocket Pool

Let’s configure the Rocket Pool settings to point to your EL and CL clients that you already have in the machine.

#Step 8 — We will be using the Wizard UI to accomplish the same:

rocketpool service config

Screen 1 — When running it for the first time, you will see a screen that looks like this. You will be able to navigate using Arrow Keys, Tab, Shift-Tab, Escape, etc. Select “Next” and press the Enter key.

Screen 2 — Select “Ethereum Mainnet” and press the Enter key.

Screen 3 — Select “Externally Managed” and press the Enter key. This option helps you configure Rocket Pool to communicate with your already available Execution Layer client!

Screen 4 — Enter the HTTP URL and Websocket URL for your Execution Client. This might vary between clients. The most common client that is used is Goethereum (aka Geth). The “HTTP URL” will be and “Websocket URL” will be

Note: Replace with your staking machine’s local network IP address.

After entering the values, select “Next” and press the Enter key.

Screen 5 — Pick your fallback option for your Execution Client. Basically, if your primary EL (geth) crashes and stops working, the validator will look for the fallback option. As of now, Pocket or Infura are good options. But remember that it will not work after “The Merge”. You will have to use an External EL running in another machine (which is typically unavailable for most) or continue without a fallback option. But for now (until “The Merge”), Pocket or Infura should work just fine. Pocket does not need any account unlike Infura. So you could select Pocket and skip the next few steps and go to Screen 6 step or select “Infura” and press the Enter key.

You will see a warning that Infura will be depreciated and removed soon. Select “Keep Infura” and press the Enter key.

Now, visit on any pc/mobile browser, setup a new account (free version), create a new project, select the product as “Ethereum”, give the project a random name and use the “PROJECT ID” here. Make sure to copy “PROJECT ID” and not “PROJECT SECRET”. Paste it in the “Project ID” box in the screen below, select “Next” and press the Enter key

Screen 6 — Select “Externally Managed” and press the Enter key. This option helps you configure Rocket Pool to communicate with your already available Consensus Layer client!

Screen 7 — As mentioned in the beginning of this article, only Lighthouse or Prysm or Teku are compatible with Rocket Pool in Hybrid mode. So assuming, you have one of these, select the appropriate one and press the Enter key. I have selected Teku for this example.

Per Teku’s documentation, the default REST API listening port is 5051. So the HTTP URL field will be

Note: Replace with your staking machine’s local network IP address.

After entering the value, select “Next” and press the Enter key.

Enter a “Custom Graffiti” for your validator. It can be anything with 16 characters or under. It will be included in the blocks your validator will propose (here is an example block that has a Graffiti included).

Screen 8 — This option allows you to choose if you want to use the Smartnode’s metrics monitoring system. It also enables Grafana, which is a nice little tool to monitor your machine and the validator remotely from your home PC or a mobile phone. You can either select “No” for now and change it later, or you can select “Yes” and then setup Grafana later using the instructions available here. Either way, select one of the options and press the Enter key.

Screen 9 — Select “Save and Exit” and press the Enter key

You should be out of the Rocket Pool Config Wizard and should see a prompt on your Command Line Interface asking if you want to start the Smartnode. Type “n” and press the Enter key

#Step 9 — Let’s go back to the config screen:

rocketpool service config

Now you will be taken to the “Categories” screen as seen below. From here on, this is the default screen you will land on when you use rocketpool service config command. Select “Smartnode and TX Fees” and press the Enter key

Categories Screen

You will now be in the “Smartnode and TX Fees” screen — I’d recommend that you set the “Manual Max Fee” to 0. Later in this process, you will be submitting transactions using rocketpool command directly to the network from your staking machine. By setting the Manual Max Fee to 0, you will be prompted to enter the Max Fee you want to set for your transaction when you submit. Next, set the “Priority Fee” field to 1.51. Set the “RPL Claim Gas Threshold” to something you are comfortable paying as fees to claim the extra RPL rewards you will receive for staking with RPL. Set the “Minipool Stake Gas Threshold” to 25 (I will explain this later in this guide). Press Escape key to go back to the Categories screen.

Smartnode and TX Fees Screen

Now, Select “Review Changes and Save” option and press the Enter key

Categories Screen

You will now be taken to the “Review Settings” screen. Select “Save Settings” and press the Enter key.

You should be out of the Rocket Pool Configuration and should see a prompt on your Command Line Interface asking if you want to start the Smartnode. Type “n” and press the Enter key

Alright, you have configured the important settings within Rocket Pool. Great job so far! We can now move on to configuring the Execution Layer Client.

3. Configure Execution Layer Client

Depending on how you setup your execution client initially on your solo staking machine, you will have to make sure to set certain parameters when you start the client. In this example, let’s review how to edit geth parameters that is setup as a systemd service to allow Rocket Pool to communicate.

#Step 10 — Let’s edit the systemd service config file for geth

sudo nano /etc/systemd/system/geth.service

#Step 11 — The content of the geth.service file may vary between different machines based on your configuration. Here is an example.

In the screenshot above, the 3rd line from the bottom has the ExecStart=geth command followed by --http --http-addr “” --ws --ws.addr "" parameters which you will have to add if you do not have them already. If you have them all already, exit the editor (Ctrl+X) and skip the remainder of this section and move to the next one — “4. Configure Consensus Layer Client”.

--http and --ws will enable the HTTP-RPC and WS-RPC server for geth respectively. --http.add "" and --ws.add "" will allow access to RPC from other containers/hosts using HTTP and WS end-points respectively. Although it does allow external connections, you should have firewall rules in place to deny connections from unknown sources and protect yourself. If you haven’t configured firewall rules, I highly recommend using Ubuntu's firewall programufw to configure that. Please refer to the section “Configure the Firewall” in Somer’s guide here.

Once you modify, use Ctrl+O Key to save, then Ctrl+X Key to exit.

#Step 12 — Let’s reload the systemd manager configuration.

sudo systemctl daemon-reload

#Step 13 — Let’s restart geth so the changes go into effect.

sudo systemctl restart geth

#Step 14 — Wait for a few minutes and make sure geth starts syncing correctly by checking its latest logs.

sudo journalctl -fu geth.service

You should see something like this:

If you are seeing logs similar to the screenshot above, then Ctrl + C to exit and proceed with the next section. If geth doesn’t start correctly or if it throws up errors you haven’t seen before, then please go back and verify if you set the parameters correctly and restart geth.

4. Configure Consensus Layer Client

Similar to the Execution Layer Client, you will have to make sure certain parameters are set for the Consensus Layer Client as well. Teku for example, will require the following parameters so Rocket Pool can interact with it to submit attestations.

--rest-api-enabled=true --rest-api-docs-enabled=true --rest-api-interface= --rest-api-host-allowlist=

Note: Replace with your staking machine’s local network IP address.

#Step 15 — Let’s edit the systemd service config file for teku.

sudo nano /etc/systemd/system/teku.service

Take a look at the ExecStart=/usr/local/bin/teku/bin/teku line and review the parameters that are in it. If it has all the rest-api parameters listed above, then you don’t have any changes to make and can exit (Ctrl+X) the editor, skip the remainder of this section and move to the next one — “5. Start Rocket Pool and Verify status”. If not, add the parameters that are missing, use Ctrl+O Key to save, then Ctrl+X Key to exit.

#Step 16 — Let’s reload the systemd manager configuration.

sudo systemctl daemon-reload

#Step 17 — Let’s restart teku so the changes go into effect.

sudo systemctl restart teku

#Step 18 — Check teku’s latest logs and verify if things look good

sudo journalctl -fu teku.service

You should see something like this

If the logs look similar to the screenshot above, then Ctrl+C to exit and proceed with the next step. If teku doesn’t start correctly or if it throws up errors you haven’t seen before, then please go back and verify if you’ve added the new parameters correctly and restart teku.

5. Start Rocket Pool and Verify status

Alright, let’s get into the fun part, now. To execute and see the results!

#Step 19 — If you are connected to your staking machine on a SSH session, please logout and login. Once you are in, restart docker first before starting Rocket Pool.

systemctl restart docker

#Step 20—Now wait for a minute and let’s start Rocket Pool after that!

rocketpool service start

You should see the output as below:

#Step 21— Also, check for the docker status.

docker ps

You should see several container IDs as below:

#Step 22 — Let’s now check the Rocket Pool node sync status.

rocketpool node sync

If you see that all 3 clients are fully synced as see in the screenshot below — congratulations, you’ve successfully completed configuring the core components!

Here are some handy commands to check status, logs of different parts and pieces of Rocket Pool

rocketpool node sync
rocketpool node status
rocketpool service status
rocketpool service stats
rocketpool service logs validator
rocketpool service logs node
rocketpool service logs watchtower
rocketpool service version

If things look good, you have got the configuration taken care of so Rocket Pool can communicate with your existing clients! Skip the remainder of this section and move to “6. Wallet Creation For Rocket Pool Node & Setting Withdrawal Address” section

If you see that the rocketpool node syncgets stuck with just the below and not return a status for any of the clients, you might have ufw firewall enabled that is stopping rocket pool docker to communicate with them.

#Step 23 — You can verify that using the below command. If the status returns as being active then that confirms ufw is enabled on your machine.

sudo ufw status

#Step 24 — To add ufwrules to allow connections from the Rocket Pool docker, let’s first get the IP address of the Rocket Pool docker itself.

docker inspect rocketpool_net | grep -Po "(?<=\"Subnet\": \")[0-9./]+"

You should see an IP address similar to the below

#Step 25 — Let’s add ufw firewall rules to allow connections from the above IP. Note: replace the IP address with your docker’s correct IP address.

sudo ufw allow from to any port 8545 comment "Allow RPL access to ETH1 HTTP Port"sudo ufw allow from to any port 8546 comment "Allow RPL access to ETH1 WS Port"sudo ufw allow from to any port 5051 comment "Allow RPL access to ETH2 HTTP Port"

#Step 26 — Let’s try the Rocket Pool node sync status again.

rocketpool node sync

Hopefully, you should see a sync status for all 3 clients as below. If not, please reach out in the #support channel on the Rocket Pool Discord

6. Wallet Creation For Rocket Pool Node & Setting Withdrawal Address

Now that you have taken care of all necessary configuration, let’s create a wallet for the Rocket Pool node, send a small amount of ETH to the wallet as a test, register the node and set the withdrawal address. Only after that, we will proceed to send 16 ETH and 1.6 ETH worth RPL tokens to the newly created node wallet.

#Step 27 — Run the wallet init command.

rocketpool wallet init

You will first be prompted for a password to protect your wallet’s private key. Next, you will be presented the unique 24-word mnemonic for your new wallet. This is the recovery phrase for your wallet. If you ever lose your machine, you can use this phrase to regenerate your wallet and resurrect all of the Consensus (ETH2) validators attached to it. It is essential that you write this mnemonic down because this is the only time it will be shown to you, so make sure to keep it somewhere safe because anyone with this phrase can gain control of your wallet. Once you confirm your mnemonic phrase, you will be presented with the unique ETH1 address for your node wallet.

#Step 28 — Send a small amount of ETH (probably 0.05 ETH would do) to the ETH1 address generated above. Next, we will be submitting transactions to “Register Node” and “Set Withdrawal Address”.

#Step 29 — Once you have the ETH in your node wallet, let’s begin the process for registering the node.

rocketpool node register

This will prompt you for the timezone you want to register with. If you prefer to remain anonymous, use a generic option such as Etc/UTC. Once you enter that, it will prompt you to enter the max fee you want to set for the transaction. Type that and press Enter. Wait for the transaction to be confirmed. And, now, you are officially a member of the Rocket Pool network!

#Step 30— Let’s set the withdrawal address for your node. This is the address that all of your RPL checkpoint rewards, your staked RPL, and your Beacon Chain ETH will be sent to when you claim your checkpoint rewards or exit your validator and withdraw from your minipool. By default, this is set to your node’s wallet address.

However, for security reasons, it’s recommended that you set this to a different cold wallet that you control, such as a MetaMask address or a hardware wallet. This way, if your node wallet is compromised, the attacker doesn’t get access to your staked ETH and RPL by forcing you to exit. If they do force you to exit, all of those funds will be sent to your separate cold wallet withdrawal address (which they likely shouldn’t have access to).

Withdrawal addresses are set at a node operator level. If you create multiple minipools they will all refer to the same withdrawal address. So you only need to do this setup once. Do NOT use an exchange address as the withdrawal address. This should be a cold wallet that you control preferably using a hardware wallet.

rocketpool node set-withdrawal-address <your cold wallet address>

Note : Replace <your cold wallet address> with the your actual Withdrawal address. Your new withdrawal address will be marked as “pending”. Until you confirm the new address, your old withdrawal address will still be used if necessary. To confirm, you must send a special transaction from your new withdrawal address to the minipool contract to verify that you own the withdrawal address. The easiest way to do this is to navigate to the Rocket Pool withdrawal address site and follow the steps below.

Connect your Metamask or WalletConnect wallet to the Rocket Pool website. Click the select wallet button in the center of the screen, and choose MetaMask or WalletConnect based on which wallet you would like to use. You will then be prompted asking you to confirm the connection. For example, using MetaMask:

Click Next, then click Confirm to enable the Rocket Pool website to use your wallet. Select Withdrawal Address from the top menu (or the hamburger menu on the left side if you’re on a mobile device). You will see this prompt:

Type in your node wallet address in the field and click on the Check button to continue. You will be prompted with a question asking if you want to set a new node withdrawal address or confirm a pending one. Select “Confirm a pending one”. Now, there should be a new confirmation dialog in your wallet. Again, using MetaMask as an example, click the MetaMask icon to open it and you should see something like this:

Click Confirm to send the transaction to the network. Once the transaction gets mined, you will see a confirmation dialog:

Your new withdrawal address will now be confirmed and activated. You can view this with rocketpool node status command

Once this is done, you will no longer be able to change your withdrawal address using the set-withdrawal-address command. To change it, you will need to send a signed transaction from your latest active withdrawal address (the one you just switched to). The Rocket Pool website has a function to help you do this. So, it is really important to set a withdrawal address that you will never lose access to.

7. Deposit RPL, Ethereum and Create a minipool

Now send the 16 ETH and your RPL tokens to your node wallet address. (Remember, please do NOT send to your withdrawal address!)

A minipool in Rocket Pool terms refers to a unique smart contract instance on the Eth 1.0 chain that your node manages. The minipool handles 16 of your ETH, 16 ETH from the rETH staking pool, and merges them together so that it can send 32 ETH to the Beacon Chain deposit contract to create a new Eth 2.0 validator. Thus, in order to create a validator using Rocket Pool, you need to create a minipool.

Before you can create a minipool, you’ll first need to stake some RPL as collateral. At a minimum, you’ll need to stake 1.6 ETH worth of RPL which is 10% of your total bond in the node. The exact amount of RPL will change based on the ETH/RPL price ratio, which is snapshotted on-chain at regular intervals by the Oracle DAO. There is no maximum limit for the amount you can stake, though you will only receive rewards for the first 150% at each checkpoint — anything over that will go unrewarded.

#Step 31 — Let’s stake the RPL

rocketpool node stake-rpl

Here is the output:

Please choose an amount of RPL to stake:
1: The minimum minipool stake amount (170.44 RPL)?
2: The maximum effective minipool stake amount (1870 RPL)?
3: Your entire RPL balance (210.80 RPL)?
4: A custom amount

Select how much you’d like to stake, then confirm the operation. You will be submitting two transactions. First one to approve spending of your RPL and the second one to stake RPL.

Once both transactions are completed, you can check your staked RPL amount with rocketpool node status. The following portion of the output is what you want to verify:

The node has a total stake of 210.80 RPL and an effective stake of 0.0 RPL, allowing it to run 1 minipool(s) in total.
This is currently a 13.20% collateral ratio.
The node must keep at least 170.44 RPL staked to collateralize its minipools and claim RPL rewards.

If the collateral ratio is 10% or higher, then you have enough staked to create a new minipool.

#Step 32— Let’s Deposit ETH and create a minipool.

rocketpool node deposit

You will first be prompted to choose how much ETH you want to deposit to your new minipool:

Please choose an amount of ETH to deposit:
1: 32 ETH (minipool begins staking immediately)
2: 16 ETH (minipool begins staking after ETH is assigned)

Option 1 is not recommended (unless you know what you are doing). Choose Option 2 (16 ETH) and submit the transaction, and you will enter the Rocket Pool minipool queue. This queue will wait for the other 16 ETH to become available from the rETH staking pool. Once it’s available, it will be merged with your own 16 ETH, used to create a minipool, and deposited into the Beacon Chain deposit contract to create a new validator. Next, you will be prompted about the current network commission rate:

The current network node commission rate that your minipool should receive is 15.000000%.
The suggested maximum commission rate slippage for your deposit transaction is 1.000000%.
This will result in your minipool receiving a minimum possible commission rate of 14.000000%.
Do you want to use the suggested maximum commission rate slippage? [y/n]

Rocketpool has moved towards a fixed 15% commission rate. Type ‘y’ and press the Enter key. At this point, you will be provided the typical gas cost estimation:

Your eth2 client is synced, you may safely create a minipool.
Suggested gas price: 10.319561 Gwei
Estimated gas used: 1957383 gas
Estimated gas cost: 0.020199 ETH
You are about to deposit 16.000000 ETH to create a minipool with a minimum possible commission rate of 19.000000%.
ARE YOU SURE YOU WANT TO DO THIS? Running a minipool is a long-term commitment, and this action cannot be undone! [y/n]

If you accept, your minipool creation will be triggered. Once the transaction completes, you will be provided the address of your new minipool contract on the Eth1 chain and its corresponding validator public key on the Beacon Chain. You can visit these with any block explorers if you’d like.

Upon creation, your minipool will be put into the initialized state. It will remain here until it's your turn in the Rocket Pool queue to be given 16 ETH from the staking pool so you can stake your new validator on the Beacon Chain. Once this happens, your minipool will move into the prelaunch state for a certain period of time (currently 12 hours). Your 16 ETH deposit will be transferred to be Beacon Chain, and the Oracle DAO will verify that it is all correct. During this time, you can observe the validator by looking up its validator pubkey with a Beacon Chain explorer.

You can check on the new minipool’s status with the rocketpool minipool status command. For example, when it has moved into prelaunch, you will likely see something like this:

1 Prelaunch minipool(s):--------------------Address:              <your minipool address>
Status updated: 2022-07-01, 01:14 +0000 UTC
Node fee: 15.000000%
Node deposit: 16.000000 ETH
RP ETH assigned: 2022-07-01, 01:14 +0000 UTC
RP deposit: 16.000000 ETH

After this prelaunch period, your minipool will enter staking status and send the additional 16 ETH from the staking pool to the deposit contract. You can either manually run rocketpool service logs node command (and enter a customer gas amount) or wait for it to be submitted automatically. This is where the “Minipool gas threshold” you set in “Smartnode and TX Fees” screen in Step 9 will come into play. If you set it too low, it may take a while for the transaction to be submitted. This will be done by the rocketpool_node Docker container automatically when gas fees hits your set threshold. If, for some reason, you are taking an unusually long period of time to enter staking status, looking at the logs for this container / service will likely tell you what's wrong. You can check these logs with the rocketpool service logs node command. Once the Beacon Chain accepts both of the 16 ETH deposits (one from you and one from the staking pool), your validator will enter the Beacon Chain queue where it will wait for its turn to become activated and start staking.

This is the end of the process for the set up! Congratulations — you are officially validating via Rocket Pool and contributing towards decentralizing Ethereum!

If you like this post and interested in reading future posts from me, please consider following me on medium and twitter. Thank you!

Full Disclaimer

This article (the guide) is for informational purposes only and does not constitute professional advice. The author does not warrant or guarantee the accuracy, integrity, quality, completeness, currency, or validity of any information in this article. All information herein is provided “as is” without warranty of any kind and is subject to change at any time without notice. The author disclaims all express, implied, and statutory warranties of any kind, including warranties as to accuracy, timeliness, completeness, or fitness of the information in this article for any particular purpose. The author is not responsible for any direct, indirect, incidental, consequential or any other damages arising out of or in connection with the use of this article or in reliance on the information available on this article. This includes any personal injury, business interruption, loss of use, lost data, lost profits, or any other pecuniary loss, whether in an action of contract, negligence, or other misuse, even if the author has been informed of the possibility.