8/1-12の損益とブロックチェーンゲームのトランザクション解析(CryptoBlades)
+25万でした。収益源は主にアビトラとCryptoBladesでした。利益を訴求するよりもブロックチェーンまわりの技術を訴求していたらそこまで稼げませんでした。
Tx解析の面白さ
色々と思うところがあってBSCチェーンのTxを解析しています。CryptoBladesでは0.1Skillなどの異常な価格でキャラクターを販売するアホが多い(相場は0.5Skill程度)ので、そのような価格のキャラを買うことに注力していました。
(例えばこのTx:
必要な技術要素としては、
i)Txpoolの情報を得る
ii)購入するTxを送る
の二つだけですが、かなり奥が深いです。
イメージとしては、i)の実行時間が0.1-0.5秒、ii)については0.05秒程度なので、i)の寄与がかなり大きいです。
先々週まではリスティングの2Block 後でガス戦争(ガス代を上げて優先的にTxを通す)が起きていましたが、最近は同ブロックで発注がかかるので、純粋なプログラミングスキルの勝負となっています。
以下の画像の通り、全く勝てなくなりました。
少なくとも、BSCSCANなどの監視をしても絶対に負けますし、Binanceが公式に出しているRPC接続でも負けます。
先行者(異常に安価なキャラを買っている人)に勝つために必要要素として
a)自前のBSCチェーンのNodeを持つ
b)Gitに上がっているP2P通信モジュールを改良してピア接続を改善する
c)通信環境(10GBpsくらい)を整えつつ、SATAじゃない2TB SSD(m2)でSSDへのアクセス速度を1.5GB/secくらいまで上げる
d)web3を早い言語で書きなおす
e)24コア位のCPUと128GBくらいのメモリに換装する
を考えています。
かなり労力と課金がかなり必要な状況ですが、楽しいのでしばらく戦います。
ここまで100キャラちょっとを5SKill程度で買えたので、勝てれば楽しそうです。勝てれば・・・。
ブロックチェーンゲーム(BCG)で戦う場合、人と同じことをしては負けると思っているので、ちょうどいい勉強と思っています。
今、CryptoBladesなんかに参入して普通にゲームしている人は負けているのではないでしょうか。
こういうゲームで勝つために必要なのは
1)誰よりも早くそのゲームにたどり着き、安いNFTを手に入れたり、レベル上げをする
2)バグ・抜け穴などをつき、利益を得る
のどちらかが王道でしょう。現状はどちらもCryptoBladesにはないので、Tx解析して安いのを取っていくのが良いでしょう・・・。
BCGにおけるランダム要素
色々とBCGのSolidityコードを見ていて、ランダム値を発生させる部分で思ったことを書きます。
Dungeon Swapというゲームがあるのですが、このゲームでランダム値は以下のようになります。(Contract Address 0x0f8F5fBdcB8548f08F87393912339E535f631695 | BscScanから引用)
uint256(keccak256(abi.encodePacked(blockhash(_yourLastDecisionBlock+1), _yourAddress)
簡単に言うと、戦闘時のブロックの次のブロックハッシュと、自身のアドレスをエンコードし、keccak256でハッシュ値を得る感じのコードです。
本コードでは、プレイヤーがTxを発行した時点では、そのブロックのブロックハッシュ値を得ることができても、その次のブロックハッシュは得ることができないので安全です。
uint256(keccak256(abi.encodePacked(blockhash(_yourLastDecisionBlock), _yourAddress)
の場合はどうでしょう。
もし、攻撃者がいる場合は、_yourLastDecisionBlockのハッシュはTx送信時点ではわかりませんが、例えば、自前のコントラクトアドレスにTxを送り、_yourLastDecisionBlockのハッシュを取得し、ランダム値を計算することが可能です。望ましいランダム値であればTxを成功させ、だめならTxを失敗させれば、ガス代分のリスクで望ましい結果を得ることが可能です。
uint256(keccak256(abi.encodePacked(blockhash(_yourLastDecisionBlock-1), _yourAddress)
の場合は簡単にブロックハッシュはわかるので省略します。
以上から、uint256(keccak256(abi.encodePacked(blockhash(_yourLastDecisionBlock), _yourAddress)
のようなランダム値を採用しているでBCGは攻撃者が想定されるためプレーすべきではないでしょう。
ほとんどのBCGはクオリティが低く、いつラグプルされるかわかりません。
せめて、Gitがあってコードがわかるものをプレーするのがいいと思いました。
次の収益源になりうるゲームは何かなー・・・。