Solidity Compiler dan hubungan EVM

Oct 19 2020

Ketika saya mengkompilasi kode di bawah ini di 0.6.6 itu tidak dapat dikompilasi (membutuhkan publik) tetapi di 0.7.3 ia dapat dikompilasi.

Jika saya membuat kode di bawah ini dapat dikompilasi (menambahkan publik) di 0.6.6 Saya berhasil menyebarkan di Rinkeby. Jika saya mengkompilasi kode di bawah ini di 0.7.3 saya berhasil menyebarkan di Rinkeby. Ini menunjukkan bahwa tidak ada perubahan pada Rinkeby EVM, hanya cara versi kompilator yang menerapkan pengaturan Bytecode telah berubah?

Apakah ini berarti saya dapat menggunakan standar compiler 0.6.6 selama bertahun-tahun ke depan dan kode saya tidak akan rusak? Banyaknya iterasi kompiler adalah pengalaman baru bagi saya dan saya mencoba untuk membungkusnya.

Terima kasih

contract A { constructor () payable {} }

Jawaban

1 MikkoOhtamaa Oct 19 2020 at 17:44

Anda benar. Perubahan versi soliditas sering terjadi

  • Perubahan sintaksis (membuat bahasa lebih aman)

  • Perubahan ABI (lihat kontrak pintar Ethereum ABI v2

Perubahan EVM menambahkan instruksi baru, seperti yang untuk revert(string)dan catchkemudian ini diadopsi ke dalam Soliditas sebagai konstruksi bahasa, tetapi perubahan ini lebih jarang.