
Các sự kiện của Solidity là không thể thiếu đối với các nhà phát triển hợp đồng thông minh, cho phép chúng tôi kiểm tra các biến cụ thể trong hợp đồng thông minh, thay đổi giao diện người dùng theo cách tự động, v.v. Nói chung, biết cách sử dụng các sự kiện trong Solidity có thể giúp việc phát triển hợp đồng thông minh dễ dàng hơn nhiều.
Trong bài viết này, chúng ta sẽ nghiên cứu từ góc nhìn của các nhà phát triển hợp đồng thông minhMáy ảo Ethereum(EVM) chức năng sự kiện và nhật ký, bao gồm cả nhật ký và sự kiện dùng để làm gì, lập chỉ mục sự kiện cũng như cách sử dụng nhật ký và sự kiện trong Hardhat và Brownie.
EVM là trung tâm của Ethereum và nhiều chuỗi khối khác. EVM có mộtđăng nhậpCác chức năng "ghi" dữ liệu vào cấu trúc dữ liệu bên ngoài hợp đồng thông minh. Một trong những dữ liệu quan trọng làsự kiện đoàn kết. Các sự kiện cho phép chúng tôi "in" thông tin trên chuỗi khối theo cách dễ tìm kiếm hơn và ít tốn xăng hơn so với lưu vào các biến lưu trữ công cộng trong hợp đồng thông minh.
Nhật ký là một cấu trúc dữ liệu đặc biệt trên chuỗi khối. Chúng không thể được truy cập bằng các hợp đồng thông minh, nhưng cung cấp thông tin về các giao dịch và những gì đã xảy ra trong các khối. Chính xác là vì chúng không thể được truy cập bằng các hợp đồng thông minh nên chúng rẻ hơn khi sử dụng.
Bạn cũng có thể xem video sau về các sự kiện và đăng nhập Solidity:
https://www.bilibili.com/video/BV1iL4y1s7ro?spm_id_from=333.999.0.0
Vì vậy, một sự kiện là gì?
đăng kýđăng kýHọ đến để "lắng nghe" các sự kiện nhất định. Trên thực tế, đây làmạng lưới liên kếttiêu đề cấp đầu tiên
Sự kiện có thể được sử dụng để làm gì?
Bây giờ, nếu bạn không phải là nhà điều hành nút Chainlink hoặc Ethereum, bạn có thể hỏi điều gì đã xảy ra với mình. Với các sự kiện Solidity, bạn có thể:
Kiểm tra các biến cụ thể trong hợp đồng thông minh của bạn;
Các biến chỉ mục để tái tạo lại trạng thái được lưu trữ;
đồ thị con
tạo nênđồ thị conđể đọc dữ liệu nhanh hơn;
tiêu đề cấp đầu tiên
Sự kiện trông như thế nào?
Cấu trúc dữ liệu sau đây là cách một sự kiện được xác định trong Solidity:

Bạn có thể coi các sự kiện là một loại đặc biệt mới. Chúng tôi đã tạo một "loại" sự kiện có tên là storedNumber. Tên của sự kiện là storedNumber, có thể chứa một số biến. Trong sự kiện này, có hai loại tham số: được lập chỉ mục và không được lập chỉ mục. Các thông số được lập chỉ mục, còn được gọi là "chủ đề", là các thông số có thể tìm kiếm trong các sự kiện. Chúng ta sẽ nói thêm về những điều này sau.
Sau đó chúng ta có thể phát ra một sự kiện như thế này:

Sau đây là một ví dụ về hợp đồng hoàn chỉnh:

Bây giờ, bất cứ khi nào chúng ta gọi hàm lưu trữ trong ví dụ này, nó sẽ phát ra một sự kiện thuộc loại storedNumber . Hãy xem một giao dịch ví dụ gọi hàm cửa hàng với đầu vào là 1. chúng ta có thể vàoKovan EtherscanXem giao dịch này.
Cuộn đến phần "log" của giao dịch, chúng ta có thể thấy như sau:

Một sự kiện có thể được chia thành:
Địa chỉ: Địa chỉ, địa chỉ của hợp đồng hoặc tài khoản đã phát hành sự kiện.
Chủ đề: chủ đề, tham số chỉ mục của sự kiện.
Dữ liệu: Dữ liệu, mã hóa ABI hoặc "hàm băm" của các thông số không được lập chỉ mục của sự kiện. Vì chúng tôi biết ABI của hợp đồng (vì chúng tôi đã xác minh hợp đồng trên Etherscan), chúng tôi có thể xem nó ở chế độ "Dec" hoặc "Decoded" hoặc ở chế độ "hex", "Hexidecimal" hoặc "Encoded" ban đầu của nó. Nếu chúng tôi chưa xác minh hợp đồng, chúng tôi không thể xem phiên bản được giải mã.

bạn có thể tạiSolidityTài liệuĐọc thêm về sự kiện trong. "Nhật ký" và "sự kiện" thường được sử dụng thay thế cho nhau, bởi vì là nhà phát triển hợp đồng thông minh, chúng tôi thường chỉ quan tâm đến "sự kiện" trong nhật ký. Tuy nhiên, về mặt kỹ thuật, nhật ký cũng bao gồm blockhash, địa chỉ và dữ liệu khác được trả về nút chuỗi khối của bạn bằng cách gọi eth_getLogs. Bạn cũng có thể đọc thêm vềbộ lọc nở hoa, đó là lý do tại sao những sự kiện này có thể được truy vấn dễ dàng.
Sự kiện trong Hardhat
Bây giờ chúng ta đã hiểu sự kiện là gì, hãy tìm hiểu cách truy cập và sử dụng chúng trong Hardhat. Bạn có thể sao chép repo sau và làm theo:
git clone https://github.com/PatrickAlphaC/hardhat-events-logs
cd hardhat-events-logs
Bạn cần làm theo hướng dẫn trong README.md để hoàn thànhcông cụ phụ thuộccài đặt, bao gồm Node, Yarn và Git.
Nếu bạn theo dõi README.md, bạn sẽ có thể:
triển khai một hợp đồng thông minh;
Tạo một giao dịch phát ra một sự kiện;
Xem bối cảnh của những sự kiện này.
Nếu bạn gặp sự cố trong quá trình này, vui lòng liên hệ vớiGithub repotiêu đề cấp đầu tiên

Sự kiện tại Brownie
Các sự kiện trong Brownie khá giống nhau vì hợp đồng hoàn toàn giống nhau.
Bạn có thể sao chép repo sau và làm theo:
Bạn cần làm theo hướng dẫn trong README.md để hoàn thànhcông cụ phụ thuộccài đặt, bao gồm Node, Python, eth-brownie và Git.
Nếu bạn theo dõi README.md, bạn sẽ có thể:
triển khai một hợp đồng thông minh;
Tạo một giao dịch phát ra một sự kiện;
Xem bối cảnh của những sự kiện này.
Nếu bạn gặp sự cố trong quá trình này, vui lòng liên hệ vớiGithub repotóm tắt

tóm tắt
Nhật ký và sự kiện là một phần quan trọng trong quá trình phát triển hợp đồng thông minh và là cơ sở hạ tầng quan trọng cho các dự án như Chainlink và The Graph. Để tìm hiểu thêm về cách phát triển các hợp đồng thông minh mạnh mẽ (sử dụng các kỹ năng sự kiện mới tìm thấy của bạn), hãy nhớ xemTài liệu liên kết chuỗi, hãy bắt đầu tạo ngay bây giờ! .


