Tiêu đề gốc: " Giới thiệu tối giản về Solidity: 12. Sự kiện 》
Tác giả gốc: 0xAA
Gần đây tôi đang học lại sự vững chắc, củng cố các chi tiết và viết một " Solidity "Bắt đầu tối giản" dành cho người mới bắt đầu (chuyên gia lập trình có thể tìm hướng dẫn khác), với 1-3 bài giảng được cập nhật mỗi tuần.
Tất cả các mã đều là mã nguồn mở trên github: github.com/AmazingAng/WTFSolidity
Cái này bài giảng, chúng tôi sử dụng việc chuyển Token ERC20 làm ví dụ để giới thiệu các sự kiện một cách vững chắc.
Sự kiện trong Solidity là sự trừu tượng hóa của nhật ký trên EVM. Nó có hai đặc điểm :
Phản hồi: Ứng dụng (ether.js) có thể đăng ký và lắng nghe những sự kiện này thông qua giao diện RPC và phản hồi ở giao diện người dùng.
Kinh tế: Sự kiện là một cách tương đối tiết kiệm để lưu trữ dữ liệu trên EVM, mỗi sự kiện tiêu thụ khoảng 2.000-5.000 gas. Để so sánh, việc lưu trữ một biến mới cần ít nhất 20.000 gas.
Khai báo sự kiện bắt đầu bằng từ khóa sự kiện, theo sau là tên sự kiện và ngoặc ghi loại biến và tên biến cần ghi trong sự kiện. Lấy ERC20 Mã thông báo Lấy sự kiện Chuyển giao của hợp đồng làm ví dụ:

Chúng ta có thể thấy sự kiện Transfer ghi lại tổng cộng 3 biến from, to và value, tương ứng với Mã thông báo địa chỉ chuyển, địa chỉ nhận và số tiền chuyển. Đồng thời, trước từ khóa from và to là từ khóa được lập chỉ mục, cho biết từ khóa này rất quan trọng, chương trình có thể dễ dàng lọc ra các sự kiện chuyển tiền đối với các địa chỉ chuyển tiền và địa chỉ nhận cụ thể. Mỗi sự kiện có thể có tối đa 3 biến được lập chỉ mục.
Chúng ta có thể phát hành các sự kiện trong hàm. Trong ví dụ sau, mỗi khi hàm _transfer() được sử dụng để thực hiện thao tác chuyển, sự kiện Chuyển sẽ được phát hành và các biến tương ứng sẽ được ghi lại.

Chúng tôi cố gắng sử dụng hàm _transfer() để chuyển 100 trên mạng thử nghiệm Rinkeby Mã thông báo , bạn có thể truy vấn tx tương ứng trên etherscan: https://rinkeby.etherscan.io/tx/0x8cf87215b23055896d93004112bbd8ab754f081b4491cb48c37592ca8f8a36c7
Nhấp vào nút Nhật ký để xem chi tiết sự kiện:

Chi tiết sự kiện
Có ba phần tử trong Chủ đề. [0] là hàm băm của sự kiện này. [1] và [2] là thông tin của hai biến được lập chỉ mục mà chúng tôi đã xác định, đó là địa chỉ chuyển và địa chỉ nhận. Dữ liệu chứa các biến không được lập chỉ mục còn lại, là số tiền chuyển.
Trong bài giảng này, chúng tôi Mô tả cách sử dụng và truy vấn các sự kiện trong Solidity. Nhiều công cụ phân tích trên chuỗi bao gồm Nansen và Dune Analysis hoạt động dựa trên các sự kiện.
Liên kết gốc blockquote>
Chào mừng bạn tham gia cộng đồng chính thức của BlockBeats:
Nhóm Telegram đăng ký: https://t.me/theblockbeats
Nhóm Telegram thảo luận: https://t.me/BlockBeats_App
Tài khoản Twitter chính thức: https://twitter.com/BlockBeatsAsia
