いま大人気のブロックチェーンゲーム
マイクリプトヒーローズ!
デイリーボーナスもらってますか?
バージョン1.1からはPrime 限定ですが、24時間に1回ゲーム内通貨であるGUMがもらえるので忘れずにもらっておきましょう。
ところで、この24時間ってシステムよくありますが、時間ぴったりに受け取れず、
ちょっとずつ遅い時刻にずれていくからイヤだなぁと思っている人いませんか?
ところが、マイクリのデイリーボーナスには心配りがあったのです🤭
ブロックチェーンプログラムとガス代について
さてさて、デイリーボーナスですが、ここを押すとウォレットの確認画面が出てきます。
↓
送金は0ETH ですが、プログラムの実行費用としてGAS代が少々かかります。
GAS代を払ってしばらく待ちトランザクションを完了させ、ウォレットの履歴をみてみましょう。
トランザクションIDから、何をしたか辿れます。
マイクリアプリだとここをタップ!
↓
トランザクション履歴を見る
トランザクション履歴を見るとイーサスキャンに飛びました。
ここでは、どこのブロックで実行したとか、ガス代はいくらだったとか見れます。
そして一番大事なのはどのコントラクトを実行したか?という箇所です。
コントラクトとは、ブロックチェーンでいうプログラムのことで、どんなプログラムを実行したか?ということです。
コントラクト名は MCH: Daily Action2 です!
デイリーボーナスのプログラムを見る!
コントラクトのページに飛んだら Code タブをクリックします。
↓
ここではバイナリのプログラムが表示されるのですが、運営さんがソースコードをアップロードしていた場合は、ブロックチェーンプログラミング言語 Solidity のソースコードも見られます。
マイクリの場合はコードが見れます。
また、そのコードとバイナリとが Exact Match と表示されていて、正確なコードということもわかります。
requestDailyActionReward
コードを見ると 373行目に requestDailyActionReward という関数がありました。
名前からしてこの関数がデイリーボーナスをリクエストする関数です
↓
Solidty のコードなので見慣れない単語がいっぱいありますが、関数の一行目に注目です。
require(!isInTerm(msg.sender), “~~~”)とあります。
期間内にログインボーナスを受け取っていたら、関数を中断するという意味のようです。
期間内をどうやって判定しているかみてみます!
isInTerm関数
isInTerm関数です
↓
lastActionTime なるハッシュに
ユーザーごとの最後にリクエストした時間が入るのですが、その時間と 変数 term(おそらく24時間) の差を見てその時間経過していたら okとしています!
では、最後に term を見てみましょう。
term変数について
term変数は updateTime で運営が更新することができます。
24時間を12時間にしたり運営次第です。
実際問題としては微調整はあれど、大げさなことはしないと思いますので、0を入れるとデイリーボーナスは必ず失敗するようになりますので別の実装にしたいときは0にして差し替えるのだと思います(なるほどー)。
それで肝心の term なんですが
Constractor 関数に注目です。
↓
ここで term は 24時間を現す 24×60×60 だと思っていたのですが、10分短く設定されています。
ただの24時間だとどんどんおそくなって行きますが、10分猶予があることでずれにくくしてくれています。
もちろんこれは、トランザクションが反映されてからの時間なのでいつも10分ずつ早くできるわけではないですが、私は運営さんの心配りだと思いました(^-^ )
みなさんは、どう思いますか?
余談
このデイリーボーナスのコントラクト実行にはGAS代がかかります。
ガス代のETHを手に入れられないから、デイリーボーナス貰えてない人も一定数いるというのは事実です。
ただ、運営さんとしてはインタビューでブロックチェーンゲームを遊ぶならETHを自力で手に入れるくらいのリテラシーはほしいと言ってましたので、
のちのちのためにETHを買える口座は作っとくのがいいと思います。
キャンペーンで口座開設だけで1000円貰える取引所もありますので、ETHが無料で欲しい!という人は試してみてください
↓
マイクリプトヒーローズが気になっている人は招待コード入れて始めていただければヒーローが貰えますので、ほしい人は使ってください(^-^ )
↓
ではでは~