Desain kontrak pintar: lihat bagaimana stETH secara otomatis mendistribusikan keuntungan setiap hari? Biarkan ETH Anda berpartisipasi dalam staking untuk mendapatkan bunga stabil.
Penulis mengonversi sejumlah kecil Ether (ETH) menjadi Ether stabil (stETH) dan menemukan bahwa jumlah stETH meningkat secara alami setiap hari, menghasilkan keuntungan yang berkelanjutan. Namun, tidak ada catatan transaksi yang terlihat di akun. Mengapa hal ini terjadi? Artikel ini akan menjelajahi desain cerdas di baliknya dan mengungkap rahasia distribusi keuntungan.
1 stETH telah menghasilkan beberapa keuntungan setelah beberapa hari.
Sebelum masuk ke cara stETH menghasilkan keuntungan, mari kita pertama memperkenalkan logika di baliknya, yaitu staking Ethereum. Pembaca yang sudah familiar dengan konsep ini dapat melompat ke depan.
Awalnya, Ethereum, seperti Bitcoin, menggunakan Proof of Work (PoW) sebagai mekanisme konsensusnya. Namun, karena kekhawatiran terhadap konsumsi daya, keamanan, dan skalabilitas, Ethereum beralih ke Proof of Stake (PoS) pada September 2022.
Sebelumnya bergantung pada kekuatan penambangan untuk mencapai konsensus, Ethereum kini bergantung pada peserta yang melakukan staking ETH untuk mendapatkan hak suara dan mendapatkan imbalan melalui pemungutan suara. Hal ini mendorong konsensus melalui PoS.
Dengan melakukan staking 32 ETH, seseorang dapat bergabung dengan jaringan Ethereum sebagai validator, bertanggung jawab untuk menyimpan data, memproses transaksi, dan menambahkan blok baru ke dalam blockchain. Validator menerima imbalan ETH untuk mengemas transaksi dengan benar ke dalam blok baru dan memverifikasi pekerjaan validator lainnya, memungkinkan untuk imbal hasil yang relatif stabil melalui staking.
Namun, staking tradisional terasa rumit bagi pengguna biasa, karena membutuhkan 32 ETH dan komputer khusus dengan akses tanpa henti ke jaringan Ethereum. Selain itu, staking ETH mengunci likuiditas. Oleh karena itu, munculnya Derivatif Staking Cair (LSD), bertujuan untuk mengatasi hambatan dan isu likuiditas dari staking tradisional. LSD memungkinkan pengguna untuk melakukan staking kurang dari 32 ETH dan mengalihkan ETH mereka ke penyedia staking pihak ketiga, menerima token staking yang sesuai (seperti stETH dari Lido atau rETH dari Rocket Pool). Token cair ini dapat diperdagangkan, dipinjam, atau digunakan untuk kegiatan keuangan lainnya di berbagai platform, memungkinkan pengguna untuk berpartisipasi dalam staking dengan lebih nyaman sambil mempertahankan likuiditas.
Jadi, logika dasar di balik stETH adalah pengguna menyediakan ETH mereka ke Lido, yang kemudian menggunakan ETH tersebut untuk berpartisipasi dalam PoS Ethereum untuk menghasilkan keuntungan. Sebagai imbalannya, pengguna menerima stETH sebagai bukti dari staking mereka. Selanjutnya, Lido mendistribusikan keuntungan ke alamat yang memegang stETH.
Kita dapat mengamati bahwa keuntungan stETH diperbarui secara otomatis setiap hari. Grafik berikut menggambarkan situasi keuntungan yang kami uji, dan pengguna dapat memverifikasi konten terkait dompet terenkripsi mereka setiap hari.
Pada titik ini, mereka yang akrab dengan pengembangan kontrak pintar mungkin bertanya-tanya: dengan keuntungan harian yang begitu kecil, apakah sudah cukup untuk menutupi biaya gas?
Memang, jika Lido membagikan keuntungan menggunakan metode paling sederhana, kemungkinan besar akan kesulitan untuk menutupi biaya gas. Mengirim token ke sejumlah besar alamat akan memerlukan biaya gas yang signifikan, yang mungkin tidak layak.
Namun, Lido telah berhasil mencapai pertumbuhan keuntungan otomatis dalam kepemilikan stETH di dalam dompet tanpa adanya transaksi yang jelas. Bagaimana hal ini bisa terjadi?
Kami menemukan kontrak Lido di https://etherscan.io/token/0xae7ab96520de3a18e5e111b5eaab095312d7fe84dan melacak metode balanceOf dalam kontrak.
Metode balanceOf sesuai dengan standar ERC20 dan digunakan oleh dompet untuk mengambil jumlah token yang dimiliki oleh pengguna.
Di kontrak stETH, kita melihat bahwa itu memanggil metode getPooledEthByShares. Metode ini mengambil pemetaan (alamat => uint256) saham pribadi; sebagai input. Apakah ini mewakili berapa banyak stETH yang dimiliki pengguna? Jelas tidak, karena memperbarui data untuk setiap alamat setiap hari akan tidak praktis. Meskipun memperbarui saham dalam satu transaksi bisa mencapai ini, konsumsi gas masih akan signifikan.
Sampai saat ini, banyak dari Anda mungkin sudah menebak bagaimana kontrak tersebut bekerja. Mari kita lanjutkan pemeriksaan metode getPooledEthByShares.
Dapat diamati bahwa hasil akhir diperoleh dengan mengalikan sharesAmount di alamat oleh _getTotalPooledEther() dan membaginya dengan _getTotalShares.
_getTotalPooledEther mewakili total jumlah stETH (yang, jika stETH dipatok ke ETH dengan rasio 1:1, juga mewakili total jumlah ETH), sementara _getTotalShares mewakili total jumlah saham. Dengan perhitungan ini, jumlah stETH yang dimiliki oleh setiap alamat ditentukan secara dinamis.
Sebagai contoh, jika total sahamnya adalah 1000, dengan Alamat A memiliki 100 saham (sebagaimana diwakili oleh sharesAmount), dan total stETH adalah 1000 (sebagaimana dikembalikan oleh _getTotalPooledEther), maka menurut perhitungan ini, Alamat A akan memiliki 100 stETH.
Sekarang, jika Lido memasang total 1000 ETH dan mendapatkan 1 ETH keuntungan, memperbarui _getTotalPooledEther menjadi 1001, yang berarti total stETH meningkat dari 1000 menjadi 1001. Oleh karena itu, perhitungan baru untuk Alamat A akan menjadi 100 * 1001 / 1000 = 100,1 stETH.
Dalam istilah yang lebih sederhana, sementara saham yang dipegang oleh setiap alamat tetap konstan, stETH yang sesuai dengan saham-saham tersebut meningkat. Oleh karena itu, saat dihitung ulang, kepemilikan stETH secara alami meningkat.
Melanjutkan dengan kode, logika dalam _getTotalPooledEther dipengaruhi oleh metode handleOracleReport, yang memperbarui data terkait dalam kontrak. Metode ini secara berkala dipanggil, dan invokasi spesifik terjadi melalui kontrak pada https://etherscan.io/address/0x852deD011285fe67063a08005c71a85690503Cee, yang secara periodik memanggil submitReportData untuk memperbarui data (submitReportData secara internal memanggil handleOracleReport di kontrak Lido):
Kita dapat melihat bahwa ada panggilan harian untuk memperbarui konten relevan, yang menjelaskan mengapa, meskipun kita tidak dapat melihat adanya transaksi yang mendistribusikan keuntungan ke alamat kita, saldo berubah setiap hari.
Ini mengilustrasikan karakteristik dari kontrak pintar Ethereum ERC20: jumlah token yang dimiliki oleh alamat tidak dikodekan secara permanen tetapi dikembalikan oleh metode kontrak. Oleh karena itu, mungkin saldo token dari sebuah alamat berubah bahkan tanpa adanya transaksi. Meskipun fleksibilitas ini membuat kontrak ERC20 lebih serbaguna, hal ini juga bisa membingungkan bagi mereka yang tidak terbiasa dengan kontrak. Saya harap artikel ini membantu pembaca memahami kontrak pintar dengan lebih baik dan berinteraksi dengan mereka secara lebih aman dan cerdas.
Selain itu, saat melakukan staking ETH untuk mendapatkan stETH tampaknya menawarkan imbalan staking yang stabil, masih ada risiko potensial yang terlibat. Artikel ini berfungsi sebagai eksplorasi teknis dari kontrak staking dan seharusnya tidak dianggap sebagai saran investasi.
Artikel ini diambil dari [ Tim ZANJudul asli “Desain kontrak yang canggih, lihat bagaimana stETH secara otomatis mendistribusikan pendapatan setiap hari? Biarkan ETH Anda berpartisipasi dalam staking untuk mendapatkan bunga stabil”,Hak cipta milik penulis asliTim ZAN], jika Anda memiliki keberatan terhadap pemakaian ulang, silakan hubungi Belajar Gatetim, dan tim akan menanganinya sesegera mungkin sesuai dengan prosedur yang relevan.
Penafian: Pandangan dan pendapat yang terdapat dalam artikel ini hanya mewakili pandangan pribadi penulis dan tidak merupakan saran investasi apa pun.
Versi bahasa lain dari artikel diterjemahkan oleh tim Gate Learn dan tidak disebutkan dalam Gate.io) artikel terjemahan mungkin tidak boleh direproduksi, didistribusikan, atau diplagiat.
分享
目錄
Desain kontrak pintar: lihat bagaimana stETH secara otomatis mendistribusikan keuntungan setiap hari? Biarkan ETH Anda berpartisipasi dalam staking untuk mendapatkan bunga stabil.
Penulis mengonversi sejumlah kecil Ether (ETH) menjadi Ether stabil (stETH) dan menemukan bahwa jumlah stETH meningkat secara alami setiap hari, menghasilkan keuntungan yang berkelanjutan. Namun, tidak ada catatan transaksi yang terlihat di akun. Mengapa hal ini terjadi? Artikel ini akan menjelajahi desain cerdas di baliknya dan mengungkap rahasia distribusi keuntungan.
1 stETH telah menghasilkan beberapa keuntungan setelah beberapa hari.
Sebelum masuk ke cara stETH menghasilkan keuntungan, mari kita pertama memperkenalkan logika di baliknya, yaitu staking Ethereum. Pembaca yang sudah familiar dengan konsep ini dapat melompat ke depan.
Awalnya, Ethereum, seperti Bitcoin, menggunakan Proof of Work (PoW) sebagai mekanisme konsensusnya. Namun, karena kekhawatiran terhadap konsumsi daya, keamanan, dan skalabilitas, Ethereum beralih ke Proof of Stake (PoS) pada September 2022.
Sebelumnya bergantung pada kekuatan penambangan untuk mencapai konsensus, Ethereum kini bergantung pada peserta yang melakukan staking ETH untuk mendapatkan hak suara dan mendapatkan imbalan melalui pemungutan suara. Hal ini mendorong konsensus melalui PoS.
Dengan melakukan staking 32 ETH, seseorang dapat bergabung dengan jaringan Ethereum sebagai validator, bertanggung jawab untuk menyimpan data, memproses transaksi, dan menambahkan blok baru ke dalam blockchain. Validator menerima imbalan ETH untuk mengemas transaksi dengan benar ke dalam blok baru dan memverifikasi pekerjaan validator lainnya, memungkinkan untuk imbal hasil yang relatif stabil melalui staking.
Namun, staking tradisional terasa rumit bagi pengguna biasa, karena membutuhkan 32 ETH dan komputer khusus dengan akses tanpa henti ke jaringan Ethereum. Selain itu, staking ETH mengunci likuiditas. Oleh karena itu, munculnya Derivatif Staking Cair (LSD), bertujuan untuk mengatasi hambatan dan isu likuiditas dari staking tradisional. LSD memungkinkan pengguna untuk melakukan staking kurang dari 32 ETH dan mengalihkan ETH mereka ke penyedia staking pihak ketiga, menerima token staking yang sesuai (seperti stETH dari Lido atau rETH dari Rocket Pool). Token cair ini dapat diperdagangkan, dipinjam, atau digunakan untuk kegiatan keuangan lainnya di berbagai platform, memungkinkan pengguna untuk berpartisipasi dalam staking dengan lebih nyaman sambil mempertahankan likuiditas.
Jadi, logika dasar di balik stETH adalah pengguna menyediakan ETH mereka ke Lido, yang kemudian menggunakan ETH tersebut untuk berpartisipasi dalam PoS Ethereum untuk menghasilkan keuntungan. Sebagai imbalannya, pengguna menerima stETH sebagai bukti dari staking mereka. Selanjutnya, Lido mendistribusikan keuntungan ke alamat yang memegang stETH.
Kita dapat mengamati bahwa keuntungan stETH diperbarui secara otomatis setiap hari. Grafik berikut menggambarkan situasi keuntungan yang kami uji, dan pengguna dapat memverifikasi konten terkait dompet terenkripsi mereka setiap hari.
Pada titik ini, mereka yang akrab dengan pengembangan kontrak pintar mungkin bertanya-tanya: dengan keuntungan harian yang begitu kecil, apakah sudah cukup untuk menutupi biaya gas?
Memang, jika Lido membagikan keuntungan menggunakan metode paling sederhana, kemungkinan besar akan kesulitan untuk menutupi biaya gas. Mengirim token ke sejumlah besar alamat akan memerlukan biaya gas yang signifikan, yang mungkin tidak layak.
Namun, Lido telah berhasil mencapai pertumbuhan keuntungan otomatis dalam kepemilikan stETH di dalam dompet tanpa adanya transaksi yang jelas. Bagaimana hal ini bisa terjadi?
Kami menemukan kontrak Lido di https://etherscan.io/token/0xae7ab96520de3a18e5e111b5eaab095312d7fe84dan melacak metode balanceOf dalam kontrak.
Metode balanceOf sesuai dengan standar ERC20 dan digunakan oleh dompet untuk mengambil jumlah token yang dimiliki oleh pengguna.
Di kontrak stETH, kita melihat bahwa itu memanggil metode getPooledEthByShares. Metode ini mengambil pemetaan (alamat => uint256) saham pribadi; sebagai input. Apakah ini mewakili berapa banyak stETH yang dimiliki pengguna? Jelas tidak, karena memperbarui data untuk setiap alamat setiap hari akan tidak praktis. Meskipun memperbarui saham dalam satu transaksi bisa mencapai ini, konsumsi gas masih akan signifikan.
Sampai saat ini, banyak dari Anda mungkin sudah menebak bagaimana kontrak tersebut bekerja. Mari kita lanjutkan pemeriksaan metode getPooledEthByShares.
Dapat diamati bahwa hasil akhir diperoleh dengan mengalikan sharesAmount di alamat oleh _getTotalPooledEther() dan membaginya dengan _getTotalShares.
_getTotalPooledEther mewakili total jumlah stETH (yang, jika stETH dipatok ke ETH dengan rasio 1:1, juga mewakili total jumlah ETH), sementara _getTotalShares mewakili total jumlah saham. Dengan perhitungan ini, jumlah stETH yang dimiliki oleh setiap alamat ditentukan secara dinamis.
Sebagai contoh, jika total sahamnya adalah 1000, dengan Alamat A memiliki 100 saham (sebagaimana diwakili oleh sharesAmount), dan total stETH adalah 1000 (sebagaimana dikembalikan oleh _getTotalPooledEther), maka menurut perhitungan ini, Alamat A akan memiliki 100 stETH.
Sekarang, jika Lido memasang total 1000 ETH dan mendapatkan 1 ETH keuntungan, memperbarui _getTotalPooledEther menjadi 1001, yang berarti total stETH meningkat dari 1000 menjadi 1001. Oleh karena itu, perhitungan baru untuk Alamat A akan menjadi 100 * 1001 / 1000 = 100,1 stETH.
Dalam istilah yang lebih sederhana, sementara saham yang dipegang oleh setiap alamat tetap konstan, stETH yang sesuai dengan saham-saham tersebut meningkat. Oleh karena itu, saat dihitung ulang, kepemilikan stETH secara alami meningkat.
Melanjutkan dengan kode, logika dalam _getTotalPooledEther dipengaruhi oleh metode handleOracleReport, yang memperbarui data terkait dalam kontrak. Metode ini secara berkala dipanggil, dan invokasi spesifik terjadi melalui kontrak pada https://etherscan.io/address/0x852deD011285fe67063a08005c71a85690503Cee, yang secara periodik memanggil submitReportData untuk memperbarui data (submitReportData secara internal memanggil handleOracleReport di kontrak Lido):
Kita dapat melihat bahwa ada panggilan harian untuk memperbarui konten relevan, yang menjelaskan mengapa, meskipun kita tidak dapat melihat adanya transaksi yang mendistribusikan keuntungan ke alamat kita, saldo berubah setiap hari.
Ini mengilustrasikan karakteristik dari kontrak pintar Ethereum ERC20: jumlah token yang dimiliki oleh alamat tidak dikodekan secara permanen tetapi dikembalikan oleh metode kontrak. Oleh karena itu, mungkin saldo token dari sebuah alamat berubah bahkan tanpa adanya transaksi. Meskipun fleksibilitas ini membuat kontrak ERC20 lebih serbaguna, hal ini juga bisa membingungkan bagi mereka yang tidak terbiasa dengan kontrak. Saya harap artikel ini membantu pembaca memahami kontrak pintar dengan lebih baik dan berinteraksi dengan mereka secara lebih aman dan cerdas.
Selain itu, saat melakukan staking ETH untuk mendapatkan stETH tampaknya menawarkan imbalan staking yang stabil, masih ada risiko potensial yang terlibat. Artikel ini berfungsi sebagai eksplorasi teknis dari kontrak staking dan seharusnya tidak dianggap sebagai saran investasi.
Artikel ini diambil dari [ Tim ZANJudul asli “Desain kontrak yang canggih, lihat bagaimana stETH secara otomatis mendistribusikan pendapatan setiap hari? Biarkan ETH Anda berpartisipasi dalam staking untuk mendapatkan bunga stabil”,Hak cipta milik penulis asliTim ZAN], jika Anda memiliki keberatan terhadap pemakaian ulang, silakan hubungi Belajar Gatetim, dan tim akan menanganinya sesegera mungkin sesuai dengan prosedur yang relevan.
Penafian: Pandangan dan pendapat yang terdapat dalam artikel ini hanya mewakili pandangan pribadi penulis dan tidak merupakan saran investasi apa pun.
Versi bahasa lain dari artikel diterjemahkan oleh tim Gate Learn dan tidak disebutkan dalam Gate.io) artikel terjemahan mungkin tidak boleh direproduksi, didistribusikan, atau diplagiat.