Solidityは、コアチームにより管理されるオープンソースのコミュニティプロジェクトであり、Ethereum財団から支援を受けています。
ブロックチェーンと暗号資産の初心者であれば、「スマートコントラクト」が何であるか把握できていないかもしれません。スマートコントラクトとは、ブロックチェーンとして知られる分散型ネットワークに上に保存されたコードを指します。一言で説明すれば、スマートコントラクトでは、事前定義済みの条件が満たされた場合、タスクおよびトランザクションが自動的に実行されます。
例えば、特定の数量の暗号資産を特定の日付にAさんからBさん宛てに送付する条件を設定するとします。スマートコントラクトの優れた点として、仲介者を必要としないほか、トランザクションに信頼性、透明性、安全性をもたらすことが挙げられます。
Solidityがスマートコントラクト記述用の人気の高いプログラミング言語である理由の1つとして、JavaScriptやC++などの一般的な言語との違いが少ないことが挙げられます。スクリプト作成やプログラミングの経験(特にJavaScriptの経験)があれば、Solidityもすぐに習得できるでしょう。
一方、Solidityは静的な言語でもあります。Solidity公式ウェブサイト上におけるSolidityの定義は、「Ethereum上でのスマートコントラクトの稼働を目的に開発された、静的型付け言語・カーリーブラケットを使用したプログラミング言語」となっています。
つまり、コンパイル時に型に関する確認には、変数の型(整数型、ブール型、文字列型、ユーザー定義型)を定義する必要があります。静的型付け言語とは、具体的に、コンパイル時に変数が判明している言語(Java、C、C++など)を指します。また、カーリーブラケットとは、(変数の定義が可能な)コードブロックを表す括弧( { } )を指します。
ブロックチェーン開発に関心があったりDeFi分野への進出を考える場合、Solidityの学習は最適なとっかかりとなると言えます。一方、すべてのプログラミング言語と同様、Solidityにも独自の問題があります。開発者はSolidityでのスマートコントラクトの作成時、バグや脆弱性を回避するために細心の注意を払う必要があります。こうした点を踏まえても、ブロックチェーン技術とスマートコントラクトの継続的な成長の観点から、Solidityは技術分野での価値が高く、求められるスキルとなっています。
dApp(s)は、集中管理されたデータベースにはアクセスせず、コンピュータのP2Pネットワーク上で実行されるアプリケーションです。暗号資産ウォレットを用い、dAppsに自由に接続できます。
スマートコントラクトとは、特定のブロックチェーンネットワーク上に存在する自己履行型コントラクト(契約)を指します。そのコントラクト条件や規約は、コードの行として直接記述されます。
Ethereum仮想マシン(EVM)は、一般的にはSolidity(ソリディティ)でコードが記述される、スマートコントラクトを実行するチューリング完全・プログラマブルマシンです。