
Solidity イベントはスマート コントラクト開発者にとって不可欠であり、スマート コントラクト内の特定の変数をテストしたり、自動化された方法でフロントエンドを変更したりすることができます。一般に、Solidity でのイベントの使用方法を理解すると、スマート コントラクトの開発がはるかに簡単になります。
この記事では、スマートコントラクト開発者の視点から考察していきます。イーサリアム仮想マシン(EVM) のログとイベントの機能。ログとイベントの目的、イベントのインデックス作成、Hardhat と Brownie でのログとイベントの使用方法が含まれます。
EVM はイーサリアムや他の多くのブロックチェーンの中心です。 EVM にはログスマート コントラクトの外部のデータ構造にデータを「書き込む」関数。重要なデータの 1 つは、ソリッド性イベント。イベントを使用すると、スマート コントラクトのパブリック ストレージ変数に保存するよりも検索しやすく、ガス消費量が少ない方法で、ブロックチェーン上に情報を「印刷」できます。
ログはブロックチェーン上の特別なデータ構造です。これらはスマート コントラクトからはアクセスできませんが、トランザクションとブロック内で何が起こったかに関する情報を提供します。スマートコントラクトによってアクセスできないからこそ、より安価に使用できるのです。
Solidity でのイベントとログインに関する次のビデオも見ることができます。
https://www.bilibili.com/video/BV1iL4y1s7ro?spm_id_from=333.999.0.0
では、イベントとは何でしょうか?
サブスクリプションサブスクリプション彼らは特定の出来事を「聞く」ためにやって来ます。実際、これはチェーンリンクネットワーク最初のレベルのタイトル
イベントは何に使用できますか?
さて、あなたがChainlinkやEthereumノードのオペレーターでないなら、何が起こったのか疑問に思うかもしれません。 Solidity イベントを使用すると、次のことが可能になります。
スマート コントラクト内の特定の変数をテストします。
保存された状態を再構築するためのインデックス変数。
サブグラフ
作成するサブグラフデータをより速く読み取るため。
最初のレベルのタイトル
イベントはどんな感じでしたか?
次のデータ構造は、Solidity でイベントがどのように定義されるかを示しています。

イベントは新しい特別なタイプと考えることができます。 storageNumber というイベントの「タイプ」を作成しました。イベントの名前は storageNumber で、いくつかの変数を保持できます。このイベントには、インデックス付きとインデックスなしの 2 種類のパラメータがあります。 「トピック」とも呼ばれるインデックス付きパラメータは、イベント内の検索可能なパラメータです。これらについては後ほど詳しく説明します。
次に、次のようなイベントを発行できます。

以下は完全な契約例です。

この例で store 関数を呼び出すたびに、 storageNumber 型のイベントが生成されます。入力 1 でストア関数を呼び出すトランザクションの例を見てみましょう。できますKovan Etherscanこのトランザクションを参照してください。
トランザクションの「ログ」セクションまでスクロールすると、次の内容が表示されます。

イベントは次のように分類できます。
住所: 住所、イベントを発行した契約またはアカウントのアドレス。
トピック: トピック、イベントのインデックス パラメーター。
データ: データ、ABI エンコード、またはイベントのインデックスなしパラメーターの「ハッシュ」。コントラクトの ABI がわかっているため (Etherscan でコントラクトを検証したため)、「12 進」または「デコード」モード、または元の「16 進」、「16 進数」、または「エンコード」モード チェックで表示できます。契約を検証していない場合、デコードされたバージョンを確認することはできません。

でできますSolidityドキュメントイベントの詳細については、 を参照してください。 「ログ」と「イベント」は、多くの場合同じ意味で使用されます。スマート コントラクトの開発者として、私たちは通常、ログ内の「イベント」のみに関心があるからです。ただし、技術的には、ログにはブロックハッシュ、アドレス、および eth_getLogs を呼び出すことによってブロックチェーン ノードに返されるその他のデータも含まれます。さらに詳しく読むこともできますブルームフィルターそのため、これらのイベントは簡単にクエリできます。
ヘルメットのイベント
イベントとは何かを理解したところで、Hardhat でイベントにアクセスして使用する方法を学びましょう。次のリポジトリのクローンを作成して、次の手順に従ってください。
git clone https://github.com/PatrickAlphaC/hardhat-events-logs
cd hardhat-events-logs
完了するには、README.md の指示に従う必要があります。依存関係ツールインストールには、Node、Yarn、Git が含まれます。
README.md に従うと、次のことができるようになります。
スマートコントラクトを導入する。
イベントを発行するトランザクションを作成します。
これらのイベントのコンテキストを表示します。
このプロセス中に問題が発生した場合は、担当者までご連絡ください。Github repo最初のレベルのタイトル

ブラウニーのイベント
契約がまったく同じであるため、ブラウニーでの出来事はほぼ同じです。
次のリポジトリのクローンを作成して、次の手順に従ってください。
完了するには、README.md の指示に従う必要があります。依存関係ツールインストールには、Node、Python、eth-brownie、Git が含まれます。
README.md に従うと、次のことができるようになります。
スマートコントラクトを導入する。
イベントを発行するトランザクションを作成します。
これらのイベントのコンテキストを表示します。
このプロセス中に問題が発生した場合は、担当者までご連絡ください。Github repo要約する

要約する
ログとイベントはスマート コントラクト開発の重要な部分であり、Chainlink や The Graph などのプロジェクトにとって重要なインフラストラクチャです。強力なスマート コントラクトの開発 (新しく見つけたイベント スキルを使用) について詳しく知りたい場合は、必ずチェックしてください。チェーンリンクのドキュメント、今すぐ作成を始めましょう! 。


