Hợp đồng có thể nâng cấp là gì?
Hợp đồng có thể nâng cấp là một thiết kế hợp đồng thông minh cho phép ứng dụng blockchain thay đổi hoặc mở rộng logic sau khi triển khai, đồng thời vẫn giữ nguyên địa chỉ hiển thị với người dùng, trạng thái lưu trữ và số dư.Trong tiền mã hóa, hợp đồng có thể nâng cấp thường được sử dụng cho các giao thức DeFi, hệ thống token, hợp đồng staking, bridge, thị trường cho vay, tài khoản thông minh, hệ thống quản trị và các ứng dụng on-chain khác có thể cần sửa lỗi hoặc bổ sung tính năng theo thời gian.Hợp đồng thông minh truyền thống thường được mô tả là bất biến vì mã đã triển khai không thể chỉnh sửa trực tiếp sau khi được đưa lên on-chain.Hợp đồng có thể nâng cấp giải quyết hạn chế này bằng cách tách địa chỉ hợp đồng và dữ liệu lưu trữ khỏi logic nghiệp vụ thực thi hành động của người dùng.Cách phổ biến nhất để xây dựng hợp đồng có thể nâng cấp là mô hình proxy, trong đó người dùng tương tác với một hợp đồng proxy và proxy chuyển tiếp lệnh gọi đến một hợp đồng triển khai riêng biệt.Proxy giữ nguyên địa chỉ công khai, trong khi hợp đồng triển khai có thể được thay bằng phiên bản mới hơn khi có nâng cấp được ủy quyền.Điều này có nghĩa người dùng không cần chuyển sang địa chỉ hợp đồng mới mỗi khi giao thức sửa lỗi, bổ sung tính năng hoặc cải thiện logic nội bộ.Với người dùng crypto, lợi ích chính là tính liên tục vì số dư token, dữ liệu staking, quyền biểu quyết và vị thế giao thức có thể vẫn được lưu trong cùng một bộ nhớ hợp đồng.Với nhà phát triển, lợi ích chính là tính linh hoạt vì họ có thể cải thiện giao thức mà không buộc phải di chuyển toàn bộ tiền và dữ liệu của người dùng.Với nhà đầu tư và trader, mối quan ngại chính là rủi ro quản trị, vì quyền nâng cấp có thể thay đổi cách giao thức hoạt động sau khi người dùng đã nạp tài sản.Hợp đồng có thể nâng cấp hoạt động như thế nào?
Một hợp đồng có thể nâng cấp thường có ít nhất hai phần cốt lõi: hợp đồng proxy và hợp đồng triển khai.Hợp đồng proxy là địa chỉ mà người dùng, ví, trình khám phá blockchain và các hợp đồng thông minh khác thường tương tác.Hợp đồng triển khai chứa logic thực tế, như quy tắc chuyển token, tính toán staking, chức năng vay, phân phối phần thưởng hoặc kiểm tra quyền truy cập.Khi người dùng gửi giao dịch đến proxy, proxy sử dụng cơ chế cấp thấp gọi là
Với
Vì sao hợp đồng có thể nâng cấp quan trọng trong crypto?
Hợp đồng có thể nâng cấp quan trọng vì các ứng dụng crypto thường bảo vệ tài sản thực và không thể dựa vào phương thức cập nhật phần mềm truyền thống.Trong ứng dụng web thông thường, nhà phát triển có thể vá mã backend, triển khai lại dịch vụ hoặc thay đổi cơ sở dữ liệu mà không yêu cầu người dùng di chuyển tài sản.Trên blockchain công khai, mã hợp đồng đã triển khai thường là vĩnh viễn, vì vậy một lỗi nghiêm trọng có thể đòi hỏi quy trình di chuyển khó khăn nếu hợp đồng không thể nâng cấp.Thiết kế có thể nâng cấp có thể giảm vấn đề này bằng cách cho phép cập nhật có kiểm soát đối với logic giao thức.Điều này hữu ích khi dự án cần sửa lỗ hổng, hỗ trợ tiêu chuẩn token mới, bổ sung biện pháp kiểm soát rủi ro, cải thiện hiệu quả phí gas hoặc phản ứng trước các thay đổi trong hệ sinh thái blockchain.Tuy nhiên, khả năng nâng cấp cũng thay đổi mô hình tin cậy của một ứng dụng crypto.Nếu một địa chỉ có thể nâng cấp hợp đồng ngay lập tức, người dùng phải tin rằng địa chỉ đó sẽ không cài đặt logic độc hại hoặc thiếu cẩn trọng.Nếu nâng cấp được kiểm soát bởi quản trị phi tập trung, người dùng phải tin vào quy trình quản trị, quy tắc biểu quyết, timelock và mức độ tham gia của cử tri.Một hợp đồng có thể nâng cấp được thiết kế tốt nên cân bằng tính linh hoạt với các giới hạn chặt chẽ về ai có thể nâng cấp, khi nào có thể nâng cấp và cách người dùng theo dõi thay đổi.Mô hình proxy
Mô hình proxy là kiến trúc được sử dụng rộng rãi nhất cho hợp đồng có thể nâng cấp.Trong mô hình này, hợp đồng proxy lưu trữ trạng thái và chuyển tiếp lệnh gọi hàm đến hợp đồng triển khai.Hợp đồng triển khai chứa logic nghiệp vụ nhưng người dùng thông thường không nên sử dụng trực tiếp.Khi giao thức nâng cấp, một hợp đồng triển khai mới được triển khai và proxy được cập nhật để trỏ đến hợp đồng triển khai đó.Địa chỉ hiển thị với người dùng vẫn giữ nguyên, do đó ví, tích hợp và các hợp đồng khác có thể tiếp tục gọi địa chỉ proxy.Thiết kế này được giải thích chi tiết trong tài liệu về nâng cấp hợp đồng thông minh của Ethereum.
Mô hình proxy mạnh mẽ vì tránh việc di chuyển trạng thái thủ công, vốn có thể tốn kém, rủi ro và gây nhầm lẫn cho người dùng.Mô hình này cũng nguy hiểm khi nhà phát triển không hiểu cách hoạt động của bộ nhớ proxy, function selector, hàm khởi tạo và quyền quản trị.Proxy không tự động an toàn chỉ vì nó có thể nâng cấp.Độ an toàn của thiết kế phụ thuộc vào chất lượng triển khai, quyền nâng cấp, kiểm thử, quản trị và giám sát.Hợp đồng triển khai
Hợp đồng triển khai đôi khi được gọi là hợp đồng logic vì chứa mã xác định cách ứng dụng hoạt động.Ví dụ, trong hợp đồng token, phần triển khai có thể xác định quy tắc chuyển token, phê duyệt, giới hạn mint, logic burn và quyền hạn theo vai trò.Trong hợp đồng staking, phần triển khai có thể xác định quy tắc nạp, quy tắc rút, công thức phần thưởng, logic phạt và cơ chế kiểm soát khẩn cấp.Trong hợp đồng cho vay, phần triển khai có thể xác định quy tắc tài sản thế chấp, tính lãi, logic thanh lý và các tham số rủi ro.Khi proxy ủy quyền lệnh gọi đến phần triển khai, mã triển khai sử dụng bộ nhớ của proxy.Điều này có nghĩa phần triển khai nên được viết như thể các biến của nó sẽ được lưu trong hợp đồng proxy.Nhà phát triển thông thường nên ngăn người dùng khởi tạo hoặc sử dụng sai hợp đồng triển khai trực tiếp.Họ cũng nên bảo đảm bất kỳ phần triển khai mới nào tương thích với bố cục bộ nhớ của phiên bản trước.Một phần triển khai mới thay đổi bộ nhớ không đúng cách có thể gây tổn hại vĩnh viễn cho dữ liệu on-chain.Bố cục bộ nhớ lưu trữ
Bố cục bộ nhớ lưu trữ là một trong những khái niệm quan trọng nhất về bảo mật hợp đồng có thể nâng cấp.Trong Solidity, các biến trạng thái được đặt vào các storage slot theo quy tắc cụ thể, gồm thứ tự biến và thứ tự kế thừa.Khi hợp đồng được nâng cấp, phần triển khai mới phải diễn giải bộ nhớ hiện có của proxy giống như phần triển khai cũ.Nhà phát triển thường chỉ thêm biến mới sau các biến hiện có, thay vì xóa biến, sắp xếp lại biến hoặc thay đổi kiểu biến.Nếu hợp đồng ban đầu lưu số dư người dùng trong một slot, phiên bản mới không được vô tình coi cùng slot đó là địa chỉ quản trị hoặc biến phần thưởng.Xung đột bộ nhớ có thể dẫn đến số dư bị lỗi, mất quyền hạn, hạch toán không chính xác hoặc hành vi hợp đồng có thể bị khai thác.Tài liệu về bố cục bộ nhớ của Solidity giải thích cách Solidity tổ chức biến trạng thái trong bộ nhớ lưu trữ liên tục.
Các thư viện hợp đồng có thể nâng cấp hiện đại cũng có công cụ và kiểm tra giúp nhà phát triển phát hiện thay đổi bộ nhớ không an toàn trước khi triển khai.Ngay cả khi có công cụ, bố cục bộ nhớ vẫn cần được xem xét cẩn thận trong mỗi lần nâng cấp.Storage slot proxy ERC-1967
ERC-1967 là tiêu chuẩn Ethereum phổ biến xác định các storage slot cụ thể cho thông tin proxy, gồm địa chỉ triển khai, địa chỉ quản trị và địa chỉ beacon.Mục đích của ERC-1967 là giảm xung đột bộ nhớ giữa proxy và hợp đồng triển khai.Tiêu chuẩn này cũng giúp trình khám phá blockchain và công cụ dành cho nhà phát triển xác định phần triển khai phía sau proxy.Nếu không có storage slot tiêu chuẩn, ví, trình khám phá, kiểm toán viên và công cụ giám sát sẽ khó xác định hợp đồng logic mà proxy đang sử dụng.ERC-1967 đặc biệt quan trọng vì chính proxy cần lưu dữ liệu liên quan đến nâng cấp, trong khi phần triển khai cũng dự kiến sử dụng bộ nhớ của proxy.Đặc tả ERC-1967 chính thức xác định các quy ước về storage slot proxy này.
Đối với người dùng crypto, ERC-1967 có thể giúp việc kiểm tra hợp đồng có thể nâng cấp dễ hơn vì nhiều công cụ có thể hiển thị địa chỉ triển khai hiện tại.Đối với nhà phát triển, ERC-1967 cung cấp cách an toàn và tiêu chuẩn hơn để lưu metadata của proxy.Bộ nhớ có không gian tên ERC-7201
ERC-7201 là tiêu chuẩn mới hơn về bố cục bộ nhớ có không gian tên trong hợp đồng thông minh.Bộ nhớ có không gian tên nhóm các biến trạng thái liên quan dưới một namespace cụ thể để giảm xung đột bố cục bộ nhớ, đặc biệt trong hệ thống có thể nâng cấp phức tạp.Điều này hữu ích khi hợp đồng sử dụng kế thừa, mô-đun, plugin hoặc nhiều thành phần có thể nâng cấp.OpenZeppelin Contracts 5.x sử dụng các mô hình hợp đồng có thể nâng cấp, bao gồm namespace bộ nhớ theo kiểu ERC-7201 trong các phiên bản có thể nâng cấp.Đặc tả ERC-7201 chính thức mô tả quy ước ghi lại vị trí bộ nhớ có không gian tên trong mã nguồn Solidity.
Đối với nhà phát triển, bộ nhớ có không gian tên có thể giúp nâng cấp dễ phân tích hơn vì mỗi thành phần hợp đồng có thể giữ vùng bộ nhớ riêng.Với người dùng, bộ nhớ có không gian tên phần lớn không hiển thị, nhưng có thể cải thiện độ an toàn nếu được triển khai đúng cách.Tiêu chuẩn này không loại bỏ nhu cầu kiểm toán, kiểm thử và xem xét nâng cấp cẩn thận.Initializer thay cho constructor
Hợp đồng có thể nâng cấp thường sử dụng hàm initializer thay vì constructor.Constructor thông thường chỉ chạy khi hợp đồng được triển khai, nhưng trong thiết kế proxy, proxy sử dụng mã của phần triển khai mà không chạy constructor của phần triển khai cho trạng thái của proxy.Đây là lý do hợp đồng có thể nâng cấp thường chuyển logic thiết lập vào một hàm như
Hướng dẫn viết hợp đồng có thể nâng cấp của OpenZeppelin giải thích lý do constructor được thay bằng hàm initializer trong hợp đồng có thể nâng cấp dựa trên proxy.
Các hợp đồng có thể nâng cấp tốt cũng sử dụng cẩn thận hàm reinitializer khi phiên bản mới có thêm yêu cầu thiết lập.Mọi initializer và reinitializer nên được xem xét như một phần của quy trình nâng cấp.Transparent Proxy
Transparent proxy là thiết kế proxy tách biệt lệnh gọi của quản trị viên với lệnh gọi của người dùng.Trong mô hình này, quản trị viên có thể thực hiện hành động liên quan đến nâng cấp, còn người dùng thông thường được chuyển tiếp đến hợp đồng triển khai.Mô hình transparent proxy giúp tránh tình huống quản trị viên vô tình kích hoạt các hàm triển khai thông qua proxy.Nó cũng giảm rủi ro xung đột function selector giữa các hàm quản trị proxy và các hàm triển khai.Mô hình này phổ biến trong hệ thống vận hành thực tế vì cung cấp cấu trúc quản trị rõ ràng cho việc nâng cấp.Đổi lại, mô hình có thể cần thêm thành phần triển khai và quản lý, như hợp đồng proxy admin.Với người dùng, điểm quan trọng là xác định ai kiểm soát proxy admin và liệu nâng cấp có bị trì hoãn, chịu quản trị hay được giám sát bên ngoài hay không.UUPS Proxy
UUPS là viết tắt của Universal Upgradeable Proxy Standard.Trong thiết kế UUPS, logic nâng cấp thường nằm trong hợp đồng triển khai thay vì được quản lý hoàn toàn bởi chính proxy.Điều này có thể khiến proxy nhỏ hơn và ít tốn phí triển khai hơn, nhưng cũng có nghĩa phần triển khai phải bao gồm và bảo vệ chính xác hàm nâng cấp.Nếu logic ủy quyền nâng cấp sai, hợp đồng có thể dễ bị nâng cấp trái phép.Nếu hàm nâng cấp bị loại bỏ hoặc hỏng trong phần triển khai tương lai, proxy có thể trở nên khó hoặc không thể nâng cấp lại.Proxy UUPS phổ biến, nhưng đòi hỏi kiểm soát truy cập và kiểm thử cẩn thận.Người dùng nên kiểm tra liệu hợp đồng UUPS có quyền nâng cấp rõ ràng, timelock và lịch sử nâng cấp công khai hay không.Beacon Proxy
Beacon proxy là thiết kế trong đó nhiều hợp đồng proxy đọc địa chỉ triển khai từ một hợp đồng beacon dùng chung.Điều này cho phép nâng cấp đồng thời nhiều proxy bằng cách thay đổi địa chỉ triển khai được lưu trong beacon.Beacon proxy có thể hữu ích khi giao thức triển khai nhiều hợp đồng tương tự, như vault, pool, tài khoản hoặc vị thế token hóa.Lợi thế chính là hiệu quả vận hành vì một lần nâng cấp beacon có thể cập nhật nhiều proxy.Rủi ro chính là tính tập trung, vì một nâng cấp beacon không tốt có thể ảnh hưởng đến nhiều hợp đồng cùng lúc.Quyền sở hữu beacon và quyền nâng cấp nên được bảo vệ bằng quản trị và giám sát chặt chẽ.Diamond Pattern
Diamond pattern là kiến trúc nâng cấp trong đó một proxy có thể định tuyến các lệnh gọi hàm khác nhau đến những hợp đồng triển khai khác nhau, thường gọi là facet.Điều này cho phép một hệ thống hợp đồng thông minh lớn được chia thành các mô-đun nhỏ hơn.Thiết kế diamond có thể nâng cấp một phần hệ thống mà không cần thay thế mọi hàm cùng lúc.Điều này có thể hữu ích cho các giao thức crypto phức tạp cần nhiều tính năng dưới một địa chỉ.Đổi lại là độ phức tạp, vì nhà phát triển phải quản lý rất cẩn thận function selector, bộ nhớ facet, kiểm soát truy cập và quy tắc nâng cấp.Hệ thống theo kiểu diamond có thể mạnh mẽ nhưng có thể khó để người dùng trung bình kiểm tra hơn so với cấu trúc proxy đơn giản.Lợi ích của hợp đồng có thể nâng cấp
Lợi ích đầu tiên của hợp đồng có thể nâng cấp là sửa lỗi.Nếu phát hiện vấn đề nghiêm trọng, nhà phát triển có thể vá logic mà không buộc người dùng phải tự di chuyển tiền.Lợi ích thứ hai là mở rộng tính năng.Giao thức có thể bổ sung loại tài sản thế chấp mới, quy tắc phần thưởng mới, mô-đun mới hoặc biện pháp kiểm soát bảo mật mới mà vẫn giữ nguyên địa chỉ hợp đồng.Lợi ích thứ ba là tính ổn định của tích hợp.Ví, nền tảng phân tích, công cụ tổng hợp và các hợp đồng thông minh khác có thể tiếp tục trỏ đến cùng địa chỉ proxy sau khi nâng cấp.Lợi ích thứ tư là trải nghiệm người dùng.Người dùng có thể không cần phê duyệt, rút, nạp lại hoặc tự di chuyển vị thế trong mỗi lần giao thức cập nhật.Lợi ích thứ năm là phản ứng khẩn cấp.Quy trình nâng cấp được quản trị tốt có thể giúp giao thức phản ứng với rủi ro đang diễn ra nhanh hơn so với quy trình di chuyển hoàn toàn.Rủi ro của hợp đồng có thể nâng cấp
Rủi ro lớn nhất của hợp đồng có thể nâng cấp là quản trị viên lạm dụng.Nếu quyền nâng cấp do khóa riêng tư yếu, đội ngũ thiếu cẩn trọng hoặc quy trình quản trị bị xâm phạm kiểm soát, hợp đồng có thể bị thay đổi theo những cách gây hại.Một nâng cấp độc hại có thể rút cạn tiền, chặn rút tiền, thay đổi phí, thay đổi số dư hoặc loại bỏ biện pháp bảo vệ người dùng.Một rủi ro lớn khác là hỏng bộ nhớ lưu trữ.Một nâng cấp triển khai thiết kế kém có thể phá vỡ mối quan hệ giữa dữ liệu cũ và logic mới.Rủi ro thứ ba là độ phức tạp ẩn.Người dùng có thể nghĩ rằng họ đang tương tác với một hợp đồng, nhưng hành vi thực tế phụ thuộc vào địa chỉ triển khai hiện tại và quyền nâng cấp.Rủi ro thứ tư là giám sát kém.Nếu người dùng và các bên tích hợp không theo dõi nâng cấp, họ có thể bỏ lỡ các thay đổi quan trọng đối với hành vi giao thức.Rủi ro thứ năm là chiếm quyền quản trị.Nếu quyền biểu quyết tập trung, một nhóm nhỏ có thể phê duyệt nâng cấp có lợi cho họ nhưng gây tổn hại cho người dùng khác.Cách người dùng đánh giá hợp đồng có thể nâng cấp
Trước tiên, người dùng nên kiểm tra liệu hợp đồng có phải proxy và hiện sử dụng phần triển khai nào hay không.Nhiều trình khám phá blockchain hiển thị thông tin proxy khi hợp đồng tuân theo các tiêu chuẩn proxy phổ biến như ERC-1967.Người dùng cũng nên kiểm tra ai có quyền nâng cấp hợp đồng.Nâng cấp do một tài khoản sở hữu bên ngoài duy nhất kiểm soát thường rủi ro hơn nâng cấp do multisig, timelock hoặc quy trình quản trị minh bạch kiểm soát.Người dùng nên xem xét liệu dự án có thông báo nâng cấp trước khi diễn ra hay không.Họ cũng nên kiểm tra liệu hợp đồng đã được kiểm toán, báo cáo kiểm toán có bao gồm logic nâng cấp và các lần nâng cấp trước có được thực hiện an toàn hay không.Đối với khoản nạp lớn, người dùng nên chú ý thời lượng timelock, quyền tạm dừng khẩn cấp, thay đổi vai trò quản trị và lịch sử sự kiện nâng cấp.Một hợp đồng có thể được viết tốt về mặt kỹ thuật nhưng vẫn rủi ro nếu quyền nâng cấp quá tập trung hoặc được giám sát kém.Thực tiễn tốt nhất cho nhà phát triển
Nhà phát triển nên sử dụng framework nâng cấp đã được xem xét kỹ thay vì tự viết logic proxy từ đầu, trừ khi có kinh nghiệm bảo mật vững chắc.Họ nên bảo vệ các hàm nâng cấp bằng kiểm soát truy cập mạnh như quyền sở hữu multisig, quyền hạn theo vai trò, timelock hoặc quản trị on-chain.Họ nên viết kiểm thử tự động cho cả lần triển khai ban đầu và mọi lộ trình nâng cấp.Họ nên so sánh bố cục bộ nhớ trước và sau nâng cấp để phát hiện các thay đổi không an toàn.Họ nên bảo vệ initializer và tránh các hàm thiết lập không được bảo vệ.Họ nên tránh các mô hình cấp thấp nguy hiểm trừ khi cần thiết và đã được xem xét đầy đủ.Họ nên công bố mã nguồn triển khai và giúp mối quan hệ proxy dễ kiểm tra.Họ nên phát sự kiện rõ ràng khi nâng cấp diễn ra để hệ thống giám sát phát hiện thay đổi.Họ nên ghi rõ nội dung thay đổi, lý do thay đổi và các rủi ro đã được xem xét.Họ nên lập kế hoạch phản ứng khẩn cấp mà không trao quyền không giới hạn cho một tác nhân duy nhất.Hợp đồng có thể nâng cấp và hợp đồng bất biến
Hợp đồng bất biến không thể thay đổi mã đã triển khai sau khi triển khai.Điều này mang lại khả năng dự đoán cao cho người dùng vì quy tắc được cố định, trừ khi hợp đồng đã bao gồm các tham số có thể cấu hình.Hợp đồng có thể nâng cấp có thể thay đổi logic thông qua cơ chế nâng cấp đã xác định.Điều này mang lại sự linh hoạt cho nhà phát triển nhưng yêu cầu người dùng tin vào quy trình nâng cấp.Hợp đồng bất biến thường được ưu tiên cho tài sản đơn giản, giao thức tối giản hoặc hệ thống mà quy tắc cố định quan trọng hơn tính linh hoạt trong tương lai.Hợp đồng có thể nâng cấp thường được ưu tiên cho giao thức phức tạp có thể cần vá lỗi, kiểm soát rủi ro, tích hợp và bảo trì dài hạn.Không có thiết kế nào luôn tốt hơn.Lựa chọn phù hợp phụ thuộc vào giá trị được bảo vệ, độ phức tạp ứng dụng, nhu cầu nâng cấp dự kiến và mức độ vững chắc của quản trị.Vì sao khả năng nâng cấp ảnh hưởng đến rủi ro token và giao thức?
Hợp đồng có thể nâng cấp có thể ảnh hưởng trực tiếp đến người nắm giữ token vì logic hợp đồng có thể xác định việc mint, burn, hạn chế chuyển token, phí hoặc quyền quản trị.Nếu nâng cấp thay đổi quy tắc token, nó có thể ảnh hưởng đến niềm tin thị trường và tiện ích của token.Hợp đồng staking có thể nâng cấp có thể ảnh hưởng đến tỷ lệ phần thưởng, thời gian khóa, khoản phạt và cách thức rút.Hợp đồng cho vay có thể nâng cấp có thể ảnh hưởng đến tỷ lệ tài sản thế chấp, ngưỡng thanh lý, lãi suất và biện pháp kiểm soát rủi ro thị trường.Bridge có thể nâng cấp có thể ảnh hưởng đến lưu ký tài sản, xác minh thông điệp và logic rút tiền.Vì vậy, trader và nhà đầu tư dài hạn nên xem quyền nâng cấp là một phần của phân tích cơ bản giao thức.Một token có thể trông phi tập trung ở cấp độ thị trường nhưng vẫn phụ thuộc vào hợp đồng có thể được nâng cấp bởi một nhóm nhỏ.Hiểu khả năng nâng cấp giúp người dùng đánh giá liệu quy tắc của giao thức thực sự cố định hay vẫn có thể thay đổi.Những hiểu lầm phổ biến
Một hiểu lầm phổ biến là hợp đồng có thể nâng cấp đồng nghĩa mã hợp đồng gốc được chỉnh sửa on-chain.Trong hầu hết thiết kế proxy, mã proxy gốc không bị chỉnh sửa mà proxy được trỏ sang một hợp đồng triển khai khác.Một hiểu lầm khác là khả năng nâng cấp luôn xấu.Khả năng nâng cấp có thể hữu ích khi minh bạch, có giới hạn, được kiểm toán và được quản trị có trách nhiệm.Hiểu lầm thứ ba là kiểm toán loại bỏ rủi ro nâng cấp.Kiểm toán có thể xem xét mã hiện tại và quy trình nâng cấp, nhưng các phần triển khai trong tương lai có thể tạo ra rủi ro mới.Hiểu lầm thứ tư là người dùng chỉ cần kiểm tra địa chỉ hợp đồng token.Với hệ thống có thể nâng cấp, người dùng cũng nên kiểm tra hợp đồng triển khai, vai trò quản trị và sự kiện nâng cấp.Hiểu lầm thứ năm là phi tập trung tự động ngăn nâng cấp xấu.Quản trị vẫn có thể thất bại nếu quyền biểu quyết tập trung, mức tham gia thấp hoặc đề xuất khó xem xét.FAQ
Hợp đồng có thể nâng cấp trong crypto là gì?
Hợp đồng có thể nâng cấp là thiết kế hợp đồng thông minh cho phép giao thức thay đổi logic sau khi triển khai trong khi vẫn giữ nguyên địa chỉ và dữ liệu lưu trữ.Vì sao các dự án crypto dùng hợp đồng có thể nâng cấp?
Các dự án crypto dùng hợp đồng có thể nâng cấp để sửa lỗi, thêm tính năng, cải thiện biện pháp kiểm soát bảo mật, giảm chi phí di chuyển và duy trì tích hợp theo thời gian.Hợp đồng có thể nâng cấp có an toàn không?
Hợp đồng có thể nâng cấp có thể an toàn khi sử dụng kiểm soát truy cập mạnh, quản lý bộ nhớ cẩn thận, kiểm toán, giám sát và quản trị minh bạch.Rủi ro chính của hợp đồng có thể nâng cấp là gì?
Rủi ro chính là bên được ủy quyền nâng cấp có thể cài đặt logic gây hại hoặc có lỗi, làm thay đổi hành vi giao thức hoặc đặt tiền của người dùng vào rủi ro.Hợp đồng proxy là gì?
Hợp đồng proxy là hợp đồng hiển thị với người dùng, lưu trữ dữ liệu và chuyển tiếp lệnh gọi đến hợp đồng triển khai chứa logic hiện tại.Hợp đồng triển khai là gì?
Hợp đồng triển khai là hợp đồng logic xác định cách các hàm hoạt động khi proxy ủy quyền lệnh gọi đến nó.Vì sao hợp đồng có thể nâng cấp sử dụng initializer?
Hợp đồng có thể nâng cấp sử dụng initializer vì logic constructor không khởi tạo bộ nhớ của proxy theo cách giống như triển khai hợp đồng thông thường.Xung đột bộ nhớ là gì?
Xung đột bộ nhớ xảy ra khi logic hợp đồng mới đọc hoặc ghi các storage slot theo cách xung đột với bố cục cũ.ERC-1967 là gì?
ERC-1967 là tiêu chuẩn xác định các storage slot cho thông tin proxy như địa chỉ triển khai, địa chỉ quản trị và địa chỉ beacon.ERC-7201 là gì?
ERC-7201 là tiêu chuẩn về bố cục bộ nhớ có không gian tên, giúp tổ chức các biến trạng thái và giảm xung đột bộ nhớ trong hợp đồng có thể nâng cấp phức tạp.Hợp đồng có thể nâng cấp có thể trở thành bất biến sau này không?
Có, một số dự án có thể từ bỏ hoặc vô hiệu hóa quyền nâng cấp, nhưng người dùng nên xác minh điều này trên on-chain thay vì chỉ dựa vào thông báo.Người dùng có thể kiểm tra hợp đồng có thể nâng cấp bằng cách nào?
Người dùng có thể kiểm tra hợp đồng trên trình khám phá blockchain, tìm thông tin proxy, xem địa chỉ triển khai và kiểm tra quyền quản trị hoặc quản trị giao thức.Kết luận
Hợp đồng có thể nâng cấp là thiết kế hợp đồng thông minh mạnh mẽ, cho phép giao thức crypto cải thiện logic trong khi vẫn giữ nguyên địa chỉ, trạng thái và số dư.Thiết kế phổ biến nhất sử dụng hợp đồng proxy lưu dữ liệu và ủy quyền thực thi cho hợp đồng triển khai có thể thay thế.Mô hình này có thể giúp sửa lỗi, nâng cấp tính năng và bảo trì giao thức dài hạn dễ hơn.Mô hình cũng có thể tạo ra rủi ro nghiêm trọng nếu quyền nâng cấp tập trung, bố cục bộ nhớ bị xử lý sai hoặc quản trị yếu.Các tiêu chuẩn và thực tiễn quan trọng như storage slot proxy ERC-1967, bộ nhớ có không gian tên ERC-7201, hàm initializer, kiểm toán, timelock và kiểm soát quản trị minh bạch có thể giảm những rủi ro này.Đối với người dùng crypto, khả năng nâng cấp luôn nên là một phần của phân tích rủi ro vì nó quyết định liệu quy tắc giao thức đã cố định hay vẫn có thể thay đổi.Đối với nhà phát triển, hợp đồng có thể nâng cấp nên được xem là hạ tầng có vai trò then chốt đối với bảo mật, đòi hỏi thiết kế, kiểm thử, giám sát và quản trị cẩn thận ngay từ lần triển khai đầu tiên.Có thể bạn cũng thích
WhatsMiner M30S++
Tên miền Web3
Dự án Web3
HOT
Tiền mã hoá thịnh hành hiện nay đang thu hút sự chú ý đáng kể của thị trường
TOP KL
Tiền mã hoá có khối lượng giao dịch cao nhất
Mới được thêm vào
Tiền mã hoá được niêm yết gần đây có thể giao dịch

