💸Solidityの理解
Solidityは、スマートコントラクトを実装するためのオブジェクト指向の高水準言語です。スマートコントラクトは、イーサリアムステート内のアカウントの動作を制御するプログラムである。
Solidityは、イーサリアム仮想マシン(EVM)をターゲットとして設計されたカーリーブラケット言語です。C++、Python、JavaScriptの影響を受けています。Solidityがどのような言語から影響を受けているかについての詳細は、「影響を受けた言語」のセクションを参照してください。
Solidityは静的に型付けされ、継承、ライブラリ、複雑なユーザー定義型などをサポートしています。
Solidity を使用すると、投票、クラウドファンディング、ブラインドオークション、マルチシグネチャウォレットなどの用途のコントラクトを作成できます。
コントラクトをデプロイする場合は、Solidity の最新リリース バージョンを使用する必要があります。例外的な場合を除き、最新バージョンにのみセキュリティ修正が施されています。さらに、新しい機能だけでなく、破壊的な変更も定期的に導入されます。現在、0.y.z のバージョン番号を使用して、この変化の速さを示しています。
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.16 <0.9.0;
contract SimpleStorage {
uint storedData;
function set(uint x) public {
storedData = x;
}
function get() public view returns (uint) {
return storedData;
}
}
最初の行は、ソースコードがGPLバージョン3.0でライセンスされていることを示しています。ソースコードを公開することがデフォルトである環境では、機械可読のライセンス指定子は重要です。
次の行は、ソースコードがSolidityバージョン0.4.16、またはバージョン0.9.0までの新しいバージョンで書かれていることを指定します。これは、コントラクトがコンパイラの新しいバージョンでコンパイルできないようにするためです。プラグマとは、ソースコードをどのように扱うかをコンパイラに指示する一般的なものです (例: pragma once)。
Solidityの意味でのコントラクトは、イーサリアムのブロックチェーン上の特定のアドレスに存在するコード(その関数)とデータ(その状態)のコレクションです。uint storedData;という行は、uint型(256ビットの符号なし整数)のstoredDataという状態変数を宣言しています。これはデータベースの1つのスロットと考えることができ、データベースを管理するコードの関数を呼び出すことでクエリや変更が可能です。この例では、コントラクトで変数の値の変更や取得に使用できる関数 set と get を定義しています。
いいなと思ったら応援しよう!
