このセクションでは、Solidityを使用して基本的なスマートコントラクトを書くプロセスについて説明します。変数、関数、修飾子などの重要なコンポーネントについて説明します。その後、簡単なトークンコントラクトを実装する例を説明します。
変数、関数、および修飾子
例1:単純なトークン契約の実装
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]; }}
この契約書には次のものがあります:
所有者
そして残高
契約オーナーのアドレスとすべてのアドレスのトークン残高を保存するコンストラクタ
トークンの初期供給量を設定し、それらを契約オーナーに割り当てる関数。転送
他のアカウントにトークンを転送することをユーザーに許可する機能を使用します。必要
送信者が転送するのに十分なトークンを持っていることを確認する文balanceOf
指定されたアカウントのトークン残高を返す関数。例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 < candidateList.length; i++) { if (candidateList[i] == candidate) { return true; } } return false; }}
この例では、投票システム
コントラクトは、複数の候補者の中から1人に投票することをユーザーに許可します。候補者に投票する
function. 契約は、各候補者に対して受け取った投票数を追跡します。受け取った投票
マッピング、キーは候補者の名前で、値は投票数です。候補者リスト
変数は有効な候補者のリストを保持します。totalVotesFor
特定の候補者が受け取った投票数を確認するために呼び出すことができます。有効な候補者
関数は、候補者が有効かどうかをチェックします。これは、Solidityが複雑なロジックを持つ分散型アプリケーションを構築するためにどのように使用されるかの単純な例です。
ハイライト
変数、関数、修飾子は、Solidityスマートコントラクトの重要な構成要素です。
Solidityには、状態変数とローカル変数の2種類があります。
関数はタスクを実行するために使用され、入力パラメーターと戻り値を持つことができます。
修飾子は、関数の動作を修正し、コードの読みやすさと管理性を向上させるために使用されます。
SimpleToken契約により、ユーザーはトークンを送金したり、トークン残高を確認したりすることができます。
SimpleToken契約は、状態変数、コンストラクタ関数、およびtransferやbalanceOfのような関数の使用を示しています。
VotingSystemコントラクトは、ユーザーが候補者に投票し、投票数を追跡することを可能にします。
VotingSystemコントラクトは、マッピング、配列、voteForCandidate、totalVotesFor、validCandidateなどの関数の使用を示しています。
このセクションでは、Solidityを使用して基本的なスマートコントラクトを書くプロセスについて説明します。変数、関数、修飾子などの重要なコンポーネントについて説明します。その後、簡単なトークンコントラクトを実装する例を説明します。
変数、関数、および修飾子
例1:単純なトークン契約の実装
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]; }}
この契約書には次のものがあります:
所有者
そして残高
契約オーナーのアドレスとすべてのアドレスのトークン残高を保存するコンストラクタ
トークンの初期供給量を設定し、それらを契約オーナーに割り当てる関数。転送
他のアカウントにトークンを転送することをユーザーに許可する機能を使用します。必要
送信者が転送するのに十分なトークンを持っていることを確認する文balanceOf
指定されたアカウントのトークン残高を返す関数。例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 < candidateList.length; i++) { if (candidateList[i] == candidate) { return true; } } return false; }}
この例では、投票システム
コントラクトは、複数の候補者の中から1人に投票することをユーザーに許可します。候補者に投票する
function. 契約は、各候補者に対して受け取った投票数を追跡します。受け取った投票
マッピング、キーは候補者の名前で、値は投票数です。候補者リスト
変数は有効な候補者のリストを保持します。totalVotesFor
特定の候補者が受け取った投票数を確認するために呼び出すことができます。有効な候補者
関数は、候補者が有効かどうかをチェックします。これは、Solidityが複雑なロジックを持つ分散型アプリケーションを構築するためにどのように使用されるかの単純な例です。
ハイライト
変数、関数、修飾子は、Solidityスマートコントラクトの重要な構成要素です。
Solidityには、状態変数とローカル変数の2種類があります。
関数はタスクを実行するために使用され、入力パラメーターと戻り値を持つことができます。
修飾子は、関数の動作を修正し、コードの読みやすさと管理性を向上させるために使用されます。
SimpleToken契約により、ユーザーはトークンを送金したり、トークン残高を確認したりすることができます。
SimpleToken契約は、状態変数、コンストラクタ関数、およびtransferやbalanceOfのような関数の使用を示しています。
VotingSystemコントラクトは、ユーザーが候補者に投票し、投票数を追跡することを可能にします。
VotingSystemコントラクトは、マッピング、配列、voteForCandidate、totalVotesFor、validCandidateなどの関数の使用を示しています。