
忘備録。
同じようなことを実装したいけど、色々とサボりたい人向け。
記事を書いた時点では、ネットでのRails+イーサリアム関連の情報が極端に不足しているので、プロハッカーのmitaku師匠のアドバイスを聞きつつ、メモを残しておきます。
○ MetaMask(ethereum、web3)のログインと署名(ECDSA、ecrecover)
ホーさんの説明がすごくわかりやすい。
また、こちらの(DAppsユーザー認証の)記事の説明も素晴らしい。
但し、ホーさんの情報はWeb3.js+Node.jsなので、Ruby + Railsではバックエンドの部分が実装できない。
(一応、Node.jsのサーバーを追加で立ち上げればいいみたいだけど面倒だから迂回)
Rails(Ruby)の場合、サーバーサイドは「ruby-eth」というgemを使うのが良いらしい。
(ecrecoverだけなら、Ethereum.rbやgeth、ganacheとかは不要らしい)
def ecrecover(message, signature)
Eth::Key.personal_recover(message, signature)
end
def ecrecover_to_address(message, signature)
public_key = ecrecover(message, signature)
Eth::Utils.public_key_to_address(public_key)
end
これで、MeatMaskの署名確認(アドレス認証)に対応できるようだ。
○ 保有アセット(ERC721)の確認
バックエンドで確認する場合は、OpenSeaのAPIを叩くか「infura.io」でETHのAPIを叩くのが楽で良いらしい。
Ethereum.rb、geth、solidityの組み合わせでも取得できるみたいだが、ただデータを参照するだけなら、ETHのAPIを叩くほうが簡単である。
○ アセットの発行
アセットの発行ができるツールを使えばOK。
これで簡易的なブロックチェーンゲームのできあがりである!
とはいえ「Ethereum.rb、geth、solidity」にて、ウォレットの操作ができるようになると、より複雑なプログラムの処理が可能となるため、余裕があるなら、追加で勉強してみるのが良さそうだ。










