REStake – 懶人Cosmos 持份者解決方案

Horo
·
·
IPFS
·
利用REStake 讓驗證人幫忙自動委託收益。

想必大夥兒應該有聽說過金融中的複利法的概念,就是利息除了會根據本金計算外,新得到的利息同樣可以生息這個樣子。於是只要計算利息的周期越密,財富增長就會越快。 (指數函數的美妙之處,笑)

於是把這個概念推廣到基於權益證明的區塊鏈上,就是持份者定期把委託獲得的收益提取出來再重新委託給驗證人的過程。因為人類的記憶實在不夠可靠或者只是想偷懶等各種原因,就有人幫忙寫出了可以自動化這個過程的程序,就是上面說到的REStake 啦。

REStake 是?

REstake 是由ECO Stake ,一群致力於用去中心化技術促進環境改善的人們開發和維護的項目。它通過Cosmos 的Authz模組(授權像是驗證人的錢包這樣的特定的錢包地址以汝自己的錢包的名義進行某些交易的功能)幫持份人定期自動完成提取收益和委託給相同驗證人的功能。

  • REStake 只會授權驗證人使用來自相同驗證人的委託獲得的收益再委託給自己,不會動用汝錢包上的其它資金。
  • 以及驗證人會幫汝支付交易的Gas Fee。
  • 還有一點,REStake 是開放源代碼的,汝可以在https://github.com/eco-stake/restake找到它的源代碼。

持份者設置REStake

首先轉到REStake 的主頁,會列出REStake 支持的鏈:

每一條鏈從上到下的信息分別是:

  • 這種幣的市值和年化利率。
  • 這條鍊是否支持Authz ,如果不支持的話,REStake 不能自動完成重複委託的操作,但汝可以在網頁上手動操作。
  • 這條鏈上有沒有已經啟用REStake 的驗證人。
  • REStake 的支持狀態,有些鏈(像是Likecoin )是自動添加到列表裡的,因此會提示可能沒有足夠的測試。

點擊對應的鏈以後就可以看到已經啟用REStake 的驗證人了,例如Likecoin 的話:

要查看自己的委託的話,就先用Connect 菜單通過Keplr 登錄了。

指向每個驗證人中restake 的Frequency 的話,可以看到這個驗證人restake 的頻率和最小收益要求(只有汝的收益大於設定的值的時候驗證人才會進行restake)

如果汝委託的驗證人支持REStake 的話,REStake 那一列就會變成綠色的REStake 按鈕,點擊以後可以調整REStake 的參數。

其實也沒有什麼需要設置的啦,就是每次委託的上限這個樣子。雖然咱都是用默認的不限就是。設置好以後點下面的Enable REStake 按鈕來簽署授權。

然後呢?沒有然後了,最多就是不知道什麼時候回來看看委託增加了多少(笑)。

驗證人設置REStake

如果汝想給自己的驗證人也啟用REStake 的話,可以參考REStake 的文檔,或者學咱一樣糊(不是)。

首先要準備的是:

  • 一個有Docker 和docker-compose 的服務器。
  • 一個新錢包地址,用來儲存REStake 支付交易費的資金。
  • 給自己的驗證人關聯上一個Keybase 身份,稍候在REStake 的操作者列表倉庫發起Pull Request 的時候需要用。 LikeCoin 的話可以參考咱之前那篇剛把驗證人搭起來的時候寫的文章,可能需要更新一下命令。

接下來,克隆REStake 的源代碼:

 $ git clone https://github.com/eco-stake/restake.git
cd restake
cp .env.sample .env

然後編輯.env 文件,把汝的新錢包的助記詞填進MNEMONIC 字段裡。

 MNEMONIC=foo bar ...

然後在src/ 目錄新建或編輯networks.local.json 文件,添加上汝的驗證人的信息。因為咱目前只有LikeCoin 的驗證人所以咱就這樣舉例子了,其它的鏈的話可以參考源代碼裡的src/networks.json 。

 {
  "likecoin": {
    # 在REStake 網站上顯示的名稱。
    "prettyName": "LikeCoin",
    # REST API 接入點。
    # 如果汝正在運行REStake 的服務器上也有汝的驗證人節點同時啟用了REST API 的話。
    # 這裡可以設置成http://localhost:1317 。
    "restUrl": [
        "https://likecoin-rest.yoitsu.xyz"
    ],
    # RPC API 接入點。
    # 如果汝正在運行REStake 的服務器上也有汝的驗證人節點的話。
    # 這裡可以設置成http://localhost:26657 。
    "rpcUrl": [
        "https://likecoin-status.yoitsu.xyz"
    ],
    # 和汝的驗證人節點設置的一樣的gas price。
    "gasPrice": "2000nanolike",
    # 汝的驗證人的操作者地址, likevaloper 那個"ownerAddress": "likevaloper1r4sv5ea8mhd7q2cp566sh5zvkwg8xf3xwgw6uw"
  }
}

設置完畢以後,可以運行下面這條命令來測試一下。

 # 因為咱只有LikeCoin 的驗證人,所以就用了最後一個參數來跳過其它的鏈。
$ /usr/bin/docker-compose run --rm app npm run autostake likecoin

> restake@0.1.0 autostake
> NODE_OPTIONS=--openssl-legacy-provider node scripts/autostake.mjs "likecoin"

[12:14:19.513] 

[12:14:22.422] Starting LikeCoin
[12:14:22.574] Bot address is like13zq4c45h5z7zf8mnu8z9nqu9pdqe29u0jgk7d3
[12:14:22.806] Using REST URL https://likecoin-rest.yoitsu.xyz
[12:14:22.807] Running autostake
[12:14:23.004] Bot balance is 46469956000 nanolike
[12:14:23.005] Finding delegators...
[12:14:23.449] ...batch 1
[12:14:23.451] Checking 22 delegators for grants...
[12:14:23.640] like1lqrvv08ygtd4q2rvrst30ww4uqfgzpl3rx68zu Not autostaking for this validator, skipping
[12:14:23.640] ...batch 1
[12:14:23.641] Found 4 delegators with valid grants...
[12:14:23.641] Calculating and autostaking in batches of 50
[12:14:23.919] like1c3fgu63q782jmxmdvcy8qkggqw2r3hzffgf3ru 1515066593 nanolike reward is too low, skipping
[12:14:23.928] like1jf7u589sr24ae47stkfl93t5xkjut3sr0usckv 986739626 nanolike reward is too low, skipping
[12:14:23.935] like1n4mugxw9wu4g0d257p4ss7l35wfa8a4003mrg5 193129283 nanolike reward is too low, skipping
[12:14:24.054] like1erg2phzhumvgsynzk0553w772ldgv48ylp3gf4 1306399824 nanolike reward is too low, skipping
[12:14:24.054] LikeCoin summary:
[12:14:24.054] LikeCoin finished: Sent 0/0 messages

要設置定時運行的話,可以通過crontab 或者systemd-timer ,咱因為比較熟悉後者就用這個了。可以參考下面的單元文件和定時器。

 # /etc/systemd/system/restake.service
[Unit]
Description=stakebot service with docker compose
Requires=docker.service
After=docker.service
Wants=restake.timer

[Service]
Type=oneshot
# 這裡換成汝ReStake 的目錄。
WorkingDirectory=/path/to/restake
ExecStart=/usr/bin/docker-compose run --rm app npm run autostake

[Install]
WantedBy=multi-user.target
# /etc/systemd/system/restake.timer
[Unit]
Description=Restake bot timer

[Timer]
AccuracySec=1min
# 這裡換成汝計劃的運行間隔,例如咱設置的一個小時。
OnCalendar=*-*-* *:00:00

[Install]
WantedBy=timers.target

向REStake 提交已啟用的驗證人

如果測試完OK 的話,就可以向REStake 的驗證人列表倉庫提交自己的驗證人了。

Fork 一下https://github.com/eco-stake/validator-registry倉庫,在裡面新建一個汝自己的驗證人的名字的目錄,然後新增下面兩個文件。汝也可以參考一下倉庫中已有的驗證人是怎麼寫的(笑)。

 # chains.json
{
  "$schema": "../chains.schema.json",
  # 驗證人的名字。
  "name": "Yoitsu",
  # 驗證人操作的各個鏈。
  "chains": [
    {
      "name": "likecoin",
      # 汝的驗證人的操作者地址。
      "address": "likevaloper1r4sv5ea8mhd7q2cp566sh5zvkwg8xf3xwgw6uw",
      "restake": {
        # 汝支付REStake 產生的gas fee 的錢包的地址。
        "address": "like13zq4c45h5z7zf8mnu8z9nqu9pdqe29u0jgk7d3",
        # 汝多久運行一次REStake?
        "run_time": "every 1 hour",
        # 汝進行REStake 需要的最少收益是多少?
        # 這裡是每一種幣的最小單位,例如LikeCoin 的話就是nanolike 。
        "minimum_reward": 5000000000
      }
    }
  ]
}
# profile.json
{
  "$schema": "../profile.schema.json",
  "name": "Yoitsu",
  # 和汝的驗證人關聯的Keybase 身份的PGP 公鑰指紋,短的。
  "identity": "B6CF41D1879E8002"
}

然後提交Pull Request 就可以啦,沒有問題的話,汝的驗證人就會在REStake 上標記成支持REStake 的驗證人啦。

CC BY-NC-ND 2.0 授權

喜歡我的作品嗎?別忘了給予支持與讚賞,讓我知道在創作的路上有你陪伴,一起延續這份熱忱!

logbook icon
Horo目前是 LikeCoin Chain 验证人 Yoitsu 背后的家伙,以及 CDC/CFC 划水组成员(笑)。偶尔会变身成狐狸。( @foobarz )
  • 來自作者
  • 相關推薦

LikeCoin Vaildator Intro from Yoitsu 7th

LikeCoin Vaildator Intro from Yoitsu 6th

LikeCoin Vaildator Intro from Yoitsu 5th