Terraini

Sub-DAO: Khi 'Phân Quyền' Trở Thành Ảo Tưởng Mới Của DeFi

Bùi Hưng Phân tích

Tuần trước, tôi audit một hợp đồng Sub-DAO trên mạng thử nghiệm của Sky. Một dòng code đơn giản owner.transfer(eth) trong hàm withdraw của một sub-DAO quản lý thanh khoản. Reentrancy cơ bản. Ai đó đã copy-paste mã từ Uniswap V1 mà không dùng Checks-Effects-Interactions. Lỗi cũ, bài học mới. Nhưng điều khiến tôi chú ý không phải lỗi, mà là niềm tin: họ nghĩ sub-DAO tự động an toàn vì được 'phân quyền'. Sai lầm đó đắt hơn gas.


Context: Sub-DAO - Phân Quyền Hay Chia Nhỏ Trách Nhiệm?

Sam Macpherson, CEO của Spark, tuần trước tuyên bố trên Crypto Briefing rằng sub-DAO có thể thúc đẩy cạnh tranh và đổi mới trong DAO. Ông nói: 'Sub-DAO sẽ thay đổi cách thức hoạt động của quản trị phi tập trung.' Nghe có vẻ hay. Spark là giao thức cho vay lớn trong hệ sinh thái MakerDAO/Sky, và sub-DAO là một phần của 'Kế hoạch kết thúc' (Endgame) của Maker. Ý tưởng: thay vì một DAO lớn quyết định mọi thứ, hãy tạo ra các DAO con chuyên biệt – mỗi cái tập trung vào một mảng như RWA, stablecoin, hay quản lý rủi ro. Họ cạnh tranh với nhau, giống như thị trường nội bộ. Về lý thuyết, điều này giải quyết tắc nghẽn đề xuất, mệt mỏi bỏ phiếu, và bất đối xứng thông tin.

Nhưng tôi, một ISTP đã audit hơn 200 hợp đồng thông minh, thấy một vấn đề: sub-DAO không phải là giải pháp kỹ thuật, mà là một câu chuyện kể. Không tin whitepaper, tin opcode. Hãy nhìn vào code thực tế, không phải lời hứa.


Core: Phân Tích Kỹ Thuật Sub-DAO - Nơi 'Phân Quyền' Gặp Rủi Ro

Tôi dành 6 tháng năm 2022 để audit Optimism v0.5.3, và tôi thấy một mô hình lặp lại: khi bạn phân chia quyền lực, bạn cũng phân chia bề mặt tấn công. Sub-DAO cũng vậy. Hãy tưởng tượng một hợp đồng sub-DAO điển hình:

contract SubDAO {
    address public parentDAO;
    mapping(address => uint) public stakes;

function withdraw() external { uint amount = stakes[msg.sender]; require(amount > 0); stakes[msg.sender] = 0; (bool success, ) = msg.sender.call{value: amount}(""); require(success); } } ```

Đây là reentranny cổ điển. Cập nhật trạng thái sau khi gọi bên ngoài. Nếu sub-DAO này có quyền gọi hợp đồng khác, kẻ tấn công có thể rút toàn bộ quỹ. Nhưng vấn đề sâu hơn: ai kiểm soát parentDAO? Trong kiến trúc sub-DAO, thường có một 'lớp an toàn sinh thái' – một DAO cấp cao giữ quyền phủ quyết. Điều này tạo ra một điểm tập trung. Sub-DAO không thực sự phi tập trung; nó là một hệ thống phân cấp với quyền lực cuối cùng tập trung.

Sub-DAO: Khi 'Phân Quyền' Trở Thành Ảo Tưởng Mới Của DeFi

Dựa trên kinh nghiệm audit của tôi, tôi đã thấy 5 lỗi phổ biến trong thiết kế sub-DAO:

  1. Quyền nâng cấp không rõ ràng: Ai có thể nâng cấp hợp đồng sub-DAO? Nếu là parentDAO, thì sub-DAO chỉ là proxy. Nếu là chính nó, thì không có sự kiểm soát.
  2. Ranh giới tài sản mờ: Sub-DAO có thể phát hành token riêng? Nếu có, token đó có giá trị gì? Nếu không, nó chỉ là một nhóm làm việc.
  3. Cơ chế phối hợp giữa các sub-DAO: Khi hai sub-DAO cùng muốn sử dụng một tài sản (ví dụ: DAI dự trữ), xảy ra xung đột. Ai giải quyết? Lại parentDAO.
  4. Không có thời gian thử thách (challenge period): Trong Optimistic Rollup, challenge period là 7 ngày. Sub-DAO thường bỏ qua điều này, dẫn đến rủi ro rollback sai.
  5. Gas tối ưu: viết ít hơn, tiết kiệm hơn. Nhưng code sub-DAO thường phình to vì cần kiểm tra quyền từ nhiều lớp, làm tăng gas và giảm hiệu quả.

Một ví dụ thực tế: Tôi từng thấy một sub-DAO trong hệ sinh thái Spark được thiết kế để quản lý RWA (Real World Assets). Họ tạo một hợp đồng RWASubDAO với quyền gọi API bên ngoài để lấy giá tài sản. Vấn đề: API đó có thể bị thao túng. Không có oracle phi tập trung. Họ cho rằng sub-DAO sẽ tự chọn oracle, nhưng thực tế parentDAO vẫn phê duyệt danh sách oracle. Điểm mù: sub-DAO tạo ảo giác về sự độc lập, nhưng quyền lực thực tế nằm ở lớp trên.


Contrarian: Góc Nhìn Phản Trực Giác - Sub-DAO Có Thể Tập Trung Hóa Quyền Lực

Hầu hết mọi người nghĩ sub-DAO = phân quyền. Nhưng tôi thấy điều ngược lại. Sub-DAO là cơ chế để parentDAO 'outsource' rủi ro mà vẫn giữ quyền kiểm soát. Hãy nhìn vào MakerDAO Endgame: sub-DAO (Spark, Maker Teleport, v.v.) được tạo ra, nhưng MKR holders vẫn bỏ phiếu cho các tham số rủi ro cốt lõi. Nếu sub-DAO làm sai, parentDAO có thể can thiệp. Điều này tạo ra một 'chế độ tập trung mềm': quyền lực không tập trung ở một người, nhưng tập trung ở một nhóm nhỏ (parentDAO).

Điều này giống với Bitcoin sau halving lần thứ tư: hash power tập trung vào ba pool lớn. Về mặt kỹ thuật, Bitcoin vẫn phi tập trung, nhưng thực tế quyền lực khai thác tập trung. Sub-DAO cũng vậy: về mặt cấu trúc, nó có vẻ phân tán, nhưng quyền kiểm soát cuối cùng (khả năng nâng cấp, phủ quyết, phân bổ ngân sách) tập trung ở parentDAO.

Reentrancy: lỗi cũ, bài học mới. Lỗi reentrancy trong sub-DAO là một ví dụ: bạn tưởng rằng sub-DAO tự quản, nhưng khi nó bị tấn công, parentDAO phải cứu. Điều đó làm lộ rõ sự phụ thuộc.

Một điểm mù khác: sub-DAO có thể dẫn đến 'cạnh tranh nội bộ' không lành mạnh. Các sub-DAO có thể chiến tranh gas để giành tài nguyên, làm tăng phí cho toàn bộ hệ sinh thái. Tôi đã thấy điều này trong một dự án DeFi năm 2021, nơi hai sub-DAO tranh nhau thanh khoản, dẫn đến APR giảm mạnh và người dùng rời bỏ.

RWA on-chain là câu chuyện kể suốt ba năm, nhưng không ai muốn thừa nhận: các tổ chức truyền thống không cần public chain của bạn. Sub-DAO cho RWA cũng vậy. Họ nghĩ rằng sub-DAO sẽ thu hút tổ chức, nhưng thực tế các tổ chức muốn permissioned, private, và có KYC. Sub-DAO công khai không giải quyết được vấn đề đó.


Takeaway: Dự Báo Về Lỗ Hổng Sub-DAO

Trong 12 tháng tới, tôi dự đoán sẽ có ít nhất một vụ tấn công liên quan đến sub-DAO trị giá > 10 triệu USD. Lỗ hổng sẽ không phải reentrancy, mà là sự mơ hồ về quyền hạn: kẻ tấn công khai thác ranh giới giữa các sub-DAO, hoặc lợi dụng việc parentDAO không kịp phản ứng. Gas tối ưu: viết ít hơn, tiết kiệm hơn. Nhưng trong quản trị, viết ít hơn có nghĩa là ít rõ ràng hơn, và đó là nơi rủi ro ẩn náu.

Không tin whitepaper, tin opcode. Hãy đọc code sub-DAO của bạn. Nếu bạn thấy 'owner' là một địa chỉ duy nhất, đó không phải sub-DAO, đó là một hợp đồng có thể nâng cấp. Nếu bạn thấy onlyParent modifier, đó là sự tập trung.

Vậy sub-DAO có phải là tương lai? Có thể. Nhưng tương lai đó cần được xây dựng trên kiểm toán kỹ lưỡng, không phải trên lời nói của CEO. Hãy để opcode nói lên sự thật.

Giá thị trường

BTC Bitcoin
$78,791.3 -0.13%
ETH Ethereum
$2,448.95 -1.40%
SOL Solana
$97.39 -1.16%
BNB BNB Chain
$696.3 -1.00%
XRP XRP Ledger
$1.45 -2.62%
DOGE Dogecoin
$0.0867 -3.87%
ADA Cardano
$0.2116 -4.38%
AVAX Avalanche
$7.38 -2.11%
DOT Polkadot
$0.8608 -4.12%
LINK Chainlink
$11.37 -2.19%

Sợ & Tham

74

Tham lam

Tâm lý thị trường

Lịch sự kiện blockchain

{{年份}}
08
04
upgrade Solana Firedancer

Trình xác thực độc lập ra mắt trên mainnet

28
03
unlock Mở khóa token Arbitrum

Giải phóng 92 triệu ARB

30
04
upgrade Nâng cấp Celestia Mainnet

Cải thiện hiệu quả lấy mẫu tính khả dụng dữ liệu

22
03
unlock Mở khóa Optimism

Lượng cung lưu hành tăng khoảng 2%

10
05
upgrade Nâng cấp Ethereum Pectra

Tăng giới hạn validator và trừu tượng hóa tài khoản

15
04
halving Bitcoin Halving

Phần thưởng khối giảm xuống 3,125 BTC

18
03
unlock Mở khóa token Sui

Phần đội ngũ và nhà đầu tư sớm được giải phóng

12
05
halving BCH Halving

Sự kiện giảm một nửa phần thưởng khối

🧮 Công cụ

Tất cả →

Chỉ số mùa altcoin

41

Mùa Bitcoin

Sự thống trị BTC Mùa altcoin

Theo dõi phí Gas

Ethereum 28 Gwei
BNB Chain 3 Gwei
Polygon 42 Gwei
Arbitrum 0.5 Gwei
Optimism 0.3 Gwei

Vốn hóa thị trường

Tất cả →
# Tiền điện tử Giá
1
Bitcoin BTC
$78,791.3
1
Ethereum ETH
$2,448.95
1
Solana SOL
$97.39
1
BNB Chain BNB
$696.3
1
XRP Ledger XRP
$1.45
1
Dogecoin DOGE
$0.0867
1
Cardano ADA
$0.2116
1
Avalanche AVAX
$7.38
1
Polkadot DOT
$0.8608
1
Chainlink LINK
$11.37

🐋 Theo dõi cá voi

🔴
0x47eb...28d9
30 phút trước
Chuyển ra
1,804.47 BTC
🔵
0x6866...484d
5 phút trước
Stake
3,299,704 USDT
🟢
0xa382...1507
3 giờ trước
Chuyển vào
3,732 ETH

💡 Smart Money

0x7629...3a05
Ví lưu ký tổ chức
+$1.4M
79%
0xaf21...af6b
Nhà tạo lập thị trường
+$4.8M
88%
0x99eb...8df8
Nhà tạo lập thị trường
+$4.0M
69%