Nocturne là giao thức kết hợp 2 công nghệ Account Abstraction và ZKP (Zero-Knowledge proofs), cho phép người dùng gửi, nhận và giao dịch tài sản mà không làm lộ địa chỉ ví. Nocturne mang đến tính bảo mật không chỉ dành cho người dùng crypto mà ngay cả người dùng truyền thống cũng có thể sử dụng. Hãy cùng Coincuatui tìm hiểu về Nocturne qua bài viết dưới đây nhé!
Nocturne là gì? Giải pháp bảo mật kết hợp Account Abstraction và ZKP
Nocturne là giao thức kết hợp 2 công nghệ Account Abstraction và ZKP (Zero-Knowledge proofs) cho phép người dùng gửi, nhận và giao dịch tài sản mà không làm lộ địa chỉ ví của họ. Sau đó, người dùng có thể chứng minh quyền sở hữu tài sản đó bằng công nghệ ZKP để gửi, nhận và giao dịch tài sản một cách bảo mật và riêng tư.
Nocturne là gì?
Nocturne cho phép người dùng gửi, nhận tài sản (ví dụ như token chuẩn ERC-20, ERC-721, ERC-1155) từ các địa chỉ EOA hoặc contract account đến các stealth address (địa chỉ ẩn danh). Trong tương lai, người dùng có thể chứng minh quyền sở hữu tài sản từ lịch sử giao dịch với công nghệ ZKP và có thể thực hiện giao dịch đến các stealth address khác mà không bị tiết lộ thông tin người gửi, người nhận và giá trị tài sản.
Giải thích về EOA và contract account:
Externally Owned Account (EOA): Là các tài khoản mà người dùng bình thường sở hữu và kiểm soát có kèm theo một cặp public-private key để gửi và nhận tài sản crypto. Nói các khác, đây là địa chỉ ví để người dùng gửi, nhận tiền hằng ngày và những giao dịch này diễn ra bên ngoài EVM.
Contract account: Là những đoạn code cho phép thực hiện các tác vụ linh hoạt hơn và chính là smart contract tồn tại EVM. Nó có thể là những smart contract của pool thanh khoản, quy định lúc tham gia IDO,…
Để nạp tiền, trước tiên người dùng sẽ khởi tạo khoản tiền gửi bằng cách gọi một hợp đồng có tên là Deposit Manager (Trình quản lý tiền gửi) - nơi đặt yêu cầu gửi tiền đang chờ xử lý và các khoản tiền liên quan. Nếu người dùng muốn lấy lại khoản tiền gửi, họ có thể yêu cầu hợp đồng Deposit Manager để lấy lại tiền của họ bất cứ lúc nào. Việc khởi tạo khoản tiền gửi đòi hỏi 2 điều kiện:
Người dùng cần chỉ định tài sản, số tiền người dùng muốn gửi và stealth address của người nhận.
Gửi tài sản và số tiền được chỉ định đến hợp đồng Deposit Manager.
Khi tiền nằm trong Deposit Manager, một tác nhân được cấp phép gọi là deposit screener (người sàng lọc tiền gửi) sẽ ký tất cả các khoản tiền gửi mà họ cho là "an toàn" bằng khóa xác thực của mình và gửi chữ ký của họ tới Deposit Manager. Sau khi nhận được giao dịch "gửi tiền hoàn chỉnh" có chữ ký sàng lọc hợp lệ, Deposit Manager sẽ chuyển tiền vào "điểm vào" chính của giao thức là Teller (Giao dịch viên). Ngoài ra, việc hoàn tất gửi tiền sẽ kích hoạt hợp đồng thứ ba có tên là Handler (Người xử lý) để tạo một ghi chú liệt kê tài sản, số tiền và địa chỉ gửi tiền là chủ sở hữu của ghi chú.
Sau khi ghi chú được tạo, nó sẽ được xếp hàng đợi để chèn vào on-chain merkle tree (cây merkle on-chain) được gọi là commitment tree (cây cam kết) - nơi chứa tất cả các ghi chú từng được giao thức tạo ra. Sau này, khi người dùng muốn sử dụng ghi chú đó họ sẽ phải chứng minh tính hợp lệ của nó trong ZKP với tư cách là chủ sở hữu ghi chú trong commitment tree. Khi giao dịch hoàn tất, ghi chú sẽ sớm được chèn thông qua Subtree Update (Cập nhật cây con) theo đợt cùng với các ghi chú mới để tiết phí gas.
Sơ đồ miêu tả quá trình người dùng gửi tiền thông qua Nocturne
Trong Nocturne, người dùng thực hiện các hành động với tài sản riêng tư của họ thông qua các hoạt động (operations). Một hoạt động có 2 phần thông tin bao gồm: một danh sách JoinSplits và một danh sách các hành động (actions).
Danh sách JoinSplits: chỉ định loại và số lượng tài sản sẽ được sử dụng cho các hoạt động mà không tiết lộ chủ sở hữu của tài sản đó.
Danh sách các hoạt động: chỉ định những việc cần thực hiện với các tài sản đó. Ngoài ra, một hành động bao gồm địa chỉ hợp đồng và một phần dữ liệu (calldata) được mã hóa theo chuẩn ABI để chỉ định một lệnh gọi phương thức cần thực hiện trên hợp đồng đó.
Bên cạnh đó, một hoạt động còn chứa các thông tin quan trọng khác để đảm bảo an toàn bao gồm:
Stealth address để chỉ định chủ sở hữu cho bất kỳ ghi chú mới nào được tạo ra sau khi hoạt động kết thúc.
Gas fee và gas limit.
Chain ID và thời gian hoàn thành hoạt động để bảo vệ chống lại replay attack (tấn công phát lại).
Sau khi hoạt động được gửi lên Nocturne, nó sẽ được xử lý on-chain theo quy trình sau:
JoinSplit proofs (bằng chứng JoinSplit) được Teller xác minh dựa trên commitment tree.
Nullifier của ghi chú cũ từ JoinSplits được kiểm tra dựa trên bộ nullifier trong Handler để ngăn chặn việc double spending (chi tiêu kép). Nullifier là một giá trị duy nhất được tạo ra từ một dữ liệu đầu vào (input data) cụ thể, thường là một giao dịch hoặc một tài sản
Nullifier của ghi chú cũ từ JoinSplits được thêm vào bộ nullifier. Các cam kết của ghi chú mới do JoinSplits tạo ra sẽ được đưa vào hàng chờ để chèn vào commitment tree.
Bất kỳ publicSpend - tài sản cần được unwrap công khai trong JoinSplits đều được gửi từ Teller đến Handler. Các hành động được Handler thực hiện bằng cách sử dụng tài sản cần được unwrap.
Bất kỳ ghi chú hoàn tiền mới nào phát sinh từ các hành động đều được đưa vào hàng chờ để chèn vào commitment tree. Tài sản cơ bản cho các ghi chú hoàn trả được gửi trở lại hợp đồng của Teller.
Để hiểu hơn về các hành động, hoạt động này Coincuatui sẽ lấy 3 ví dụ về Confidential Payment (thanh toán bảo mật), Anonymous ERC-20 Transfer (chuyển token ERC-20 ẩn danh) và Anonymous Uniswap Call (cuộc gọi Uniswap ẩn danh).
Confidential Payment
Đây là khoản thanh toán trong đó số tiền gửi và người nhận sẽ được ẩn. Confidential Payment thể hiện rằng nó là 1 khoản thanh toán bí mật được thực hiện thông qua một hoạt động không có hành động và một hoặc nhiều JoinSplits trong đó có publicSpend bằng 0. Từ đây, chủ sở hữu của một trong các ghi chú mới được đặt thành người nhận thanh toán.
Vì publicSpend bằng 0 nên tài sản cơ bản không bao giờ được mở ra và giá trị tài sản sẽ không bị tiết lộ giúp khoản thanh toán hoàn toàn được bảo mật. Tất cả thông tin người dùng khác thấy được trên on-chain là một số ghi chú không xác định về tài sản và số tiền không xác định đã được chi tiêu. Từ đây, các ghi chú mới chưa xác định của cùng một nội dung chưa xác định đó đã được tạo ra.
Anonymous ERC-20 Transfer
Ví dụ người dùng có 500 USDC bên trong Nocturne, họ muốn unwrap và trả 100 USD cho một địa chỉ Ethereum. Với tương tác này, người gửi sẽ ẩn danh nhưng người nhận thì không. Quy trình chuyển tiền thông qua một hoạt động với một hoặc nhiều JoinSplits cho USDC, trong đó publicSpend của JoinSplits là 100 USD.
Hoạt động này sẽ có một hành động mã hóa cuộc gọi để chuyển 100 USDC cho người nhận. Khi được gửi, thao tác này sẽ unwrap số lượng USDC mong muốn từ Nocturne, sau đó chuyển nó đến người nhận.
Anonymous Uniswap Call
Ví dụ người dùng có 3 WETH trong Nocturne và họ muốn swap 1 WETH lấy DAI. Quy trình swap token thông qua hoạt động với một hoặc nhiều JoinSplits cho WETH, trong đó tổng publicSpend của JoinSplits là 1 WETH. Hoạt động này sẽ có một hành động mã hóa lệnh gọi tới Uniswap để swap 1 WETH lấy DAI.
Khi hoạt động này được gửi đi, nó sẽ unwrap 1 WETH từ Nocturne và gọi Uniswap để đổi nó thành DAI. Sau đó, giao thức tạo một ghi chú hoàn trả cho số DAI thu được và gửi DAI trở lại Teller.
Đóng vai trò như một kho lưu trữ riêng tư: Nocturne cho phép người dùng lưu trữ và rút tiền về ví cho các hoạt động cần tiếp xúc nhiều như giao dịch mà không làm lộ địa chỉ hoặc số dư.
Hỗ trợ cho thanh toán cá nhân: Thay vì thanh toán trực tiếp vào EOA của người nhận và tiết lộ lịch sử tài chính của họ, người gửi chỉ cần gửi tiền vào Nocturne và nhập stealth address của người nhận. Ngày nay đã có nhu cầu về việc người đi làm muốn trả lương qua on-chain và không cho người khác biết về mức lương của họ. Bằng cách tích hợp Nocturne vào các sản phẩm thanh toán DAO hiện có, các công ty có thể trả lương cho nhân viên mà vẫn giữ kín được giá trị.
Ví blockchain với hợp đồng thông minh bảo vệ quyền riêng tư: SDK off-chain của Nocturne có thể được tích hợp vào các ứng dụng ví hiện có để hỗ trợ trải nghiệm ví thông thường nhưng có tích hợp quyền riêng tư về tài sản. Tuy nhiên, giao thức chỉ mới phát triển SDK vào MetaMask Snap có thể tùy chỉnh và sẽ hỗ trợ cho các loại ví khác trong tương lai.
Nocturne được phát triển bởi Nocturne Labs bao gồm những thành viên đã và đang làm việc tại những dự án, sàn giao dịch, quỹ đầu tư crypto như Solana, 1kx, Gemini,... Tuy nhiên, dự án chưa công bố danh tính thật sự của những thành viên trong Nocturne Labs và Coincuatui sẽ cập nhật ngay khi có thông tin mới nhất từ phía Nocturne.
Tháng 10/2023, Nocturne thông báo huy động thành công 6 triệu USD tại vòng Seed Round có sự tham gia của Vitalik Buterin. Ngoài ra, các quỹ đầu tư tham gia vào vòng gọi vốn này bao gồm Bain Capital Crypto, Polychain Capital, Robot Ventures,...
Những nhà đầu tư của Nocturne
Nocturne là giao thức kết hợp 2 công nghệ Account Abstraction và ZKP (Zero-Knowledge proofs) cho phép người dùng gửi, nhận và giao dịch tài sản mà không làm lộ địa chỉ ví của họ. Sau đó, người dùng có thể chứng minh quyền sở hữu tài sản đó bằng công nghệ ZKP để gửi, nhận và giao dịch tài sản một cách bảo mật và riêng tư.
Thông qua bài viết này chắc các bạn đã phần nào nắm được những thông tin cơ bản về dự án Nocturne để tự đưa ra quyết định đầu tư cho riêng mình.
Lưu ý: Coincuatui không chịu trách nhiệm với bất kỳ quyết định đầu tư nào của các bạn. Chúc các bạn thành công và kiếm được thật nhiều lợi nhuận từ thị trường tiềm năng này!
Nguồn: Coin68