Tôi đã dành 9 giờ trong 3 ngày để dựng một phòng thí nghiệm trên DuskEVM, fork Uniswap V3 Core, chạy các bài test Foundry và sau đó mở Remix để lần theo từng swap... đến lần thứ 18 thì tôi ngồi đó lặng im gần nửa giờ.

Pair.sol biên dịch sạch sẽ, chainId đúng, các lệnh Router hoạt động, và vào thời điểm đó tôi vẫn tin rằng sự tương đương EVM có thể giữ nguyên quy trình quen thuộc.

nhưng then _reserves không còn cho tôi cách debug như cũ.

Hedger giữ độ sâu thanh khoản, hàm view không còn đọc state theo cách trước đây, balanceOf cũng không lộ đủ reserveIn và reserveOut.

Tôi thử pool x = 1,200 và y = 2,400, hằng số nhân cho k = x*y = 2,880,000.

đưa vào đầu vào 120 với phí 0.3%, lượng còn lại là 119.64... phép toán thật thanh nhã, nhưng khi phần chia LP nằm bên trong một ghi chú Zedger, việc getAmountOut trả về đúng giá trị vẫn chưa đủ.

ConfidentialERC20 có nghĩa là permit, approve và allowance đổi ngữ nghĩa; SafeCast đi cùng HedgedUint256, trong khi swap trở thành việc tiêu thụ ghi chú cũ rồi mint một ghi chú mới.

thành thật mà nói, tôi mất nhiều thời gian ở đây hơn cả việc viết Router!

circuit phải chứng minh: số lượng ghi chú cũ - input = số lượng ghi chú mới + output, PLONK bảo vệ con số, market maker không thể thấy dữ liệu nhạy cảm nhưng view key vẫn có thể kiểm tra (audit) được.

vậy quyền riêng tư làm giao thức mạnh hơn, hay chỉ đơn thuần đẩy khó khăn sang phía công cụ?

Oracle còn khó hơn.

TWAP cần lấy mẫu nhất quán, nhưng khi đối tượng lấy mẫu trở thành một cam kết ghi chú và việc đọc trực tiếp biến mất, khả năng quan sát không thể chỉ dựa vào vài log.

Tôi vẫn tái sử dụng Solidity, Foundry, Remix, nhưng khi Pair, Router, Oracle dùng chung một luồng số học cho mint, burn, swap, tôi thà thiết kế lại mô hình state hơn là cố cứu vớt lớp trừu tượng cũ.

quan điểm của tôi khá cứng nhắc: confidential AMM chỉ thực sự trưởng thành khi quyền riêng tư và debug được thiết kế cùng nhau.

nếu thanh khoản có thể được ẩn nhưng nhà phát triển gặp khó trong việc chứng minh state là đúng, thì bạn gọi đó là tiến bộ hay chỉ là một dạng phức tạp khác?

#dusk $DUSK @Dusk