Leaving

How to leave THORChain

Overview

Every 42,400 BLOCKS (3 days) the system will churn its nodes.

Outgoing:

  1. The most unreliable node(s), and/or

  2. The oldest node

Incoming:

  1. The node(s) with the highest bond (typically 3).

Churned out nodes will be put in standby, but their bond will not automatically be returned. They will be credited any earned rewards in their last session. If they do nothing but keep their cluster online, they will be eventually churned back in.

Alternatively, an ACTIVE node can leave the system voluntarily, in which case they are typically churned out 6 hours later. Leaving is considered permanent, and the node-address is permanently jailed. This prevents abuse of the LEAVE system since leaving at short notice is disruptive and expensive.

It is assumed nodes that wish to LEAVE will be away for a significant period of time, so by permanently jailing their address it forces them to completely destroy and re-build before re-entering. This also ensures they are running the latest software.

Unbonding

You can only unbond when your Node is on "standby", ie, just before it is selected to churn in, or after it is churned out.

If a Node Operator wants to retrieve part of their bond & rewards (such as deciding to take profits), they can simply Unbond. This keeps their Node on standby, ready to be churned back in.

To unbond from the system, simply send an UNBOND transaction.

Example, this will draw out 10k in RUNE from the bond, as long as the remaining amount is higher than the minimum bond.

UNBOND:thor1ryr5eancepklax5am8mdpkx6mr0rg4xjnjx6zz:1000000000000

THORChain always treats assets in 1e8 "base format" ie, 1.0 RUNE = 100,000,000 units (tor). To get from one to the other, simply multiply by 100m.

If using ASGARDEX to BOND or UNBOND, simply put the RUNE amount, e.g. "100" for 100 RUNE. It does the memo in 1e8 for you.

You can get your node address by running make status

Only the address that originally bonded the funds can UNBOND or LEAVE. This ensures you can safely leave this system if you no longer have access to your node (but it is still running).

Issues with Unbonding/Leaving

If you can't UNBOND, it means your ygg-vault still has funds on it. This means your node spent more gas than it was supposed to during the cycle (various reasons) and is partially insolvent. To fix this you need to rectify your node's insolvency first before doing anything.

Leaving

Leaving is considered permanent. There are two steps.

  1. If you are Active, send a LEAVE transaction to start a churn-out process. This will take several hours even after changing your status to 'Standby'.

  2. If you are Standby, send a LEAVE transaction to get your bond back and be permanently jailed.

Prior to running a mainnet validator, you should practice a full sequence of deploy, BOND in and LEAVE on a testnet cluster to ensure you know what you are doing and what to expect.

To leave the system, send the following transaction from your original bond address to the Vault Address: LEAVE:<ADDRESS> with at least 1 tor in funds. Or use ASGARDEX.

Example:

LEAVE:thor1ryr5eancepklax5am8mdpkx6mr0rg4xjnjx6zz

Wait a few hours, verify on the /nodeaccount endpoint that you are now disabled👀 Then send another LEAVE:

LEAVE:thor1ryr5eancepklax5am8mdpkx6mr0rg4xjnjx6zz

Wait a few minutes, verify you have received your bond back 👀 - make status should show BOND 0.00 and your wallet should get the full Bond back.

Sometimes your Yggdrasil ETH vault may be slightly insolvent due to out-of-gas transactions consuming gas whilst Active. If the network will not let you LEAVE, you may need to manually send your Yggdrasil ETH vault 0.01 - 0.05 ETH from your own personal funds as a top-up, then try LEAVE again. Note: any funds you send to top-up ETH vault you cannot send back to yourself until AFTER your node has left and you have received your bond back, otherwise it will be fined 1.5x what you transfer out. Coming Soon: Check using the make solvency command.

🔥 Commence destroying your node 🔥

If your node is both offline and inaccessible, then it will be unable to automatically return any assets in its yggdrasil vaults and it will be slashed 1.5x the value of those assets.

Example: If your node has a $5m bond (in RUNE), but has $1m in assets in its vaults it can't return, it will lose $1.5m in RUNE from its bond. The Node will only get back $3.5m of its bond.

Contingency: Manual Leave Procedure

If your node is completely offline or destroyed, you will have to perform a manual return of Yggdrasil funds in order to prevent 1.5x bond fine. Ensure you have reviewed this procedure and have all tools ready to go in case you need to do it in anger. This is a time-critical event - you have a few hours to return all funds before the network assumes you have stolen them.

If you do not perform all of these steps in time, your bond will be fined 1.5x stolen funds. The remaining funds belonging to Yggdrasil make mnemonic are now yours; but you just paid a 50% premium for them, losing a lot of money. You can use the following procedure in a similar way to recover these funds.

Requirement: You have your make mnemonic Yggdrasil mnemonic available. If you do not have this, you cannot manually return funds.

Options: 1. Coming Soon: Use ASGARDEX for Manual Return. 2. Coming Soon: Check Discord Dev channels for manual return cli tool. 3. Extract Private Key + Manual return each asset using wallets:

Your Yggdrasil make mnemonic phrase is used to generate the m/44'/931'/0'/0/0 private key which is used for all chains. Pasting the mnemonic into common wallets will not work as they will be looking under a different "standard" HD Path. Instead, go to https://iancoleman.io/bip39/ and paste in your mnemonic, select RUNE from the Dropdown list and in the bottom table, copy the m/44'/931'/0'/0/0 private key string. Use this to import into wallets.

The next step is to find the latest inbound addresses. Use https://thornode.thorchain.info/thorchain/inbound_addresses

Do not cache inbound_addresses. These are only valid for a short period of time. Always refresh to get the latest before sending funds.

Use the address field. Chains with a router present such as ETH need to send funds via the router smart-contract. Paste the router address into etherscan, click "Contract" and "Write Contract" and use a Web3 wallet to connect.

The memo required is YGGDRASIL-:<BlockHeight>. For example YGGDRASIL-:782412. The block height can be found from the status_since field here:

https://thornode.thorchain.info/thorchain/node/<your node address>

If your node is standby or disabled status, any integer block height will work for return. e.g. YGGDRASIL-:1. The most important thing is to ensure you send to the correct active vault address or router.

For BTC wallets (BTC, Litecoin) use importprivkey in cli.

For ETH router manual returns, use the deposit() function for individual assets. For ETH use contract 0x0. Use the returnVaultAssets() for multiple assets.

Destroying

Confirming you have left

You should complete this checklist before you do the next step:

  1. Have you sent a final LEAVE transaction and have you received your BOND back - ie 1,000,000 RUNE, and can your account for any slash points or rewards?

If yes, then proceed:

DESTROY

To destroy and remove previously created resources, you can run the command below.

Destroying your cluster will completely destroy your node, including purging all keys on it.

DO NOT DO THIS UNTIL YOUR NODE HAS CHURNED OUT AND YOU HAVE VERIFIED YOUR BOND IS COMPLETELY RETURNED

IF YOU DESTROY A NODE PREMATURELY, YOU MAY LOSE A SIGNIFICANT AMOUNT OF FUNDS

1) Destroying the Node and Tools

First, destroy the node and tools, this will delete your node then your tooling 1-by-1. Do this from the node-launcher repo:

make destroy destroy-tools
Destroying the Tooling

2) Destroy the cluster

Then destroy the cluster from the cluster-launcher repo:

AWS
DO
AWS

You will be asked to enter your cluster name and region (the same as what you put in when you first deployed).

make destroy-aws
DO

You will be asked to enter your cluster name and region, as well as your Personal Token (the same as what you put in when you first deployed).

make destroy-do

You will be asked to confirm:

DO NOT DESTROY YOUR NODE UNTIL YOU HAVE CHURNED OUT AND HAVE RECEIVED YOUR FULL BOND BACK IN YOUR CUSTODY

IF YOU DESTROY YOUR NODE WITH FUNDS LOCKED UP - YOU WILL LOSE A SIGNIFICANT QUANTITY OF FUNDS

Final destroy complete