このセクションでは、Solidityを使用して基本的なスマートコントラクトを書くプロセスについて説明します。変数、関数、修飾子などの重要なコンポーネントについて説明します。その後、簡単なトークンコントラクトを実装する例を説明します。
変数、関数、および修飾子
Solidityを使用してシンプルなトークン契約を作成しましょう。この契約では、ユーザーがアカウント間でトークンを転送したり、任意のアカウントのトークン残高を確認したりできます。
TypeScriptpragma solidity ^0.8.0;contract SimpleToken { // 状態変数を宣言 address public owner; mapping(address => uint256) public balances; // トークン契約を初期化 constructor(uint256 initialSupply) { owner = msg.sender; balances[owner] = initialSupply; } // トークンを送信する機能 function transfer(address to, uint256 amount) public { require(balances[msg.sender] >= amount, "残高不足"); balances[msg.sender] -= amount; balances[to] += amount; } // アカウントのトークン残高を確認する機能 function balanceOf(address account) public view returns (uint256) { return balances[account]; }}
```この契約書には次のものがあります:
- ステート変数`所有者`そして`残高`契約オーナーのアドレスとすべてのアドレスのトークン残高を保存する- A `コンストラクタ`トークンの初期供給量を設定し、それらを契約オーナーに割り当てる関数。- A `転送`他のアカウントにトークンを転送することをユーザーに許可する機能を使用します。`必要`送信者が転送するのに十分なトークンを持っていることを確認する文- A `balanceOf`指定されたアカウントのトークン残高を返す関数。- この基本的なトークン契約は、Solidityで変数、関数、修飾子を使用して、シンプルで機能的なスマート契約を作成する方法を示しています。**例2:シンプルな投票システムの実装**
TypeScriptpragma solidity ^0.8.0;contract VotingSystem { mapping (bytes32 => uint256) public votesReceived; bytes32[] public candidateList; constructor(bytes32[] memory candidateNames) { candidateList = candidateNames; } function voteForCandidate(bytes32 candidate) public { require(validCandidate(candidate), "Invalid candidate."); votesReceived[candidate] += 1; } function totalVotesFor(bytes32 candidate) public view returns (uint256) { require(validCandidate(candidate), "Invalid candidate."); return votesReceived[candidate]; } function validCandidate(bytes32 candidate) public view returns (bool) { for (uint256 i = 0; i ハイライト 変数、関数、修飾子は、Solidityスマートコントラクトの重要な構成要素です。 Solidityには、状態変数とローカル変数の2種類があります。 関数はタスクを実行するために使用され、入力パラメーターと戻り値を持つことができます。 修飾子は、関数の動作を修正し、コードの読みやすさと管理性を向上させるために使用されます。 SimpleToken契約により、ユーザーはトークンを送金したり、トークン残高を確認したりすることができます。 SimpleToken契約は、状態変数、コンストラクタ関数、およびtransferやbalanceOfのような関数の使用を示しています。 VotingSystemコントラクトは、ユーザーが候補者に投票し、投票数を追跡することを可能にします。 VotingSystemコントラクトは、マッピング、配列、voteForCandidate、totalVotesFor、validCandidateなどの関数の使用を示しています。
免責事項
* 暗号資産投資には重大なリスクが伴います。注意して進めてください。このコースは投資アドバイスを目的としたものではありません。
※ このコースはGate Learnに参加しているメンバーが作成したものです。作成者が共有した意見はGate Learnを代表するものではありません。