レッスン4

契約の相互作用

この最後のレッスンでは、コントラクトが互いにどのように相互作用するかを調べます。 また、ブロックチェーン上のアクティビティを監視するためのイベントログを実装する方法についても学習します。

契約との対話

最初に取り組む概念は、契約の相互作用です。 契約の相互作用とは、契約が情報を伝達および共有する方法を指します。 Solidityでは、コントラクトは他のコントラクトの関数を呼び出したり、他のコントラクトを作成したり、他のコントラクトやアドレスにイーサを送信したりすることもできます。

私たちはすでに、投票システムにおける契約の相互作用を目の当たりにしています。 投票が行われるたびに、投票コントラクトはそれ自体と対話して、投票者のステータスと提案の投票数を更新します。 ただし、より複雑なシステムの場合は、相互に対話する必要がある個別のコントラクトがある場合があります。

以下は、コントラクトの相互作用の簡単な例です。

硬度
プラグマの堅実さ >=0.7.0 <0.9.0;

contract CalledContract {
    uintパブリックx;

function setX(uint _x) 公開 {
        x = _x;
    }
}

contract CallerContract {
    関数呼び出しSetX(アドレス_calledContractAddress, uint _x) public {
        CalledContract calledContract = CalledContract(_calledContractAddress);
        calledContract.setX(_x);
    }
}

この例では、 は、CallerContractそのsetX関数を呼び出すことによって対話CalledContractします。

イベントロギング

次に、イベント ログに移りましょう。 イベントは、外部に何かが起こったことを契約で伝えるための方法です。 たとえば、投票システムでは、投票が行われるたびにイベントを出力できます。 方法は次のとおりです。

硬度
SPDX-ライセンス識別子: GPL-3.0
プラグマの堅実さ >=0.7.0 <0.9.0;

契約有権者 {
    イベント定義
    イベント VoteCast(address voter, uint proposal);

契約の残りの部分...

function vote(uint _proposal) 公開 {
        Person storage sender = voters[msg.sender];
        require(!sender.voted, "Already voted.");
        sender.voted = true;
        sender.vote = _proposal;

        proposals[_proposal].voteCount += 1;

        // Emit event
        emit VoteCast(msg.sender, _proposal);
    }

契約の残りの部分...
}

更新された vote 関数では、投票が行われるたびにイベントを発行し VoteCast ます。 このイベントには、投票者の住所と投票した提案が記録されます。

このレッスンでは、Solidityの2つの重要な概念であるコントラクトの相互作用とイベントログについて学びました。 このコースで得た知識により、イーサリアム上でより複雑な分散型アプリケーションの開発を開始する準備が整いました。

結論

万丈!コース「分散型投票システムの構築」を無事に修了しました。

このコースでは、分散型投票システムの背後にあるコアコンセプトと、Remix IDEでSolidityを使用して実装する方法を学びました。 分散型投票とは何か、なぜそれが重要なのかを理解することから始めて、有権者登録、投票投じ、投票集計のための独自のスマートコントラクトのコーディングを掘り下げました。 また、コントラクトを操作し、Remix IDE内で投票プロセス全体をシミュレートする方法も学びました。 最後に、コントラクトが互いにどのように相互作用するか、ブロックチェーン上のアクティビティを追跡するためにイベントを記録する方法を探りました。

このコースで得たスキルと知識は、投票システムの作成に限定されるだけでなく、他のタイプの分散型アプリケーションにも適用できます。 練習、実験、構築を続けてください。

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

契約の相互作用

この最後のレッスンでは、コントラクトが互いにどのように相互作用するかを調べます。 また、ブロックチェーン上のアクティビティを監視するためのイベントログを実装する方法についても学習します。

契約との対話

最初に取り組む概念は、契約の相互作用です。 契約の相互作用とは、契約が情報を伝達および共有する方法を指します。 Solidityでは、コントラクトは他のコントラクトの関数を呼び出したり、他のコントラクトを作成したり、他のコントラクトやアドレスにイーサを送信したりすることもできます。

私たちはすでに、投票システムにおける契約の相互作用を目の当たりにしています。 投票が行われるたびに、投票コントラクトはそれ自体と対話して、投票者のステータスと提案の投票数を更新します。 ただし、より複雑なシステムの場合は、相互に対話する必要がある個別のコントラクトがある場合があります。

以下は、コントラクトの相互作用の簡単な例です。

硬度
プラグマの堅実さ >=0.7.0 <0.9.0;

contract CalledContract {
    uintパブリックx;

function setX(uint _x) 公開 {
        x = _x;
    }
}

contract CallerContract {
    関数呼び出しSetX(アドレス_calledContractAddress, uint _x) public {
        CalledContract calledContract = CalledContract(_calledContractAddress);
        calledContract.setX(_x);
    }
}

この例では、 は、CallerContractそのsetX関数を呼び出すことによって対話CalledContractします。

イベントロギング

次に、イベント ログに移りましょう。 イベントは、外部に何かが起こったことを契約で伝えるための方法です。 たとえば、投票システムでは、投票が行われるたびにイベントを出力できます。 方法は次のとおりです。

硬度
SPDX-ライセンス識別子: GPL-3.0
プラグマの堅実さ >=0.7.0 <0.9.0;

契約有権者 {
    イベント定義
    イベント VoteCast(address voter, uint proposal);

契約の残りの部分...

function vote(uint _proposal) 公開 {
        Person storage sender = voters[msg.sender];
        require(!sender.voted, "Already voted.");
        sender.voted = true;
        sender.vote = _proposal;

        proposals[_proposal].voteCount += 1;

        // Emit event
        emit VoteCast(msg.sender, _proposal);
    }

契約の残りの部分...
}

更新された vote 関数では、投票が行われるたびにイベントを発行し VoteCast ます。 このイベントには、投票者の住所と投票した提案が記録されます。

このレッスンでは、Solidityの2つの重要な概念であるコントラクトの相互作用とイベントログについて学びました。 このコースで得た知識により、イーサリアム上でより複雑な分散型アプリケーションの開発を開始する準備が整いました。

結論

万丈!コース「分散型投票システムの構築」を無事に修了しました。

このコースでは、分散型投票システムの背後にあるコアコンセプトと、Remix IDEでSolidityを使用して実装する方法を学びました。 分散型投票とは何か、なぜそれが重要なのかを理解することから始めて、有権者登録、投票投じ、投票集計のための独自のスマートコントラクトのコーディングを掘り下げました。 また、コントラクトを操作し、Remix IDE内で投票プロセス全体をシミュレートする方法も学びました。 最後に、コントラクトが互いにどのように相互作用するか、ブロックチェーン上のアクティビティを追跡するためにイベントを記録する方法を探りました。

このコースで得たスキルと知識は、投票システムの作成に限定されるだけでなく、他のタイプの分散型アプリケーションにも適用できます。 練習、実験、構築を続けてください。

免責事項
* 暗号資産投資には重大なリスクが伴います。注意して進めてください。このコースは投資アドバイスを目的としたものではありません。
※ このコースはGate Learnに参加しているメンバーが作成したものです。作成者が共有した意見はGate Learnを代表するものではありません。
It seems that you are attempting to access our services from a Restricted Location where Gate 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.