[Ethereum] スマートコントラクト鬼の10本ノック

with コメントはまだありません

ちょっくらブロックチェーンなアプリケーションを作りたいなと思って勉強してみた。EthereumやNEMなどいくつか選択肢がある中、古参のEthereum先生に弟子入りすることにした。

ネットの情報がまだあまり充実していないのと体系的にまとまっているものがないため、この参考書をコツコツやった↓

 

環境構築まわりから丁寧に解説されているので一番オススメ

この本ではSolidityという言語を使ってEthereumブロックチェーン上のスマートコントラクトを開発する方法が紹介されている。

ちなみにこういうアプリはÐappっていう。このÐってどうやってタイプするんだろう。

Ðappを作ろうと思うと、コントラクトとそれにアクセスするためのインターフェース(Webサービスなりスマホアプリなり)を作らないといけない。当然のこと。コントラクト側の開発はビジネスのコア部分に集中できる。手を動かす前には見えなかったことが見えてきたりしてめちゃめちゃ良い。

この本に書かれているコントラクトを写経するだけでもSolidityひいてはEthereumへの理解が深まるけれど、自分で考えて開発してみると更に深く身になるだろうなってことでスマートコントラクト10本ノックをやってみた↓

 

絶対に勝てないじゃんけん

カイジに出てきそうな極悪じゃんけんコントラクト。勝たせまへんえ

 

短歌をコントラクトに「刻む」

ブロックチェーンを歌集と見立て、そこに短歌を刻めたら?というよく分からない発想で作ったのがこちら。_contentに短歌、_createdAtに歌を詠んだ日を渡す。Solidityには日付型がないため、タイムスタンプで代用した。

 

おみくじ

これはもうそのままおみくじを引くコントラクト。同じおみくじが出ても面白くないので、おみくじを引くごとに結果が変わるようにしている。ところがSolidityで(というかEthereumで)乱数を作るのはかなり面倒だったので疑似的におみくじ結果がバラけるようにしている。

 

ボトルメール

ブロックチェーンを介してどこかの誰かに手紙をやり取りできたら素敵やなあということで作ってみた。

 

One Wallet

複数の取引所を使ったりとかしてると、自分のウォレットアドレスが沢山出来てしまう。それをひとまとめにしよう+しかもブロックチェーン上でというもの。

 

CryptoDog

CryptoKittiesで頭おかしいんじゃないかという値段の取引があるのを見て、高値で売るために猫ちゃん飼ってるんじゃないかと思ったりした。怖い怖い。ペットがトークンのようなものになっていてめちゃめちゃ面白いけど、ちょっと残酷だよね。てなわけでこちらはブロックチェーン上でワンちゃんを育てるコントラクト。飯を食うとわんちゃんが歳取ります。

 

所有権

デジタルデータからハッシュを取り出し、そのハッシュとオーナーのアドレスをこいつに渡して所有権を証明する。Solidityにはmodifierという機能があって、処理を行える人を限定できる。このコントラクトでは、所有権の譲渡をオーナーにしか出来ないよう、オーナー権限のmodifierを使っている。

 

クイズ

クイズに正解するごとにポイントを貰えるコントラクト。こういうゲーム的なコントラクトも面白い。

 

ポイントカード

購入する度にポイントがたまるコントラクト。購入処理は payable を付けたメソッドで行っている。payableをつけるとEthereumを受け付けられる。

 

読まれた回数で価格変わるコンテンツ売買

ブログやメディアなんかの記事の値段が読まれた回数で変わったら面白いな〜ということで作ってみた。