Tôi đã hiểu rằng “DuskEVM hỗ trợ Solidity” có nghĩa là các nhà phát triển có thể sử dụng sẵn công cụ Ethereum hiện có là xong. Tài liệu hướng dẫn nhanh của Dusk lại lặng lẽ bổ sung thêm một bước mà hầu hết mọi người bỏ qua: xác minh mã nguồn.
Triển khai thì phần dễ. DuskEVM dùng Blockscout làm trình khám phá (explorer), và khi bạn chọn “Verify & Publish” để xác minh một hợp đồng tại đó, thì các cài đặt build liên quan, phiên bản compiler, cấu hình tối ưu hóa (optimizer), các tệp nguồn, tham số constructor… đều phải tái tạo đúng bytecode mà thực tế đã được triển khai.
Đó là một tiêu chuẩn khác với tính tương thích EVM. Việc triển khai chứng minh rằng mã có thể chạy. Việc xác minh cho phép người khác kiểm tra chính xác thứ gì đang chạy. Một hợp đồng có thể được triển khai và hoạt động bình thường nhưng vẫn chưa được xác minh, khiến người khác không thể tự kiểm chứng liệu mã nguồn đã công bố có thực sự khớp với những gì đang chạy hay không.
Vì vậy, “tương thích EVM” và “sẵn sàng cho nhà phát triển” không hẳn là một tuyên bố giống nhau. Một bên nói về việc mã của bạn có chạy ở đây hay không. Bên còn lại nói về việc một bên kiểm toán, một tổ chức, hay người dùng có thực sự xác nhận được rằng những gì đang chạy khớp với những gì được khẳng định hay không.
“Một mạng (chain) có thể chạy hợp đồng Solidity của bạn và vẫn khiến bạn không thể chứng minh hợp đồng đó thực sự là gì.”
Điều tôi muốn thấy tiếp theo: liệu một hợp đồng được triển khai theo đường chuẩn của Solidity/Hardhat có thể được xác minh đáng tin cậy dựa trên bytecode đã triển khai hay không, thay vì chỉ dừng ở việc triển khai thành công.
#dusk $DUSK @Dusk
Triển khai thì phần dễ. DuskEVM dùng Blockscout làm trình khám phá (explorer), và khi bạn chọn “Verify & Publish” để xác minh một hợp đồng tại đó, thì các cài đặt build liên quan, phiên bản compiler, cấu hình tối ưu hóa (optimizer), các tệp nguồn, tham số constructor… đều phải tái tạo đúng bytecode mà thực tế đã được triển khai.
Đó là một tiêu chuẩn khác với tính tương thích EVM. Việc triển khai chứng minh rằng mã có thể chạy. Việc xác minh cho phép người khác kiểm tra chính xác thứ gì đang chạy. Một hợp đồng có thể được triển khai và hoạt động bình thường nhưng vẫn chưa được xác minh, khiến người khác không thể tự kiểm chứng liệu mã nguồn đã công bố có thực sự khớp với những gì đang chạy hay không.
Vì vậy, “tương thích EVM” và “sẵn sàng cho nhà phát triển” không hẳn là một tuyên bố giống nhau. Một bên nói về việc mã của bạn có chạy ở đây hay không. Bên còn lại nói về việc một bên kiểm toán, một tổ chức, hay người dùng có thực sự xác nhận được rằng những gì đang chạy khớp với những gì được khẳng định hay không.
“Một mạng (chain) có thể chạy hợp đồng Solidity của bạn và vẫn khiến bạn không thể chứng minh hợp đồng đó thực sự là gì.”
Điều tôi muốn thấy tiếp theo: liệu một hợp đồng được triển khai theo đường chuẩn của Solidity/Hardhat có thể được xác minh đáng tin cậy dựa trên bytecode đã triển khai hay không, thay vì chỉ dừng ở việc triển khai thành công.
#dusk $DUSK @Dusk
