Tổng quan
Ở bài phân tích trước Workspace#1, chúng ta đã hiểu được một cách cơ bản DAO là gì? Cấu trúc và công nghệ của DAO trong Crypto. Trong bài viết này, GFS Blockchain sẽ cùng các bạn ngược dòng thời gian để nhìn lại cuộc tấn công lịch sử The DAO và cùng giải mã về cuộc tấn công này nhé!
*** Bài viết này thuộc chuỗi Series DAO Workspace của GFS Blockchain nhằm nghiên cứu từ căn bản tới nâng cao cũng như tốc độ phát triển hiện tại về lĩnh vực DAO – Tổ chức tự trị phi tập trung – Một mảnh ghép không thể thiếu của Hệ sinh thái DeFi
- Tổng hợp các bài viết của DAO Workspace –> Xem tại đây
- Tìm hiểu định nghĩa Hệ sinh thái trong DeFi là gì? Các mảnh ghép trong một Hệ sinh thái gồm những gì? -> Tại đây
The DAO là gì?
Ra mắt vào năm 2016, The DAO là một tổ chức tự trị phi tập trung ban đầu (DAO) nhằm hoạt động như một công ty đầu tư mạo hiểm hướng đến nhà đầu tư. Ý tưởng của The DAO như sau: Số tiền huy động được từ các nhà đầu tư, chủ sở hữu mã thông báo, được gộp chung lại. Chủ sở hữu mã thông báo có thể trở thành nhà thầu bằng cách gửi đề xuất tài trợ cho dự án của họ bằng cách sử dụng quỹ DAO. Đã có một cuộc kiểm tra người quản lý, đây chỉ là một cuộc xác minh danh tính được thực hiện bởi một trong những người quản lý được chọn trong số các thành viên đáng kính của cộng đồng Ethereum. Sau khi đề xuất vượt qua sự kiểm tra của người quản lý, nó sẽ được các nhà đầu tư bỏ phiếu. Nếu một đề xuất được chấp thuận bởi số đại biểu 20% của tất cả các mã thông báo, DAO tự động chuyển Ether sang hợp đồng thông minh đại diện cho đề xuất. Bất kỳ Ether nào được tạo ra từ các đề xuất được tài trợ bởi DAO sẽ được trả lại cho các nhà đầu tư tham gia dưới dạng phần thưởng. Được ca ngợi là một dự án mang tính cách mạng, The DAO đã huy động được 12,7 triệu Ether, tương đương hơn 150 triệu USD vào thời điểm đó và là một trong những nỗ lực huy động vốn cộng đồng sớm nhất và các dự án nổi tiếng được xây dựng trên chuỗi khối Ethereum – lúc đó mới chỉ được một năm tuổi. Chưa đầy ba tháng sau khi ra mắt, The DAO đã bị tấn công và 60 triệu USD ether đã bị đánh cắp. Chuỗi khối Ethereum, nơi DAO được xây dựng, sau đó đã bị chia rẽ gây tranh cãi để khôi phục các khoản tiền bị đánh cắp, được trả lại cho các nhà đầu tư.
Chức năng ‘Split – Chia tách’ khét tiếng và DAO Con
Cơ chế quản trị do DAO áp dụng tương tự như cơ chế quản trị của các công ty cổ phần giao dịch công khai. Không có gì ngạc nhiên khi có khả năng thiểu số sẽ bị đa số đàn áp. Những người tạo ra DAO muốn đưa ra biện pháp bảo vệ cho thiểu số: Ý tưởng là làm cho thiểu số có thể lấy lại tiền của họ khi một đề xuất mà họ không muốn trở thành một phần được chấp thuận bất chấp sự phản đối của họ, trên thực tế, một DAO tương đương với quyền thẩm định mà chúng tôi thấy theo luật doanh nghiệp ở một số khu vực pháp lý.
Những người sáng tạo đã triển khai giải pháp này như một khả năng của một DAO để chia đôi. Bằng cách gửi một hình thức đề xuất đặc biệt, thiểu số, cùng với chủ sở hữu mã thông báo khác đã bỏ phiếu cho đề xuất đặc biệt thứ hai này, có thể đưa Ether của họ vào một DAO mới, được gọi là DAO con nhưng có cùng khả năng và nó cũng phải chịu hạn chế của DAO mà nó được phân chia.
Thủ tục phân tách có thể được bắt đầu bởi bất kỳ chủ sở hữu mã thông báo nào bất kỳ lúc nào liên quan đến Ether của chính họ. Tuy nhiên, sau khi bắt đầu, có một lịch trình được mã hóa cứng theo mã của DAO, theo đó, một đề xuất phân tách phải có thời gian tranh luận ít nhất 1 tuần (7 ngày). Sau 1 tuần này, chức năng phân tách có thể được gọi và Ether của người khởi tạo có thể được chuyển sang DAO con mới nhưng sau đó sẽ có 27 ngày kể từ ngày tạo phân tách mà trong đó không thể đưa ra đề xuất nào. Và ngay cả sau đó, nếu bạn cố gắng gửi tiền trong DAO con vào một tài khoản do chính bạn kiểm soát, bạn cần phải gửi đề xuất và đợi trong 2 tuần (14 ngày), đó là khoảng thời gian tranh luận đề xuất thông thường. Tóm lại, khi bạn quyết định tách DAO, bạn cần ít nhất 48 ngày trước khi nhận được nó vào tài khoản mà bạn kiểm soát.
Một lập trình viên đã tìm thấy lỗ hổng trong quy trình này. Khi một hàm phân tách được gọi, mã được viết theo cách để lấy Ether trước và cập nhật số dư sau đó. Ngoài ra, nó không kiểm tra xem có một cuộc gọi đệ quy hay không, đó là một biểu thức được sử dụng để chỉ ra một hàm tự gọi chính nó. Đây chính là lỗ hổng lớn nhất đã dẫn đến cuộc tấn công lịch sử The DAO vào năm 2016 như dưới đây.
Vụ tấn công lịch sử The DAO
(Những) kẻ tấn công đã quản lý để gọi hàm chia nhỏ một cách đệ quy và truy xuất tiền của họ nhiều lần trước khi đến bước mà mã sẽ kiểm tra số dư. Vào ngày 16 tháng 6 năm 2016, kẻ tấn công đã quản lý để lấy khoảng 3,6 triệu Ether từ quỹ DAO lạm dụng lỗ hổng này, được gọi là “khai thác cuộc gọi đệ quy”.
(Những) kẻ tấn công đã thực hiện cuộc tấn công theo các bước như sau:
- Bước 1: Đề xuất phân tách và đợi cho đến khi thời gian biểu quyết hết hạn (DAO.sol, createProposal). Kẻ tấn công thực hiện điều này trong chuỗi khối ở Đề xuất DAO # 59, với tiêu đề “Lonely, so Lonely”.
- Bước 2: Thực hiện tách (DAO.sol, splitDAO).
- Bước 3: Để DAO gửi cho DAO mới phần mã thông báo của nó (splitDAO -> TokenCreation.sol, createTokenProxy).
- Bước 4: Đảm bảo DAO cố gắng gửi cho bạn phần thưởng trước khi cập nhật số dư của bạn nhưng sau khi thực hiện bước 3 (splitDAO -> rút lại phần thưởng -> ManagedAccount.sol, payOut).
- Bước 5: Trong khi DAO đang thực hiện bước 4, để nó chạy lại splitDAO với các thông số tương tự như trong bước 2 (payOut -> _recipient.call.value -> _recipient)
- Bước 6: DAO bây giờ sẽ gửi cho nhà đầu tư nhiều mã thông báo con hơn và đi rút phần thưởng của họ trước khi cập nhật số dư cho họ. (DAO.sol, splitDAO)
- Bước 7: Quay lại bước 5.
- Bước 8: DAO cập nhật số dư của nhà đầu tư. Nhưng do bước 7 quay trở lại bước 5 nên nhà đầu tư sẽ không bao giờ nhận được token cả.
Trong khi chờ đợi, cộng đồng Ethereum đã tranh luận về cách ứng phó với cuộc tấn công. Sự thất bại của DAO không chỉ có nghĩa là tổn thất tài chính cho các nhà đầu tư mà còn gây ra hậu quả nghiêm trọng cho mạng Ethereum mới ra đời. DAO đã trở thành một dự án được đầu tư lớn đến mức các hợp đồng của nó chứa khoảng 14% tổng số ether (ETH) đang lưu hành vào thời điểm đó. Chỉ mới một tuổi, công nghệ và cộng đồng Ethereum đầy hứa hẹn đã phải đối mặt với một mối đe dọa hiện hữu thực sự.
Phản ứng với vụ tấn công DAO
Ban đầu, người sáng lập Ethereum, Vitalik Buterin, đã đề xuất một soft fork của mạng Ethereum, thêm một đoạn mã có thể đưa kẻ tấn công vào danh sách đen một cách hiệu quả và ngăn chúng di chuyển số tiền bị đánh cắp. Tuy nhiên, ngay sau đó, kẻ tấn công (hoặc ai đó đóng giả là kẻ tấn công – nó chưa được xác minh) đã xuất bản một bức thư ngỏ cho cộng đồng Ethereum tuyên bố rằng số tiền đã được lấy một cách “hợp pháp” theo các quy tắc được đặt ra trong hợp đồng thông minh. Kẻ tấn công cũng cho biết họ sẽ thực hiện các hành động pháp lý chống lại bất kỳ ai cố gắng chiếm đoạt Ether.
Trong tình thế đầy khó khăn khi phải đưa ra quyết định phải làm gì trước khi kẻ tấn công có thể đưa ra đề xuất chuyển tiền. Có ba lựa chọn như sau:
- Không làm gì và để nguyên trạng thái.
- Thực hiện một công việc mềm trên chuỗi khối Ethereum với sự giúp đỡ của các thợ đào để tiêu diệt DAO con với các ete bị đánh cắp trong đó bằng cách thêm một quy tắc tuyên bố tất cả các giao dịch thực hiện lệnh gọi giảm quỹ trong DAO con là không hợp lệ. Điều này sẽ không ảnh hưởng đến tính hợp lệ của các giao dịch diễn ra cho đến khi fork.
- Thực hiện hard fork trên chuỗi khối Ethereum để ghi đè lịch sử và khôi phục các ete bị đánh cắp. Điều này sẽ đảo ngược tất cả các giao dịch đã xảy ra sau điểm bắt đầu của công việc.
Tất cả các tùy chọn này tìm thấy một số hỗ trợ từ các nhóm khác nhau. Những người ủng hộ lựa chọn đầu tiên, những người phản đối bất kỳ đợt fork nào, chủ yếu dựa vào nền tảng triết học của chuỗi khối Ethereum. Họ lập luận rằng mã là luật và mọi thứ mà mã cho phép đều hợp pháp. Ngoài ra, đặc biệt chống lại tùy chọn hard fork, họ tuyên bố rằng dữ liệu trên blockchain là bất biến, nó nên được giữ theo cách đó và làm ngược lại sẽ gây hại cho chuỗi khối Ethereum về lâu dài. Những lập luận này tương tự như những lập luận của kẻ tấn công trong bức thư ngỏ.
Mặt khác, phần lớn cộng đồng có quan điểm rằng phải làm gì đó. Cộng đồng phát triển đã đề xuất soft fork. Công việc khó khăn vẫn là lựa chọn gây tranh cãi trong một thời gian vì nó sẽ phá hủy cái gọi là tính bất biến và tính toàn vẹn của chuỗi khối Ethereum. Đề xuất của cộng đồng phát triển là tiến hành một đợt hard fork tiếp theo sau khi hoàn thành công việc đầu tiên để phục hồi ether bị đánh cắp. Tuy nhiên, ngay cả loại hard fork này cũng bị một số người tham gia tranh cãi và các tùy chọn khác không liên quan đến hard fork đã được phát triển.
Ngay sau đó, căng thẳng lại tăng cao khi kẻ tấn công (hoặc ai đó đóng giả họ) tuyên bố thông qua một trung gian trên kênh The DAO Slack rằng họ sẽ cố gắng ngăn chặn bất kỳ soft fork nào bằng cách hối lộ cho những người khai thác Ethereum với phần thưởng tập thể là một triệu ether và 100 bitcoin không tuân thủ và do đó chia mạng Ethereum thành hai. Tình hình không chỉ đưa ra những thách thức kỹ thuật mà còn đặt câu hỏi về nền tảng đạo đức và triết học của công nghệ – và khả năng phục hồi của ban lãnh đạo dự án Ethereum.
Trước khi cộng đồng Ethereum có thể tiến hành soft fork, một lỗi đã được phát hiện trong mã của bản cập nhật, khiến nó dễ bị tấn công. Giải pháp thứ hai – một hard fork – đã được đề xuất và cuối cùng được thực hiện sau nhiều cuộc tranh luận. Hard fork đã quay ngược lại lịch sử của mạng Ethereum một cách hiệu quả trước cuộc tấn công của The DAO và tái phân bổ ether của The DAO vào một hợp đồng thông minh khác để các nhà đầu tư có thể rút tiền của họ. Điều này gây ra cực kỳ tranh cãi – sau tất cả, các blockchain được cho là bất biến và có khả năng chống kiểm duyệt.
Ban đầu vẫn chưa rõ liệu fork có được thực hiện hay không. Mặc dù nó đã được các nhà phát triển Ethereum đề xuất, nhưng họ không có quyền đơn phương để thực hiện thay đổi. Các công ty khai thác, sàn giao dịch và nhà khai thác nút cũng phải đồng ý cập nhật phần mềm của họ. Sau nhiều cuộc tranh luận sôi nổi trên các diễn đàn công khai, vào ngày 20 tháng 7 năm 2016, tại khối 192.000, Ethereum hard fork đã được thực hiện.
Biện pháp khắc phục sự cố hack DAO Forks Ethereum
Mặc dù đại đa số các bên liên quan đã chấp nhận thay đổi và fork được thực hiện, nhưng không phải ai cũng tham gia. Kết quả là, hard fork đã dẫn đến hai chuỗi khối Ethereum cạnh tranh – và hiện đang tách biệt nhau. Những người từ chối chấp nhận hard fork đã quay trở lại lịch sử của blockchain đã ủng hộ phiên bản tiền fork – hiện được gọi là Ethereum Classic (ETC). Blockchain hiện được gọi là Ethereum là blockchain đã thực hiện hard fork và thay đổi lịch sử của blockchain – cũng như lịch sử của toàn bộ blockchain.
Mặc dù số tiền bị đánh cắp từ The DAO đã được khôi phục lại cho các nhà đầu tư của nó, nhưng kẻ tấn công không mất hoàn toàn. Các mã thông báo bị đánh cắp vẫn thuộc quyền sở hữu của họ trên chuỗi Ethereum Classic và trị giá khoảng 8,5 triệu đô la trong ETC trong những tháng sau cuộc tấn công.
Vụ hack DAO và đợt hard fork tiếp theo của Ethereum đã làm rung chuyển cộng đồng Ethereum về cốt lõi của nó và làm nổi bật những câu hỏi lớn về công nghệ mới nổi. Nhìn lại, rõ ràng là các quyết định của Vitalik Buterin, các nhà phát triển Etheruem và cộng đồng toàn cầu đã đảm bảo sự tồn tại của blockchain trong những ngày đầu tiên. Kể từ vụ hack The DAO, Ethereum đã trở thành một trụ cột thiết yếu của blockchain, tiền điện tử và tài chính phi tập trung.
Kết luận
The DAO có thể được coi là ứng dụng quy mô lớn đầu tiên của các hợp đồng thông minh dựa trên Ethereum. Vụ tấn công The DAO không chỉ gây ra sự nghi ngờ chung đối với công nghệ Blockchain mà còn làm nóng cuộc tranh luận về yêu cầu quy định. Đó là một ví dụ thực tế về việc mọi thứ có thể trở nên tồi tệ trong một thế giới dựa trên các chương trình máy tính.
Ngoài ra, nó cũng cho chúng ta thấy rằng phán đoán của con người, yếu tố hợp đồng thông minh đang cố gắng loại bỏ và được khẳng định là ‘thông minh’ bằng cách làm như vậy, không phải lúc nào cũng xấu. Các giao dịch hàng ngày của chúng ta có thể trở nên cực kỳ phức tạp và các chương trình máy tính, do bản chất xác định của chúng, không ở trạng thái bắt chước tất cả chúng, ít nhất là không phải bây giờ.
*** Hãy cùng theo dõi sự phát triển của lĩnh vực DAO – Tổ chức tự trị phi tập trung trong thị trường Crypto qua các bài viết cập nhật sau này cùng GFS Blockchain thông qua chuyên đề DAO Workspace -> Tại đây
GFS hi vọng rằng, bài viết đã giải mã phần nào về The DAO để hiểu rõ hơn về cuộc tấn công lịch sử này. Nếu bạn muốn thảo luận để hiểu sâu hơn về DAO thì hãy tham gia vào cộng đồng của GFS Blockchain nhé.
- Nhóm Telegram của GFS Blockchain -> Click tại đây
- Nhóm Facebook của GFS Blockchain -> Click tại đây
- Kênh thông tin Telegram của GFS Blockchain -> Click tại đây
Và đừng quên ghé thăm GFS Blockchain thường xuyên nhé!