BTC
$96,000
5.73%
ETH
$3,521.91
3.97%
HTX
$0.{5}2273
5.23%
SOL
$198.17
3.05%
BNB
$710
3.05%
lang
简体中文
繁體中文
English
Tiếng Việt
한국어
日本語
ภาษาไทย
Türkçe
Trang chủ
AI AI
Tin nhanh
Bài viết
Sự kiện
BlockBeats Pro
Thêm
Thông tin tài chính
Chuyên đề
Hệ sinh thái chuỗi khối
Mục nhập
Podcast
Data
OPRR
Partnered With:

Giới thiệu đơn giản về Sự vững chắc|Bài 12: Sự kiện

Đọc bài viết này mất 6 phút
Bài viết này 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.
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


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.


Quy tắc


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.



Truy vấn các sự kiện trên etherscan


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.


Tóm tắt


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


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

举报 Báo lỗi/Báo cáo
Chọn thư viện
Thêm mới thư viện
Hủy
Hoàn thành
Thêm mới thư viện
Chỉ mình tôi có thể nhìn thấy
Công khai
Lưu
Báo lỗi/Báo cáo
Gửi