Урок 5

Final Pengoptimalan Kontrak Cerdas - Tip dan Trik Tingkat Lanjut

Dalam pelajaran kami sebelumnya, kami telah membahas konsep dan alat dasar yang Anda perlukan untuk mengoptimalkan bahan bakar pada kontrak pintar Ethereum, terutama menggunakan Remix IDE. Saat kita menyelesaikan kursus ini, mari pelajari beberapa teknik lanjutan dan praktik terbaik. Pelajaran terakhir ini akan menggabungkan pengetahuan yang telah kami kumpulkan, memastikan bahwa Anda mendapatkan pemahaman menyeluruh tentang optimalisasi gas dalam kontrak pintar Ethereum.

Memfaktorkan Ulang dan Mengurangi Kompleksitas Kode

Salah satu cara paling mudah untuk menghemat bahan bakar adalah dengan membuat kode Anda lebih sederhana. Semakin sedikit kode yang harus dieksekusi, semakin sedikit bahan bakar yang dikonsumsi.

Contoh Praktek

Pertimbangkan fungsi berikut:

Soliditas 
 pragma soliditas ^0.8.9; 

 Contoh Pengoptimalan kontrak { 
 alamat[] admin publik; 

 fungsi isUserAdmin(pengguna alamat) tampilan publik kembali (bool) { 
 for (uint i = 0; i < admins.length; i++) {
            if (admins[i] == user) return true;
        }
        menghasilkan nilai salah; 
 } 
 }

Fungsi di atas menggunakan loop, yang menjadi lebih mahal seiring bertambahnya admin. Struktur yang lebih hemat gas akan menggunakan pemetaan:

Soliditas 
 kontrak OptimizationExampleOptimized { 
 pemetaan(alamat => bool) admin publik; 

 fungsi isUserAdmin(pengguna alamat) tampilan publik kembali (bool) {
        return admins[user];
    }
}

Gunakan kembali Data

Saat bekerja dengan Ethereum, ingatlah bahwa Anda membayar untuk setiap penyimpanan. Jika Anda menyimpan data yang sama di beberapa tempat, pertimbangkan bagaimana Anda dapat menyimpannya satu kali dan mereferensikannya di tempat lain.

Gunakan Perpustakaan

Perpustakaan di Solidity adalah potongan kode yang dapat digunakan kembali. Mereka dapat membantu Anda menulis kode modular, dan karena mereka diterapkan hanya sekali dan dihubungkan dengan kontrak lain, mereka dapat menghemat bahan bakar dalam jangka panjang.

Soliditas 
 perpustakaan SafeMath { 
 fungsi tambah(uint a, uint b) pengembalian murni internal (uint) {
        uint c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    //... fungsi matematika lainnya 
 } 

 kontrak MenggunakanSafeMath { 
 menggunakan SafeMath untuk uint; 

 tidak memiliki nilai publik; 

 kenaikan fungsi (uint _value) publik {
        value = value.add(_value);
    }
}

Hapus Penyimpanan yang Tidak Diperlukan

Kata kunci delete di Solidity memungkinkan Anda untuk membatalkan variabel, yang mengembalikan sebagian bahan bakar. Jika Anda sudah selesai dengan bagian penyimpanan tertentu, hapus penyimpanan tersebut untuk mengklaim pengembalian dana ini.

Pertimbangkan Log Peristiwa

Meskipun menyimpan data di blockchain membutuhkan biaya yang mahal, pencatatan peristiwa logging relatif lebih murah. Jika Anda memiliki data yang tidak perlu dibaca dari kontrak namun harus dapat diverifikasi, pertimbangkan untuk menggunakan log peristiwa.

Hindari Menggunakan Operasi Mahal

Beberapa operasi memerlukan penggunaan gas yang lebih intensif dibandingkan operasi lainnya. Contohnya:

  • Panggilan fungsi eksternal lebih mahal daripada panggilan internal.
  • Berinteraksi dengan penyimpanan lebih mahal daripada berinteraksi dengan memori.
  • Array dinamis terkadang membutuhkan lebih banyak bahan bakar daripada array berukuran tetap.

Kesimpulan

Optimalisasi kontrak pintar untuk gas adalah seni sekaligus sains. Pendekatan-pendekatan yang dibahas dalam kursus ini, jika digabungkan, berpotensi menurunkan biaya bahan bakar kontrak Anda secara drastis. Perlu diingat bahwa ekosistem Ethereum dan alat-alatnya, termasuk Remix, selalu berubah. Ikuti perkembangan terkini, dan uji serta tingkatkan kontrak Anda secara rutin untuk pengoptimalan. Komunitas Ethereum sangat besar dan bermanfaat, jadi jangan pernah takut untuk mencari panduan atau praktik terbaik. Selamat bersenang-senang coding!

Отказ от ответственности
* Криптоинвестирование сопряжено со значительными рисками. Будьте осторожны. Курс не является инвестиционным советом.
* Курс создан автором, который присоединился к Gate Learn. Мнение автора может не совпадать с мнением Gate Learn.
Каталог
Урок 5

Final Pengoptimalan Kontrak Cerdas - Tip dan Trik Tingkat Lanjut

Dalam pelajaran kami sebelumnya, kami telah membahas konsep dan alat dasar yang Anda perlukan untuk mengoptimalkan bahan bakar pada kontrak pintar Ethereum, terutama menggunakan Remix IDE. Saat kita menyelesaikan kursus ini, mari pelajari beberapa teknik lanjutan dan praktik terbaik. Pelajaran terakhir ini akan menggabungkan pengetahuan yang telah kami kumpulkan, memastikan bahwa Anda mendapatkan pemahaman menyeluruh tentang optimalisasi gas dalam kontrak pintar Ethereum.

Memfaktorkan Ulang dan Mengurangi Kompleksitas Kode

Salah satu cara paling mudah untuk menghemat bahan bakar adalah dengan membuat kode Anda lebih sederhana. Semakin sedikit kode yang harus dieksekusi, semakin sedikit bahan bakar yang dikonsumsi.

Contoh Praktek

Pertimbangkan fungsi berikut:

Soliditas 
 pragma soliditas ^0.8.9; 

 Contoh Pengoptimalan kontrak { 
 alamat[] admin publik; 

 fungsi isUserAdmin(pengguna alamat) tampilan publik kembali (bool) { 
 for (uint i = 0; i < admins.length; i++) {
            if (admins[i] == user) return true;
        }
        menghasilkan nilai salah; 
 } 
 }

Fungsi di atas menggunakan loop, yang menjadi lebih mahal seiring bertambahnya admin. Struktur yang lebih hemat gas akan menggunakan pemetaan:

Soliditas 
 kontrak OptimizationExampleOptimized { 
 pemetaan(alamat => bool) admin publik; 

 fungsi isUserAdmin(pengguna alamat) tampilan publik kembali (bool) {
        return admins[user];
    }
}

Gunakan kembali Data

Saat bekerja dengan Ethereum, ingatlah bahwa Anda membayar untuk setiap penyimpanan. Jika Anda menyimpan data yang sama di beberapa tempat, pertimbangkan bagaimana Anda dapat menyimpannya satu kali dan mereferensikannya di tempat lain.

Gunakan Perpustakaan

Perpustakaan di Solidity adalah potongan kode yang dapat digunakan kembali. Mereka dapat membantu Anda menulis kode modular, dan karena mereka diterapkan hanya sekali dan dihubungkan dengan kontrak lain, mereka dapat menghemat bahan bakar dalam jangka panjang.

Soliditas 
 perpustakaan SafeMath { 
 fungsi tambah(uint a, uint b) pengembalian murni internal (uint) {
        uint c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    //... fungsi matematika lainnya 
 } 

 kontrak MenggunakanSafeMath { 
 menggunakan SafeMath untuk uint; 

 tidak memiliki nilai publik; 

 kenaikan fungsi (uint _value) publik {
        value = value.add(_value);
    }
}

Hapus Penyimpanan yang Tidak Diperlukan

Kata kunci delete di Solidity memungkinkan Anda untuk membatalkan variabel, yang mengembalikan sebagian bahan bakar. Jika Anda sudah selesai dengan bagian penyimpanan tertentu, hapus penyimpanan tersebut untuk mengklaim pengembalian dana ini.

Pertimbangkan Log Peristiwa

Meskipun menyimpan data di blockchain membutuhkan biaya yang mahal, pencatatan peristiwa logging relatif lebih murah. Jika Anda memiliki data yang tidak perlu dibaca dari kontrak namun harus dapat diverifikasi, pertimbangkan untuk menggunakan log peristiwa.

Hindari Menggunakan Operasi Mahal

Beberapa operasi memerlukan penggunaan gas yang lebih intensif dibandingkan operasi lainnya. Contohnya:

  • Panggilan fungsi eksternal lebih mahal daripada panggilan internal.
  • Berinteraksi dengan penyimpanan lebih mahal daripada berinteraksi dengan memori.
  • Array dinamis terkadang membutuhkan lebih banyak bahan bakar daripada array berukuran tetap.

Kesimpulan

Optimalisasi kontrak pintar untuk gas adalah seni sekaligus sains. Pendekatan-pendekatan yang dibahas dalam kursus ini, jika digabungkan, berpotensi menurunkan biaya bahan bakar kontrak Anda secara drastis. Perlu diingat bahwa ekosistem Ethereum dan alat-alatnya, termasuk Remix, selalu berubah. Ikuti perkembangan terkini, dan uji serta tingkatkan kontrak Anda secara rutin untuk pengoptimalan. Komunitas Ethereum sangat besar dan bermanfaat, jadi jangan pernah takut untuk mencari panduan atau praktik terbaik. Selamat bersenang-senang coding!

Отказ от ответственности
* Криптоинвестирование сопряжено со значительными рисками. Будьте осторожны. Курс не является инвестиционным советом.
* Курс создан автором, который присоединился к Gate Learn. Мнение автора может не совпадать с мнением Gate Learn.