レッスン3

基本的なスマートコントラクトの作成

変数、関数、修飾子は、Solidityスマート契約の重要な構成要素です。Solidityには、状態変数とローカル変数の2種類の変数があります。

このセクションでは、Solidityを使用して基本的なスマートコントラクトを書くプロセスについて説明します。変数、関数、修飾子などの重要なコンポーネントについて説明します。その後、簡単なトークンコントラクトを実装する例を説明します。

変数、関数、および修飾子

  • 変数Solidityでは、変数には状態変数とローカル変数の2種類があります。状態変数はブロックチェーンに永続的に保存されますが、ローカル変数は一時的で関数のスコープ内でのみ存在します。
  • 機能: 関数はスマートコントラクトの構築ブロックです。特定のタスクを実行するために使用され、トランザクションの作成やカスタムロジックの実行などを行います。関数には入力パラメータと戻り値があるため、より高度なカスタマイズと柔軟性が可能です。
  • モディファイア: 修飾子は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];    }}

この契約書には次のものがあります:

  • ステート変数所有者そして残高契約オーナーのアドレスとすべてのアドレスのトークン残高を保存する
  • 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 < 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などの関数の使用を示しています。

免責事項
* 暗号資産投資には重大なリスクが伴います。注意して進めてください。このコースは投資アドバイスを目的としたものではありません。
※ このコースはGate Learnに参加しているメンバーが作成したものです。作成者が共有した意見はGate Learnを代表するものではありません。
カタログ
レッスン3

基本的なスマートコントラクトの作成

変数、関数、修飾子は、Solidityスマート契約の重要な構成要素です。Solidityには、状態変数とローカル変数の2種類の変数があります。

このセクションでは、Solidityを使用して基本的なスマートコントラクトを書くプロセスについて説明します。変数、関数、修飾子などの重要なコンポーネントについて説明します。その後、簡単なトークンコントラクトを実装する例を説明します。

変数、関数、および修飾子

  • 変数Solidityでは、変数には状態変数とローカル変数の2種類があります。状態変数はブロックチェーンに永続的に保存されますが、ローカル変数は一時的で関数のスコープ内でのみ存在します。
  • 機能: 関数はスマートコントラクトの構築ブロックです。特定のタスクを実行するために使用され、トランザクションの作成やカスタムロジックの実行などを行います。関数には入力パラメータと戻り値があるため、より高度なカスタマイズと柔軟性が可能です。
  • モディファイア: 修飾子は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];    }}

この契約書には次のものがあります:

  • ステート変数所有者そして残高契約オーナーのアドレスとすべてのアドレスのトークン残高を保存する
  • 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 < 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などの関数の使用を示しています。

免責事項
* 暗号資産投資には重大なリスクが伴います。注意して進めてください。このコースは投資アドバイスを目的としたものではありません。
※ このコースはGate Learnに参加しているメンバーが作成したものです。作成者が共有した意見はGate Learnを代表するものではありません。
It seems that you are attempting to access our services from a Restricted Location where Gate.io is unable to provide services. We apologize for any inconvenience this may cause. Currently, the Restricted Locations include but not limited to: the United States of America, Canada, Cambodia, Thailand, Cuba, Iran, North Korea and so on. For more information regarding the Restricted Locations, please refer to the User Agreement. Should you have any other questions, please contact our Customer Support Team.