Mối quan hệ Solidity Compiler và EVM

Oct 19 2020

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

1 MikkoOhtamaa Oct 19 2020 at 17:44

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.