Giải thích thiết kế thông minh của stETH

Trung cấp3/22/2024, 10:01:35 PM
Logic cơ bản của stETH là gửi ETH vào Lido. Lido sử dụng ETH này để tham gia vào PoS của Ethereum (Proof of Stake) để kiếm phần thưởng, và người dùng nhận được stETH tương ứng như bằng chứng của sự tham gia của họ. Sau đó, Lido phân phối phần thưởng cho các địa chỉ nắm giữ stETH.

Tiêu đề Chuyển tiếp: Thiết kế hợp đồng thông minh: xem cách stETH tự động phân phối lợi nhuận hàng ngày? Hãy để ETH của bạn tham gia đặt cược để kiếm lãi ổn định.

Tác giả đã quy đổi một lượng nhỏ Ether (ETH) thành stable Ether (stETH) và phát hiện rằng số lượng stETH tăng tự nhiên mỗi ngày, tạo ra lợi nhuận liên tục. Tuy nhiên, không có bản ghi giao dịch nào hiển thị trên tài khoản. Tại sao lại như vậy? Bài viết này sẽ khám phá thiết kế thông minh đằng sau và tiết lộ bí mật về phân phối lợi nhuận.

1 stETH đã tạo ra một số lợi nhuận sau vài ngày.

Trước khi đi vào cách stETH kiếm lời, hãy trước tiên giới thiệu logic đằng sau nó, đó là Ethereum staking. Độc giả nào đã quen thuộc với khái niệm này có thể bỏ qua phần tiếp theo.

Ban đầu, Ethereum, giống như Bitcoin, sử dụng Proof of Work (PoW) làm cơ chế đồng thuận của mình. Tuy nhiên, do lo ngại về tiêu thụ năng lượng, bảo mật và khả năng mở rộng, Ethereum chuyển sang Proof of Stake (PoS) vào tháng 9 năm 2022.

Trước đây, để đạt được sự nhất quán, Ethereum phụ thuộc vào sức mạnh đào để tham gia cộng đồng ETH để có quyền bỏ phiếu và kiếm phần thưởng thông qua việc bỏ phiếu. Điều này khuyến khích sự nhất quán thông qua PoS.

Bằng cách đặt cược 32 ETH, người ta có thể tham gia vào mạng lưới Ethereum như là một người xác nhận, có 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. Người xác nhận nhận phần thưởng ETH cho việc đóng gói giao dịch một cách chính xác vào các khối mới và xác minh công việc của những người xác nhận khác, cho phép có lợi suất ổn định tương đối thông qua việc đặt cược.

Tuy nhiên, đặt cọc truyền thống rất cồng kềnh đối với người dùng thông thường, vì nó yêu cầu 32 ETH và một máy tính chuyên dụng có quyền truy cập liên tục vào mạng Ethereum. Ngoài ra, việc đặt cọc ETH sẽ khóa thanh khoản. Do đó, sự xuất hiện của Liquid Staking Derivatives (LSD), nhằm giải quyết các rào cản và vấn đề thanh khoản của staking truyền thống. LSD cho phép người dùng đặt cọc ít hơn 32 ETH và ủy thác ETH của họ cho các nhà cung cấp đặt cọc bên thứ ba, nhận mã thông báo đặt cọc tương ứng (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 nhau, cho phép người dùng tham gia đặt cọc thuận tiện hơn trong khi vẫn duy trì tính thanh khoản.

Vì vậy, logic cơ bản đằng sau stETH là người dùng cung cấp ETH của họ cho Lido, sau đó Lido sử dụng ETH này để tham gia vào PoS của Ethereum để tạo ra lợi nhuận. Đổi lại, người dùng nhận được stETH là bằng chứng của phần sở hữu của họ. Tiếp theo, Lido phân phối lợi nhuận đến các địa chỉ giữ stETH.

Chúng ta có thể quan sát rằng lợi nhuận của stETH được cập nhật tự động mỗi ngày. Biểu đồ sau minh họa tình hình lợi nhuận mà chúng tôi đã kiểm tra, và người dùng có thể xác minh nội dung liên quan trong ví tiền mã hóa hàng ngày.

Tại thời điểm này, những người quen thuộc với việc phát triển hợp đồng thông minh có thể tự hỏi: với lợi nhuận hàng ngày nhỏ như vậy, liệu có đủ để chi trả phí gas không?

Thực sự, nếu Lido phân chia lợi nhuận bằng cách đơn giản nhất, có thể sẽ gặp khó khăn trong việc chi trả chi phí gas. Gửi token đến một số lượng địa chỉ lớn như vậy sẽ đòi hỏi phí gas đáng kể, điều này có thể không khả thi.

Tuy nhiên, Lido đã thành công trong việc đạt được sự tăng trưởng lợi nhuận tự động trong việc nắm giữ stETH trong các ví mà không có giao dịch rõ ràng nào. Điều này làm thế nào có thể xảy ra?

Chúng tôi đã tìm thấy hợp đồng của Lido tại https://etherscan.io/token/0xae7ab96520de3a18e5e111b5eaab095312d7fe84và đã theo dõi phương thức balanceOf trong hợp đồng.

Phương thức balanceOf tuân thủ theo tiêu chuẩn ERC20 và được các ví dụng để truy xuất số lượng token mà người dùng sở hữu.

Trong hợp đồng stETH, chúng ta thấy rằng nó gọi phương thức getPooledEthByShares. Phương thức này lấy bản đồ (địa chỉ => uint256) cổ phần riêng tư làm đầu vào. Liệu điều này có đại diện cho số lượng stETH mà người dùng sở hữu không? Rõ ràng không, vì cập nhật dữ liệu cho mỗi địa chỉ mỗi ngày sẽ không khả thi. Mặc dù cập nhật cổ phần trong một giao dịch duy nhất có thể đạt được điều này, nhưng lượng gas tiêu thụ vẫn sẽ đáng kể.

Đến nay, nhiều người trong số bạn có thể đã đoán được cách hoạt động của hợp đồng. Hãy tiếp tục kiểm tra phương thức getPooledEthByShares.

Có thể quan sát thấy rằng kết quả cuối cùng được đạt được bằng cách nhân số lượng cổ phần trong địa chỉ bởi _getTotalPooledEther() và chia cho _getTotalShares.

_getTotalPooledEther đại diện cho tổng số lượng stETH (nếu stETH được gắn với ETH theo tỷ lệ 1:1, cũng đại diện cho tổng số lượng ETH), trong khi _getTotalShares đại diện cho tổng số lượng cổ phần. Với phép tính này, số lượng stETH mà mỗi địa chỉ sở hữu được xác định theo cách linh hoạt.

Ví dụ, nếu có tổng cộng 1000 cổ phần, với Địa chỉ A sở hữu 100 cổ phần (được biểu thị bởi sharesAmount), và tổng stETH là 1000 (được trả về bởi _getTotalPooledEther), thì theo phép tính này, Địa chỉ A sẽ sở hữu 100 stETH.

Bây giờ, nếu Lido đặt cược tổng cộng 1000 ETH và kiếm được 1 ETH lợi nhuận, cập nhật _getTotalPooledEther thành 1001, điều đó có nghĩa là tổng stETH tăng từ 1000 lên 1001. Do đó, phép tính mới cho Địa chỉ A sẽ là 100 * 1001 / 1000 = 100,1 stETH.

Một cách đơn giản, trong khi số cổ phần được giữ bởi mỗi địa chỉ không thay đổi, số lượng stETH tương ứng với những cổ phần đó tăng lên. Do đó, khi được tính toán lại, số lượng stETH sẽ tăng tự nhiên.

Tiếp tục với mã, logic trong _getTotalPooledEther bị ảnh hưởng bởi phương thức handleOracleReport, cập nhật dữ liệu liên quan trong hợp đồng. Phương thức này được gọi định kỳ, và việc gọi cụ thể xảy ra thông qua hợp đồng tại https://etherscan.io/address/0x852deD011285fe67063a08005c71a85690503Cee, mà định kỳ gọi submitReportData để cập nhật dữ liệu (submitReportData gọi handleOracleReport bên trong hợp đồng Lido):

Chúng tôi có thể thấy rằng có các cuộc gọi hàng ngày để cập nhật nội dung liên quan, điều này giải thích tại sao, mặc dù chúng ta không thể thấy bất kỳ giao dịch nào phân phối lợi nhuận đến địa chỉ của chúng tôi, số dư thay đổi mỗi ngày.

Điều này minh họa một đặc điểm của các hợp đồng thông minh Ethereum ERC20: lượng token được sở hữu bởi các địa chỉ không phải là mã cứng mà được trả về bởi các phương thức hợp đồng. Do đó, có khả năng số dư token của một địa chỉ thay đổi ngay cả khi không có giao dịch nào. Mặc dù tính linh hoạt này làm cho các hợp đồng ERC20 linh hoạt hơn, nó cũng có thể gây nhầm lẫn cho những người không quen với hợp đồng. Tôi hy vọng bài viết này giúp độc giả hiểu rõ hơn về các hợp đồng thông minh và tương tác với chúng một cách an toàn và thông minh hơn.

Hơn nữa, mặc dù đặt cọc ETH để có được stETH dường như mang lại phần thưởng đặt cược ổn định, nhưng vẫn có những rủi ro tiềm ẩn liên quan. Bài viết này phục vụ như một thăm dò kỹ thuật của các hợp đồng đặt cọc và không nên được hiểu là lời khuyên đầu tư.

Tuyên bố:

  1. Bài viết này được sao chép từ [ ZAN Team],Tiêu đề gốc “Thiết kế hợp đồng tinh tế, xem làm thế nào stETH tự động phân phối thu nhập hàng ngày? Hãy để ETH của bạn tham gia vào việc đặt cược để nhận lãi ổn định”,Bản quyền thuộc về tác giả gốc[Nhóm ZAN], nếu bạn có bất kỳ ý kiến ​​nào về việc tái in, vui lòng liên hệ vớiCổng Học đội, và đội sẽ xử lý nó càng sớm càng tốt theo các quy trình liên quan.

  2. Xin lưu ý: Các quan điểm và ý kiến được thể hiện trong bài viết này chỉ đại diện cho quan điểm cá nhân của tác giả và không hề cung cấp bất kỳ lời khuyên đầu tư nào.

  3. Các phiên bản ngôn ngữ khác của bài viết được dịch bởi nhóm Gate Learn và không được đề cập trong Gate.io) bài viết dịch có thể không được sao chép, phân phối hoặc đạo văn.

مشاركة

المحتوى

Giải thích thiết kế thông minh của stETH

Trung cấp3/22/2024, 10:01:35 PM
Logic cơ bản của stETH là gửi ETH vào Lido. Lido sử dụng ETH này để tham gia vào PoS của Ethereum (Proof of Stake) để kiếm phần thưởng, và người dùng nhận được stETH tương ứng như bằng chứng của sự tham gia của họ. Sau đó, Lido phân phối phần thưởng cho các địa chỉ nắm giữ stETH.

Tiêu đề Chuyển tiếp: Thiết kế hợp đồng thông minh: xem cách stETH tự động phân phối lợi nhuận hàng ngày? Hãy để ETH của bạn tham gia đặt cược để kiếm lãi ổn định.

Tác giả đã quy đổi một lượng nhỏ Ether (ETH) thành stable Ether (stETH) và phát hiện rằng số lượng stETH tăng tự nhiên mỗi ngày, tạo ra lợi nhuận liên tục. Tuy nhiên, không có bản ghi giao dịch nào hiển thị trên tài khoản. Tại sao lại như vậy? Bài viết này sẽ khám phá thiết kế thông minh đằng sau và tiết lộ bí mật về phân phối lợi nhuận.

1 stETH đã tạo ra một số lợi nhuận sau vài ngày.

Trước khi đi vào cách stETH kiếm lời, hãy trước tiên giới thiệu logic đằng sau nó, đó là Ethereum staking. Độc giả nào đã quen thuộc với khái niệm này có thể bỏ qua phần tiếp theo.

Ban đầu, Ethereum, giống như Bitcoin, sử dụng Proof of Work (PoW) làm cơ chế đồng thuận của mình. Tuy nhiên, do lo ngại về tiêu thụ năng lượng, bảo mật và khả năng mở rộng, Ethereum chuyển sang Proof of Stake (PoS) vào tháng 9 năm 2022.

Trước đây, để đạt được sự nhất quán, Ethereum phụ thuộc vào sức mạnh đào để tham gia cộng đồng ETH để có quyền bỏ phiếu và kiếm phần thưởng thông qua việc bỏ phiếu. Điều này khuyến khích sự nhất quán thông qua PoS.

Bằng cách đặt cược 32 ETH, người ta có thể tham gia vào mạng lưới Ethereum như là một người xác nhận, có 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. Người xác nhận nhận phần thưởng ETH cho việc đóng gói giao dịch một cách chính xác vào các khối mới và xác minh công việc của những người xác nhận khác, cho phép có lợi suất ổn định tương đối thông qua việc đặt cược.

Tuy nhiên, đặt cọc truyền thống rất cồng kềnh đối với người dùng thông thường, vì nó yêu cầu 32 ETH và một máy tính chuyên dụng có quyền truy cập liên tục vào mạng Ethereum. Ngoài ra, việc đặt cọc ETH sẽ khóa thanh khoản. Do đó, sự xuất hiện của Liquid Staking Derivatives (LSD), nhằm giải quyết các rào cản và vấn đề thanh khoản của staking truyền thống. LSD cho phép người dùng đặt cọc ít hơn 32 ETH và ủy thác ETH của họ cho các nhà cung cấp đặt cọc bên thứ ba, nhận mã thông báo đặt cọc tương ứng (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 nhau, cho phép người dùng tham gia đặt cọc thuận tiện hơn trong khi vẫn duy trì tính thanh khoản.

Vì vậy, logic cơ bản đằng sau stETH là người dùng cung cấp ETH của họ cho Lido, sau đó Lido sử dụng ETH này để tham gia vào PoS của Ethereum để tạo ra lợi nhuận. Đổi lại, người dùng nhận được stETH là bằng chứng của phần sở hữu của họ. Tiếp theo, Lido phân phối lợi nhuận đến các địa chỉ giữ stETH.

Chúng ta có thể quan sát rằng lợi nhuận của stETH được cập nhật tự động mỗi ngày. Biểu đồ sau minh họa tình hình lợi nhuận mà chúng tôi đã kiểm tra, và người dùng có thể xác minh nội dung liên quan trong ví tiền mã hóa hàng ngày.

Tại thời điểm này, những người quen thuộc với việc phát triển hợp đồng thông minh có thể tự hỏi: với lợi nhuận hàng ngày nhỏ như vậy, liệu có đủ để chi trả phí gas không?

Thực sự, nếu Lido phân chia lợi nhuận bằng cách đơn giản nhất, có thể sẽ gặp khó khăn trong việc chi trả chi phí gas. Gửi token đến một số lượng địa chỉ lớn như vậy sẽ đòi hỏi phí gas đáng kể, điều này có thể không khả thi.

Tuy nhiên, Lido đã thành công trong việc đạt được sự tăng trưởng lợi nhuận tự động trong việc nắm giữ stETH trong các ví mà không có giao dịch rõ ràng nào. Điều này làm thế nào có thể xảy ra?

Chúng tôi đã tìm thấy hợp đồng của Lido tại https://etherscan.io/token/0xae7ab96520de3a18e5e111b5eaab095312d7fe84và đã theo dõi phương thức balanceOf trong hợp đồng.

Phương thức balanceOf tuân thủ theo tiêu chuẩn ERC20 và được các ví dụng để truy xuất số lượng token mà người dùng sở hữu.

Trong hợp đồng stETH, chúng ta thấy rằng nó gọi phương thức getPooledEthByShares. Phương thức này lấy bản đồ (địa chỉ => uint256) cổ phần riêng tư làm đầu vào. Liệu điều này có đại diện cho số lượng stETH mà người dùng sở hữu không? Rõ ràng không, vì cập nhật dữ liệu cho mỗi địa chỉ mỗi ngày sẽ không khả thi. Mặc dù cập nhật cổ phần trong một giao dịch duy nhất có thể đạt được điều này, nhưng lượng gas tiêu thụ vẫn sẽ đáng kể.

Đến nay, nhiều người trong số bạn có thể đã đoán được cách hoạt động của hợp đồng. Hãy tiếp tục kiểm tra phương thức getPooledEthByShares.

Có thể quan sát thấy rằng kết quả cuối cùng được đạt được bằng cách nhân số lượng cổ phần trong địa chỉ bởi _getTotalPooledEther() và chia cho _getTotalShares.

_getTotalPooledEther đại diện cho tổng số lượng stETH (nếu stETH được gắn với ETH theo tỷ lệ 1:1, cũng đại diện cho tổng số lượng ETH), trong khi _getTotalShares đại diện cho tổng số lượng cổ phần. Với phép tính này, số lượng stETH mà mỗi địa chỉ sở hữu được xác định theo cách linh hoạt.

Ví dụ, nếu có tổng cộng 1000 cổ phần, với Địa chỉ A sở hữu 100 cổ phần (được biểu thị bởi sharesAmount), và tổng stETH là 1000 (được trả về bởi _getTotalPooledEther), thì theo phép tính này, Địa chỉ A sẽ sở hữu 100 stETH.

Bây giờ, nếu Lido đặt cược tổng cộng 1000 ETH và kiếm được 1 ETH lợi nhuận, cập nhật _getTotalPooledEther thành 1001, điều đó có nghĩa là tổng stETH tăng từ 1000 lên 1001. Do đó, phép tính mới cho Địa chỉ A sẽ là 100 * 1001 / 1000 = 100,1 stETH.

Một cách đơn giản, trong khi số cổ phần được giữ bởi mỗi địa chỉ không thay đổi, số lượng stETH tương ứng với những cổ phần đó tăng lên. Do đó, khi được tính toán lại, số lượng stETH sẽ tăng tự nhiên.

Tiếp tục với mã, logic trong _getTotalPooledEther bị ảnh hưởng bởi phương thức handleOracleReport, cập nhật dữ liệu liên quan trong hợp đồng. Phương thức này được gọi định kỳ, và việc gọi cụ thể xảy ra thông qua hợp đồng tại https://etherscan.io/address/0x852deD011285fe67063a08005c71a85690503Cee, mà định kỳ gọi submitReportData để cập nhật dữ liệu (submitReportData gọi handleOracleReport bên trong hợp đồng Lido):

Chúng tôi có thể thấy rằng có các cuộc gọi hàng ngày để cập nhật nội dung liên quan, điều này giải thích tại sao, mặc dù chúng ta không thể thấy bất kỳ giao dịch nào phân phối lợi nhuận đến địa chỉ của chúng tôi, số dư thay đổi mỗi ngày.

Điều này minh họa một đặc điểm của các hợp đồng thông minh Ethereum ERC20: lượng token được sở hữu bởi các địa chỉ không phải là mã cứng mà được trả về bởi các phương thức hợp đồng. Do đó, có khả năng số dư token của một địa chỉ thay đổi ngay cả khi không có giao dịch nào. Mặc dù tính linh hoạt này làm cho các hợp đồng ERC20 linh hoạt hơn, nó cũng có thể gây nhầm lẫn cho những người không quen với hợp đồng. Tôi hy vọng bài viết này giúp độc giả hiểu rõ hơn về các hợp đồng thông minh và tương tác với chúng một cách an toàn và thông minh hơn.

Hơn nữa, mặc dù đặt cọc ETH để có được stETH dường như mang lại phần thưởng đặt cược ổn định, nhưng vẫn có những rủi ro tiềm ẩn liên quan. Bài viết này phục vụ như một thăm dò kỹ thuật của các hợp đồng đặt cọc và không nên được hiểu là lời khuyên đầu tư.

Tuyên bố:

  1. Bài viết này được sao chép từ [ ZAN Team],Tiêu đề gốc “Thiết kế hợp đồng tinh tế, xem làm thế nào stETH tự động phân phối thu nhập hàng ngày? Hãy để ETH của bạn tham gia vào việc đặt cược để nhận lãi ổn định”,Bản quyền thuộc về tác giả gốc[Nhóm ZAN], nếu bạn có bất kỳ ý kiến ​​nào về việc tái in, vui lòng liên hệ vớiCổng Học đội, và đội sẽ xử lý nó càng sớm càng tốt theo các quy trình liên quan.

  2. Xin lưu ý: Các quan điểm và ý kiến được thể hiện trong bài viết này chỉ đại diện cho quan điểm cá nhân của tác giả và không hề cung cấp bất kỳ lời khuyên đầu tư nào.

  3. Các phiên bản ngôn ngữ khác của bài viết được dịch bởi nhóm Gate Learn và không được đề cập trong Gate.io) bài viết dịch có thể không được sao chép, phân phối hoặc đạo văn.

ابدأ التداول الآن
اشترك وتداول لتحصل على جوائز ذهبية بقيمة
100 دولار أمريكي
و
5500 دولارًا أمريكيًا
لتجربة الإدارة المالية الذهبية!