
Cypher sắp tắt đèn: Khi lớp thanh toán crypto vỡ ngay dưới chân người dùng
Đặng Tuấn
Ngày 6 tháng 8, tôi nhận được một thông báo từ một giao thức thẻ crypto mà tôi từng theo dõi: toàn bộ hoạt động chi tiêu sẽ dừng sau 48 giờ, và người dùng có 24–48 giờ để rút tiền về Base USDC. Zero knowledge cũng có điểm mù. Nhưng điểm mù lần này không nằm trong mã nguồn, mà nằm ở giả định rằng một lớp ứng dụng thanh toán có thể vận hành như một giao thức phi tập trung.
Cypher không phải là một blockchain mới. Không phải là một giải pháp L2. Cypher là một công ty phát hành thẻ thanh toán tiền mã hóa, kết nối với ngân hàng trung gian Nium. Người dùng nạp tài sản vào ví tự quản lý, sau đó chuyển vào số dư thẻ để chi tiêu hàng ngày. Mỗi lần quẹt thẻ, hệ thống Cypher ghi nhận và phân phối token CYPR như một phần thưởng. Người dùng nghĩ rằng tài sản của mình an toàn vì khóa nằm trong tay họ. Nhưng số dư khả dụng để chi tiêu lại nằm trong sổ cái tập trung của Cypher. Khi dự án đóng cửa, sự tách biệt giữa quyền kiểm soát khóa và quyền chi tiêu lộ ra như một vết nứt lớn.
Câu chuyện của Cypher không phải là một vụ hack. Không có lỗ hổng trong hợp đồng thông minh. Không có đợt tấn công nào được báo cáo. Đây là một thất bại kinh doanh thuần túy: một sản phẩm thanh toán không tìm đủ người dùng, không đủ doanh thu để duy trì chi phí vận hành. Nhưng vì sản phẩm nằm giữa ranh giới tài chính truyền thống và tiền mã hóa, quá trình đóng cửa trở nên phức tạp hơn nhiều so với việc chỉ tắt một chiếc máy chủ.
Tôi đã dành phần lớn sự nghiệp để đọc mã nguồn, tìm lỗi trong các giao thức. Tôi bắt đầu với 0x Protocol v2 vào năm 2017, khi ICO bùng nổ và mọi người giao dịch token trên các sàn tập trung mọc lên như nấm. 0x v2 lỗi – bài học nhớ mãi. Đó là một lỗi tràn calldata mà tôi phát hiện sau ba tháng đọc từng dòng code. Kinh nghiệm đó dạy tôi rằng ngay cả những giao thức được đánh giá cao nhất cũng có thể có lỗi nghiêm trọng. Nhưng Cypher đưa ra một loại rủi ro khác – rủi ro không thể phát hiện bằng cách đọc code, bởi vì nó nằm trong mô hình vận hành.
Hãy nói về Cypher một cách kỹ thuật. Cypher sử dụng hai lớp tách biệt. Lớp thứ nhất là ví tự quản lý, nơi người dùng giữ private key. Lớp thứ hai là tài khoản thanh toán, về bản chất là một cơ sở dữ liệu tập trung do Cypher kiểm soát, kết nối với mạng lưới ngân hàng Nium để xử lý giao dịch. Khi người dùng nạp tiền vào thẻ, một phần tài sản được giữ trong một hợp đồng thông minh trên chuỗi, nhưng quyền yêu cầu thanh toán lại thuộc về hệ thống Cypher. Nói cách khác, người dùng không thể sử dụng trực tiếp tài sản trong ví để quẹt thẻ. Họ phải tin tưởng Cypher sẽ chuyển đổi số dư trong ví thành số dư có thể chi tiêu.
Mô hình này không mới. Crypto.com đã làm điều này từ năm 2018. Gnosis Pay cũng làm một phiên bản phi tập trung hơn. Nhưng điểm khác biệt của Cypher nằm ở cách họ xử lý quá trình rút lui. Khi dự án tuyên bố ngừng hoạt động, người dùng phải thực hiện ba thao tác riêng biệt: rút số dư thẻ, nhận toàn bộ phần thưởng CYPR, và sao lưu dữ liệu ví. Ba quy trình này không được hợp nhất thành một giao diện duy nhất. Người dùng phải điều hướng đến nhiều trang khác nhau, xác minh danh tính nhiều lần, và chờ đợi trong khi hệ thống chịu tải. Trong một tình huống khẩn cấp, tính phức tạp của quy trình thoát hiểm chính là kẻ thù lớn nhất.
Theo thông báo chính thức, từ ngày 8 tháng 8, chức năng chi tiêu bằng thẻ sẽ bị vô hiệu hóa. Đến ngày 6 tháng 9, toàn bộ hệ thống Cypher sẽ đóng cửa hoàn toàn. Trong khoảng thời gian gần một tháng, người dùng có thể yêu cầu rút tiền từ số dư thẻ. Quá trình rút tiền được hứa hẹn sẽ hoàn tất trong 24–48 giờ, với khoản thanh toán được chuyển bằng USDC trên mạng Base. Điều này nghe có vẻ hợp lý trên lý thuyết. Nhưng trong thực tế vận hành, một quy trình rút tiền hàng loạt từ một nền tảng sắp đóng cửa thường gặp nhiều trục trặc: xác minh KYC bị kẹt, giao dịch bridge bị chậm, và đội ngũ hỗ trợ giảm nhân sự.
Zero knowledge cũng có điểm mù. Tôi đã học được điều này theo cách khó khăn khi nghiên cứu zk-SNARKs vào năm 2022. Một bằng chứng có thể hoàn toàn hợp lệ về mặt toán học, nhưng nếu quy trình tạo bằng chứng yêu cầu dữ liệu đầu vào từ một bên thứ ba không trung thực, thì toàn bộ hệ thống bằng chứng trở nên vô nghĩa. Cypher gặp vấn đề tương tự: các hợp đồng thông minh trên chuỗi có thể hoạt động hoàn hảo, nhưng quá trình chuyển đổi từ số dư tập trung sang số dư on-chain phụ thuộc vào một máy chủ trung gian. Khi máy chủ đó ngừng hoạt động, tài sản của người dùng có thể bị treo vô thời hạn.
Hãy cùng phân tích rủi ro kỹ thuật trong từng bước rút tiền. Đầu tiên, người dùng đăng nhập vào ứng dụng Cypher. Hệ thống xác thực danh tính, kiểm tra số dư khả dụng và tạo một yêu cầu rút tiền. Yêu cầu này được gửi đến backend của Cypher, nơi một bot xử lý việc ghi nợ số dư trong cơ sở dữ liệu. Sau đó, backend ký một giao dịch chuyển USDC từ một ví nóng do Cypher kiểm soát đến địa chỉ Base do người dùng cung cấp. Giao dịch cần được phê duyệt bởi một quy trình kiểm toán nội bộ. Nếu số lượng yêu cầu rút tiền vượt quá khả năng xử lý của quy trình kiểm toán này, thời gian chờ sẽ tăng gấp đôi hoặc gấp ba.
Một rủi ro lớn hơn nằm ở tính thanh khoản của chính Cypher. Khi một nền tảng thanh toán đóng cửa, ban quản lý thường có nghĩa vụ hoàn trả toàn bộ số dư khả dụng cho người dùng. Nhưng liệu Cypher có đủ thanh khoản để chi trả cho mọi yêu cầu cùng lúc? Không có báo cáo kiểm toán độc lập nào được công bố. Ngân hàng đối tác Nium chỉ xử lý các giao dịch hợp lệ, nhưng không chịu trách nhiệm về số dư tiền mã hóa mà Cypher quản lý. Nếu quỹ dự trữ của Cypher được đầu tư vào các tài sản kém thanh khoản, hoặc nếu có bất kỳ khoản nợ tiềm ẩn nào, quá trình hoàn trả có thể kéo dài không xác định.
Nhìn lại lịch sử các vụ đóng cửa nền tảng tiền mã hóa, chúng ta có thể thấy một chuỗi các thất bại tương tự. Mt. Gox sụp đổ vào năm 2014 vì quản lý tài sản kém và bị hacker đánh cắp. BitGrail sụp đổ vào năm 2018 vì lỗ hổng trong hệ thống rút tiền. Và gần đây hơn, nhiều nền tảng cho vay đã đóng băng rút tiền khi thị trường sụp đổ. Cypher không nằm trong danh sách đen đó, nhưng mô hình của nó có cùng một điểm chung: người dùng chỉ có thể rút tiền thông qua sự cho phép của nền tảng. Khả năng rút tiền không được đảm bảo bởi một hợp đồng thông minh, mà bởi thiện chí của những người điều hành.
Tôi muốn so sánh Cypher với Gnosis Pay, một giải pháp thẻ tiền mã hóa khác mà tôi đã phân tích. Gnosis Pay sử dụng hợp đồng thông minh trên chuỗi Gnosis để quản lý số dư, và mỗi giao dịch chi tiêu đều được ký bằng khóa của người dùng. Về mặt kỹ thuật, Gnosis Pay không cần phải tin tưởng một backend tập trung để xác nhận số dư. Tuy nhiên, ngay cả Gnosis Pay cũng phụ thuộc vào các nhà cung cấp dịch vụ pháp lý để phát hành thẻ. Khi dự án đóng cửa, người dùng Gnosis Pay vẫn có thể rút tiền trực tiếp từ hợp đồng thông minh, bởi vì quyền kiểm soát tài sản nằm hoàn toàn trong tay họ. Cypher đã thiết kế hệ thống theo hướng thuận tiện cho người dùng, nhưng sự thuận tiện đó đã tạo ra một lỗ hổng lớn.
Khái niệm self-custody – tự quản lý tài sản – thường được nhắc đến như một lời cam kết an toàn tuyệt đối. Nhưng Cypher cho thấy rằng tự quản lý tài sản chỉ có ý nghĩa khi tài sản đó có thể được sử dụng hoặc chuyển nhượng mà không cần sự trung gian. Trong mô hình Cypher, ví tự quản lý đóng vai trò như một tài khoản tiết kiệm, trong khi số dư thẻ giống như một tài khoản vãng lai do ngân hàng quản lý. Nếu ngân hàng phá sản, tiền trong tài khoản vãng lai có thể bị đóng băng. Người dùng có thể nắm giữ private key, nhưng private key đó không thể giải quyết vấn đề thanh khoản của nền tảng.
0x v2 lỗi – bài học nhớ mãi. Mỗi lần tôi gặp một sự cố trong ngành, tôi lại nhớ đến lỗi tràn calldata năm 2017. Lỗi đó nằm ở chỗ một biến có độ dài không được kiểm tra trong quá trình xử lý dữ liệu. Nó cho phép kẻ tấn công gửi một lượng dữ liệu khổng lồ vào hợp đồng, làm tràn bộ nhớ và gây ra hành vi không xác định. Bài học tôi rút ra là: các hệ thống an toàn nhất cũng chỉ an toàn ở những nơi chúng được kiểm tra. Và với Cypher, không ai kiểm tra quy trình thoát hiểm trước khi nó trở nên cần thiết.
Bây giờ, hãy đặt câu hỏi: người dùng nên hành động như thế nào trong những ngày cuối cùng của Cypher? Kế hoạch của tôi là thực hiện quy trình rút tiền một cách có trật tự. Trước tiên, người dùng nên kiểm tra số dư thẻ của mình và chụp màn hình làm bằng chứng. Thứ hai, gửi yêu cầu rút tiền càng sớm càng tốt, vì thời gian xử lý có thể kéo dài. Thứ ba, sau khi nhận được USDC trên Base, hãy chuyển ngay tài sản đến một ví an toàn hơn do người dùng hoàn toàn kiểm soát, không phải một ví được tạo bởi Cypher. Thứ tư, kiểm tra xem có bất kỳ token CYPR nào trong tài khoản của mình không, và quyết định xem có nên giữ lại hay không. CYPR gần như chắc chắn sẽ trở thành vô giá trị sau khi nền tảng đóng cửa.
Có một câu hỏi khó hơn: làm thế nào để nhận biết một dự án sẽ đóng cửa trước khi nó thông báo? Trong 28 năm quan sát ngành công nghiệp này, tôi đã học được cách đọc các tín hiệu cảnh báo. Một trong những tín hiệu rõ ràng nhất là sự chậm trễ trong dịch vụ khách hàng. Khi một công ty bắt đầu giảm nhân sự, thời gian phản hồi sẽ tăng lên. Một tín hiệu khác là giảm ưu đãi: nếu một nền tảng ngừng các chương trình thưởng. Cuối cùng, sự sụt giảm về thanh khoản – nếu người dùng nhận thấy thời gian rút tiền tăng từ vài giờ lên vài ngày mà không có giải thích hợp lý, đó là lúc cần đề phòng.
Cypher đã không có những dấu hiệu đó cho đến khi quá muộn. Vào tháng 7, nền tảng vẫn tổ chức các sự kiện thưởng CYPR. Người dùng vẫn quẹt thẻ hàng ngày và tích lũy phần thưởng. Thông báo đóng cửa là một cú sốc đối với nhiều người, đặc biệt là những người coi Cypher như một công cụ tài chính hàng ngày. Điều này cho thấy một thực tế quan trọng: thị trường giảm không chỉ ảnh hưởng đến giá token, mà còn ảnh hưởng đến khả năng tồn tại của các doanh nghiệp tiền mã hóa.
Tôi đã từng chứng kiến sự sụp đổ của nhiều giao thức DeFi. Năm 2020, tôi là auditor độc lập cho Uniswap v2. Tôi phát hiện ra ba điểm yếu trong công thức price oracle, đặc biệt là rủi ro thao túng qua thanh khoản thấp. Nhóm phát triển đã vá các lỗ hổng trong bản cập nhật sau đó. Bài học của Uniswap là: các công thức toán học có thể hoàn hảo, nhưng dữ liệu đầu vào có thể bị thao túng. Tương tự, Cypher có thể có một hệ thống thanh toán hiệu quả, nhưng dòng tiền và chi phí vận hành là những biến số mà công thức không thể kiểm soát.
Một khía cạnh ít được chú ý của vụ Cypher là vai trò của Nium. Nium là một công ty thanh toán toàn cầu, cung cấp cơ sở hạ tầng kết nối ngân hàng. Khi Cypher rút lui, Nium vẫn tiếp tục hoạt động và không bị ảnh hưởng. Điều này cho thấy một sự phân tầng rõ ràng trong ngành: lớp cơ sở hạ tầng thanh toán có thể ổn định, trong khi các ứng dụng xây dựng trên nó lại mong manh. Người dùng thường không phân biệt được giữa hai lớp này. Họ nhìn thấy thương hiệu Cypher trên thẻ và tin rằng toàn bộ hệ thống là Cypher. Nhưng thực tế, Cypher chỉ là một lớp phủ mỏng trên một hệ thống ngân hàng phức tạp.
Zero knowledge cũng có điểm mù. Trong một bài viết trước, tôi đã phân tích cách các giao thức zk-rollup vẫn phải dựa vào một bộ sequencer tập trung để sắp xếp giao dịch. Sequencer có thể bị kiểm duyệt, bị tấn công hoặc bị đóng cửa. Nhiều người cho rằng sequencer sẽ được phi tập trung hóa trong tương lai, nhưng cho đến lúc đó, hệ thống vẫn có một điểm yếu duy nhất. Cypher có một điểm yếu tương tự, nhưng không phải ở lớp sequencer, mà ở lớp thanh toán. Việc rút tiền phụ thuộc vào một quy trình phê duyệt tập trung, và quy trình đó không thể được kiểm tra từ bên ngoài.
Có một khả năng mà không ai muốn nghĩ đến: rủi ro Cypher không đủ tiền để trả cho tất cả các yêu cầu rút tiền. Trong kịch bản này, một số người dùng sẽ nhận được tiền, trong khi những người khác phải chờ đợi không xác định. Điều này đã xảy ra với các sàn giao dịch phá sản, nơi tài sản được phân phối thông qua thủ tục pháp lý kéo dài nhiều năm. Mặc dù Cypher không phải là một sàn giao dịch, nhưng mô hình hoạt động của nó liên quan đến việc giữ hộ tài sản. Nếu quỹ dự trữ không tách biệt hoàn toàn khỏi chi phí vận hành, nguy cơ thiếu hụt là hoàn toàn có thể xảy ra.
Tôi không có bằng chứng để khẳng định Cypher đang thiếu thanh khoản. Thông tin công khai chỉ cho thấy quy trình rút tiền và thời hạn đóng cửa. Nhưng trong lĩnh vực bảo mật, việc thiếu bằng chứng không phải là bằng chứng của sự an toàn. Khi một nền tảng thông báo đóng cửa, lập trường đúng đắn là giả định xấu nhất. Người dùng nên ưu tiên rút tiền ngay lập tức, không nên trì hoãn để chờ xem tình hình.
Nhìn rộng hơn, vụ Cypher đặt ra một câu hỏi lớn cho toàn bộ ngành công nghiệp blockchain: điều gì xảy ra khi một công ty tiền mã hóa không còn đủ kinh phí để vận hành? Trong thị trường tăng, khi giá token tăng và vốn đầu tư đổ vào, các dự án có thể tồn tại ngay cả khi không có sản phẩm thực sự tốt. Nhưng trong thị trường giảm, doanh thu biến mất, chi phí cố định vẫn còn. Các dự án buộc phải cắt giảm chi phí, và cuối cùng phải đóng cửa. Người dùng của các dự án này sẽ trở thành nạn nhân của một quá trình mà họ không thể kiểm soát.
Bài học lớn nhất từ Cypher không phải là "đừng dùng thẻ crypto." Bài học là: nếu bạn không thể tồn tại khi nền tảng đóng cửa, thì bạn chưa thực sự sở hữu tài sản của mình. Một hệ thống tự quản lý thực thụ cần cung cấp cho người dùng phương tiện để rút toàn bộ tài sản một cách tức thì, không qua trung gian, không cần sự chấp thuận. Điều này có nghĩa là tài sản phải nằm trên chuỗi, được kiểm soát bởi hợp đồng thông minh, và người dùng phải có khả năng tương tác trực tiếp với hợp đồng đó. Bất kỳ kiến trúc nào khác đều có rủi ro tiềm ẩn.
Trong bối cảnh thị trường giảm hiện nay, nhiều giao thức sẽ đóng cửa. Một số có thể làm rất tốt quy trình thoát hiểm, minh bạch và nhanh chóng. Một số khác sẽ thất bại trong việc hoàn trả tiền cho người dùng. Sự khác biệt giữa hai nhóm này thường không nằm ở chất lượng mã nguồn, mà nằm ở văn hóa vận hành. Các đội ngũ có thói quen chuẩn bị cho kịch bản xấu nhất sẽ có quy trình rút lui trơn tru hơn. Các đội ngũ lạc quan và tập trung vào tăng trưởng sẽ bị bất ngờ. Cypher thuộc nhóm thứ hai.
Tôi muốn đưa ra một vài gợi ý kỹ thuật cho người dùng đang trong tình huống tương tự. Khi một nền tảng thông báo đóng cửa, hãy ngay lập tức rút toàn bộ tài sản có thể rút. Đừng giữ lại một phần để chờ xem giá token tăng. Toàn bộ tài sản của bạn phải được đưa vào một ví do bạn kiểm soát hoàn toàn, ví đó có thể là một phần mềm ví phi lưu ký (như MetaMask, hoặc ví cứng). Sau khi rút, hãy kiểm tra dư địa chỉ nhận: Base USDC là một token ERC-20 trên mạng Base. Nếu bạn gửi USDC đến một địa chỉ không hỗ trợ Base, bạn có thể mất tiền. Tốt nhất là sử dụng một địa chỉ ví mà bạn đã kiểm tra trên mạng Base trước đó.
Một sai lầm phổ biến trong các đợt rút tiền khẩn cấp là sử dụng các cầu nối chuỗi chéo không chính thức. Người dùng có thể hoảng sợ và cố gắng chuyển USDC sang các mạng khác bằng các công cụ không xác định. Điều này có thể dẫn đến mất mát tài sản. Hãy sử dụng các cầu nối chính thức được xác nhận bởi cộng đồng, hoặc tốt hơn là giữ nguyên tài sản trên Base cho đến khi tình hình ổn định. Không có gì sai khi giữ USDC trên Base; nó là một mạng lưới an toàn và có thanh khoản lớn.
Về phần thưởng CYPR, người dùng cần quyết định nhanh chóng. Nếu Cypher có một hợp đồng phân phối phần thưởng, người dùng có thể yêu cầu nhận CYPR trước khi đóng cửa. Nhưng giá trị của CYPR sau khi nền tảng đóng cửa gần như bằng không. Việc bỏ thời gian để yêu cầu nhận CYPR có thể không đáng giá. Tuy nhiên, nếu có một thị trường thứ cấp vẫn hoạt động, người dùng có thể bán CYPR để thu lại một phần tiền. Hãy kiểm tra tính thanh khoản của CYPR trước khi quyết định.
Cypher đang ở giai đoạn cuối cùng. Trong vài tuần tới, chúng ta sẽ chứng kiến cách một nền tảng thanh toán xử lý quá trình rút lui dưới áp lực từ hàng nghìn người dùng. Kết quả sẽ là một cột mốc cho ngành công nghiệp: nếu Cypher có thể hoàn trả toàn bộ tài sản đúng hạn, thì mô hình của họ đáng được công nhận dù thất bại. Nếu không, chúng ta có thêm một lời cảnh báo về rủi ro của các ứng dụng tập trung.
0x v2 lỗi – bài học nhớ mãi. Tôi vẫn nhớ cảm giác khi tôi gửi báo cáo lỗi lên GitHub vào năm 2017. Tôi không hề biết rằng phát hiện của mình sẽ được đội ngũ 0x ghi nhận và vá trong một bản cập nhật. Điều này dạy cho tôi rằng giá trị của một nhà nghiên cứu bảo mật không nằm ở số lỗi tìm được, mà nằm ở việc hiểu được giới hạn của hệ thống. Cypher là một bài học tương tự, nhưng ở quy mô lớn hơn: chúng ta cần hiểu giới hạn của các hệ thống thanh toán dựa trên sự tin tưởng vào một công ty.
Tôi kết thúc bài viết này bằng một câu hỏi mở: nếu một nền tảng thẻ tiền mã hóa đóng cửa và người dùng của nó có thể tự rút tiền mà không cần thông qua ban quản trị, thì thị trường sẽ thay đổi như thế nào? Người dùng sẽ không còn phải lo lắng về việc nền tảng phá sản. Họ sẽ không còn phải chờ đợi trong sợ hãi. Họ sẽ chỉ cần thực hiện một giao dịch trên chuỗi, và tài sản của họ sẽ được an toàn. Đó chính là hứa hẹn thực sự của blockchain: không phải là loại bỏ trung gian hoàn toàn, mà là làm cho trung gian trở nên không thể gây hại. Cypher đã thất bại trong việc thực hiện lời hứa đó, và đó là lý do vì sao chúng ta cần nhớ đến nó – để nhắc nhở chính mình rằng sự thuận tiện luôn đi kèm với cái giá của niềm tin.