CURATION REWARDS の難しい話

【記事が途中で切れることがあります。そのときは再読込してください。】
昨日はキュレーション報酬(CURATION REWARDS)の基本について書きました。
今日は昨日省略したところです。

昨日はキュレーション報酬を決める要素は次の4つと書きました。

  • REWARD SHARES (rshares)
  • 総Payout
  • VOTE順位
  • VOTE時間

VOTE順位以外の要素について私が知っていることは昨日の内容ですべてです。
ここではVOTE順位について詳しく書いていきます。

さて、順位と書きましたが正確には順位ではありません。
自分がVOTEする前に入っている総rsharesまたはPayoutです。
同じ$1.00なら1人で$1でも$0.1が10人でも変わりません。

キュレーション報酬を決めるにはweightというものを計算します。(voting weightとは違います)
最終的なPayoutの25%が各自が持つweightに比例して配分されます。

このweightの計算式は、

weight = √(VOTEする前の総rshares + 自分のrshares) - √(VOTEする前の総rshares)

です。シンプルですねw(HF19より前と比較して)
30分以内の投票ならこれに 経過秒/1800秒 がかかり、減った分は投稿者のweightになります。

rsharesとweightはsteemdのvote detailsで確認できます。weightの単位はビリオン(10億)です。

実際に計算すると少し・・・いや、かなりずれます(ぉぃ)
どれくらいずれるのかと言うと、こんな感じです。

これを見て概ねあっていると思えるかどうか微妙なところですが・・・、2倍3倍とずれるわけではないのでまあ良しとしましょう。(^^;
なぜずれるのかというと、平方根の求め方のせいです。

ソースコードではこのようになっています。

https://github.com/steemit/steem/blob/master/libraries/chain/util/reward.cpp

現在のcuration rewardsのreward curveはsquare_rootです。
ここにはapprox_sqrt( rshares );と書かれており、おおよそ平方根であるということです。
この関数はソース上ではこのようにループを使わないビット演算で記述されています。(高速化のためでしょう)

ソースコードにはこれ以上のことは書いていないので、ここでずれが生じているものと思われます。
(この関数の検証はしていないので間違っていたらツッコミよろしく)

ですが、平均的には大きくずれているわけではないので以下は平方根で考えます。

さて、自分のVOTE価値が$1.00として、受け取れるキュレーション報酬をエクセルで計算してみるとこうなります。

先頭に近い人は自分で付けた以上にもらえる可能性があることがわかります。
イメージとしては先にVOTEした人は後ろの人のキュレーション報酬を吸い上げている感じです。
特に自分のvote価値より先行するVOTEが少ないときに顕著に大きくなります。

ここからはキュレーション報酬を上げるための戦略についてです。
これは非常に難しいため、一概には言えません。
ここではいくつかのヒントを挙げることしかできません。

rsharesを上げる

基本です。確実に効果があります。
ですが、式からわかるとおりrsharesを2倍にしてもweightが2倍になるとは限りません。

ここで単純にrshares 100のときにpayoutが$1.00つくと仮定します。(実際のrsharesはもっと桁が多いです)
10人が同じrsharesでVOTEしたときと、自分だけ2倍にしたときのキュレーション報酬の変化を計算してみます。

まず、自分が先頭の場合です。

weightが1.4倍になりrewardsは1.48倍になりました。
他の人のrewardsは減ってしまいます。

次に自分が6番目の場合です。

ここでようやくrewardsが2倍になりました。
しかし2倍のパワーを使ったのに2番めの人よりもrewardsは小さいです。
15分の時点でVOTEして2位を取り半分を投稿者にプレゼントしても、まだ6位の人よりは多いわけです。
順位の要素がいかに大きいかがよくわかると思います。

また、先行する人のrewardsは増えて後続の人の分は減っています。
このことから前の人は後ろの人から吸い上げるというイメージができると思います。
後ろにどんなクジラさんが来ても自分の報酬が減るということはありません。

自分が10番目の場合も見ておきます。

ここまでくると6番目のときとあまり変わりません。
5番以内に入れないなら順位の影響は非常に小さくなります。
そして、rsharesの増加とrewardsがほぼ線形になります。
VOTE順位の競争をしないのであれば、SPの上昇に比例してキュレーション報酬も大きくなります。

しかし、見ての通り得られるキュレーション報酬は自身のVOTE価値($1.00)の25%未満です。
単純にキュレーション報酬を増やしたいだけなら30分経過したvote 0の投稿やコメントにVOTEして25%貰った方が良いでしょう。

VOTE数を増やす

効率のいい1位VOTEではSPを2倍にしても1.5倍弱程度しか伸びないことがわかりました。
ここから考えられることはvoting weightを半分にして2つの記事にvoteすればいいのではないかということです。
常に1位や2位を取れるならこの作戦は有効です。
後ろの方ではrsharesとほぼ線形なので無意味です。これ以上伸びない記事をいくつもVOTEしても報酬的には得になりません。

ただし、ここで2位とは先行するVOTE量が自分のVOTE価値と同量の場合のことです。トップが$2つけているところに2番目で$1のVOTEをした場合は、ここでは3位ということになります。VOTE数が10でも同量を付けられるなら11番目であっても2位です。

どれくらいのVOTEをすればいいのか

2位を取るということは先行するVOTE量の等倍のVOTEを付けるということです。
先行するVOTE量の0.5倍から3倍を付けた場合について、自分のVOTE価値の何倍のVOTEが後続するかによって、自分のキュレーション報酬がどう変わるのかをグラフにしました。

横軸が後続VOTE量と自分のVOTE価値の比です。右端で100倍です。
縦軸が自分のキュレーション報酬とVOTE価値の比です。1以上で付けた以上に返ってきます。

後続するVOTE量はコミュニティや投稿者の人気でだいたいわかります。その投稿者の記事に平均的に$10付くとすれば、先行が$1で自分のVOTEが$1なら8倍、$0.1ならおよそ90倍です。
大きいVOTEをつければ付けるほど横軸の値は小さくなります。
ですので、2倍3倍とつければいいというものではありません。Voting Powerの消費量が増えてVOTE可能数も減ってしまいます。

アカウントをわける

無意味です。
STEEMを半分ずつ使って2つのアカウントで1位と2位を取ったとしましょう。

左が1アカウントでVOTEした場合、右が半分ずつのアカウントで1位と2位と取った場合です。
当たり前ですが1位と2位の和は左の1位と同じになっています。
手間や割り込まれるリスクを考えれば1つにまとめるべきでしょう。

結局どうするのが最善か

わかりません(笑)
後続VOTEは20倍は来てほしいので、見込める総Payoutの1/25程度のVOTEで先行VOTEがそれ以下ならVOTEという感じでどうでしょうか。

注意

  • 一番ダメなのはVoting Powerを溢れさせることです。100%を超えたVoting Powerは捨てられてしまいます。小さいVOTEばかりや、良いタイミングがないからといってVOTEしなかったためにVoting Powerが100%のまま使われなかったというのが一番もったいないです。
  • キュレーション報酬は小数点以下3位未満は切り捨てられてしまいます。あまり小さいVOTEばかりだと切り捨て誤差が大きくなります。0.001SP未満だと0になってしまいます。
  • 自身のキュレーション報酬のことばかり考えてVOTEするのはあまりおすすめしません。VOTEはSteemitにおけるコミュニティ形成の根幹です。良いと思った記事には出遅れてもVOTEしましょう。ただし、7日を過ぎた記事へのVoteは無意味ですのでやめましょう。

ぐだぐだと書いてきましたが、以上です。間違いを見つけた方は遠慮なく指摘してください。m(_ _)m

H2
H3
H4
3 columns
2 columns
1 column
12 Comments