Solidityは、イーサリアム仮想マシン(EVM)で動作するスマートコントラクト向けの、静的型付けを採用した高水準プログラミング言語です。コントラクトの状態、関数、イベント、デジタル資産を扱うルールを定義できます。
ソースコードからコントラクトへ
コンパイラはSolidityのソースコードをEVMバイトコードに変換します。アプリケーションバイナリインターフェース(ABI)は、外部のソフトウェアが関数を呼び出し、データを解釈する方法を定めます。デプロイやオンチェーンの状態変更にはトランザクションとガスが必要です。一方、ローカルノードへの呼び出しで既存の状態を読み取る場合、必ずしも有料のトランザクションは必要ありません。
用途にはトークン、エスクロー、ガバナンスのコントラクトがあります。構文がJavaScriptに似ていても、実行はブラウザーではなくブロックチェーンのルールに従います。コンパイラ設定と対象ネットワークが対応するEVM機能も互換性を左右します。
コードの公開と安全性
検証済みソースコードの公開は、デプロイ済みコントラクトとの照合に役立ちますが、安全性を保証しません。アクセス制御、外部呼び出し、オラクルへの前提、管理権限は別途確認が必要です。
公開ブロックチェーンでは、privateと指定した変数も秘密にはなりません。状態を安全に更新する前に外部呼び出しから再びコントラクトへ入ると、リエントランシーが起こり得ます。テストと独立したセキュリティレビューはリスクを減らしますが、解消はできません。