【ソリディティ】

Solidity とは?

最終更新:
💡 ブロックチェーン上で動く処理を、コードで定義する言語

EthereumなどのEVM上で動くスマートコントラクトを書くためのプログラミング言語。静的型付けを採用し、投票や資金の管理などの処理をコードで定義できる。

📌 このページのポイント
Solidityからスマートコントラクトへ コンパイル 配置 Solidity .sol ソースを書く 実行用コード EVM バイトコード Ethereum等 呼び出しで実行 スマートコントラクトの用途の例 票 投票 資金 資金調達 入札 オークション 承認 複数人の承認 コードの更新方法や権限は、事前に設計
Solidityのソースを実行用コードへ変換し、Ethereumなどへ配置する流れ。コントラクトは呼び出しを受けて処理する。
ひよこ ひよこ
Solidityは、どこで動くプログラムを書くの?
ペンギン先生 ペンギン先生
EthereumなどのEVMという実行環境で動くスマートコントラクトを書くよ。ソースをコンパイルして実行用のコードにし、ブロックチェーンへ配置する。配置しただけで常に動き続けるのではなく、トランザクションや他のコントラクトからの呼び出しで処理するんだ。
ひよこ ひよこ
文法はJavaScriptに似ているの?
ペンギン先生 ペンギン先生
C++・Python・JavaScriptの影響を受けているよ。ただしSolidityは静的型付けの言語で、変数などに型がある。contractの中に状態を保存する変数や関数を定義するけれど、似た文法だからJavaScriptと同じ動作になるとは限らないんだ。
ひよこ ひよこ
どんなものが作れるの?
ペンギン先生 ペンギン先生
投票、資金調達、オークション、複数人の承認が必要なウォレットなどが例だよ。スマートコントラクトはブロックチェーン上の処理を担う部分。画面や外部のデータを含むアプリ全体を、Solidityだけで作るわけではないんだ。
ひよこ ひよこ
資金を扱うなら、何に注意するの?
ペンギン先生 ペンギン先生
権限や資金移動の設計を慎重に確認するよ。たとえば外部への呼び出し中に再び呼ばれる「再入」の問題がある。テストやコードレビュー、必要に応じた監査が大切。処理に使えるガスにも上限があり、長すぎるループなどで実行できなくなる場合があるんだ。
ひよこ ひよこ
配置した後に、バグを直せる?
ペンギン先生 ペンギン先生
配置済みのコードを普通のファイルのように上書きすることはできないよ。更新を見込んで設計したプロキシ方式なら、呼び出し先の実装コントラクトを別のものへ切り替えられる。更新権限やデータの互換性も設計が必要で、どのコントラクトも後から自由に直せるわけではないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Solidity」って出てきたら「Ethereumなどのスマートコントラクトを書く言語」と思えばだいたいOK!
📖 おまけ:英語の意味
「Solidity」 = ソリディティ(プログラミング言語名)
💬 スマートコントラクトという名前でも、書くのは法律上の契約書そのものではなく、ブロックチェーン上のアカウントの動作を定義するプログラムだよ。

参考資料

← 用語集にもどる