Bài 10: Những ví dụ kinh điển trong PriFi

Privacy Finance (PriFi) hay Tài chính “Riêng tư” là một khái niệm rất mới, bắt đầu nở rộ trong những năm gần đây. Cùng tìm hiểu về PriFi qua bài viết dưới đây!

Bài 10: Những ví dụ kinh điển trong PriFi

Privacy Finance (PriFi) hay Tài chính “Riêng tư” là một khái niệm rất mới, bắt đầu nở rộ trong những năm gần đây. Thực chất, tính riêng tư trong tài chính phi tập trung đã hình thành từ khá sớm cùng với sự hình thành của công nghệ chuỗi khối. Dash (1/2014), Moreno (4/2014), ZCash (10/2016) là những chuỗi khối được sinh ra nhằm bảo vệ thông tin giao dịch và quyền riêng tư cho người dùng. Trong đó, Dash sử dụng mixnet để làm rối giao dịch, còn Moreno và Zcash sử dụng zero-knowledge proof để giấu số dư nhưng vẫn giữ nguyên tính sở hữu của giao dịch. Với động lực phát triển của DeFi, PriFi đang dần quay trở lại như một “lớp riêng tư” (Privacy Layer) bổ sung cho thị trường hiện có. Ví dụ nổi tiếng nhất là Tornado.cash (12/2019) trên mạng Ethereum, và Blender.io cho đồng tiền Bitcoin.

Trong bài này, chúng ta sẽ thử xây dựng bản mẫu cho một máy trộn trên Solana. (Lưu ý, các phép tính trên hệ mật mã sẽ được dự kiến triển khai trong phiên bản 1.11.0, các phiên bản cũ hơn sẽ không thể hoàn thành bản mẫu được đề xuất trong bài.)

Nền tảng về mật mã

Hệ mã Đường cong Elliptic

Hình 1: Đường cong Elliptic và phép toán cộng 2 điểm trên đường cong.

Đường cong Elliptic có phương trình dạng y=x3+ax+b với phép toán cộng 2 điểm được xác định như sau: Cho P và Q là 2 điểm trên đường cong, R=P+Q khi đó R là điểm đối xứng qua trục hoành với giao điểm của đường cong Elliptic và đường thẳng qua P và Q. Nếu giao điểm trên không tồn tại, tổng được xác định bằng 0.

Như một hệ quả, phép nhân nP chính là biểu diễn của phép cộng n lần P.

Độ khó

Độ khó chính là nền tảng cho sự hình thành của mọi hệ mật mã. Trong Đường cong Elliptic, việc cho 2 điểm ngẫu nhiên P và Q và tìm n sao cho nP=Q được xem là một vấn đề khó, hiện không có thuật toán tối ưu nào giải được trong một khoảng thời gian khả thi.

Tuy việc tìm n rất khó nhưng việc kiểm tra n sao cho nP=Q lại rất nhanh và đơn giản. Từ tính chất trên, các giao thức về bảo mật được xây dựng, trong đó có thể kể đến hàm băm Pedersen, khoá công khai, chữ ký số, khoá trao đổi, vân vân.

Phép đồng cấu

Gọi f(x)=xG trong đó G là điểm sinh trên một đường cong Elliptic (nói một cách dễ hiểu, G là điểm được quy định sẵn). Vì f(x+y)=f(x)+f(y) nên f được gọi là một phép đồng cấu. Vậy phép nhân số nguyên (hoặc phần tử trong tập hữu hạn) được xem là một phép đồng cấu cho đường cong Elliptic khi (x+y)G=xG+yG.

Ngoài ra, ta cũng thấy một tính chất của hàm f(x)=xG trong đường cong Elliptic là yf(x)=xf(y).

Ý tưởng về máy trộn giao dịch

Ý tưởng về máy trộn được xây dựng dựa trên một hình thức trò chơi giải đố. Giả sử Alice tạo nên một câu đố Q và gửi kèm cùng một số lượng  token lên chương trình trên chuỗi khối. Nhiệm vụ của chương trình này là kiểm tra nếu bất kỳ ai có câu trả lời A thoả mãn Q sẽ được nhận . Câu đố đặt ra phải được xác định là một vấn đề khó, chỉ có Alice, hoặc Bob, người được Alice tiết lộ câu trả lời A mới có thể giải đố và nhận về .

Tuy nhiên, liên kết giữa người gửi và người nhận vẫn chưa thật sự được cắt đứt khi Alice có liên kết với Q, Q lại liên kết với A, và A lại liên kết với Bob. Rốt cuộc vẫn là Alice gửi tiền cho Bob. Để cắt đứt liên kết này, chúng ta phải cắt đứt liên kết giữ Q và A bằng một cơ chế trộn.

Hình 2. Máy trộn giúp cắt đứt liên hệ giữa Q và A trong khi vẫn đảm bảo chính xác quá trình kiểm tra.

Hiện thực máy trộn

Hình 3. Mô tả cơ chế trộn của một vòng trộn cho 3 câu đố.

Câu đố. Với đường cong Elliptic và điểm G được quy định chung, cho P là một điểm trên đường cong, xác định x sao cho P=xG.

Để sinh ra một câu đố như trên, Alice lấy ngẫu nhiên một giá trị x, tính P=xG và gửi P cùng với ví dụ 1 SOL, lên chương trình kiểm chứng.

Cơ chế trộn. Phép trộn được thực hiện lặp lại nhiều vòng cho tập hợp các câu đó [P], và ở mỗi vòng các bước thực hiện là như nhau. Cho n máy trộn M0..n-1, và một phép hoán vị , vòng trộn thứ j được diễn ra như sau:

  1. Mỗi máy trộn Mi chọn một giá trị ngẫu nhiên zi, sau đó tính toán và nộp giá trị [P]j=(zi[P]j-1) và Gj=ziGj-1 cùng với một số tiền cọc, ví dụ 10 SOL, lên chương trình kiểm chứng. Trong đó G0=G và [P]0=[P].
  2. Máy kiếm chứng sẽ chọn ngẫu nhiên một máy trộn và chấp nhận giá trị nộp từ máy trộn đó: [P]j=(zi[P]j-1), Gj=ziGj-1.
  3. Tất cả các máy trộn không được chọn phải tiết lộ giá trị z để chứng minh không ứng xử sai trong các bước trước và lấy lại 10 SOL.

Ta thấy bằng cách nhân với z cũng như hoán vị bởi , vị trí của các câu hỏi đã bị thay đổi và không thể truy vết. Tuy nhiên câu trả lời vẫn không thay đổi vì P=xGzP=xzG. Càng nhiều vòng trộn được diễn ra, càng khó truy vết được giao dịch gốc.

Ngoài ra, các máy trộn cũng bị triệt tiêu động cơ làm sai khi mà ở xác suất bị phát hiện và mất khoảng cọc là rất cao.

Hoàn tiền. Sau khi trải qua k lần trộn và đủ an toàn, người dùng có thể dùng x để lần lượt kiểm tra Pk nào tương ứng với x. Nộp (x,Pk) lên chương trình và nhận lại 1 SOL.

Thiết kế hệ thống

Hồ câu đố. Tương tự như Tonardo.cash, hệ thống sẽ có các hồ 0.1 SOL, 1 SOL, 10 SOL, 100 SOL, 1000 SOL. Các câu đố sẽ được phân loại vào hồ tương ứng dựa trên lựa SOL được chuyển. Giả sử Alice muốn chuyển 10.1 SOL, Alice phải tạo 2 cấu đố P1, P2, trong đó P1 sẽ vào hồ 0.1 SOL và P2 sẽ vào 10 SOL.

Cụm Trộn. Để tham gia vào cụm máy trộn, các máy trộn đơn lẻ phải cọc tiền. Khi hệ thống một máy trộn cố tình gian lận, khoảng tiền cọc này sẽ bị tịch thu như 1 khoản phạt. Mỗi hồ sẽ có một cụm trộn để thực hiện việc trộn.

Phí. Khi nhận tiền về, người dùng phải trả một khoản phí, ví dụ 0.0005 SOL, cho hồ tương ứng. Định kỳ khoảng phí này sẽ được chia lại cho các máy trộn trong cụm trộn.

Lời kết

Hệ thống máy trộn trên dựa nhiều vào ý tưởng mixnet, trong khi Tornado.cash dựa nhiều vào zero-knowledge proof, tuy vậy cả hai vẫn đạt được mục tiêu xoá vết giữa người gửi và người nhận. Zero-knowledge proof gần như không yêu cầu cụm máy trộn, tuy nhiên đòi hỏi khối lượng tính toán lớn hơn. Mixnet thì ngược lại khi khối lượng tính toán đơn giản nhưng yêu cầu cụm máy trộn để thực hiện các bước cần thiết.

Về Sentre Protocol

Sentre Protocol là nền tảng mở All-in-One hoạt động trên mạng lưới Solana, cung cấp DApp Store và giao thức mở giúp tích lũy thanh khoản. Với Sentre:

  • Người dùng có thể cài đặt các DApp yêu thích của mình và trải nghiệm thế giới DeFi trên một nền tảng duy nhất;
  • Lập trình viên và đối tác có thể phát hành DApp thông qua Sen Store, tận dụng tài nguyên có sẵn và tự do đóng góp cho nền tảng.