Lección 3

Teknik Optimasi Gas dengan Remix

Penting untuk berlatih sekarang setelah Anda menguasai beberapa pendekatan optimasi penyimpanan dasar. Terlibatlah dengan contoh-contoh yang ditawarkan dan bereksperimenlah dengan membuat contoh Anda sendiri. Pada sesi berikutnya, kita akan mempelajari lebih dalam tentang mengoptimalkan visibilitas fungsi dan menggunakan kembali kode dengan pustaka. Ingatlah bahwa pengoptimalan adalah seni sekaligus sains. Lanjutkan bereksperimen!

Mengoptimalkan Penyimpanan

Mayoritas pengeluaran gas Ethereum terkonsentrasi pada penyimpanan. Setiap operasi yang mengubah status (penyimpanan) jaringan Ethereum biasanya memakan biaya. Oleh karena itu, memusatkan perhatian pada cara data disimpan dan diakses dapat menghasilkan pengurangan biaya yang signifikan. Dalam sesi ini, kita akan melihat beberapa cara untuk mengoptimalkan penyimpanan dengan Remix.

Mengapa Penyimpanannya Mahal?

Blockchain Ethereum menyediakan penyimpanan permanen. Segala sesuatu yang disimpan di blockchain akan tersedia selama blockchain tersebut masih ada, namun keabadian ini harus dibayar mahal. Mengoptimalkan penyimpanan tidak hanya menurunkan biaya tetapi juga memastikan bahwa status global Ethereum digunakan secara efisien.

Variabel Penyimpanan Pengepakan

Pengantar

Soliditas menyimpan variabel dalam slot. Setiap slot berukuran 32 byte. Ketika variabel dapat ditampung dalam satu slot, variabel tersebut dapat dibaca atau diperbarui masing-masing dengan satu operasi SLOAD atau SSTORE.

Contoh

Pertimbangkan dua kontrak:

Soliditas 
 // Tanpa Optimasi 
 pragma soliditas ^0.8.9; 

 kontrak Penyimpanan Tidak Dioptimalkan {
    uint256 public value1;
    uint256 public value2;
}
Soliditas 
 // Dengan Optimasi 
 pragma soliditas ^0.8.9; 

 kontrak Penyimpanan yang Dioptimalkan {
    uint128 public value1;
    uint128 public value2;
}
  1. Terapkan kedua kontrak di Remix dan catat perbedaan gas saat berinteraksi dengan variabelnya.

  2. Dalam versi yang dioptimalkan, value1 dan value2 berbagi satu slot 32-byte.

Menggunakan Kembali Slot Penyimpanan

Pengantar

Ketika Anda sudah selesai dengan slot penyimpanan, terutama penyimpanan data sementara, Anda dapat menghapus atau menghilangkan slot tersebut untuk mendapatkan pengembalian bahan bakar.

Contoh

Soliditas 
 pragma soliditas ^0.8.9; 

 Contoh Pengembalian Dana kontrak { 
 uint256 data sementara publik; 

 fungsi storeTemporaryData(uint256 data) publik {
        temporaryData = data;
    }

    fungsi clearTemporaryData() publik {
        delete temporaryData;
    }
}
  1. Terapkan kontrak ini di Remix.

  2. Simpan beberapa data sementara lalu hapus.

  3. Periksa biaya bahan bakar. Perhatikan pengembalian dana bahan bakar yang Anda dapatkan untuk operasi delete .

Menggunakan Peristiwa Daripada Penyimpanan untuk Data Historis

Pengantar

Jika data tidak perlu diakses secara on-chain, pertimbangkan untuk mencatatnya sebagai peristiwa daripada menyimpannya. Acara jauh lebih murah daripada operasi penyimpanan.

Contoh

Soliditas 
 pragma soliditas ^0.8.9; 

 kontrak EventExample { 
 event DataStored(uint256 data); 

 fungsi storeData(uint256 data) publik {
        emit DataStored(data);
    }
}
  1. Menyebarkan dan berinteraksi dengan kontrak di Remix.

  2. Perhatikan biaya gas yang lebih murah jika dibandingkan dengan penyimpanan.

Melihat ke depan

Penting untuk berlatih sekarang setelah Anda menguasai beberapa pendekatan optimasi penyimpanan dasar. Terlibatlah dengan contoh-contoh yang ditawarkan dan bereksperimenlah dengan membuat contoh Anda sendiri. Pada sesi berikutnya, kita akan mempelajari lebih dalam tentang mengoptimalkan visibilitas fungsi dan menggunakan kembali kode dengan pustaka. Ingatlah bahwa pengoptimalan adalah seni sekaligus sains. Lanjutkan bereksperimen!

Descargo de responsabilidad
* La inversión en criptomonedas implica riesgos significativos. Proceda con precaución. El curso no pretende ser un asesoramiento de inversión.
* El curso ha sido creado por el autor que se ha unido a Gate Learn. Cualquier opinión compartida por el autor no representa a Gate Learn.
Catálogo
Lección 3

Teknik Optimasi Gas dengan Remix

Penting untuk berlatih sekarang setelah Anda menguasai beberapa pendekatan optimasi penyimpanan dasar. Terlibatlah dengan contoh-contoh yang ditawarkan dan bereksperimenlah dengan membuat contoh Anda sendiri. Pada sesi berikutnya, kita akan mempelajari lebih dalam tentang mengoptimalkan visibilitas fungsi dan menggunakan kembali kode dengan pustaka. Ingatlah bahwa pengoptimalan adalah seni sekaligus sains. Lanjutkan bereksperimen!

Mengoptimalkan Penyimpanan

Mayoritas pengeluaran gas Ethereum terkonsentrasi pada penyimpanan. Setiap operasi yang mengubah status (penyimpanan) jaringan Ethereum biasanya memakan biaya. Oleh karena itu, memusatkan perhatian pada cara data disimpan dan diakses dapat menghasilkan pengurangan biaya yang signifikan. Dalam sesi ini, kita akan melihat beberapa cara untuk mengoptimalkan penyimpanan dengan Remix.

Mengapa Penyimpanannya Mahal?

Blockchain Ethereum menyediakan penyimpanan permanen. Segala sesuatu yang disimpan di blockchain akan tersedia selama blockchain tersebut masih ada, namun keabadian ini harus dibayar mahal. Mengoptimalkan penyimpanan tidak hanya menurunkan biaya tetapi juga memastikan bahwa status global Ethereum digunakan secara efisien.

Variabel Penyimpanan Pengepakan

Pengantar

Soliditas menyimpan variabel dalam slot. Setiap slot berukuran 32 byte. Ketika variabel dapat ditampung dalam satu slot, variabel tersebut dapat dibaca atau diperbarui masing-masing dengan satu operasi SLOAD atau SSTORE.

Contoh

Pertimbangkan dua kontrak:

Soliditas 
 // Tanpa Optimasi 
 pragma soliditas ^0.8.9; 

 kontrak Penyimpanan Tidak Dioptimalkan {
    uint256 public value1;
    uint256 public value2;
}
Soliditas 
 // Dengan Optimasi 
 pragma soliditas ^0.8.9; 

 kontrak Penyimpanan yang Dioptimalkan {
    uint128 public value1;
    uint128 public value2;
}
  1. Terapkan kedua kontrak di Remix dan catat perbedaan gas saat berinteraksi dengan variabelnya.

  2. Dalam versi yang dioptimalkan, value1 dan value2 berbagi satu slot 32-byte.

Menggunakan Kembali Slot Penyimpanan

Pengantar

Ketika Anda sudah selesai dengan slot penyimpanan, terutama penyimpanan data sementara, Anda dapat menghapus atau menghilangkan slot tersebut untuk mendapatkan pengembalian bahan bakar.

Contoh

Soliditas 
 pragma soliditas ^0.8.9; 

 Contoh Pengembalian Dana kontrak { 
 uint256 data sementara publik; 

 fungsi storeTemporaryData(uint256 data) publik {
        temporaryData = data;
    }

    fungsi clearTemporaryData() publik {
        delete temporaryData;
    }
}
  1. Terapkan kontrak ini di Remix.

  2. Simpan beberapa data sementara lalu hapus.

  3. Periksa biaya bahan bakar. Perhatikan pengembalian dana bahan bakar yang Anda dapatkan untuk operasi delete .

Menggunakan Peristiwa Daripada Penyimpanan untuk Data Historis

Pengantar

Jika data tidak perlu diakses secara on-chain, pertimbangkan untuk mencatatnya sebagai peristiwa daripada menyimpannya. Acara jauh lebih murah daripada operasi penyimpanan.

Contoh

Soliditas 
 pragma soliditas ^0.8.9; 

 kontrak EventExample { 
 event DataStored(uint256 data); 

 fungsi storeData(uint256 data) publik {
        emit DataStored(data);
    }
}
  1. Menyebarkan dan berinteraksi dengan kontrak di Remix.

  2. Perhatikan biaya gas yang lebih murah jika dibandingkan dengan penyimpanan.

Melihat ke depan

Penting untuk berlatih sekarang setelah Anda menguasai beberapa pendekatan optimasi penyimpanan dasar. Terlibatlah dengan contoh-contoh yang ditawarkan dan bereksperimenlah dengan membuat contoh Anda sendiri. Pada sesi berikutnya, kita akan mempelajari lebih dalam tentang mengoptimalkan visibilitas fungsi dan menggunakan kembali kode dengan pustaka. Ingatlah bahwa pengoptimalan adalah seni sekaligus sains. Lanjutkan bereksperimen!

Descargo de responsabilidad
* La inversión en criptomonedas implica riesgos significativos. Proceda con precaución. El curso no pretende ser un asesoramiento de inversión.
* El curso ha sido creado por el autor que se ha unido a Gate Learn. Cualquier opinión compartida por el autor no representa a Gate Learn.