Mua Crypto
Thị trường
Spot
FuturesBTC
Tiết kiệm
Trung tâm sự kiện
Trung tâm thưởng
Xem thêm
Lễ hội 0 phí
Hợp đồng Proxy: Hợp đồng Proxy là gì?Hợp đồng Proxy là hợp đồng thông minh nhận lệnh gọi từ người dùng rồi chuyển tiếp đến một hợp đồng khác chứa logic nghiệp vụ thực tế.Trong crypto, hợp đồng Proxy chủ yếu được dùngHợp đồng Proxy: Hợp đồng Proxy là gì?Hợp đồng Proxy là hợp đồng thông minh nhận lệnh gọi từ người dùng rồi chuyển tiếp đến một hợp đồng khác chứa logic nghiệp vụ thực tế.Trong crypto, hợp đồng Proxy chủ yếu được dùng

Hợp đồng Proxy

2026/10/13 16:48
#Advanced
Humanity
H$0.05641-4.40%
Gravity
G$0.004019-3.50%
PX
PX$0.0126-1.56%
MemeCore
M$0.8678-7.25%
o1.exchange
O$0.4796+1.50%

Hợp đồng Proxy là gì?

Hợp đồng Proxy là hợp đồng thông minh nhận lệnh gọi từ người dùng rồi chuyển tiếp đến một hợp đồng khác chứa logic nghiệp vụ thực tế.

Trong crypto, hợp đồng Proxy chủ yếu được dùng để giúp hệ thống hợp đồng thông minh có thể nâng cấp mà vẫn giữ nguyên địa chỉ hợp đồng công khai và trạng thái được lưu trữ.

Hợp đồng mà người dùng tương tác thường được gọi là proxy.

Hợp đồng chứa logic hiện tại thường được gọi là hợp đồng triển khai (implementation contract), hợp đồng logic hoặc bản sao chính (master copy).

Tài liệu về mẫu nâng cấp Proxy của OpenZeppelin giải thích rằng khả năng nâng cấp dựa trên proxy hoạt động bằng cách tách riêng phần lưu trữ của hợp đồng khỏi logic của hợp đồng.

Sự tách biệt này rất quan trọng vì hợp đồng thông minh thường khó hoặc không thể thay đổi sau khi triển khai.

Nếu dự án triển khai một hợp đồng thông thường rồi phát hiện lỗi, đội ngũ có thể phải triển khai hợp đồng mới tại địa chỉ mới.

Hợp đồng Proxy giải quyết vấn đề này bằng cách giữ nguyên địa chỉ proxy, đồng thời trỏ đến hợp đồng triển khai mới khi một bản nâng cấp được phê duyệt.

Người dùng, ví và ứng dụng tiếp tục tương tác với địa chỉ proxy, trong khi logic phía sau địa chỉ đó có thể thay đổi.

Cách hiểu đơn giản nhất là proxy đóng vai trò như cửa trước cố định, còn hợp đồng triển khai là động cơ phía sau có thể thay thế.

Lý do tồn tại hợp đồng Proxy

Hợp đồng Proxy tồn tại vì tính bất biến của blockchain vừa mang lại sự an toàn vừa tạo ra khó khăn.

Tính bất biến rất hữu ích vì người dùng có thể tin rằng mã đã triển khai không thể bị chỉnh sửa bí mật như phần mềm web thông thường.

Tuy nhiên, tính bất biến trở thành vấn đề khi nhà phát triển cần sửa lỗi, bổ sung tính năng, xử lý vấn đề bảo mật, cải thiện hiệu suất hoặc hỗ trợ tiêu chuẩn mới.

Nếu không có proxy, nâng cấp hợp đồng thông minh thường đồng nghĩa với việc triển khai hợp đồng mới và yêu cầu người dùng chuyển tài sản hoặc quyền phê duyệt.

Quá trình chuyển đổi đó có thể tốn kém, khó hiểu, rủi ro và gây gián đoạn.

Hợp đồng Proxy cho phép giữ ổn định địa chỉ mà người dùng tương tác.

Điều này quan trọng đối với giao thức DeFi, bộ sưu tập NFT, DAO, hợp đồng token, bridge, hệ thống staking, tài sản trong trò chơi và ví trừu tượng hóa tài khoản.

Proxy có thể giảm trở ngại cho người dùng vì các tích hợp không cần đổi địa chỉ hợp đồng mỗi khi logic thay đổi.

Proxy cũng có thể cải thiện bảo mật vì các bản sửa lỗi khẩn cấp dễ được triển khai hơn.

Tuy nhiên, khả năng nâng cấp tạo ra các giả định về niềm tin vì phải có cá nhân hoặc quy trình quản trị được phép thay đổi hợp đồng triển khai.

Cách hợp đồng Proxy hoạt động

Hợp đồng Proxy hoạt động bằng cách 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.

Khi người dùng gọi proxy, bản thân proxy thường không chạy logic chính của ứng dụng.

Thay vào đó, proxy chuyển tiếp lệnh gọi đến hợp đồng triển khai bằng cơ chế cấp thấp của EVM như

delegatecall
.

Mã của hợp đồng triển khai được thực thi, nhưng phần lưu trữ bị thay đổi là phần lưu trữ của proxy.

Đây là chi tiết then chốt giúp hệ thống proxy có thể nâng cấp.

Proxy giữ số dư, cài đặt, biến quyền sở hữu, nguồn cung token, vị thế của người dùng và các trạng thái khác.

Hợp đồng triển khai cung cấp mã để đọc và cập nhật trạng thái đó.

Nếu hệ thống được nâng cấp, hợp đồng triển khai mới với logic mới sẽ được triển khai.

Sau đó, proxy cập nhật con trỏ đến hợp đồng triển khai mới.

Địa chỉ người dùng tương tác và dữ liệu được lưu trữ vẫn nằm trong proxy, còn các lệnh gọi sau đó sẽ sử dụng logic mới.

Hợp đồng Proxy và delegatecall

delegatecall
là cơ chế cấp thấp giúp nhiều hợp đồng Proxy hoạt động.

Với lệnh gọi bên ngoài thông thường, một hợp đồng gọi hợp đồng khác và hợp đồng được gọi sử dụng phần lưu trữ của chính nó.

Với

delegatecall
, mã của hợp đồng được gọi chạy trong ngữ cảnh lưu trữ của hợp đồng gọi.

Đối với proxy, điều này có nghĩa mã của hợp đồng triển khai có thể sửa đổi phần lưu trữ của proxy.

Cơ chế này rất hữu ích vì proxy có thể giữ trạng thái trong khi thay đổi mã triển khai được sử dụng.

Cơ chế này cũng nguy hiểm vì mã triển khai phải được viết phù hợp với bố cục lưu trữ của proxy.

Nếu hợp đồng triển khai ghi nhầm vào vị trí lưu trữ, dữ liệu quan trọng có thể bị hỏng.

Nếu proxy chuyển tiếp đến hợp đồng triển khai độc hại, logic độc hại có thể rút tài sản hoặc thay đổi quyền hạn.

Cảnh báo về delegatecall của SWC-112 khuyến nghị nhà phát triển sử dụng

delegatecall
cẩn trọng và tránh gọi hợp đồng không đáng tin cậy.

Trong hệ thống proxy,

delegatecall
không chỉ là chi tiết kỹ thuật vì đây là trọng tâm của mô hình bảo mật.

Hợp đồng Proxy và hợp đồng triển khai

Hợp đồng Proxy và hợp đồng triển khai có nhiệm vụ khác nhau.

Hợp đồng Proxy giữ địa chỉ mà người dùng gọi và thường lưu trữ trạng thái của hệ thống.

Hợp đồng triển khai chứa các hàm và quy tắc quyết định cách trạng thái thay đổi.

Ví dụ, proxy của token có thể lưu số dư trong phần lưu trữ của proxy, còn hợp đồng triển khai xác định logic chuyển, phê duyệt, mint, burn hoặc kiểm soát quyền truy cập.

Khi cần tính năng mới, nhà phát triển triển khai hợp đồng triển khai mới.

Sau đó, proxy được nâng cấp để trỏ đến hợp đồng triển khai mới đó.

Địa chỉ proxy vẫn giữ nguyên nên người dùng và các tích hợp không cần chuyển sang địa chỉ mới.

Mô hình này hữu ích, nhưng người dùng cần tìm hiểu ai kiểm soát việc nâng cấp.

Nếu một khóa riêng tư duy nhất kiểm soát quản trị proxy, khóa đó có thể nắm quyền lực rất lớn đối với hợp đồng.

Nếu việc quản trị kiểm soát nâng cấp thông qua timelock và quy trình bỏ phiếu, người dùng có thể có thêm thời gian xem xét thay đổi trước khi chúng có hiệu lực.

Hợp đồng Proxy và hợp đồng thông minh thông thường

Hợp đồng thông minh thông thường thường chứa cả phần lưu trữ và logic trong cùng một hợp đồng.

Sau khi triển khai, mã của hợp đồng thông thường đó thường được cố định.

Hệ thống dựa trên proxy tách phần lưu trữ và logic ra ít nhất hai hợp đồng.

Proxy lưu trạng thái và chuyển tiếp lệnh gọi.

Hợp đồng triển khai chứa logic và có thể được thay thế nếu cơ chế nâng cấp cho phép.

Nhờ đó, hệ thống proxy linh hoạt hơn hợp đồng thông thường.

Đồng thời, hệ thống cũng khó kiểm toán hơn vì bảo mật phụ thuộc vào proxy, hợp đồng triển khai, quyền quản trị, quy trình khởi tạo, bố cục lưu trữ và lịch sử nâng cấp.

Hợp đồng thông thường có thể dễ hiểu hơn đối với người dùng vì mã tại địa chỉ đó chính là mã được thực thi.

Đối với hợp đồng Proxy, người dùng và kiểm toán viên cần xem xét sâu hơn để tìm hợp đồng triển khai đang hoạt động.

Vì vậy, trình khám phá blockchain thường gắn nhãn các hợp đồng proxy đã xác minh và hiển thị địa chỉ hợp đồng triển khai hiện tại nếu có thể phát hiện.

Hợp đồng Proxy và khả năng nâng cấp

Khả năng nâng cấp là lý do phổ biến nhất để sử dụng hợp đồng Proxy.

Hợp đồng có thể nâng cấp cho phép nhà phát triển thay đổi logic sau khi triển khai mà không cần đổi địa chỉ proxy.

Điều này có thể hữu ích để sửa lỗi, bổ sung tính năng, cải thiện phí gas, tích hợp mới, thay đổi quản trị hoặc nâng cấp giao thức.

Tuy nhiên, khả năng nâng cấp làm thay đổi mô hình niềm tin.

Hợp đồng có thể được nâng cấp không bất biến hoàn toàn như hợp đồng không thể nâng cấp.

Người dùng phải tin rằng đơn vị có quyền nâng cấp sẽ không đưa vào những thay đổi độc hại hoặc bất cẩn.

Quyền nâng cấp có thể thuộc về một chủ sở hữu duy nhất, ví multisig, DAO, bộ điều khiển timelock hoặc một hợp đồng quản trị khác.

Thiết kế an toàn hơn thường giúp quyền nâng cấp minh bạch và khó bị lạm dụng hơn.

Ví dụ, timelock có thể cho người dùng thời gian rút tài sản trước khi bản nâng cấp lớn được thực thi.

Nếu không có biện pháp kiểm soát mạnh, hợp đồng Proxy có thể trở thành cửa hậu ẩn dẫn đến tài sản của người dùng.

Tiêu chuẩn proxy ERC-1967

ERC-1967 là tiêu chuẩn được sử dụng rộng rãi cho các vị trí lưu trữ của proxy.

Tiêu chuẩn ERC-1967 quy định các vị trí lưu trữ cụ thể cho thông tin proxy như địa chỉ hợp đồng triển khai, địa chỉ quản trị và địa chỉ beacon.

Mục tiêu là ngăn xung đột lưu trữ giữa proxy và hợp đồng triển khai.

Xung đột lưu trữ xảy ra khi hai biến vô tình sử dụng cùng một vị trí lưu trữ.

Trong hệ thống proxy, điều này đặc biệt nguy hiểm vì phần lưu trữ của proxy và logic hợp đồng triển khai tương tác với nhau thông qua

delegatecall
.

ERC-1967 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 hợp đồng triển khai đang hoạt động phía sau proxy.

Nhờ đó, hệ thống proxy dễ kiểm tra và kiểm toán hơn.

Nhiều mẫu proxy có thể nâng cấp phổ biến sử dụng các vị trí lưu trữ của ERC-1967.

Sử dụng tiêu chuẩn đã biết không tự động khiến proxy an toàn.

Tuy nhiên, điều này giúp giảm nhầm lẫn có thể tránh được và hỗ trợ công cụ xác định vị trí lưu trữ dữ liệu proxy quan trọng.

Proxy trong suốt

Proxy trong suốt là một mẫu proxy tách các lệnh gọi quản trị khỏi lệnh gọi của người dùng.

Trong mẫu này, người dùng thông thường gọi proxy và lệnh gọi của họ được chuyển tiếp đến hợp đồng triển khai.

Quản trị viên có thể thực hiện các thao tác liên quan đến nâng cấp, nhưng thường bị ngăn gọi nhầm các hàm của hợp đồng triển khai thông qua proxy.

Thiết kế này giúp tránh xung đột mã định danh hàm giữa các hàm quản trị proxy và hàm của hợp đồng triển khai.

Tài liệu proxy của OpenZeppelin liệt kê

TransparentUpgradeableProxy
là proxy tích hợp quản trị viên và giao diện nâng cấp.

Proxy trong suốt phổ biến vì logic nâng cấp được đặt rõ ràng ở phía proxy của hệ thống.

Tuy nhiên, mô hình này có thể tốn thêm một chút tài nguyên so với các mô hình proxy gọn nhẹ hơn.

Mô hình này cũng đòi hỏi quản lý cẩn thận tài khoản quản trị proxy.

Nếu tài khoản quản trị proxy bị xâm phạm, kẻ tấn công có thể nâng cấp hợp đồng lên logic độc hại.

Proxy trong suốt chỉ an toàn khi mã triển khai và bảo mật tài khoản quản trị đều được đảm bảo.

Proxy UUPS

UUPS là viết tắt của Universal Upgradeable Proxy Standard.

Tiêu chuẩn ERC-1822 UUPS mô tả thiết kế proxy trong đó khả năng tương thích khi nâng cấp được quản lý thông qua logic hợp đồng triển khai.

Trong thiết kế UUPS, proxy có thể gọn nhẹ hơn vì hàm nâng cấp nằm trong hợp đồng triển khai thay vì giao diện quản trị proxy cồng kềnh.

Điều này có thể giảm chi phí triển khai và độ phức tạp của proxy.

Tuy nhiên, nhà phát triển cần bảo vệ chính xác hàm nâng cấp bên trong hợp đồng triển khai UUPS.

Nếu kiểm soát quyền truy cập không đúng, kẻ tấn công có thể nâng cấp hệ thống.

Nếu hợp đồng triển khai mới xóa hoặc làm hỏng hàm nâng cấp, proxy có thể khó hoặc không thể nâng cấp thêm.

Công cụ UUPS của OpenZeppelin có biện pháp bảo vệ nhằm giảm nguy cơ vô tình mất khả năng nâng cấp, nhưng nhà phát triển vẫn cần kiểm tra cẩn thận.

Proxy UUPS rất hữu ích vì linh hoạt và hiệu quả.

Chúng sẽ tiềm ẩn rủi ro nếu đội ngũ không hiểu đầy đủ quyền nâng cấp nằm ở đâu.

Proxy Beacon

Proxy Beacon là proxy lấy địa chỉ hợp đồng triển khai từ một hợp đồng beacon riêng biệt.

Thay vì mỗi proxy lưu địa chỉ hợp đồng triển khai riêng, nhiều proxy có thể cùng trỏ đến một beacon.

Khi beacon được nâng cấp, tất cả proxy sử dụng beacon đó có thể bắt đầu dùng hợp đồng triển khai mới.

Thiết kế này hữu ích khi dự án cần triển khai nhiều hợp đồng tương tự và muốn nâng cấp chúng cùng lúc.

Ví dụ, một factory có thể tạo nhiều vault, pool, tài khoản hoặc hợp đồng liên quan đến NFT của người dùng dùng chung một logic.

Proxy Beacon có thể đơn giản hóa việc nâng cấp hàng loạt.

Thiết kế này cũng có thể làm tăng rủi ro vì một lần nâng cấp beacon có thể ảnh hưởng đến nhiều thực thể proxy cùng lúc.

Quản trị viên beacon cần được bảo vệ cẩn thận.

Người dùng nên hiểu hợp đồng của mình có phụ thuộc vào beacon hay không, vì thay đổi beacon có thể làm thay đổi hành vi của nhiều hợp đồng.

Proxy Beacon hiệu quả khi quản lý một nhóm hợp đồng, nhưng tập trung quyền nâng cấp vào beacon.

Proxy tối giản và ERC-1167

Proxy tối giản là hợp đồng proxy rất nhỏ, được thiết kế để sao chép hành vi của một hợp đồng triển khai khác với chi phí triển khai thấp.

Tiêu chuẩn proxy tối giản ERC-1167 quy định mẫu bytecode tối giản cho các bản sao hợp đồng chi phí thấp, chuyển tiếp lệnh gọi đến một hợp đồng triển khai cố định.

Proxy tối giản thường được gọi là clone.

Chúng hữu ích khi dự án cần triển khai nhiều bản sao cùng logic, chẳng hạn nhiều ví, vault, pool, tài khoản hoặc thực thể trên sàn giao dịch.

Mỗi clone có địa chỉ và trạng thái riêng nhưng dùng lại logic triển khai.

Điều này có thể tiết kiệm gas vì không cần triển khai lại toàn bộ mã của hợp đồng triển khai.

Không phải proxy tối giản nào cũng có thể nâng cấp.

Nhiều clone ERC-1167 trỏ đến một hợp đồng triển khai cố định và không thể đổi mục tiêu đó, trừ khi có bổ sung logic nâng cấp ở nơi khác.

Sự khác biệt này rất quan trọng vì proxy tối giản hướng đến việc sao chép với chi phí thấp, còn proxy có thể nâng cấp hướng đến logic có thể thay thế.

Một số hệ thống kết hợp cả hai ý tưởng, nhưng không nên nhầm lẫn chúng.

Bố cục lưu trữ trong hợp đồng Proxy

Bố cục lưu trữ là một trong những vấn đề quan trọng nhất trong thiết kế hợp đồng Proxy.

Vì proxy lưu trữ trạng thái còn hợp đồng triển khai cung cấp logic, hợp đồng triển khai phải đọc và ghi dữ liệu theo đúng thứ tự lưu trữ.

Nếu hợp đồng triển khai mới thay đổi thứ tự biến không chính xác, nó có thể diễn giải dữ liệu lưu trữ cũ thành sai kiểu.

Ví dụ, một mapping số dư có thể bị nhầm thành biến chủ sở hữu hoặc một giá trị cấu hình có thể bị biến mới ghi đè.

Điều này có thể làm hỏng hợp đồng hoặc tạo ra lỗ hổng bảo mật.

Các framework hợp đồng có thể nâng cấp thường yêu cầu nhà phát triển thêm biến mới vào cuối thay vì đổi thứ tự hoặc xóa biến cũ.

Đôi khi, khoảng trống lưu trữ được dùng để dành chỗ cho biến trong tương lai.

Các bước kiểm tra bố cục lưu trữ có thể phát hiện nhiều lỗi nâng cấp trước khi triển khai.

Nhà phát triển nên xem bố cục lưu trữ là một phần trong mô hình an toàn công khai của hợp đồng.

Người dùng nên thận trọng nếu dự án có thể nâng cấp không giải thích cách kiểm tra bố cục lưu trữ trong quá trình nâng cấp.

Khởi tạo trong hợp đồng Proxy

Hợp đồng Proxy có thể nâng cấp thường sử dụng hàm khởi tạo thay vì constructor.

Constructor chỉ chạy khi hợp đồng triển khai được tạo.

Tuy nhiên, trong hệ thống proxy, người dùng tương tác với proxy và phần lưu trữ của proxy cần được khởi tạo.

Vì vậy, logic thiết lập thường được thực thi thông qua một hàm khởi tạo gọi qua proxy.

Quá trình khởi tạo có thể thiết lập chủ sở hữu, tên token, địa chỉ ngân quỹ, vai trò quản trị, giá trị nguồn cung, cài đặt phí hoặc tham số quản trị.

Nếu quên khởi tạo, proxy có thể không được bảo vệ.

Nếu kẻ tấn công gọi hàm khởi tạo trước, họ có thể trở thành chủ sở hữu hoặc quản trị viên.

Nếu có thể gọi hàm khởi tạo nhiều lần, các cài đặt quan trọng có thể bị ghi đè.

Vì vậy, hợp đồng có thể nâng cấp cần có cơ chế bảo vệ hàm khởi tạo để ngăn khởi tạo lặp lại.

Lỗi khởi tạo là một trong những sai lầm phổ biến và nguy hiểm nhất khi xây dựng hợp đồng có thể nâng cấp.

Quản trị proxy và quyền nâng cấp

Quản trị viên proxy là tài khoản hoặc hợp đồng có thể nâng cấp hợp đồng triển khai của proxy.

Vai trò này có thể do một ví duy nhất, ví multisig, cuộc bỏ phiếu của DAO, timelock hoặc hợp đồng quản trị kiểm soát.

Vai trò quản trị viên rất quan trọng vì có thể thay đổi mã kiểm soát tài sản của người dùng.

Nếu quản trị viên nâng cấp lên logic độc hại, người dùng có thể mất tiền ngay cả khi hợp đồng triển khai trước đó an toàn.

Nếu khóa quản trị viên bị đánh cắp, kẻ tấn công có thể thay thế hợp đồng triển khai.

Nếu quản trị viên phản ứng quá chậm hoặc quyền quản trị phân tán quá mức, việc sửa lỗi khẩn cấp có thể trở nên khó khăn.

Cơ chế quản trị proxy tốt cần cân bằng giữa an toàn, khả năng phản ứng, tính minh bạch và quyền rút tài sản của người dùng.

Timelock có thể tăng mức độ tin cậy bằng cách trì hoãn nâng cấp sau khi được thông báo.

Multisig có thể giảm rủi ro từ một khóa duy nhất bằng cách yêu cầu nhiều người ký.

Các đề xuất nâng cấp công khai và báo cáo kiểm toán có thể giúp người dùng hiểu nội dung thay đổi.

Hợp đồng Proxy và trình khám phá blockchain

Trình khám phá blockchain thường giúp người dùng kiểm tra hợp đồng Proxy.

Trình khám phá tốt có thể cho biết một địa chỉ là proxy và xác định địa chỉ hợp đồng triển khai hiện tại.

Nếu proxy tuân theo tiêu chuẩn đã biết như ERC-1967, trình khám phá cũng có thể hiển thị thông tin quản trị proxy.

Điều này giúp người dùng và kiểm toán viên xem xét mã thực sự đang được thực thi.

Nếu không phát hiện được proxy, người dùng có thể chỉ xem bytecode của proxy và bỏ sót logic của hợp đồng triển khai.

Điều này có thể tạo cảm giác an toàn giả vì proxy có thể chứa rất ít mã ứng dụng hiển thị.

Người dùng nên kiểm tra mã nguồn của hợp đồng triển khai đã được xác minh hay chưa.

Họ cũng nên kiểm tra hợp đồng triển khai có thay đổi theo thời gian không.

Báo cáo kiểm toán cũ có thể không còn phù hợp nếu proxy đã được nâng cấp lên logic mới.

Đối với các thao tác có giá trị lớn, kiểm tra proxy, hợp đồng triển khai, quản trị viên và lịch sử nâng cấp an toàn hơn nhiều so với chỉ xem địa chỉ hiển thị.

Hợp đồng Proxy và hợp đồng token

Nhiều hợp đồng token sử dụng proxy để hỗ trợ nâng cấp trong tương lai.

Token có thể nâng cấp giữ nguyên địa chỉ token trong khi thay đổi quy tắc chuyển, quy tắc phí, logic mint, logic burn, logic bridge, quy tắc tuân thủ hoặc tính năng quản trị.

Điều này có thể hữu ích khi token cần thích nghi theo thời gian.

Điều này cũng có thể gây rủi ro vì các quy tắc người dùng dựa vào có thể thay đổi sau khi họ mua hoặc nhận token.

Ví dụ, bản nâng cấp có thể bổ sung hạn chế chuyển token, thay đổi cách tính phí, thêm quyền tạm dừng hoặc sửa đổi quyền kiểm soát truy cập.

Người dùng nên kiểm tra hợp đồng token có thể nâng cấp hay không trước khi cho rằng các quy tắc của token là cố định.

Họ cũng nên tìm hiểu ai kiểm soát việc nâng cấp và liệu quản trị có trì hoãn các thay đổi hay không.

Token sử dụng proxy không mặc nhiên là không an toàn.

Điều đó chỉ có nghĩa token có mô hình niềm tin khác với hợp đồng token hoàn toàn bất biến.

Điều quan trọng là quyền nâng cấp có minh bạch và được bảo vệ tốt hay không.

Hợp đồng Proxy và giao thức DeFi

Giao thức DeFi thường sử dụng hợp đồng Proxy vì ứng dụng tài chính cần được bảo trì.

Giao thức cho vay, nhà tạo lập thị trường tự động, hệ thống phái sinh, vault staking hoặc chiến lược lợi suất có thể cần nâng cấp sau khi kiểm toán, khi thị trường thay đổi, oracle được cải tiến hoặc phát hiện lỗi.

Hợp đồng Proxy cho phép các hệ thống này được cải thiện mà không buộc người dùng phải di chuyển vị thế.

Điều này thuận tiện vì vị thế DeFi có thể phức tạp và liên kết với nhiều giao thức.

Tuy nhiên, khả năng nâng cấp cũng tạo ra rủi ro hệ thống.

Một bản nâng cấp lỗi trong hợp đồng DeFi được sử dụng rộng rãi có thể ảnh hưởng đến nhiều người dùng và tích hợp cùng lúc.

Giao thức DeFi có thể nâng cấp cần có kiểm thử nghiêm ngặt, kiểm toán, giám sát, kiểm soát quản trị và quy trình khẩn cấp.

Người dùng không nên chỉ hỏi giao thức đã được kiểm toán hay chưa.

Họ nên hỏi hợp đồng triển khai hiện tại đã được kiểm toán chưa và các bản nâng cấp trong tương lai có cần được công khai xem xét hay không.

Trong DeFi, hợp đồng Proxy cải thiện khả năng bảo trì nhưng làm tăng tầm quan trọng của quản trị.

Hợp đồng Proxy và NFT

Dự án NFT có thể sử dụng hợp đồng Proxy cho logic metadata, logic mint, tích hợp marketplace, logic tiền bản quyền, hệ thống staking hoặc cơ chế trò chơi có thể nâng cấp.

Proxy NFT có thể cho phép dự án bổ sung tính năng sau khi ra mắt.

Proxy cũng có thể cho phép thay đổi cách xử lý metadata nếu hợp đồng triển khai kiểm soát logic URI của token.

Điều này có thể hữu ích khi dự án phát triển từ bộ sưu tập đơn giản thành trò chơi, chương trình thành viên hoặc hệ thống danh tính kỹ thuật số.

Điều này cũng có thể gây tranh cãi nếu người sưu tầm kỳ vọng các quy tắc cố định hoặc metadata vĩnh viễn.

Người mua NFT nên kiểm tra hợp đồng NFT có thể nâng cấp hay không và metadata có thể thay đổi hay không.

Họ cũng nên tìm hiểu ai kiểm soát quản trị viên nâng cấp.

NFT bất biến hoàn toàn và NFT có thể nâng cấp đều có thể là lựa chọn hợp lệ, nhưng mang lại những cam kết khác nhau.

Người sưu tầm nên hiểu liệu họ đang mua NFT có quy tắc on-chain cố định hay tham gia một dự án có thể phát triển.

Hợp đồng Proxy giúp quá trình phát triển NFT linh hoạt hơn, nhưng cũng đòi hỏi người dùng tin tưởng quy trình nâng cấp của dự án.

Hợp đồng Proxy và DAO

DAO có thể sử dụng hợp đồng Proxy để nâng cấp mô-đun quản trị, công cụ ngân quỹ, hệ thống bỏ phiếu, hợp đồng staking hoặc tham số giao thức.

Proxy do DAO kiểm soát có thể minh bạch hơn proxy do một quản trị viên duy nhất kiểm soát vì việc nâng cấp có thể cần đề xuất và bỏ phiếu.

Tuy nhiên, quản trị DAO không tự động khiến việc nâng cấp an toàn.

Tỷ lệ tham gia bỏ phiếu thấp, mua phiếu, tấn công quản trị, đề xuất vội vàng hoặc thay đổi mã không rõ ràng vẫn có thể tạo ra rủi ro.

Quy trình nâng cấp DAO tốt cần có bản tóm tắt dễ hiểu, điểm khác biệt kỹ thuật, liên kết kiểm toán, phân tích rủi ro, thời gian bỏ phiếu và thời gian trì hoãn timelock.

Thành viên DAO cần biết hợp đồng nào có thể nâng cấp và quyền hạn của quản trị là gì.

Nếu quản trị có thể nâng cấp hợp đồng ngân quỹ, hợp đồng token hoặc logic giao thức cốt lõi, người bỏ phiếu phải chịu trách nhiệm về các quyết định bảo mật quan trọng.

Hợp đồng Proxy có thể giúp DAO thích nghi theo thời gian.

Chúng cũng có thể trao cho quản trị quyền thay đổi những quy tắc mà người dùng cho là ổn định.

Khả năng nâng cấp của DAO cần được thể hiện rõ, ghi chép đầy đủ và kiểm soát cẩn thận.

Lợi ích của hợp đồng Proxy

Lợi ích đầu tiên của hợp đồng Proxy là khả năng nâng cấp.

Dự án có thể sửa lỗi, bổ sung tính năng và cải thiện logic mà không cần thay đổi địa chỉ hợp đồng chính.

Lợi ích thứ hai là duy trì trạng thái liên tục.

Số dư, vị thế, quyền hạn và cài đặt của người dùng có thể tiếp tục được lưu trong proxy khi logic triển khai thay đổi.

Lợi ích thứ ba là duy trì tính ổn định của tích hợp.

Ví, dApp, trình lập chỉ mục và hợp đồng khác có thể tiếp tục sử dụng cùng một địa chỉ.

Lợi ích thứ tư là giảm trở ngại khi chuyển đổi.

Người dùng có thể không cần tự chuyển tài sản sang hợp đồng mới sau mỗi lần nâng cấp.

Lợi ích thứ năm là tiết kiệm gas trong các mẫu clone.

Proxy tối giản có thể triển khai nhiều hợp đồng tương tự với chi phí thấp hơn so với việc triển khai toàn bộ mã mỗi lần.

Lợi ích thứ sáu là kiến trúc dạng mô-đun.

Đội ngũ có thể tách riêng phần lưu trữ, logic, quyền nâng cấp và phương thức triển khai rõ ràng hơn.

Những lợi ích này chỉ có giá trị khi hợp đồng Proxy được thiết kế, kiểm toán, quản trị và giám sát cẩn thận.

Rủi ro của hợp đồng Proxy

Rủi ro đầu tiên là nâng cấp độc hại.

Nếu quyền nâng cấp bị xâm phạm hoặc do người không trung thực kiểm soát, logic an toàn có thể bị thay thế bằng logic độc hại.

Rủi ro thứ hai là xung đột lưu trữ.

Nếu bố cục lưu trữ sai, bản nâng cấp có thể làm hỏng trạng thái quan trọng của hợp đồng.

Rủi ro thứ ba là lỗi khởi tạo.

Proxy hoặc hợp đồng triển khai chưa được khởi tạo có thể tạo cơ hội cho kẻ tấn công chiếm quyền kiểm soát.

Rủi ro thứ tư là xung đột mã định danh hàm.

Hàm quản trị proxy và hàm của hợp đồng triển khai có thể xung đột nếu mẫu thiết kế không tốt.

Rủi ro thứ năm là báo cáo kiểm toán không còn phù hợp.

Hợp đồng có thể đã được kiểm toán trong quá khứ, nhưng hợp đồng triển khai hiện tại có thể đã khác.

Rủi ro thứ sáu là độ phức tạp bị che khuất.

Người dùng có thể không nhận ra mình đang tương tác với proxy thay vì hợp đồng bất biến đơn giản.

Rủi ro thứ bảy là quản trị bị chi phối.

Kẻ tấn công có thể gây ảnh hưởng đến quy trình nâng cấp thông qua quyền biểu quyết, quyền quản trị hoặc kỹ thuật thao túng tâm lý.

Rủi ro thứ tám là công cụ hiểu sai.

Trình khám phá blockchain, ví và trình lập chỉ mục có thể không hiển thị chính xác thông tin proxy nếu proxy tùy chỉnh hoặc không theo tiêu chuẩn.

Cách kiểm tra hợp đồng Proxy trước khi tương tác

Trước tiên, người dùng nên kiểm tra địa chỉ hợp đồng có được trình khám phá blockchain gắn nhãn là proxy hay không.

Tìm địa chỉ hợp đồng triển khai hiện tại.

Xác minh mã nguồn của hợp đồng triển khai đã được công bố và xác minh hay chưa.

Kiểm tra hợp đồng triển khai có mới thay đổi hay không.

Tìm hiểu ai kiểm soát quản trị viên proxy hoặc quyền nâng cấp.

Kiểm tra việc nâng cấp có thông qua multisig, DAO, timelock hay một khóa riêng tư duy nhất.

Đối chiếu ngày kiểm toán với ngày triển khai hợp đồng hiện tại.

Đọc tài liệu chính thức để hiểu hợp đồng có được thiết kế để nâng cấp hay không.

Đừng cho rằng hợp đồng bất biến chỉ vì địa chỉ proxy chưa thay đổi.

Đối với khoản tiền nạp lớn, hãy xem việc kiểm tra proxy là một phần trong quy trình thẩm định thông thường.

Thực hành tốt nhất cho nhà phát triển

Nhà phát triển nên sử dụng framework proxy đã được đánh giá kỹ lưỡng thay vì tự viết logic proxy mà không có chuyên gia xem xét.

Khi phù hợp, hãy tuân theo các tiêu chuẩn như ERC-1967 để công cụ có thể kiểm tra trạng thái proxy.

Bảo vệ các hàm nâng cấp bằng cơ chế kiểm soát quyền truy cập mạnh.

Đối với quyền nâng cấp có giá trị cao, hãy sử dụng ví multisig, timelock hoặc hợp đồng quản trị.

Viết cẩn thận các hàm khởi tạo và ngăn việc khởi tạo lặp lại.

Kiểm thử bố cục lưu trữ trước mỗi lần nâng cấp.

Không bao giờ thay đổi thứ tự, xóa hoặc chỉnh sửa biến lưu trữ hiện có nếu chưa hiểu rõ hậu quả.

Xác minh hợp đồng triển khai trên trình khám phá blockchain.

Công bố thông báo nâng cấp, báo cáo kiểm toán và giải thích kỹ thuật trước các thay đổi lớn.

Giám sát các sự kiện nâng cấp và sẵn sàng xử lý nhanh nếu nâng cấp gặp lỗi.

Thực hành tốt nhất cho người dùng

Người dùng nên hiểu rằng proxy có thể nâng cấp không giống hợp đồng thông minh bất biến hoàn toàn.

Trước khi nạp số tiền đáng kể, hãy kiểm tra ai có thể nâng cấp proxy.

Kiểm tra việc nâng cấp có bị trì hoãn bằng timelock hay không.

Xem xét hợp đồng triển khai mới nhất đã được xác minh và kiểm toán chưa.

Thận trọng nếu quản trị viên proxy do một ví không rõ danh tính kiểm soát.

Hãy theo dõi sự kiện nâng cấp của các giao thức nơi bạn nắm giữ vị thế lớn.

Tránh phê duyệt hạn mức token không giới hạn cho hợp đồng có thể nâng cấp trừ khi bạn hiểu rõ rủi ro.

Thu hồi các quyền phê duyệt không cần thiết sau khi sử dụng giao thức.

Hãy nhớ rằng bản nâng cấp có thể thay đổi hành vi trong tương lai ngay cả khi hoạt động trước đó có vẻ an toàn.

Hãy xem hợp đồng Proxy là hệ thống linh hoạt cần được đánh giá niềm tin liên tục.

Các hiểu lầm thường gặp về hợp đồng Proxy

Một hiểu lầm là hợp đồng Proxy mặc nhiên không an toàn.

Hợp đồng Proxy có thể an toàn nếu sử dụng mẫu đã được kiểm chứng, kiểm soát quyền truy cập tốt, quản trị mạnh, kiểm toán và quy trình nâng cấp minh bạch.

Một hiểu lầm khác là hợp đồng Proxy mặc nhiên an toàn vì sử dụng framework phổ biến.

Ngay cả proxy theo tiêu chuẩn cũng có thể nguy hiểm nếu hợp đồng triển khai độc hại hoặc quản trị viên bị xâm phạm.

Một hiểu lầm khác là địa chỉ proxy chứa toàn bộ logic người dùng cần kiểm tra.

Trên thực tế, logic ứng dụng quan trọng thường nằm trong hợp đồng triển khai.

Một hiểu lầm khác là báo cáo kiểm toán luôn áp dụng cho mã hiện tại.

Nếu proxy đã được nâng cấp, báo cáo kiểm toán cũ có thể không bao gồm hợp đồng triển khai mới.

Một hiểu lầm khác là proxy tối giản luôn có thể nâng cấp.

Nhiều proxy tối giản chỉ là bản sao chi phí thấp chuyển tiếp đến logic cố định.

Câu hỏi thường gặp

Hợp đồng Proxy có nghĩa là gì?

Hợp đồng Proxy là hợp đồng thông minh chuyển tiếp lệnh gọi đến một hợp đồng khác, thường để hệ thống giữ nguyên địa chỉ và trạng thái trong khi thay đổi logic triển khai.

Tại sao các dự án crypto sử dụng hợp đồng Proxy?

Dự án sử dụng hợp đồng Proxy để hỗ trợ nâng cấp, sửa lỗi, bổ sung tính năng, giảm trở ngại khi chuyển đổi, giữ địa chỉ ổn định và triển khai nhiều hợp đồng tương tự một cách hiệu quả.

Hợp đồng Proxy có thể nâng cấp không?

Nhiều hợp đồng Proxy có thể nâng cấp, nhưng không phải tất cả đều như vậy vì một số proxy tối giản trỏ đến logic cố định.

Hợp đồng triển khai là gì?

Hợp đồng triển khai là hợp đồng chứa logic được proxy thực thi thông qua cơ chế chuyển tiếp hoặc

delegatecall
.

delegatecall trong hợp đồng Proxy là gì?

delegatecall
là một thao tác EVM cho phép proxy thực thi mã của hợp đồng triển khai trong ngữ cảnh lưu trữ của chính proxy.

ERC-1967 là gì?

ERC-1967 là tiêu chuẩn quy định các vị trí lưu trữ cụ thể cho dữ liệu proxy như địa chỉ hợp đồng triển khai, quản trị viên và beacon.

Proxy trong suốt là gì?

Proxy trong suốt là mẫu proxy có thể nâng cấp, tách lệnh gọi nâng cấp của quản trị viên khỏi lệnh gọi thông thường của người dùng để giảm nguy cơ xung đột hàm.

Proxy UUPS là gì?

Proxy UUPS là mẫu proxy có thể nâng cấp, trong đó logic nâng cấp được xử lý trong hợp đồng triển khai thay vì chủ yếu nằm trong proxy.

Proxy Beacon là gì?

Proxy Beacon lấy địa chỉ hợp đồng triển khai từ hợp đồng beacon, cho phép nâng cấp nhiều proxy cùng lúc bằng cách thay đổi beacon.

Proxy tối giản là gì?

Proxy tối giản là hợp đồng clone nhỏ, thường dựa trên ERC-1167, chuyển tiếp lệnh gọi đến logic triển khai dùng chung để giảm chi phí triển khai.

Hợp đồng Proxy có rủi ro không?

Có. Hợp đồng Proxy có thể tiềm ẩn rủi ro nếu quyền nâng cấp yếu, bố cục lưu trữ sai, khởi tạo không an toàn hoặc người dùng không hiểu logic có thể thay đổi.

Làm sao kiểm tra một hợp đồng có phải là proxy không?

Bạn có thể kiểm tra nhãn proxy, địa chỉ hợp đồng triển khai, vị trí lưu trữ ERC-1967, mã nguồn đã xác minh và các sự kiện nâng cấp trên trình khám phá blockchain.

Kết luận

Hợp đồng Proxy là mẫu thiết kế hợp đồng thông minh tách biệt địa chỉ người dùng tương tác và trạng thái được lưu trữ khỏi logic thực thi hành vi của hợp đồng.

Mẫu này được sử dụng rộng rãi trong crypto vì cho phép nâng cấp hợp đồng thông minh mà không buộc người dùng và các tích hợp phải chuyển sang địa chỉ mới.

Proxy nhận lệnh gọi, lưu trạng thái và chuyển tiếp quá trình thực thi đến hợp đồng triển khai, thường thông qua

delegatecall
.

Các tiêu chuẩn như ERC-1967, ERC-1822 và ERC-1167 giúp định hình những thiết kế proxy phổ biến, bao gồm proxy trong suốt, proxy UUPS, proxy Beacon và proxy tối giản.

Hợp đồng Proxy mang lại nhiều lợi ích quan trọng, bao gồm khả năng nâng cấp, duy trì trạng thái, tính ổn định của tích hợp và triển khai clone với chi phí thấp hơn.

Chúng cũng tạo ra các rủi ro đáng kể như nâng cấp độc hại, xung đột lưu trữ, hợp đồng chưa khởi tạo, khóa quản trị bị xâm phạm, quản trị không rõ ràng và báo cáo kiểm toán lỗi thời.

Đối với nhà phát triển, hợp đồng Proxy cần được xem là thành phần kiến trúc có rủi ro cao, đòi hỏi thiết kế, kiểm thử, kiểm soát quyền truy cập và tài liệu công khai cẩn thận.

Đối với người dùng, cần kiểm tra hợp đồng Proxy khác với hợp đồng bất biến thông thường vì logic phía sau proxy có thể thay đổi theo thời gian.

Cách hiểu đơn giản nhất là hợp đồng Proxy giữ nguyên địa chỉ on-chain trong khi cho phép thay thế mã phía sau địa chỉ đó theo các điều kiện được kiểm soát.

Tính linh hoạt này có thể giúp hệ thống crypto an toàn và dễ bảo trì hơn, nhưng chỉ khi quyền nâng cấp minh bạch, có giới hạn và được quản trị cẩn thận.
Điều chỉnh hay cơ hội?
Điều chỉnh hay cơ hội?Điều chỉnh hay cơ hội?
Vì sao BTC ETF hút $2.4 tỷ giữa làn sóng thanh lý