Piawaian Diamond (Proksi Berbilang Faset)
Terokai Piawaian Diamond (EIP-2535) untuk membina kontrak boleh dinaik taraf yang sangat modular dan boleh diskalakan dengan pelbagai faset.
Piawaian Diamond (Proksi Berbilang Faset) ialah pelajaran Kontrak Pintar Rantaian Blok dengan Solidity percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Kontrak Pintar Rantaian Blok dengan Solidity, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Kontrak Pintar Rantaian Blok dengan Solidity merangkumi sejumlah 4 pelajaran.
Pengenalan kepada Standard Diamond
Selamat datang ke pelajaran terakhir tentang kontrak yang boleh dinaik taraf! Kita telah meneroka UUPS, tetapi bagaimana jika kontrak anda menjadi terlalu besar atau memerlukan modulariti yang sangat tinggi?
Standard Diamond (EIP-2535) ialah corak berkuasa yang membolehkan satu kontrak proksi mengagihkan panggilan kepada berbilang kontrak pelaksanaan yang dipanggil faset.
Had Proksi Tunggal
Corak proksi tradisional seperti proksi UUPS atau Telus biasanya mengagihkan semua panggilan kepada satu kontrak pelaksanaan.
Walaupun berkesan, pendekatan ini boleh menyebabkan:
- Had Saiz Kontrak: Kontrak Ethereum mempunyai had 24KB. Pelaksanaan tunggal yang monolitik boleh mencapai had ini dengan cepat.
- Kerumitan: Satu kontrak yang menguruskan banyak ciri menjadi sukar untuk diselenggara dan diaudit.
- Kos Naik Taraf: Naik taraf bermakna menggunakan semula keseluruhan kontrak pelaksanaan yang besar, walaupun hanya bahagian kecil yang berubah.
Faset: Kontrak Modular
Standard Diamond menyelesaikan masalah ini dengan memecahkan logik kontrak anda kepada bahagian kecil dan bebas yang dipanggil faset.
Anggap faset sebagai:
- Kontrak pintar individu yang setiap satunya mengendalikan fungsi tertentu.
- Seperti 'pemalam' atau 'modul' untuk proksi utama anda.
- Setiap faset mempunyai set fungsinya sendiri.
Proksi Diamond kemudiannya menentukan faset yang akan menerima panggilan.
Cara Proksi Diamond Berfungsi
Pada asasnya, proksi Diamond berfungsi sama seperti proksi lain:
- Pengguna memanggil fungsi pada proksi Diamond.
- Proksi melihat pemilih fungsi (4 bait pertama data panggilan).
- Proksi kemudiannya menentukan faset yang mengandungi fungsi tersebut.
- Akhir sekali, proksi mengagihkan panggilan (menggunakan
delegatecall) kepada faset yang betul.
Keistimewaannya ialah proksi mengekalkan pemetaan pemilih fungsi kepada alamat faset.
Storan Diamond: Keadaan Dikongsi
Aspek penting Standard Diamond ialah cara keadaan diuruskan. Walaupun logik dibahagikan merentas faset, semuanya beroperasi pada storan yang sama dalam kontrak proksi Diamond.
Hal ini dicapai dengan:
- Menentukan struktur storan yang dikongsi (contohnya,
AppStorage). - Setiap faset mengakses storan dikongsi ini menggunakan corak Solidity tertentu (biasanya melalui pustaka).
- Hal ini memastikan konsistensi dan membolehkan faset berinteraksi dengan data yang sama.
Mengurus Faset dengan `diamondCut`
Fungsi utama untuk mengurus Diamond anda ialah diamondCut. Fungsi ini membolehkan anda:
- Menambah faset baharu (fungsi baharu).
- Menggantikan faset sedia ada (menaik taraf atau membaiki pepijat).
- Mengalih keluar faset (menghentikan penggunaan fungsi).
diamondCut biasanya hanya boleh dipanggil oleh pemilik kontrak, menjadikannya mekanisme naik taraf yang selamat untuk kontrak berbilang faset anda.
Contoh Faset Mudah
Beginilah rupa faset Solidity yang sangat asas. Ingat, faset hanyalah kontrak biasa yang melaksanakan logik tertentu.
Cuba kompilkan contoh mudah ini:
pragma solidity ^0.8.0;
contract MySimpleFacet {
// Facets interact with shared storage
// located in the Diamond proxy contract.
// They don't declare state variables directly
// in the way a standalone contract would.
function getFacetVersion() external pure returns (string memory) {
return "MySimpleFacet v1.0";
}
function greetUser(string memory _name) external pure returns (string memory) {
return string(abi.encodePacked("Hello, ", _name, " from MySimpleFacet!"));
}
}Proksi Diamond Itu Sendiri
Kontrak proksi Diamond itu sendiri amat ringkas. Tanggungjawab utamanya ialah:
- Menyimpan pemetaan pemilih fungsi kepada alamat faset.
- Melaksanakan fungsi
diamondCutuntuk naik taraf. - Fungsi sandaran yang mengendalikan pengagihan panggilan kepada faset yang betul.
Ia bertindak sebagai penghala pusat untuk semua panggilan masuk, dengan mengarahkannya kepada bahagian logik yang sesuai.
Mengapa Memilih Standard Diamond?
Standard Diamond menawarkan kelebihan besar untuk DApps yang kompleks:
- Saiz Kontrak Tanpa Had: Elakkan had 24KB dengan mudah dengan membahagikan logik kepada banyak faset kecil.
- Modulariti Sangat Tinggi: Bangunkan dan gunakan ciri secara berasingan.
- Kecekapan Gas: Hanya naik taraf (gunakan) faset tertentu yang berubah, bukan keseluruhan kontrak.
- Pemisahan Tanggungjawab yang Jelas: Meningkatkan kebolehbacaan kod, pengujian dan pengauditan keselamatan.
- Pembangunan Berperingkat: Tambahkan ciri baharu dari semasa ke semasa tanpa menjejaskan ciri sedia ada.
Semakan Standard Diamond
Standard Diamond (EIP-2535) menyediakan rangka kerja kukuh untuk membina kontrak pintar yang sangat modular dan boleh dinaik taraf. Pernyataan yang manakah berikut menerangkan manfaat atau ciri utamanya dengan tepat?
Imbas Kembali: Proksi Berbilang Faset
Dalam pelajaran ini, kita meneroka Standard Diamond (EIP-2535), iaitu corak berkuasa untuk membina kontrak pintar yang sangat modular dan boleh dinaik taraf.
- Kita mempelajari tentang faset, iaitu kontrak individu yang mengandungi logik tertentu.
- Proksi Diamond mengagihkan panggilan kepada berbilang faset ini berdasarkan pemilih fungsi.
- Semua faset berkongsi storan proksi Diamond.
- Fungsi
diamondCutdigunakan untuk menambah, menggantikan atau mengalih keluar faset. - Manfaat utama termasuk mengatasi had saiz kontrak 24KB, modulariti yang sangat tinggi dan naik taraf yang cekap.
Kini anda mempunyai pengetahuan tentang corak kebolehtarafan lanjutan!
Pelajari Kontrak Pintar Rantaian Blok dengan Solidity dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 12
- Pelajaran
- 48
Soalan Lazim
Adakah pelajaran “Piawaian Diamond (Proksi Berbilang Faset)” percuma?
Ya — teks penuh “Piawaian Diamond (Proksi Berbilang Faset)” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Kontrak Pintar Rantaian Blok dengan Solidity, tingkat taraf kepada CoddyKit PRO. Kursus Kontrak Pintar Rantaian Blok dengan Solidity merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Piawaian Diamond (Proksi Berbilang Faset)”?
Terokai Piawaian Diamond (EIP-2535) untuk membina kontrak boleh dinaik taraf yang sangat modular dan boleh diskalakan dengan pelbagai faset. Anda berlatih Kontrak Pintar Rantaian Blok dengan Solidity menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Kontrak Pintar Rantaian Blok dengan Solidity?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Kontrak Pintar Rantaian Blok dengan Solidity di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.
Berapa lamakah pelajaran “Piawaian Diamond (Proksi Berbilang Faset)” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Kontrak Pintar Rantaian Blok dengan Solidity ini?
Ya. Setiap pelajaran Kontrak Pintar Rantaian Blok dengan Solidity menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Mengapa Kontrak Boleh Dinaik Taraf?
- Pelaksanaan Corak Proksi UUPS
- Piawaian Diamond (Proksi Berbilang Faset)
- Corak Proksi Telus dan Susun Atur Storan