50 triệu USDT đổi lấy 35.000 USD Aave: Thảm họa này đã xảy ra như thế nào? Và chúng ta nên đổ lỗi cho ai?

Bài viết này được dịch máy
Xem bản gốc

Bài viết này được đăng bởi: @Ehsan1579

Biên soạn bởi Odaily Planet Daily ( @OdailyChina ); Dịch bởi Ethan ( @ethanzhang_web3)

Chỉ cần nhìn vào tiêu đề, người ta có thể dễ dàng nhầm tưởng đây là một cuộc tấn công khai thác lỗ hổng bảo mật.

Điểm mấu chốt của vụ việc là ai đó đã đổi 50,4 triệu USDT lấy chỉ 35.900 Aave.

Khi lần đầu nghe về chuyện này, tôi thực sự rất sốc. Vì vậy, tôi đã xem xét kỹ lưỡng toàn bộ sự việc: theo dõi giao dịch, đường dẫn giải quyết, các lệnh gọi hợp đồng, dự trữ lịch sử , dữ liệu quyết toán , quy trình bộ chuyển đổi, mã giao diện người dùng Aave , SDK Khoản vay nhanh CoW và mã định tuyến để xác định xem báo giá có "hợp lý" hay không.

Đây không phải là một hacker. Giao thức cốt lõi Aave không có lỗi. Quyết toán CoW không có lỗi. Uniswap không có lỗi. SushiSwap không có lỗi. Các giao dịch hợp lệ, chữ ký hợp lệ và tất cả các hợp đồng được thực thi nghiêm ngặt theo mã nguồn. Tuy nhiên, gần như toàn bộ giá trị kinh tế đã bị phá hủy chỉ vì con đường mà nó được phép đi theo hoàn toàn phi lý.

Vấn đề không nằm ở chính chuỗi công khai ; vấn đề nằm ở khâu định tuyến.

Theo quan điểm của tôi, việc đơn thuần quy kết sự cố này là do "lỗi người dùng" là không khách quan và không chặt chẽ. Mặc dù người dùng đã hoàn tất việc ký lệnh, nhưng toàn bộ hệ thống phần mềm đã cho phép một giao dịch liên quan đến việc luân chuyển tài sản thế chấp trị giá gần 50 triệu đô la trải qua toàn bộ quy trình báo giá, ký kết, lập kế hoạch định tuyến và thực hiện, tất cả đều hướng đến một nhóm thanh khoản thấp chỉ nắm giữ khoảng 331 Aave . Điều này lẽ ra là hoàn toàn không thể xảy ra; ít nhất, nó phải bị chặn và từ chối một cách mạnh mẽ bởi hệ thống trước khi quyết toán bắt đầu.

Khả năng truy xuất nguồn gốc thông tin cốt lõi của giao dịch

Mã băm của giao dịch bất thường lần là 0x9fa9feab3c1989a33424728c23e6de07a40a26a98ff7ff5139f3492ce430801f. Giao dịch này đã được xác nhận vào ngày 12 tháng 3 năm 2026, tại khối mạng chủ Ethereum Block Height 24643151. Chỉ số giao dịch là 1, tiêu thụ 3.780.570 đơn vị Gas , và giao dịch đã được thực hiện thành công. Địa chỉ ví mà lệnh thuộc về bắt đầu bằng 0x98b9, và địa chỉ của người giải (người gửi giao dịch) thực sự thực hiện giao dịch bắt đầu bằng 0x3980, đánh dấu là tsolver trong dữ liệu cuộc thi CoW.

Trước hết, điều quan trọng cần hiểu là đây không chỉ đơn thuần là giao dịch USDT sang Aave ở cấp độ ví. Token được bán là aEthUSDT, là các chứng chỉ tiền gửi USDT sinh lãi trên nền tảng Aave . Token mua vào là aEthAAVE, là các chứng chỉ tiền gửi Aave sinh lãi trên nền tảng Aave . Do đó, đây thực chất là một quá trình xoay vòng tài sản thế chấp Aave được thực hiện thông qua hệ thống quyết toán của giao thức CoW và quy trình bộ chuyển đổi Khoản vay nhanh của nó.

Trước giao dịch, ví nắm giữ khoảng 50.432.693,075254 aEthUSDT và 0 aEthAAVE. Sau giao dịch, ví chỉ còn lại 4,980399 aEthUSDT và nhận được 327,241335505966487788 aEthAAVE. Trên thực tế, ví đã bán gần như toàn bộ số lượng aEthUSDT mà nó đang nắm giữ.

Dữ liệu cho thấy rõ hơn rằng tuyến đường đã "độc hại" trước khi thực thi. Lệnh này bắt nguồn từ quy trình Aave-v3-interface-collateral swap . API CoW hiển thị nó dưới dạng lệnh bán đã ký, trong khi dữ liệu ứng dụng đánh dấu nó là một giao dịch hoán đổi tài sản thế chấp dựa trên thị trường sử dụng mức trượt giá thông minh 121 điểm cơ bản. Số tiền bán đã ký là 50.432.688,41618 aEthUSDT. Số tiền mua vào tối thiểu đã ký là 324,949260918413591035 aEthAAVE. Số quyết toán thanh toán thực tế là 327,241335505966487788 aEthAAVE.

Đây là một chi tiết cực kỳ quan trọng. Đơn đặt hàng này ban đầu không nhằm mục đích sản xuất hàng chục nghìn Aave, và sau đó nó đã bị phá hủy một cách khó hiểu giữa chừng khi đang xây dựng. Ngay từ đầu, nó được xây dựng dựa trên kỳ vọng chỉ sản xuất được vài trăm Aave .

Toàn bộ Chuỗi của lỗi định tuyến

Một khi bạn lần theo tuyến đường thương mại, toàn bộ quá trình sẽ trở nên vô cùng đơn giản.

Cốt lõi của quá trình chuyển tiền cấp cao dựa trên hợp đồng quyết toán GPv2Settlement bắt đầu bằng địa chỉ 0x9008 trong giao thức CoW. Đầu tiên, hợp đồng HooksTrampoline bắt đầu bằng địa chỉ 0x60bf hoàn tất hoạt động ủy quyền aEthUSDT, cho phép bộ chuyển tiếp kho CoW rút tài sản của người dùng mà không cần ủy quyền giao dịch riêng biệt; sau đó, hợp đồng GPv2VaultRelayer bắt đầu bằng địa chỉ 0xc92e rút 50.432.688,41618 aEthUSDT từ ví của người dùng và bước vào quy trình quyết toán. Tính đến giai đoạn này, tất cả các hoạt động đều tuân theo logic thông thường.

Hợp đồng quyết toán sau đó cấp quyền thực thi aEthUSDT cho một hợp đồng phụ trợ không phải mã nguồn mở bắt đầu bằng 0xd524, và khởi tạo một lệnh gọi thông qua bộ chọn chức năng 0x494b3137; hợp đồng phụ trợ sau đó chuyển quyền thực thi cho một hợp đồng thực thi không phải mã nguồn mở bắt đầu bằng 0x699c. Tại thời điểm này, toàn bộ bức tranh về định tuyến giao dịch bất thường được phơi bày hoàn toàn.

Lệnh gọi hợp lệ đầu tiên trỏ đến hợp đồng nhóm thanh khoản Aave bắt đầu bằng 0x87870, đốt một EthUSDT thông qua chức năng rút tiền (bộ chọn 0x69328dec) và đổi lấy USDT gốc. Sau đó, tuyến đường chuyển đến nhóm giao dịch USDT/WETH độ sâu Uniswap V3 bắt đầu bằng 0x4e68, trao đổi toàn bộ 50.432.688,41618 USDT lấy 17.957,810805702142342238 WETH.

Các giao dịch trong giai đoạn này diễn ra hoàn toàn bình thường: tỷ giá hối đoái xấp xỉ 2808,4 USDT đổi 1 WETH, phù hợp với điều kiện thị trường tại thời điểm đó. Không có vấn đề thanh khoản, không có lỗi tính toán và không có bất thường nào trong bước đầu tiên của Chuỗi giao dịch.

Vấn đề nằm ở bước nhảy thứ hai; một khi bạn thấy được lượng dự trữ thanh khoản, phần còn lại của câu chuyện sẽ không thể tránh khỏi.

Sau khi mua được 17957.810805702142342238 WETH, người thực thi đã chuyển toàn bộ số tiền vào nhóm giao dịch SushiSwap V2 Aave /WETH tại địa chỉ 0xd75ea151a61d06868e31f8988d28dfe5e9df57b4.

Tôi đã kiểm tra dữ liệu dự trữ thanh khoản lịch sử của nhóm giao dịch này tại thời điểm trước khi giao dịch bất thường xảy ra ( Block Height 24643150), và nhóm chỉ nắm giữ:

331.631982538108027323 Aave, 17.653276196397688066 WETH

Đây không phải là lỗi nhập dữ liệu, mà là một sự thật không thể phủ nhận.

Lộ trình giao dịch này đã bơm gần 17.958 WETH vào một nhóm giao dịch nhỏ với lượng dự trữ chỉ 17,65 WETH, tương ứng với tổng lượng WETH trong kho Aave chỉ là 331,63 WETH. Lượng WETH được đưa vào xấp xỉ gấp 1017 lần lượng WETH dự trữ trong nhóm.

Đây hoàn toàn không phải là vấn đề thông thường của "trượt giá cao" hay "thanh khoản hơi thấp", mà là một lộ trình thực hiện lệnh thị trường cực kỳ phi lý, tương đương với việc buộc một nhóm AMM sản phẩm cố định rất nhỏ phải đảm nhận một giao dịch khổng lồ lớn hơn chính nó hàng nghìn lần.

Nhóm giao dịch AMM đã thực hiện các hoạt động theo thuật toán đã thiết lập, gần như làm cạn kiệt toàn bộ dự trữ Aave trong nhóm.

Cặp giao dịch SushiSwap đã kích hoạt một sự kiện Swap cốt lõi: trình thực thi đã chuyển 17957.810805702142342238 WETH, đổi lấy chỉ 331.305315608938235428 Aave. Sau giao dịch, thanh khoản còn lại trong nhóm xấp xỉ:

0.326666929169791895 Aave, 17975.464081898540030304 WETH

Nói thẳng ra, khoảng 99,9% lượng từ vựng Aave trong kho đã bị rút hết chỉ trong một lần sử dụng.

Dựa trên lượng dự trữ trước giao dịch, giá Aave ngầm định trong nhóm giao dịch là khoảng 149,50 USD. Giá thực tế mà người dùng thực hiện giao dịch là khoảng 154.114,66 USDT đổi lấy 1 Aave. Con số này thấp hơn hơn 1000 lần so với giá spot ngay trước giao dịch.

Tiếp theo, Aave này được cung cấp trở lại nhóm Aave bằng cách sử dụng bộ chọn 0x617ba037, tức là supply(address, uint256, address, uint16). Kết quả là aEthAAVE mới đúc sẽ được gửi trở lại hợp đồng quyết toán. Hợp đồng quyết toán cuối cùng chuyển 327.241335505966487788 aEthAAVE cho người dùng. Khoảng 4.06398010297174764 aEthAAVE vẫn còn trong hợp đồng quyết toán như một khoản thặng dư so với khoản thanh toán của người dùng.

Do đó, quyết toán không đột ngột biến một kết quả thực thi tốt thành một kết quả xấu. Nó chỉ đơn giản là hoàn tất kết quả mà quá trình định tuyến đã tạo ra.

Đây là điểm mấu chốt, và cần phải nói rõ: Kết quả thảm khốc đã được "trong đó" ngay cả trước khi quá trình định tuyến được thực hiện.

Trong dữ liệu cuộc gọi hợp đồng phụ được nhúng trong bộ định tuyến, số tiền mục tiêu mua vào cuối cùng xấp xỉ 331,272185078031026739 AAVE, số tiền mua vào tối thiểu được người dùng đồng ý bằng chữ ký là 324,949260918413591035 AAVE, và số tiền quyết toán thực tế là 327,241335505966487788 AAVE. Tất cả các giá trị cốt lõi đều được khóa ở mức khoảng ba trăm Aave trước khi quyết toán .

Lộ trình này vốn dĩ đã có sai sót.

Lỗ hổng nằm ở đâu?

Câu trả lời là: mỗi lớp trong cơ chế xác minh của hệ thống đều kiểm tra lỗi.

Tất cả các cấp độ chỉ xác minh xem giao dịch có thể thực thi được hay không, chữ ký có hợp lệ hay không và số tiền có khác không hay không, nhưng hầu như không có cấp độ cốt lõi nào để xác minh xem lộ trình giao dịch có hợp lý về mặt kinh tế hay không. Đây là nguyên nhân gốc rễ dẫn đến sự thất bại của cơ chế này.

Lỗi mã đường dẫn định giá bộ chuyển đổi giao diện người dùng Aave

Lỗi mã nguồn rõ ràng đầu tiên xuất hiện trong quy trình báo giá bộ chuyển đổi CoW trong giao diện Aave : chức năng ban đầu được sử dụng để đính kèm dữ liệu ứng dụng dành riêng cho bộ chuyển đổi khi yêu cầu báo giá đã bị vô hiệu hóa trực tiếp và cưỡng chế.

Nguồn: rates.helpers.ts:93adapters.helpers.ts:194

Điều này có nghĩa là khi giao diện Aave yêu cầu báo giá từ CoW, nó không bao gồm dữ liệu Khoản vay nhanh và hook sẽ được đính kèm khi lệnh thực sự được xuất bản . Nói cách khác, những gì được báo giá không nhất thiết là những gì đang được thực thi. Các chú thích mã thậm chí còn nêu rõ mục đích của hàm hỗ trợ này là để làm cho báo giá của bộ chuyển đổi chính xác hơn, nhưng hàm này lại bị vô hiệu hóa hoàn toàn.

Tính hợp lý của logic cạnh tranh đấu thầu CoW quá yếu (điểm yếu cốt lõi).

Vấn đề thứ hai và nghiêm trọng nhất nằm ở logic cạnh tranh đấu thầu của giao thức CoW: trong mã dịch vụ công cộng của nó, miễn là phí gas được báo giá là dương và lượng đầu ra không phải là không , nó sẽ được đánh giá là "giá thầu hợp lý".

Nguồn: quote.rs:31

Đây là một định nghĩa cực kỳ yếu kém về "tính hợp lý" đối với một hệ thống định tuyến xử lý các đơn hàng trị giá hàng chục triệu đô la.

Hệ thống thiếu cơ chế xác minh oracle về tính toàn vẹn giá cả, không có cơ chế can thiệp đối với "các báo giá chênh lệch so với giá spot hơn 500 lần", không có đánh giá rủi ro rằng "các tuyến đường sẽ làm cạn kiệt hoàn toàn nguồn thanh khoản ", và không có cảnh báo rằng " thanh khoản ở chặng cuối cùng không phù hợp nghiêm trọng với quy mô lệnh". Hệ thống chấp nhận bất kỳ giải pháp định tuyến nào có thể thực thi được và khác không do bộ giải trả về, đây chính là lỗ hổng cốt lõi của sự cố lần .

Những thiếu sót trong logic mô hình hóa thanh khoản kiểu Uniswap V2

Vấn đề thứ ba nằm ở cách tiếp cận mô hình hóa nhóm thanh khoản kiểu Uniswap V2: mã chỉ sử dụng thuật toán tích hằng số tiêu chuẩn, chỉ loại bỏ các tình huống bất khả thi về mặt toán học như dự trữ bằng không, dòng tiền âm và dự trữ vượt quá, mà không thực hiện kiểm tra tính khả thi về kinh tế.

Nguồn: pool_fetching.rs:118pool_fetching.rs:153

Đoạn mã này không xác định xem quy mô nhóm thanh khoản có đủ để xử lý các giao dịch được định tuyến tương ứng hay không; nó chỉ kiểm tra xem hoạt động trao đổi có hợp lệ về mặt toán học hay không. Do đó, ngay cả một nhóm nhỏ chỉ chứa 331 Aave cũng sẽ được coi là địa điểm hợp lệ để xử lý yêu cầu mua vào 17.957 WETH, đơn giản vì thuật toán tích hằng số có thể tính toán ra kết quả khác không, hoàn toàn bỏ qua tổn thất tài sản nghiêm trọng mà kết quả này sẽ gây ra.

Lỗi lần của SDK Khoản vay nhanh và cơ chế xác minh đơn hàng

Sau đó, Khoản vay nhanh SDK đã trực tiếp nhúng báo giá không hợp lệ này vào tải trọng thực thi của lệnh và hook mà không thực hiện bất kỳ biện pháp ngăn chặn rủi ro lần .

sau đó:

Nguồn: index.js:484index.js:591

Đây là lý do tại sao tôi luôn nói rằng tuyến đường này "sinh ra đã tệ". Lớp bộ chuyển đổi không "phát hiện" ra một lượng dữ liệu xấu mới trong quá trình thực thi. Nó tuần tự hóa lượng dữ liệu xấu đã được báo giá vào dữ liệu hook và địa chỉ thể hiện đã được định nghĩa . Một khi báo giá xấu tồn tại, phần còn lại của cơ chế sẽ trung thực chuyển tiếp nó.

Ngay cả logic xác minh lệnh của CoW cũng không thực sự bảo vệ người dùng trong trường hợp này, bởi vì nó chỉ kiểm tra xem lệnh có vượt quá giá thị trường tại thời điểm báo giá hay không, mà không kiểm tra xem bản thân báo giá có phi lý so với thanh khoản thực tế hay không.

Nguồn: order_validation.rs:694

Đây là bước kiểm tra tính nhất quán. Ngay cả khi câu trích dẫn vô lý, đơn đặt hàng vẫn có thể được chấp thuận.

Cơ chế cảnh báo giao diện người dùng hầu như vô dụng.

Giao diện Aave hiển thị cảnh báo về biến động giá mạnh, nhưng nó không phải là cơ chế ngắt mạch tự động . Khi giá trị giảm vượt quá 20%, nó sẽ chuyển thành ô kiểm xác nhận.

Khi người dùng tích vào ô kiểm, trở ngại sẽ được loại bỏ:

Nguồn: helpers.ts:24HighPriceImpactWarning.tsx:35

Do đó, ngay cả khi giao dịch này xóa sổ gần như toàn bộ giá trị tài sản, hệ thống cũng chỉ phân loại nó là một thao tác cần người dùng xác nhận, chứ không phải là một giao dịch rủi ro cao mà hệ thống phải từ chối một cách bắt buộc. Cơ chế cảnh báo sẽ hoàn toàn mất đi chức năng ngăn chặn rủi ro.

Với sự thất bại của tất cả các cơ chế nêu trên, tôi hoàn toàn không đồng ý với kết luận vội vàng rằng "đây chỉ là lỗi của người dùng". Người dùng quả thực đã hoàn thành việc ký tên, nhưng toàn bộ hệ thống phần mềm đã có lần cơ hội để ngăn chặn thảm họa này, thế nhưng mỗi lớp chỉ thực hiện các kiểm tra cơ bản, cho phép quá trình tiếp tục sau khi xác định rằng nó "khác không, có thể thực thi và đã được ký", cuối cùng dẫn đến hậu quả thảm khốc.

Tuyến đường không bị thay đổi.

Bước này rất quan trọng, giúp loại bỏ trực tiếp lượng lớn các phán đoán sai: Quy trình giao diện Aave chính thức tương ứng với lệnh Aave-v3-interface-collateral- swap tính toán số tiền mua vào đã điều chỉnh theo độ trượt giá ở dòng 139 của tệp useSwapOrderAmounts.ts, có tính đến báo giá, Khoản vay nhanh ; dòng 331 chuyển đổi nó thành giá trị buyAmountBigInt; và sau đó, ở dòng 191 của tệp CollateralSwapActionsViaCoWAdapters.tsx, nó thực hiện một chữ ký chính xác trên số tiền này.

Hợp đồng bộ chuyển đổi sẽ xác minh sự trùng khớp hoàn hảo giữa trường lệnh đã ký và giá trị được lưu trữ trên dòng 141 của tệp AaveV3BaseAdapter.sol; hợp đồng quyết toán CoW sẽ thực thi các quy tắc giới hạn của thỏa thuận chữ ký trên dòng 337 của tệp GPv2Settlement.sol. Do đó, kết quả thực thi Chuỗi không vượt quá phạm vi cho phép bởi lệnh đã ký, và tài sản thực tế người dùng nhận được thậm chí còn cao hơn giới hạn tối thiểu được quy định trong thỏa thuận chữ ký.

Đây là bằng chứng đủ mạnh cho thấy thảm họa xảy ra trước quá trình quyết toán, chứ không phải trong quá trình quyết toán ; sai sót nghiêm trọng trong việc định tuyến đã định đoạt số phận của thảm họa.

Giá trị bị mất đã đi đâu?

Giao dịch tiếp theo trong cùng một khối (bắt đầu với mã băm 0x45388b0f) đã hoàn tất một giao dịch chênh lệch giá ngược chiều (back-run arbitrage) chống lại nhóm thanh khoản Aave /WETH bị lỗi của SushiSwap . Sau khi giao dịch bất thường này lấp đầy nhóm bằng một lượng lớn WETH và rút cạn phần lớn Aave , nhà giao dịch chênh lệch giá ngay lập tức bán Aave trở lại nhóm, thu về giá trị dư thừa do thanh khoản gây ra.

Giao dịch chênh lệch giá này rút khoảng 17.929,770158685933 WETH, trong đó khoảng 13.087,73 ETH đã được thanh toán cho người xây dựng khối và khoảng 4.824,31 ETH được thanh toán cho địa chỉ thực hiện giao dịch chênh lệch giá.

Toàn bộ giá trị kinh tế mà người dùng mất đi cuối cùng được chuyển đổi gần như ngay lập tức thành lợi nhuận chênh lệch giá MEV và lợi nhuận của người xây dựng khối trong cùng một khối.

Hơn nữa, việc kiểm tra dòng thời gian ở cấp độ khối xác nhận rằng không ai cố tình thao túng nhóm giao dịch SushiSwap để lừa đảo người dùng trước giao dịch. Lần đầu tiên cặp giao dịch Aave /WETH được chạm vào là trong giao dịch bất thường lần(chỉ số giao dịch 1); giao dịch tiếp theo (chỉ số giao dịch 2) đã hoàn thành lần đảo chiều đầu tiên của sự biến dạng giá do giao dịch lần gây ra; chỉ số giao dịch 3 cũng chạm vào cặp giao dịch trong quá trình điều chỉnh thị trường. Dòng thời gian chứng minh rõ ràng rằng giao dịch bất thường lần đã tạo ra sự biến dạng giá cực độ, và các giao dịch tiếp theo đã trực tiếp thu lợi nhuận từ sự biến dạng này.

Vậy, lỗi là của ai?

Nếu bạn hỏi liệu giao thức lõi Aave V3 có bị sập hay không, câu trả lời là không . Nhóm thanh khoản Aave vẫn thực hiện các hoạt động của mình chính xác như đã được chỉ dẫn, hoàn tất quá trình quy đổi USDT và gửi Aave một cách bình thường.

Nếu bạn hỏi liệu hợp đồng GPv2Settlement của CoW có bị sập hay không, câu trả lời là không . Quyết toán đã thực thi một lệnh đã ký hợp lệ và đã thanh toán một khoản tiền vượt quá yêu cầu chữ ký tối thiểu.

Nếu bạn hỏi liệu cặp giao dịch Uniswap V3 hay SushiSwap có bị sập giá hay không, câu trả lời cũng là không . Cả hai sàn giao dịch này đều giao dịch theo các quy tắc thuật toán riêng của chúng.

Các lỗi hệ thống thực sự xảy ra ở các cấp độ cao hơn trong việc định tuyến và kiểm soát rủi ro:

Bên chịu trách nhiệm chính là mô-đun định tuyến, định giá và giải quyết của giao thức CoW : toàn bộ hệ thống có tiêu chuẩn quá yếu để đánh giá "định tuyến hợp lý", cho phép các lệnh khổng lồ trị giá hàng chục triệu đô la chảy vào các nhóm thanh khoản siêu nhỏ. Miễn là tuyến đường có thể thực thi và khác không, nó sẽ được chấp nhận, hoàn toàn bỏ qua sự phi lý cực độ ở cấp độ kinh tế.

Bên chịu trách nhiệm lần là giao diện người dùng Aave : khi yêu cầu báo giá bộ chuyển đổi, nó không bao gồm dữ liệu ứng dụng liên kết với hook, trực tiếp chuyển kết quả sai đến quy trình ký điện tử và chỉ dựa vào các lời nhắc cảnh báo mà không có cơ chế từ chối dứt khoát. Đối với các giao dịch có quy mô cực lớn như vậy, biện pháp kiểm soát rủi ro này hoàn toàn không đủ để ngăn ngừa rủi ro.

Đây là một thất bại nghiêm trọng về chất lượng định tuyến giao dịch và kiểm soát rủi ro, đã trực tiếp biến một hoạt động luân chuyển tài sản thế chấp hợp pháp và tuân thủ quy định thành một sự kiện gây thiệt hại tài sản nghiêm trọng.

Nguồn
Tuyên bố từ chối trách nhiệm: Nội dung trên chỉ là ý kiến của tác giả, không đại diện cho bất kỳ lập trường nào của Followin, không nhằm mục đích và sẽ không được hiểu hay hiểu là lời khuyên đầu tư từ Followin.
Thích
59
Thêm vào Yêu thích
19
Bình luận
1