「Solidityとは」と検索すると、下記のように難しめの解説記事ばかり検索にヒットします。
- スマートコントラクトの開発で使う言語!Solidityとは
- Solidityの主な言語仕様5選
- Solidityとは?開発ツールの比較も含め分かりやすく解説
しかし、「Solidityってそもそも何?」「Solidityって何ができるの?」と思って調べてみたのに、内容が難しいと読んでも理解できませんよね。
Solidityはブロックチェーン開発をする上でとても重要なプログラミング言語ですが、実はまだあまりわかりやすい記事がありません。
なぜならSolidityは日本語の情報がほとんどなく、まだ国内では学習の環境が整っていないためです。
この記事では、Solidityとは何か、意味やできることを初心者向けにわかりやすく解説します。
こんな人におすすめ
- Solidityについて知りたい
- ブロックチェーンエンジニアになりたい
Solidityとは?
Solidityとは?⇒”プログラミング言語”です
Solidityはスマートコントラクトを扱えるオブジェクト指向の高級言語です。スマートコントラクトはEthereum内でアカウントの動作を制御するものです。
引用:Solidity公式ドキュメント
プログラミングに馴染みのない方はそもそも「オブジェクト指向」からなんのことかさっぱりわかりませんし、「スマートコントラクト」にいたっては聞いたこともないのではないでしょうか。
もう一つ、Wikipediaも見ておきましょう。
Solidityとは、スマートコントラクトを記述するための手続き型プログラミング言語であり、キャビン・ウッドによって作成された。JavaSriptやC++に似た構文を持つとされる。SolidityによってコンパイルしたプログラムはEthereum Virtual Machine上での実行が想定されている。
引用:Wikipedia
Wikipediaの説明は簡潔で正確な一方、わかりにくいのが難点です。
今見てきたように、「Solidityとは」と調べてもこのように初心者向けに書かれたものがないため、専門性の高い解説が多い印象です。
そもそも「ブロックチェーン」「スマートコントラクト」という言葉を初めて聞いたという方は、さっぱり何のことか分からない方が多いはず。
そこで「ブロックチェーン」「スマートコントラクト」に焦点を当てて、この説明をさらに噛み砕いていきます。
「ブロックチェーン」とは?⇒”信用を創造する技術”です
ブロックチェーンは2008年にサトシナカモトの論文で提唱された、仮想通貨のモデルを実現するために開発された分散型台帳技術です。
分散型台帳技術というのは、これまで従来の情報記録は大きなサーバーに中央集権的に一つの場所で管理していたのに対し、複数のノード(情報の真正性を検証するコンピューター)を介して、情報を分散して保存する仕組みです。
このブロックチェーン技術によって、これまで中央のサーバーが落ちることでサービスが止まってしまう、単一障害点を持っていたサーバー管理に一つの解決策を示しました。
ブロックチェーンはこの特性により、これまで国家が発行することで価値の信用を担保していた法定通貨に対し、ブロックチェーン技術によって中央の発行主体、管理者のいない通貨を発行することができるようになりました。これが「仮想通貨/暗号資産」と呼ばれるものになります。
「スマートコントラクト」とは?⇒ “透明な自動販売機”です
スマートコントラクトは一言で表現すると「透明な自動販売機」になります。
プログラミングのソースコードがオープンになっていて誰でも閲覧できるため、どのように実行されるが第三者によって検証可能かつ、予め決められた条件を満たすと、プログラムされた契約内容が自動で執行される、といった具合です。
具体例の解説①「透明な=第三者による検証が可能」
スマートコントラクトのアナロジーとしてあげた「透明な自動販売機」
この「透明な」が意味するのは、第三者によるコードの検証が可能という点です。
従来のサービスでは、ソースコードが明かされていないものがほとんどであり、運営の主張が正しいかどうかを個人が閲覧することはでいませんでした。
例えば、ソシャゲのガチャなどは期待値がどの程度なのか、供給量はどの程度なのかはやぶさかではありませんが、ブロックチェーン上で動くゲームの場合、それらの情報は全てオープンで誰でも閲覧することができます。
プログラミングのソースコードがオープンになっていて誰でも閲覧できるため、どのように実行されるが第三者によって検証可脳である、これがスマートコントラクトの魅力の一端を担っています。
具体例の解説②「自動販売機=契約の自動執行」
続いて、「自動販売機」が意味するのは、あらかじめ定めておいた条件に従って、契約が自動で執行される点です。
自動販売機では、商品ごとに金額が表示され(=条件)、これを満たす金額を投入することで(=条件の履行)、商品が出力されます。(=契約の履行)。
自動販売機の内部構造が理解できている人にとっては、原始的な“スマートコントラクト”と言えるかもしれません。
Solidity でできることは?
Solidityでできることは、公式ドキュメントでは以下のように簡潔に書かれています。
Solidityで投票やクラウドファンディング、匿名のオークションやマルチシグウォレットを作成することができます。
引用:Solidity公式ドキュメント
ここではもう少し具体的に以下の3つの事例を見ていきたいと思います。
- 事例①:DEX(分散型取引所)
- 事例②:投票
- 事例③:レンディング
事例①:DEX(分散型取引所)
DEXとは、Decentralized Exchange(分散型取引所)の略。
DEXでは、暗号資産を取引したい人同士が直接取引することが可能です。
ブロックチェーン上で、決済までの取引プロセスがスマートコントラクトによって自動で行われます。
企業が運営するCEX(Centralized Exchange、集中型取引所)のような中央集権的な存在がいないため、利用により被った不利益は自己責任になります。
しかし、ブロックチェーンのセキュリティの高さやスマートコントラクトによって無人で運営できるため、管理コストの低下による手数料の安さなどメリットも多く、利用者も増加しています。
事例②:投票
ブロックチェーンを用いた投票システムでは、議決権をトークンとして発行し※、スマートコントラクトによって自動で集計を行うようプログラミングすることで、得票数の改竄を防ぐことが可能になリます。
※議決権として発行されたトークンをガバナンストークンと言います。
事例③:レンディング
暗号資産の貸し借りもスマートコントラクトによって自動化できます。
代表的なサービスとして挙げられるのが、Compound(コンパウンド)。
Compoundでは暗号資産を担保として預け入れると、引き換えに預かり証として「cToken」※を発行されます。
この「cToken」と引き換えに、預け入れた暗号資産とその利息を受け取ることができるサービスです。
このサービスが面白いのはこの「cToken」を売買することができる点です。
※「cToken」=「Compound+Token」の略。
例えば、BTC(ビットコイン)を預け入れると、預かり証として「cBTC」=「Compound+BTC」を受け取ることになります。
Solidity の学習で得られるもの
イーサリアム、ブロックチェーンへの深い理解が得られます。
Solidityとは元々、イーサリアムチェーン上にスマートコントラクトを実装することを目的として、開発された言語ですが、今ではブロックチェーン開発をする上で避けては通れない主要言語となっています。開発者も多いため、意思疎通も開発者間では容易であるため、様々なプロジェクトに用いられています。そのため、Solidity を学ぶことでブロックチェーンに対する深い理解を得ることができます。
Solidity とは?プログラミング言語の特徴【まとめ】
最後に一問一答クイズで簡単に復習しておきましょう。
- Solidityとは?
-
スマートコントラクトを記述するためのプログラミング言語
- Solidityの開発者は誰?
-
キャビン・ウッド(@gavofyork)
- Solidityと似ているプログラミング言語は?
-
C++、Python、JavaScript(構文が似ている)
SolidityはC++、Python、JavaScriptを参考に、Ethereum Virtual Machine(EVM)の操作を目的に作られています。
引用:Solidity公式ドキュメント