Transaksi Ethereum kadang-kadang kelihatan berjaya, tetapi mungkin tersembunyi masalah di belakangnya.
Berdasarkan draft pull request #36084 di GitHub, seorang pembangun Geth mengusulkan penyelesaian untuk mekanisme anggaran Gas klien tersebut. Pembaikan ini menangani masalah dalam anggaran semasa: anggaran had Gas mungkin salah kerana kegagalan panggilan dalaman dari satu kontrak pintar ke kontrak pintar lain diabaikan.
Walaupun transaksi itu sendiri mungkin masih dapat diselesaikan, tiada bukti yang menunjukkan operasi yang sepatutnya dilakukan oleh pengguna benar-benar berlaku.
Apakah masalah anggaran gas?
Masalahnya terletak pada mekanisme seperti ini: satu kontrak pintar memanggil kontrak pintar lain, dan setelah menangkap ralat, ia terus melaksanakan pengembalian dana, merekod kegagalan, atau melangkau item tertentu. Secara teknikal, transaksi ini berjaya, tetapi bagi pengguna, hasilnya berbeza.
Ini boleh menyebabkan cadangan had Gas dari dompet cukup untuk menyelesaikan transaksi, tetapi tidak mencukupi untuk menyelesaikan tugas sebenar di dalam transaksi. Pembangun tersebut juga menunjukkan bahawa EIP-8037 mungkin membuat keadaan ini lebih biasa, kerana Gas yang dikembalikan akibat pelaksanaan dalaman yang gagal boleh membantu membiayai proses simpanan.
Apa yang diubah oleh pull request Geth #36084?

Berdasarkan permintaan tarikan ini, perubahan ini memberikan definisi yang lebih ketat terhadap "kejayaan" dalam penganggaran Gas. Versi Geth ini akan meningkatkan cara ia menangani kegagalan dalaman: bukan sahaja memeriksa sama ada transaksi telah selesai, tetapi juga mempertimbangkan panggilan dalaman yang gagal dan penciptaan kontrak.
Walaupun transaksi telah selesai, penganggaran ini akan ditolak jika bilangan kegagalan dalaman yang dihasilkan melebihi satu pelaksanaan rujukan yang dilakukan dengan had Gas yang lebih tinggi.
Namun, pembangun ini menekankan bahawa panggilan dalaman yang selalu gagal tidak sepatutnya menyebabkan anggaran meningkat tanpa had. Tujuan rujukan pelaksanaan ialah membiarkan penganggar mengekalkan kegagalan yang sudah ada, sambil tidak membenarkan penambahan kegagalan baru akibat kekurangan Gas. Cadangan ini juga memperkenalkan rujukan Amsterdam yang berasingan untuk mencegah peningkatan yang tidak perlu semata-mata untuk mengakses simpanan Gas status.
Pembangun menyatakan bahawa mereka telah memutar semula 432 transaksi rangkaian utama Ethereum mengikut peraturan baharu selepas Kemaskini Amsterdam, dan cadangan perubahan tersebut memperbaiki 64 daripada 67 kes.
Had gas dinaikkan sebanyak 4%. Selain itu, 254 anggaran tambahan tidak terjejas kerana kes-kes ini tidak mengalami masalah seperti yang disebutkan; terdapat 3 kes yang tidak terdeteksi.
Bagi pelabur biasa, perubahan yang dicadangkan ini seharusnya meningkatkan kebolehpercayaan anggaran dompet dan mengurangkan kes-kes di mana transaksi telah selesai tetapi tidak mencapai hasil yang dijangka, walaupun dalam beberapa kes akan membawa had Gas yang lebih tinggi. Untungnya, pada masa ini tiada bukti yang menunjukkan hubungan yang telah dibuktikan antara had Gas yang lebih tinggi dengan caj yang lebih tinggi.


