in ブロックチェーン

続・ブロックチェーンエンジニア始めました / Kaleido

これの続き。

最近Kaleido触ってて用語が割と出てくる。ただあれ、BlockChain As A Serviceのはずなのに、あまり優しくない。As a Service系は「簡単に使える」のであって「簡単に使える様になるわけではない」というのが基本なのでまあ、という感じではあるけれど。(「初めてのPerl」にも似た様なこと書いてあった)

network -> environment -> nodeと作成をするのだが、そのあとAPIへのアクセス方法を手に入れる。スマートコントラクトのインポートするぞ!ってなると二つの選ぶところが出てくる。

「Solidityのコンパイラ」と「イーサリアムのネットワーク」を選んでnextしようぜって出てくる。これがまたわかりづらい。

Remixでスマートコントラクト開発してて、コンパイルするバージョンを最新にしてて通りはするが、Kaleidoでは通らなかったりする。あとデフォルトで指定されているイーサリアムのネットワーク「コンスタンチノープル」と最新版のコンパイラのコンビでは通らなかったりする。API経由でやりとりしているらしくて、504エラーとかでてくる。でもアップロードしなおしてnextおしたりすると通ったりする。

ちなみにイーサリアムのネットワークはいくつか種類があって、全部厨二病っぽい名前なので、他人と話してるとなんかかっこいいワードを言っている感じがしてちょっとした高揚感に浸れるけどなんかあれ。スマートコントラクト、一度デプロイすると取り消せないので、ここをちゃんと選ぶのすごく気を遣う。

現状使えるならコンスタンチノープルつかっとけってなるんだけど、ダメだった場合の選択肢がわからない。少し前から発生しているのを選択するならスプリアスドラゴンor ホームステッドになるんだろうが、まあなんか昔バグが発生しとるでえ、とかあるし、最古のネットワーク、ビザンチウムとかもある。RailsをSaaSにあげるときに、「Rails2」「Rails3」「Rails4」「Rails5」「Rails6」と選ばせてくれて6は有料版の人を優先的にと言われているような気分だ。今後メトロポリスやセレニティといったバージョンもリリースされる。コンパイラのバージョンとネットワークは変更できないぽい。スマートコントラクト、一度デプロイしたら取り消せないのに、どうやって最新版に追従すればいいんだろう。

Kaleido、そのあとはAPI Gateway -> Instance APIとなるんだけど、AWSに慣れ親しんだ人はAPI Gatewayってあれを思い出すと思うんだけど、Kaleidoではまったく別のものを指してる。この辺りあとで図にして別の記事に書いてみる。ちなみにここもまたわかりづらい。

操作に苦しんだけど一通り実装&実行できるようになれたおかげでKaleidoについては割と説明できるようになった方だと思うが、ブロックチェーンについての知識が深まったかっていうと、とっかかりはいくつかあったけど全然成長した感じがしないので、マスタリングイーサリアムのほかに書籍何冊か読んで、直接イーサリアムとやりとりしてみたほうがいい感じはした。もちろんセキュリティとかガスの使用量とか考えないとかあるので、Kaleidoにあるサンプルコードレベルではいけないと思う。し、ある程度やりたいことを決めてからとっかかったほうがいいと思った。まあそれは普通にWebサービスでも同じか。

ローカルに開発環境用のイーサリアムの構築も完了しているので、Solidityをもっと書ける様になりたいと思う。やってるうちに自分でスマートコントラクトとWebを使ったプロダクトも考えられるようになったので(ユーザが集まるかどうかは知らんが)、来月仕事の空きに勉強がてら作ってみようと思ってる。