Tôi hai ngày nay liên tục xem tài liệu cập nhật hợp đồng của @MidnightNetwork . Ban đầu tôi chỉ muốn xác nhận hợp đồng bảo mật trên Midnight có giống như các chuỗi khác không, sau khi triển khai xong tốt nhất là đừng động vào, nếu không cần thì đừng nâng cấp.

Kết quả là nhìn một lúc, tôi bắt đầu cảm thấy chuyện này có gì đó không ổn. Điều phiền phức nhất ở đây có thể không phải là vấn đề liệu hợp đồng có thể nâng cấp hay không, mà là nó phải được nâng cấp.

Chúng tôi rất quen thuộc với các chuỗi công cộng thông thường, nâng cấp thường là một sự lựa chọn, nếu bạn muốn linh hoạt hơn thì giữ lại đại lý, nếu bạn muốn tiết kiệm công sức thì cứ hàn chết, nhiều dự án thậm chí coi việc không thể nâng cấp là một ưu điểm.

Nhưng Midnight không phải là thứ đó.

Tài liệu chính thức thực sự viết khá rõ ràng, nếu hệ thống chứng minh hoặc runtime trên chuỗi nâng cấp lên phiên bản chính mới, hợp đồng có thể cần phiên bản khóa verifier mới, phiên bản cũ sau này có thể bị loại bỏ hỗ trợ. ... thực sự bị sốc, cái này không phải là có thể nâng cấp hay không, mà không nâng cấp có thể sẽ bị tụt lại sau.

Bây giờ cảm giác hoàn toàn khác, điều này có nghĩa là hợp đồng mà bạn triển khai trên Midnight, hoàn toàn không phải là thứ chỉ cần đưa lên là nằm im. Nó không giống như một sản phẩm tĩnh, mà giống như một sinh vật luôn phải theo hệ thống cơ sở để tiến lên. Hôm nay hệ thống chứng minh còn nhận diện bạn, ngày mai runtime thay đổi, khóa verifier được thay thế, cửa sổ hỗ trợ cũ bắt đầu thu hẹp, bên bạn vẫn nằm yên không động đậy thì không chỉ đơn giản là không đủ tiên tiến, mà có thể toàn bộ mối quan hệ chứng minh bắt đầu từ từ tách rời với hệ thống.

Điều nực cười nhất là chính quyền còn viết rằng, hợp đồng không thể nâng cấp tốt nhất nên để lại lộ trình rút tiền cho người dùng, hợp đồng có thể nâng cấp thì hoặc là để lại kế hoạch nâng cấp, hoặc là để lại phương án thoát. Khi thấy câu này, tôi thực sự bị sốc, nó gần như đang ngầm ý rằng ở Midnight, việc nâng cấp không phải là tính năng bổ sung, mà nhiều khi là điều kiện sinh tồn.

Điều này khác với chuỗi thông thường, ở chuỗi thông thường việc nâng cấp chủ yếu là bàn về quyền hạn.

Ai có thể sửa đổi?

Có thể sửa đổi bao nhiêu?

Liệu có thể gây hại không?

Nhưng $NIGHT không phải là hỏi ai sẽ sửa đổi, mà nó buộc bạn phải đối mặt với một vấn đề, khi hệ thống tự tiến lên, bạn không sửa đổi thì không được sao?

Đây chính là điều tôi thấy phiền phức hơn.

Bởi vì chỉ cần hợp đồng và hệ thống chứng minh, runtime, khóa verifier những thứ này gắn bó đủ sâu, những gì nhà phát triển thực hiện không chỉ là triển khai mã, mà còn là mặc định tiếp nhận một nghĩa vụ bảo trì lâu dài. Hôm nay bạn gửi hợp đồng đi, người dùng không chỉ tin tưởng vào phiên bản mã này, mà còn là liệu sau này bạn có tiếp tục theo phiên bản, chuyển đổi khóa verifier, xử lý tương thích, để lại lộ trình thoát tốt.

Đây cũng là lý do tại sao tôi ngày càng cảm thấy, nơi nguy hiểm nhất của Midnight có lẽ không phải là hợp đồng không thể nâng cấp, mà ngược lại, chính là nhiều lúc nó không thể không nâng cấp.

Một khi có cấu trúc như thế này, nó giống như ký một hợp đồng bảo trì mặc định gia hạn. Nếu bạn không gia hạn, hệ thống có thể từ từ bỏ bạn lại phía sau.

Vì vậy, bây giờ tôi chỉ nhìn vào hai điểm.

Một cái là duy trì quyền hạn với nhiều khóa và nhiều ngưỡng khi nào thực sự được triển khai, nếu không thì áp lực duy trì lâu dài này sẽ luôn đè nặng lên trạng thái chuyển tiếp với một khóa, nghĩ thế nào cũng thấy khó chịu. Cái khác là cửa sổ hỗ trợ cho phiên bản khóa verifier cũ, nhịp độ di chuyển, lộ trình thoát có thể nói rõ hơn không. Bởi vì nếu cái này không được giải thích rõ ràng, cả nhà phát triển và người dùng thực sự đều đang đoán.

Nói cho cùng, bây giờ một khi bạn triển khai hợp đồng trên #night đã mặc định bị kéo vào một cuộc đua nâng cấp lâu dài, bạn không đi cùng, nó sẽ tiến lên.