
Kontrak yang terus berjalan setelah panggilan gagal saat ini tidak memiliki cara andal untuk menentukan apakah penerima membatalkan secara sengaja atau hanya kehabisan gas yang dipilih oleh pengirim. Kesenjangan ini adalah akar dari griefing gas yang tidak mencukupi, dan sebuah proposal draf baru berusaha menutupnya pada tingkat EVM. EIP-8456, yang dibuka untuk diskusi di Ethereum Magicians pada hari Senin, menambahkan instruksi bernama CALLSTATUS, sementara di opcode 0xA5 dengan biaya 2 gas. Instruksi ini mendorong status penyelesaian dari panggilan atau operasi create terbaru dalam frame saat ini sebagai tiga bit. Bit 0 berarti revert, bit 1 berarti henti luar biasa seperti kehabisan gas, dan bit 2 berarti sesuatu di frame di bawahnya menghentikan eksekusi. Penulis menunjukkan bahwa satu-satunya bukti saat ini adalah aritmetika gasleft() setelah panggilan, dan setiap fork repricing telah merusak ambang batas tersebut. Gas dua dimensi yang diusulkan oleh EIP-8037 akan membuat aritmetika ini semakin lemah, karena reservoirnya tidak terlihat melalui opcode GAS. Jadi, mengapa bit ketiga? Sebagian besar panggilan nyata melewati perantara seperti proxy, wrapper functionCall OpenZeppelin, Multicall3, atau checker tanda tangan ERC-1271. Jika hanya status akhir penerima langsung yang dilaporkan, sebuah wrapper yang menangkap henti kehabisan gas dan melakukan revert dengan alasan akan tampak seperti revert yang disengaja. Draf ini mempertahankan flag sticky yang bergerak naik melalui setiap frame, sehingga pengirim yang hanya mengontrol gas tidak pernah bisa membuat caller membaca revert biasa. Draf ini melaporkan hasil daripada penyebab, dan penerima tetap dapat menghasilkan henti secara sengaja dengan INVALID. Hanya melindungi kode yang ditulis setelah rilisnya, karena kontrak yang sudah dideploy tidak akan membacanya. Belum ada tinjauan eksternal, nomor opcode masih terbuka, dan prototipe plus tes untuk 58 kasus yang terdaftar masih menunggu. Link - https://t.co/KnByUBgWrY
