【EthereumのSolidity言語】クリプトゾンビーズゲームで学ぶスマートコントラクト
Ethereum(イーサリアム)のSolidityという言語でスマートコントラクト(プログラミング)が学べるクリプトゾンビーズ(CryptoZombies)というサービスが出ました。
そもそもSolidityとは何か?スマートコントラクトは何か?それに伴うサービスDAppsとは何か?を説明したあとで、実際にクリプトゾンビ(CryptoZombies)の使い方もいくつか解説していきます。
スマートコントラクト(Smart Contract)とは
そのまま翻訳すると、賢い(スマートな)契約(コントラクト)となりますが、 簡単に言うと「自動的に執行できる契約プログラム 」のことを総称して呼んでいます。
1996年にNick Szabo(ニック・スザボ)というコンピューターサイエンス・暗号学者・法学者によって提唱されました。
これはこれまでの3つの革命(農業革命、産業革命、情報革命)に匹敵する第4の革命とまで言われています。
以下の動画でNick Szabo(ニック・スザボ)が、スマートコントラクトについて話しています。
実はデジタル通貨を提唱したのもこのNick Szabo(ニック・スザボ)で、1998年にはビットゴールド(Bit Gold)と呼ばれる分散型のデジタル通貨の設計も発表しました。
実はこのビットゴールド(Bit Gold)というのがビットコイン の先駆け的な分散型通貨とされています。
ビットコイン(Bitcoin)から分裂したビットゴールド(Bit Gold)と関係しているのかは、分かりません。
大衆の中では、このNick Szabo(ニック・スザボ)こそ、Nakamoto Satoshiではないかと噂が広まりましたが、Nick Szabo(ニック・スザボ)は否定しています。
またNick Szabo(ニック・スザボ)とHal Finney(ハル・フィニー)がチームでやっていたのではないかとのコメントも以下のRedditでやりとりされています。
スマートコントラクトは自動販売機?
スマートコントラクトによく出てくる例えに「自動販売機」があります。
自動販売機で行っている作業(プログラム)は、ユーザーがお金を投入して、買いたい商品のボタンを押す。
これで自動的に目的(商品を手に入れる)が執行されました。
イメージは以下です(ユーザーの特定の商品を自動的に執行する行為)
Solidity(ソリディティ)とは
公式サイトによると、solidityとは「イーサリアムのスマートコントラクトを実装するための高水準なコントラクト指向言語」になります。
C ++、Python、JavaScriptの影響を受け、Ethereum Virtual Machine(EVM)用に考案されました。
個人的に、iOSのSwift、C#をコーディングした経験のある方であれば比較的、簡単に書くことができると思います。
Solidity is a contract-oriented, high-level language for implementing smart contracts. It was influenced by C++, Python and JavaScript and is designed to target the Ethereum Virtual Machine (EVM).Soure:Solidity — Solidity 0.4.20 documentation
DApps(ディーアップス)とは何か
DAppsとは、Decentralized Applications(DApps)の頭文字をとった略語で、ブロックチェーンを用いた自立分散型のアプリケーションです。
DAppsのサービスと既存のサービスとの違いは、中央集権的な管理者が存在するか否かにあります。
例えば既存サービスの中で探してみると、タクシー配車アプリのUber(ウーバー)や、民泊のAirbnb(エアビーアンドビー)などは、中央集権的な管理者として存在しているので、DAppsではありません。
これらはDecentralized(分散、非中央集権=ディセントラライズド)なApplication(アプリケーション)ではなく、Centralized(中央集権的=セントライズド)な Application(アプリケーション)と呼ばれています。
DAppsの定義
Dappsには、以下の4つの定義があります。
- まずオープンソースで提供されていること。
- アプリケーションのデータは安心安全に分散的に記録保存されること。
- アプリケーションのアクセスにはトークンを利用すること。
- 参加者ノードにはプルーフ・オブ・ワーク(proof-of-work=PoW)を報酬として与えること。
クリプトゾンビーズ(CryptoZombies)
では早速クリプトゾンビーズ(CryptoZombies)について簡単に解説していきます。
また全て英語で書かれているので、英語も学びたい方はSolidity言語と同時に学んでみてください。
クリプトゾンビーズ(CryptoZombies)は完全に無料で初心者のために、楽しみにながらゲーム感覚でSolidity言語を学べるコーディングスクールです。
実際に無料で使ってみました。
以下の冒頭にも無料で初心者でも簡単にコーディングできるとありますが、もし完全にHTMLやCSS、その他プログラミング言語を学習したことのない方にとっては、難しいと思います。
その場合、日本のプログラミング学習サイトを終えてから、再度挑戦することをおすすめします。
クリプトゾンビーズ(CryptoZombies)の使い方
手順①:クリプトゾンビーズ(CryptoZombies)サイトの「Get Started, It’s Free」をクリックします。
ページ遷移したら「Lesson 1: Making the Zombie Factory」をクリックします。
GIF動画も参考にしてください。
すると以下のような画面になります。
手順②:第1章レッスンの概要が書かれています。中断にはゾンビDNAの仕組みと書かれています。
GIF動画も参考にしてください。自分で色々いじってみてください。ゾンビキャラクターの状態が変わります。
手順③:「Nest Chapter」をクリックします。
第2章へ移動したら、ここからプログラミングのスタートです。以下に画面の見方について解説しています。
手順④:実際にコードを手順に沿ってかいてみます。
GIF動画も参考にしてください。すると、以下の画像右下の「ヒント表示部分」が赤くなりました。これはこのあたりが間違っているよと親切に教えてくれています。
この赤く光った部分を修正すれば次へ進めるようになります。
分からない場合には、左下にある「Show me the answer」をクリックすれば回答が見られます。
このように、初歩的なプログラミングをイーサリアムのSolidity言語を使って説明しています。
手順⑤:解答が正しかった場合は、以下のようにゾンビが駆け抜けていきます。GIF動画を参考に、中央に出現した「Victory」をクリックし次の章へ進みましょう。
このように、プログラミングを触れたことのある方には非常に簡単に遊べる内容ですが、未経験者の方には少し難しいかもしれません。
その場合は、C ++、Python、JavaScriptを学習してみると良いです。
個人的には、冒頭でも書きましたが、iOSのSwiftやUnityでC#言語を使ったことのある方には簡単にコーディングできると思います。
オブジェクト指向にあたるクラスに似たContract、メソッドや関数については、こちらの【コントラクト指向言語:Solidity】にも説明がされているので、一度読んでみてください。
その後で、クリプトゾンビーズ(CryptoZombies)に挑戦してみると面白くスマートコントのSolidity言語が学べます。
次回は、スマートコントラクトとシェアリングエコノミーについて書いていきます。
テクノロジー関連記事
2018年3月27日に「【初心者入門】プログラミングを学んで感じたおすすめプログラミング学習サイト」について書きました。
FLOCブロックチェーン大学校
FLOCブロックチェーン大学校では最速3ヵ月で実践的なブロックチェーン技術を習得し、コース終了時に受けられるCDLT(Certification for Distributed Ledger Technology)によるスコアリングをもとに、
技術者を必要としている企業との人材マッチングを行います。出典:[FLOCブロックチェーン大学校]]
5つのポイント
(1)最速3ヵ月でブロックチェーン技術を習得
(2)ブロックチェーン技術のスキルアップ
(3)最先端の技術習得でキャリアアップ
(4)実績のあるエンジニアから直接学べる
(5)独自のスキルチェック制度
エンジニア、 起業家・会社員(ブロックチェーンを活用した自社サービスの提案を行いたい人)男女問わず応募が可能です。