Mỗi lần biên dịch lại là mỗi lần thả mồi mới. Lần này, mồi không nằm trong hợp đồng thông minh, mà nằm trong báo cáo tài chính của Strategy (tên mới của MicroStrategy). Tuần trước, công ty tuyên bố mua lại 25 triệu USD cổ phiếu ưu đãi STRC, đồng thời không mua thêm Bitcoin nào, dù vừa huy động thêm 5.25 tỷ USD tiền mặt, nâng tổng dự trữ lên 37.5 tỷ USD. Hãy tạm dừng. Đây có phải là một lỗi logic trong hàm phân bổ vốn? Tôi sẽ audit quyết định này như một smart contract.
Context – Chiếc hộp Pandora của doanh nghiệp Bitcoin lớn nhất thế giới. Strategy là công ty đại chúng nắm giữ hơn 200.000 BTC, được Michael Saylor biến thành “cỗ máy in tiền” thông qua phát hành trái phiếu chuyển đổi và cổ phiếu ưu đãi. STRC là một series cổ phiếu ưu đãi có cổ tức cố định, được thiết kế để thu hút dòng vốn truyền thống muốn tiếp xúc gián tiếp với Bitcoin. Nó giống như một token thanh khoản, nhưng thay vì staking, bạn nhận cổ tức bằng tiền mặt. Tuần này, họ dùng 25 triệu USD trong két để mua lại một phần STRC đang lưu hành. Nghe có vẻ hợp lý? Không hoàn toàn.
Core – Phân tích hàm ‘capitalAllocation()’ và các trade-off ẩn. Nếu đây là một hợp đồng DeFi, hàm allocateFunds() sẽ nhận đầu vào là amount và phân bổ vào ba pool: btcPool, buybackPool, reservePool. Lần này, btcPool nhận 0, buybackPool nhận 25M, reservePool nhận 5.25B mới. Hãy nhìn vào logic: tại sao không mua Bitcoin khi giá đang tích lũy? Một auditor sẽ hỏi: “Có reentrancy ở đây không?” – ý nói liệu có một cuộc gọi lại từ thị trường làm thay đổi trạng thái? Thực tế, quyết định này gợi ý rằng ban lãnh đạo ưu tiên củng cố giá STRC hơn là mua thêm BTC. Mỗi dòng code đều có giá của nó: 25 triệu USD mua lại có thể hỗ trợ giá STRC trong ngắn hạn, nhưng đánh đổi bằng việc bỏ lỡ cơ hội mua BTC ở vùng giá thấp. Cash reserve tăng lên 37.5B là một “kho đạn” khổng lồ, nhưng nếu không khai hỏa, nó chỉ là chi phí cơ hội. Trong DeFi, một vault không được sử dụng là một vault chết. Ở đây, cũng vậy.
Contrarian – Điểm mù mà hầu hết nhà đầu tư bỏ qua. Đa số sẽ nói: “Mua lại cổ phiếu là tín hiệu tích cực, cho thấy công ty tin tưởng vào giá trị nội tại.” Nhưng với tư cách một kẻ đào sâu vào code, tôi thấy một điểm mù: việc không mua Bitcoin có thể là tín hiệu ngược – ban lãnh đạo đang phòng thủ. Họ có 37.5 tỷ USD nhưng chỉ dám chi 25 triệu để mua lại, số còn lại để đó. Tại sao? Có thể họ đang chờ giá BTC giảm thêm, hoặc đang chuẩn bị cho một đợt phát hành trái phiếu mới. Nhưng cũng có thể họ lo ngại về rủi ro thanh khoản nếu BTC giảm sâu. Cổ phiếu ưu đãi STRC có cổ tức cố định, mua lại sẽ giảm gánh nặng chi trả. Đây là một động thái phòng thủ, không phải tấn công. Nếu bạn audit một giao thức và thấy nó chuyển từ “buyback” sang “reserve”, bạn sẽ gắn cờ đỏ.
Takeaway – Dự báo lỗ hổng tiếp theo. Tuần sau, nếu Strategy tiếp tục không mua BTC, hãy coi chừng. Nếu họ bắt đầu mua lại nhiều STRC hơn, đó là tín hiệu họ muốn giảm chi phí vốn. Còn nếu họ bất ngờ mua ồ ạt BTC, kịch bản ngược lại. Trong bảo mật, không có gì là ngẫu nhiên. Mỗi lần audit là một lần đào xác chết. Lần này, xác chết là kỳ vọng về một “Bitcoin Treasury” không ngừng mua. Có thể Michael Saylor đã thay đổi chiến lược, hoặc đơn giản là đang chờ đợi. Dù sao, code tài chính cũng giống hợp đồng thông minh: nếu bạn không hiểu logic, bạn sẽ bị rug pull. Và lần này, rug pull có thể đến từ chính sự im lặng của công ty.