Mối quan hệ Solidity Compiler và EVM
Khi tôi biên dịch mã dưới đây trong 0.6.6, nó không biên dịch (yêu cầu công khai) nhưng trong 0.7.3 thì nó biên dịch.
Nếu tôi làm cho mã dưới đây có thể biên dịch (thêm công khai) trong 0.6.6, tôi có thể triển khai thành công trên Rinkeby. Nếu tôi biên dịch mã dưới đây trong 0.7.3, tôi có thể triển khai thành công trên Rinkeby. Điều này cho thấy rằng không có thay đổi nào đối với Rinkeby EVM, chỉ có cách các phiên bản trình biên dịch thực thi sắp xếp Bytecode đã thay đổi?
Điều này có ngụ ý rằng tôi có thể sử dụng các tiêu chuẩn trình biên dịch 0.6.6 trong nhiều năm nữa và mã của tôi sẽ không bị hỏng không? Nhiều lần lặp lại trình biên dịch là một trải nghiệm mới đối với tôi và tôi đang cố gắng hoàn thành nó.
Cảm ơn bạn
contract A { constructor () payable {} }
Trả lời
Bạn nói đúng. Các thay đổi phiên bản Solidity thường
Thay đổi cú pháp (làm cho ngôn ngữ an toàn hơn)
ABI thay đổi (xem hợp đồng thông minh Ethereum ABI v2
Các thay đổi EVM thêm các hướng dẫn mới, như các hướng dẫn cho revert(string)và catchsau đó các hướng dẫn này được áp dụng vào Solidity dưới dạng cấu trúc ngôn ngữ, nhưng những thay đổi này hiếm hơn.