最初に取り組む概念は、契約の相互作用です。 契約の相互作用とは、契約が情報を伝達および共有する方法を指します。 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内で投票プロセス全体をシミュレートする方法も学びました。 最後に、コントラクトが互いにどのように相互作用するか、ブロックチェーン上のアクティビティを追跡するためにイベントを記録する方法を探りました。
このコースで得たスキルと知識は、投票システムの作成に限定されるだけでなく、他のタイプの分散型アプリケーションにも適用できます。 練習、実験、構築を続けてください。
最初に取り組む概念は、契約の相互作用です。 契約の相互作用とは、契約が情報を伝達および共有する方法を指します。 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内で投票プロセス全体をシミュレートする方法も学びました。 最後に、コントラクトが互いにどのように相互作用するか、ブロックチェーン上のアクティビティを追跡するためにイベントを記録する方法を探りました。
このコースで得たスキルと知識は、投票システムの作成に限定されるだけでなく、他のタイプの分散型アプリケーションにも適用できます。 練習、実験、構築を続けてください。