Auto-compound using restake.app
Tags: bash, go, cosmos, restake
Published: 2022-06-23 15:52:59

If you are here because you have ledger but can't make it work with <u>[restake.app](restake.app)</u> then you are at the right place.

Before we begin there are some points we need to have in place.

### Pre-requisites
* Ledger with cosmos app installed
* Computer running Mac OS Monterey 12.4
* `go` installed. If you need look [here](https://jimkang.medium.com/install-go-on-mac-with-homebrew-5fa421fc55f5)
* Xcode. Yes Xcode 😱. Check [this] (https://developer.apple.com/forums/thread/652240) thread after you install it.
* basic bash scripting
* 💎 hands

### A bit of background
Mac OS 12.4 or lower introduced a lot of breaking changes and hence the current binary for different cosmos chains when compiled from source code could face some issues. 

You might see following deprecation notices when you tried the `make install` command in your earlier attempts to get restake work with ledger.

```
cgo-gcc-prolog: 81:11: warning:
"SecKeychainCreate' is deprecated: first deprecated in macOS 12.0
Custom keychain management is no longer supported [-Wdeprecated-declarations]
```

Luckily the newer versions of dependencies are available which could help overcome these issues and we can auto-compound our staking rewards 🎉 while still using ledger.

### Getting there
All the steps are the same for the chains I have tested for including **Bitsong**, **Cerberus**, **Cheqd**, **Juno**, **LUM**, **MEME**, **Osmosis**, **Stargaze** except for **CRO** which is depends on how you are staking. More on that later.

We will refer to the steps outlined by on <u>[restake.app](restake.app)</u> for ledger. Kudos to them to put up everything upfront 🙌. 

Let's take example of **Osmosis**. Here is the screenshot for reference taken from [here](https://restake.app/osmosis/osmovaloper1u5v0m74mql5nzfx2yh43s2tke4mvzghr6m2n5t)

![Osmosis Eco Stake Validator](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6wi1cjefajcjjod60sps.png)

1. As seen in the screenshot we have to git clone and then cd into the folder.
2. Before we run `make install` we need to modify the `go.mod` file with latest versions of dependency for `go-keychain` and `zondax/hid`. You can find the `go.mod` file in the restake_osmosis folder.
3. Once you open the file scroll to the bottom and add these files in the **replace** section block.

```
github.com/keybase/go-keychain => github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4
github.com/zondax/hid => github.com/zondax/hid v0.9.1-0.20220302062450-5552068d2266
```
Then go to terminal and run `make install` again. You might have to get the newer dependencies using `go`. Just run the commands which are prompted by go's helpful cli.
![helpful tips from go cli](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t0cqvy6rz5o6rqgbrqsy.png)

If everything works well you should see the `osmosisd` binary generated under ~/go/bin/ folder.

Then you can continue to follow the next steps which are **Add Ledger as a key** and **Grant permission to delegate rewards** from the same link mentioned above for Osmosis.
 
Just follow the cli instructions as and when they are prompted.

Success!! You are now auto-compounding your rewards in this bear market while cosmos continues to buidl 💪.

A big thank you ❤️ to [EcoStake](https://twitter.com/eco_stake) for bringing this innovative idea to cosmos. 

## The curious case of CRO staking
As you might know there are couple of ways to stake CRO and we have to interact with two different ledger apps depending on how we are staking.

For this guide, I'm assuming that you are staking using Keplr + ledger. In this case we would need to modify the command to  **Add Ledger as key** to include [`--coin-type 118`](https://github.com/crypto-org-chain/chain-main/discussions/752) when adding keys as part of the second step. For example,
```
main-chaind keys add ledger --ledger --keyring-backend file --coin-type 118
```

### Secret Network
For secret network we can use the pre-compile binary which already works with ledger. 
* Download the release v1.3.1 from [here](https://github.com/scrtlabs/SecretNetwork/releases)
* Referring to the steps outlined for [StakeLab validator](https://restake.app/secretnetwork/secretvaloper16w5hlcf389le2n60t32eqf43plp539ged9sruy) you can skip the git clone and make install steps and work directly with binary downloaded in step 1.
* cd into the folder where binary was downloaded. You might have to give chmod permission to make binary executable. 
```
chmod +x secretcli
```
* Moving forward you will have to use `./secretcli` command to interact further.
* Referring to **Add Ledger as a key** step you have add extra argument to the existing command. Something like this 
```
./secretcli keys add ledger --ledger --keyring-backend file --legacy-hd-path
```
* Once the above step is executed successfully move to the last step to grant permission to delegate rewards. 
```
./secretcli tx authz grant secret18zzklau04kf3qtwrnnzlf20xrxpx3a89dqu42m generic --msg-type /cosmos.staking.v1beta1.MsgDelegate --from ledger --ledger --chain-id secret-4 --node https://rpc.cosmos.directory:443/secretnetwork --keyring-backend file --gas auto --gas-prices 0.025uscrt --gas-adjustment 1.5
```

### AssetMantle
After you clone the repo for assetMantle node [here](https://github.com/AssetMantle/node.git). Make sure to checkout the following commit 
```
git checkout 5b2b0dcb37b107b0e0c1eaf9e907aa9f1a1992d9
```
Rest of the steps are similar to the one in **Getting there** section.

## **FAQs**
**What will happen if I lose the keyring file generated when adding my keys?**
You can just recreate it from your ledger. The important thing is to keep your seed words safe. 

**What will happen if I re-delegate to another validator?**
Validators will only restake for you if you have a delegation with them. If you redelegate all funds, they’ll stop restaking. You can then remove the grants manually from the restake UI. 

**Should I be worried about my private key being exposed via any means when using the above approach?**
No your private key stays on your ledger and is never exposed to your computer.