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

Giải thích thiết kế khéo léo của stETH, làm thế nào nó tự động phân phối thu nhập hàng ngày?

Đọc bài viết này mất 15 phút
Số lượng token sở hữu bởi hợp đồng ERC20 được trả về theo phương thức hợp đồng, do đó có thể mặc dù tài khoản không có bất kỳ giao dịch nào nhưng số lượng token cũng thay đổi.
Tiêu đề gốc: "Thiết kế hợp đồng khéo léo, xem cách stETH tự động phân phối thu nhập hàng ngày? Hãy để ETH của bạn tham gia cam kết để nhận lãi ổn định"
Nguồn gốc: Nhóm ZAN


Tác giả đã chuyển đổi số ETH của mình thành stETH Sau đó, Tôi nhận thấy ETH đang tăng trưởng tự nhiên mỗi ngày và tiếp tục thu được lợi nhuận. Nhưng tôi không thấy bất kỳ giao dịch nào trong tài khoản của mình. Bài viết này sẽ đưa bạn qua thiết kế khéo léo đằng sau nó và tiết lộ bí quyết phân phối doanh thu.


1 stETH qua vài Queen of Heaven đã kiếm được một số lợi nhuận


Trước đó, hãy để tôi giới thiệu logic đằng sau việc kiếm lợi nhuận của stETH, đó là việc đặt cược vào Ethereum. Độc giả đã hiểu nó. của khái niệm này có thể bỏ qua phía trước.



Ethereum ban đầu, giống như Bitcoin, sử dụng bằng chứng công việc (Proof of Work (PoW) làm cơ chế đồng thuận, nhưng do mức tiêu thụ năng lượng PoW cũng như các cân nhắc phát triển hiệu suất và bảo mật khác, Ethereum sẽ được nâng cấp lên Proof of Stake (PoS) từ tháng 9 năm 2022.


Ethereum, ban đầu dựa vào việc khai thác sức mạnh điện toán để thu hút người khai thác nhằm đạt được sự đồng thuận, đã chuyển sang dựa vào mọi người để có được quyền biểu quyết bằng cách cam kết ETH và thu nhập biểu quyết. , từ đó thúc đẩy mọi người đạt được sự đồng thuận thông qua PoS.


Bằng cách đặt cược 32 ETH, bạn có thể tham gia mạng Ethereum và trở thành người xác thực, chịu trách nhiệm lưu trữ dữ liệu, xử lý giao dịch và thêm các khối mới vào chuỗi khối. Miễn là giao dịch được đóng gói chính xác vào một khối mới và công việc của những người xác thực khác được kiểm tra, bạn sẽ được thưởng ETH, tương đương với việc mang lại cho ETH thu nhập tương đối ổn định thông qua việc đặt cọc.


Nhưng một cam kết như vậy vẫn còn quá rắc rối đối với người dùng thông thường, 32 Ethereum và một người phải có khả năng truy cập vào mạng Ethereum quanh năm. vẫn có những ngưỡng nhất định cho máy tính chuyên dụng. Hơn nữa, việc đặt cọc ETH sẽ khiến tính thanh khoản của phần ETH này bị mất đi. Vì vậy, có Công cụ phái sinh đặt cược lỏng (LSD), nhằm giải quyết các vấn đề về ngưỡng và thanh khoản trong đặt cược truyền thống, cho phép người dùng đặt cược ít hơn 32 ETH mà không cần sở hữu các nút. Đó là ủy thác ETH cho bên thứ ba để cầm cố và nhận được số tiền tương ứng. mã thông báo cam kết (chẳng hạn như stETH của Lido hoặc rETH của Rocket Pool). Các mã thông báo thanh khoản này có thể được giao dịch, vay hoặc sử dụng cho các hoạt động tài chính khác trên các nền tảng khác. Bằng cách này, Người dùng không chỉ có thể tham gia đặt cược thuận tiện hơn mà còn có thể nhận được phần thưởng. duy trì tính linh hoạt của nguồn vốn.



Vậy logic cơ bản của stETH là cung cấp ETH cho Lido và Lido sẽ sử dụng số ETH này để tham gia. Để có được thu nhập từ PoS của Ethereum, người dùng sẽ nhận được stETH tương ứng dưới dạng chứng từ. Bước tiếp theo là Lido phân phối số tiền thu được đến các địa chỉ chứa stETH.


Chúng ta có thể thấy rằng thu nhập của stETH được cập nhật tự động hàng ngày. Hình ảnh bên dưới là tình hình thu nhập trong thử nghiệm của chúng tôi, tương ứng với việc xác minh ví mã hóa liên quan. nội dung có thể được kiểm tra hàng ngày.



Nhưng tại thời điểm này, tôi nghĩ những sinh viên đã quen với việc phát triển hợp đồng thông minh sẽ bối rối : Với rất ít thu nhập được phân phối mỗi ngày, thu nhập có thể không đủ để trả cho GAS.


Thật vậy, nếu Lido phân phối thu nhập theo phương pháp đơn giản nhất thì sẽ khó trang trải được chi phí GAS. Theo quan điểm trực giác của chúng tôi, việc GAS gửi mã thông báo đến nhiều địa chỉ như vậy là không thể tưởng tượng được.


Nhưng đúng là Lido đã tự động đạt được mức tăng trưởng thu nhập stETH trong ví và chúng tôi chưa tìm thấy bất kỳ giao dịch nào tại địa chỉ này. Làm thế nào để đạt được điều này?


Chúng tôi đã tìm thấy hợp đồng của Lido https://etherscan.io/token/0xae7ab96520de3a18e5e111b5eaab095312d7fe84 Truy tìm lại phương thức BalanceOf của hợp đồng:



balanceOf là phương thức tuân thủ đặc tả ERC20. Ví sử dụng phương thức này để nhận được bao nhiêu token. người dùng có.


Chúng ta có thể thấy rằng phương thức getPooledEthByShares được gọi trong hợp đồng stETH. Tham số đầu vào của phương thức này là  ánh xạ (địa chỉ => uint256) chia sẻ riêng tư;. Điều này đại diện cho người dùng bao nhiêu stETH? Rõ ràng là không, nếu không, dữ liệu của từng địa chỉ sẽ cần được cập nhật hàng ngày. Mặc dù điều này cũng có thể được thực hiện bằng cách gọi phương thức trong hợp đồng để cập nhật cổ phiếu, để mã thông báo của tất cả các địa chỉ có thể được cập nhật trong một giao dịch, nhưng. rõ ràng đây không phải là trường hợp của GAS. Mức tiêu thụ cũng rất lớn.


Bây giờ chắc hẳn bạn đã đoán được hợp đồng được triển khai như thế nào. Hãy tiếp tục xem xét phương thức getPooledEthByShares.



Bạn có thể thấy rằng kết quả trả về cuối cùng được nhân với  sharesAmount  ; _getTotalPooledEther() Xóa _getTotalShares.


_getTotalPooledEther Biểu thị tổng số lượng stETH có (nếu tỷ lệ stETH trên ETH là 1:1 thì nó cũng biểu thị số lượng ETH có), _getTotalShares biểu thị có bao nhiêu cổ phần. Bằng cách này, mỗi địa chỉ có bao nhiêu stETH sẽ được tính toán linh hoạt.


Ví dụ: nếu hiện tại có tổng cộng 1.000 cổ phiếu (Cổ phiếu, là số được trả về bởi phương thức  _getTotalShares ), trong đó A địa chỉ có 100 lượt chia sẻ (tương ứng với số lượng sharesAmount ở trên). 1000 cổ phiếu này tương ứng với số tiền được trả lại bởi 1000 stETH (tức là _getTotalPooledEther). Khi đó theo cách tính này thì địa chỉ A tương ứng với 100 stETH. Sau đó, Lido lấy tổng cộng 1.000 ETH để cầm cố và nhận được thu nhập 1 ETH. Sau đó, bản cập nhật tương ứng _getTotalPooledEther là 1001, tức là tổng số 1.000 stETH ban đầu đã tăng lên 1.001, khi đó địa chỉ A mới được tính là Bạn có. 100 * 1001/1000 = 100,1 stETH.


Nói một cách đơn giản, nếu số cổ phần thuộc sở hữu của mỗi địa chỉ không thay đổi và số stETH tương ứng với số cổ phần tăng lên thì số stETH sẽ tự nhiên tăng sau đó. phép tính. .


Hãy tiếp tục xem xét mã. Logic trong  _getTotalPooledEther  sẽ bị ảnh hưởng bởi phương thức  handleOracleReport và phương thức này sẽ cập nhật các dữ liệu liên quan đến hợp đồng. Cuộc gọi cụ thể sẽ được thực hiện thông qua https://etherscan.io/address/0x852deD011285fe67063a08005c71a85690503Cee Hợp đồng thường xuyên gọi submitReportData để cập nhật dữ liệu (submitReportData sẽ gọi handleOracleReport của hợp đồng Lido):



Chúng tôi có thể thấy rằng có những lời kêu gọi cập nhật nội dung liên quan mỗi ngày, đó là lý do tại sao mặc dù chúng tôi không thể thấy Có một giao dịch giải phóng thu nhập đến địa chỉ của chúng tôi, nhưng số tiền vẫn thay đổi hàng ngày.


Điều này thực sự phản ánh một đặc điểm của hợp đồng thông minh Ethereum ERC20, đó là số lượng token sở hữu bởi các hợp đồng ERC20 này không được mã hóa cứng trong địa chỉ, nhưng Nó được trả về theo phương thức hợp đồng nên có thể xảy ra trường hợp mặc dù tài khoản không có bất kỳ giao dịch nào nhưng số lượng token cũng có thể thay đổi. Một mặt, điều này làm cho hợp đồng ERC20 linh hoạt hơn nhưng mặt khác cũng mang đến nhiều nhầm lẫn cho nhiều bạn chưa quen với hợp đồng. Tôi hy vọng bài viết này có thể giúp mọi người hiểu rõ hơn về hợp đồng thông minh và tương tác. với hợp đồng thông minh an toàn hơn.


Ngoài ra, mặc dù bạn có thể có được thu nhập đặt cược có vẻ ổn định bằng cách cầm cố ETH cho stETH, nhưng vẫn có những rủi ro có thể xảy ra. Bài viết này chỉ là đánh giá về hợp đồng cầm cố. . Tham khảo nghiên cứu kỹ thuật và không cấu thành bất kỳ lời khuyên đầu tư nào.


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

24HBài viết phổ biến
Tải BlockBeats
home-down-code
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