Tiêu đề gốc: "Quyền riêng tư có thể lập trình và tuân thủ trên chuỗi bằng cách sử dụng Mã hóa đồng hình"
Tác giả gốc: Rand Hindi
Bản tổng hợp gốc: Luccy, BlockBeats
Ghi chú của biên tập viên:
Ngày 19 tháng 9, mã hóa của a16z nhóm đã nêu ra bảy vấn đề trong Thử thách Nakamoto, đó là: các hạn chế về khả năng kết hợp nguyên tử và trình tự chia sẻ, xác minh DePIN, các vấn đề JOLT + Lasso, quyền riêng tư có thể lập trình tuân thủ, giảm thiểu LVR tối ưu và thiết kế giao dịch MEV Chuỗi cung ứng và bảo vệ deepfake bằng cách sử dụng blockchain.
Đối với các vấn đề về quyền riêng tư có thể lập trình tuân thủ, công cụ mã hóa nguồn mở Zama đã đề xuất một giải pháp, mã hóa đồng hình hoàn toàn (FHE) hoặc giao thức hợp đồng thông minh bí mật fhEVM. Với khả năng thực hiện tính toán ở trạng thái được mã hóa, fhEVM cung cấp cho các nhà phát triển những cách mới để xây dựng các ứng dụng bảo mật có thể lập trình tuân thủ trên chuỗi.
Nhận dạng phi tập trung (DID), với tư cách là nhà phát hành danh tính kỹ thuật số, được lưu trữ ở trạng thái được mã hóa, đạt được tình huống đôi bên cùng có lợi về quyền riêng tư danh tính người dùng và tuân thủ có thể lập trình . . Bằng cách xác định quy tắc chuyển mã thông báo giữa các cá nhân thông qua hợp đồng quản lý, có thể đạt được sự giám sát năng động đối với các điều kiện chuyển giao. Thiết kế này thực thi các quy định ở cấp hợp đồng thông minh mà không cần mã hóa cứng, cho phép người dùng đảm bảo tuân thủ ứng dụng chỉ bằng một vài dòng mã Solidity.
Trong bài viết, Giám đốc điều hành Zama Rand Hindi cho biết cách sử dụng fhEVM để xây dựng mã thông báo ERC20 tuân thủ nhằm trừu tượng hóa danh tính thông qua DID trên chuỗi. Ông chỉ ra rằng so với các giải pháp bảo mật khác, tất cả dữ liệu và tính toán của fhEVM đều diễn ra trên chuỗi, đảm bảo khả năng kết hợp và tính sẵn có của dữ liệu.

Vài tháng trước, nhóm mã hóa của a16z đã phát hành Thử thách Nakamoto. Đây là danh sách các những vấn đề quan trọng nhất cần được giải quyết trong blockchain. Trong số đó, vấn đề thứ tư đặc biệt thu hút sự chú ý của chúng tôi: "Quyền riêng tư có thể lập trình tuân thủ", bởi vì chúng tôi đã tích cực suy nghĩ về vấn đề này và hôm nay, chúng tôi đã đề xuất giải pháp đầu tiên sử dụng mã hóa đồng cấu và kế hoạch giao thức hợp đồng thông minh bí mật fhEVM.
fhEVM là một EVM thông thường chứa các phần biên dịch trước có thể được tính toán ở các trạng thái được mã hóa bằng thư viện mã hóa đồng cấu TFHE-rs của chúng tôi. Từ quan điểm của nhà phát triển, không có mật mã nào liên quan, họ chỉ viết mã Solidity bằng cách sử dụng các loại dữ liệu được mã hóa mà chúng tôi cung cấp (euint32, ebool, v.v.). Ưu điểm chính của fhEVM so với các giải pháp bảo mật khác là tất cả dữ liệu và tính toán đều diễn ra trên chuỗi. Điều này có nghĩa là bạn có được khả năng kết hợp và tính sẵn có của dữ liệu giống như các hợp đồng văn bản gốc thông thường.
Tính năng này rất quan trọng để xây dựng quyền riêng tư có thể lập trình vì tất cả logic kiểm soát truy cập đều có thể được xác định trong chính hợp đồng. Không có gì cần phải mã hóa cứng trong giao thức và người dùng không cần thực hiện bất kỳ hành động nào ngoài chuỗi để đảm bảo tuân thủ. Các ứng dụng có thể trực tiếp thực thi việc tuân thủ chỉ bằng một vài dòng mã Solidity.
Trong bài viết này, chúng tôi sẽ trình bày cách xây dựng mã thông báo ERC20 tuân thủ bằng cách sử dụng DID trên chuỗi. Mã nguồn của hướng dẫn này có thể được tìm thấy trong thư mục ví dụ của kho lưu trữ fhEVM.
Nhận dạng phi tập trung (DID) là một danh tính kỹ thuật số duy nhất do một thực thể như chính phủ, cơ quan đăng ký, công ty hoặc chính người dùng cấp. DID này có thể được gắn với khóa mật mã để chứng minh người dùng sở hữu DID, chẳng hạn như ví EVM. Nhưng nó cũng có thể lưu trữ một loạt thuộc tính, chẳng hạn như tuổi, quốc tịch, số an sinh xã hội của người dùng, v.v. Ngược lại, những thuộc tính này có thể được sử dụng để chứng minh rằng bạn đáp ứng một số điều kiện nhất định (được gọi là "bằng chứng"), chẳng hạn như trên 18 tuổi hoặc không phải là công dân của Narnia. Được cấp bởi các tổ chức như chính phủ, cơ quan đăng ký, công ty hoặc chính người dùng.
Hầu hết các DID thực sự được triển khai ở phía người dùng, sử dụng bằng chứng không có kiến thức để tạo ra bằng chứng. Mặc dù điều này khả thi trong nhiều trường hợp, nhưng tình huống trở nên phức tạp khi có nhiều người dùng tham gia vào giao dịch, các quy tắc phức tạp cần được áp dụng cho DID hoặc mọi người cần tuân theo một bộ quy tắc chung. Điều này về cơ bản tương tự như sự đánh đổi giữa các ứng dụng biên và ứng dụng đám mây.
Tuy nhiên, việc có một cơ quan đăng ký DID tập trung sẽ giải quyết được những vấn đề này vì bạn có thể chỉ cần yêu cầu cơ quan đăng ký kiểm tra xem mọi người có tuân thủ hay không. Điều này cũng sẽ giúp việc theo dõi quy định trở nên dễ dàng hơn vì bạn chỉ phải thực hiện việc đó ở một nơi. Blockchain sẽ là cơ sở hạ tầng lý tưởng cho việc này vì nó cho phép khả năng kết hợp giữa DID và các ứng dụng cần tuân theo các quy định, cũng như khả năng kết hợp giữa các quy định. Điều này về cơ bản tương tự như sự đánh đổi giữa các ứng dụng biên và ứng dụng đám mây.
Vấn đề: Mọi người sẽ nhìn thấy danh tính của nhau!
May mắn thay, chúng ta có giải pháp: mã hóa đồng hình, cụ thể hơn là fhEVM! Nhờ khả năng có thể tổng hợp trên các trạng thái mật mã, chúng tôi có thể lưu trữ DID của người dùng trực tiếp trên chuỗi ở dạng được mã hóa và yêu cầu các ứng dụng tuân thủ xác minh các thuộc tính bằng lệnh gọi hợp đồng đơn giản. Khả năng quản lý danh tính thông qua hợp đồng thông minh là thứ mà chúng tôi gọi là “trừu tượng hóa danh tính”, tương tự như cách quản lý tiền thông qua hợp đồng thông minh với tính năng trừu tượng hóa tài khoản.
Hướng dẫn này được chia thành 3 phần:
Trừu tượng nhận dạngĐược thực hiện thông qua hợp đồng đăng ký, quản lý danh tính và chứng nhận. Ở đây, chúng tôi giả định rằng DID là thẻ ID chính thức của chính phủ. Bản thân cơ quan đăng ký được quản lý bởi một cơ quan trung ương (ví dụ: AFNIC), cơ quan này có thể tạo các cơ quan đăng ký (ví dụ: các công ty KYC như Onfido, Jumio, v.v.), sau đó cơ quan này có thể tạo DID của người dùng. Sau đó, người dùng quản lý và cập nhật DID của họ thông qua cơ quan đăng ký.
Quản trị được xác định trong hợp đồng đặt ra các quy tắc cho việc chuyển mã thông báo giữa các cá nhân dựa trên thông tin có trong Mã hóa DID của người dùng. Về cơ bản, nó thực hiện quy định ở cấp độ hợp đồng thay vì ở cấp độ người dùng.
Việc chuyển tiền bí mật tuân thủ được triển khai trong hợp đồng ERC20 tuân thủ, sử dụng các hợp đồng quy định để thực thi việc thực hiện ủy quyền. vào chính API ERC20. Trong ví dụ này, chúng tôi đã sử dụng hợp đồng ERC20 bí mật trong đó số dư và số tiền được ẩn, nhưng điều tương tự cũng sẽ áp dụng đối với mã thông báo ERC20 văn bản gốc, thông thường.

Hợp đồng đăng ký danh tính là một mẫu đăng ký cho người dùng DID do cơ quan đăng ký cấp, trong đó có một bộ các mã định danh được mã hóa, chẳng hạn như quốc tịch, tuổi tác, an sinh xã hội số, v.v. Các danh tính này được lưu trữ dưới dạng giá trị 32 bit được mã hóa (euint32).
Hợp đồng cũng xử lý các quyền, bao gồm:
Cho phép chủ sở hữu hợp đồng (ví dụ: AFNIC) thêm, xóa hoặc Cập nhật cơ quan đăng ký.
Cho phép cơ quan đăng ký thêm, xóa hoặc cập nhật DID người dùng mà họ tạo.
Cho phép người dùng cấp quyền truy cập hợp đồng thông minh vào các thuộc tính cụ thể của DID của họ. Điều quan trọng cần lưu ý ở đây là người dùng có trách nhiệm không cấp quyền truy cập vào các hợp đồng độc hại, cũng như họ có trách nhiệm không cho phép các hợp đồng độc hại chi tiêu mã thông báo của họ.
Bước đầu tiên là triển khai logic tạo và quản lý DID:

Lưu ý: Hình ảnh chỉ là ảnh chụp màn hình một phần, bạn có thể xem toàn bộ mã trong văn bản gốc
Bước tiếp theo là triển khai logic để nhận dạng và kiểm soát truy cập.
Mã định danh chỉ đơn giản là một chuỗi (chẳng hạn như "ngày sinh") và giá trị 32 bit được mã hóa. Nó chỉ có thể được tạo hoặc cập nhật bởi cơ quan đăng ký. Người dùng không thể tạo số nhận dạng của riêng mình vì chúng tôi muốn chúng được xác thực bởi cơ quan đăng ký.
Tuy nhiên, vì mã định danh được mã hóa nên người dùng cần cấp quyền hợp đồng để truy cập vào giá trị cụ thể mà chúng tôi sẽ xử lý thông qua cơ chế kiểm soát truy cập đơn giản, tương tự như Cơ chế kiểm soát truy cập đơn giản nơi bạn có thể cho phép các hợp đồng chi tiêu mã thông báo ERC20 của mình.

Lưu ý: Hình ảnh là một phần Ảnh chụp màn hình, bạn có thể xem toàn bộ mã trong văn bản gốc
Bây giờ chúng ta có thể hoàn thành hợp đồng đăng ký danh tính của mình bằng cách thêm các getters cần thiết, thêm một số điều kiện và lỗi sự điều khiển.

Lưu ý: Hình ảnh là Ảnh chụp màn hình một phần, bạn có thể xem toàn bộ mã trong văn bản gốc
Bước tiếp theo là tạo một hợp đồng giám sát.
Khi thực hiện các quy tắc chuyển tiền giữa hai cá nhân, điều quan trọng là phải nhận ra rằng các quy tắc này có thể phát triển theo thời gian. Việc có một hợp đồng thông minh duy nhất xác định tất cả các quy định cho một bối cảnh nhất định (chẳng hạn như chuyển tiền) có nghĩa là các hợp đồng ERC20 không cần phải tự theo dõi các quy định. Chính phủ chỉ cần cập nhật hợp đồng này và nó sẽ tự động phổ biến tới tất cả các token triển khai nó.
Về cốt lõi, hợp đồng quản trị chỉ đơn giản là một tập hợp các điều kiện phù hợp với các thuộc tính nhận dạng mật mã. Để ngăn chặn hành vi lạm dụng, người dùng sẽ không trực tiếp cấp quyền truy cập vào hợp đồng quy định mà thay vào đó cấp quyền truy cập vào hợp đồng mã thông báo ERC20, sau đó thực hiện các lệnh gọi được ủy quyền tới hợp đồng quy định. Cách tiếp cận này đảm bảo rằng chỉ những hợp đồng ERC20 mà người dùng tin tưởng mới có thể truy cập thông tin của họ. Hãy nhớ rằng, cả người gửi và người nhận đều phải cấp quyền cho hợp đồng ERC20 trước khi quá trình chuyển tiền có thể diễn ra giữa họ.
Trong ví dụ này, chúng tôi sẽ triển khai một số quy tắc cơ bản:
Chuyển khoản trong nước là Không giới hạn, nhưng chuyển khoản ra nước ngoài được giới hạn ở mức 10.000 token.
Người dùng bị liệt vào danh sách đen không thể chuyển hoặc nhận mã thông báo.
Người dùng không thể chuyển mã thông báo sang các quốc gia nằm trong danh sách đen.
Thay vì giao dịch không thành công, có khả năng rò rỉ thông tin nhạy cảm, chúng tôi sẽ chỉ đặt số tiền chuyển thành 0 nếu một trong các điều kiện không được đáp ứng. Điều này sử dụng toán tử ba ngôi đồng cấu được gọi là cmux: value = TFHE.cmux(encryptedCondition, valueIfTrue, valueIfFalse);
Lưu ý: Hình ảnh chỉ là ảnh chụp màn hình một phần, bạn có thể xem toàn bộ mã trong văn bản gốc
Bây giờ chúng ta đã có hợp đồng quản trị và đăng ký danh tính, cuối cùng chúng ta cũng có thể tạo một hợp đồng mã thông báo tuân thủ và bảo vệ quyền riêng tư. Hợp đồng này sẽ được gọi là CompliantERC20 và có các tính năng chính sau:
Số dư và số tiền chuyển của người dùng được mã hóa.
Tuân thủ thực hiện chuyển khoản bằng cách gọi hợp đồng quy định.
Khả năng hiển thị số dư nhất định có thể được cấp cho các địa chỉ trong danh sách trắng (ví dụ: cơ quan quản lý).

Lưu ý: Hình ảnh là Ảnh chụp màn hình một phần, bạn có thể xem toàn bộ mã trong văn bản gốc
Hợp đồng giám sát có thể được gọi một cách đơn giản. Điều này có nghĩa là người dùng phải cung cấp quyền truy cập vào hợp đồng ERC20 trước khi bắt đầu bất kỳ giao dịch chuyển tiền nào; nếu không, quá trình chuyển tiền sẽ bị hủy bỏ.
Cuối cùng, giờ đây chúng ta có thể tạo hợp đồng ERC20:

Tương tự như cách người dùng cấp quyền cho giao thức DeFi để chi tiêu mã thông báo của họ, họ cần cấp cho hợp đồng quyền truy cập vào danh tính cần thiết để chi phối hợp đồng. Điều này đạt được bằng cách gọi Identity.grantAccess(contractAddress,identifiers) và có thể được truy xuất bằng cách gọi phương thức xem ERC20.identifiers(). Danh sách này xuất phát trực tiếp từ hợp đồng ERC20Rules để cho phép cập nhật các thuộc tính.
Với các công cụ phù hợp, việc thiết lập sự tuân thủ và không khó. Mặc dù ban đầu chúng tôi xây dựng fhEVM để đảm bảo quyền riêng tư trong blockchain nhưng chúng tôi nhanh chóng nhận ra rằng công nghệ này có thể được sử dụng để quản lý danh tính, cho phép tuân thủ có thể lập trình.
Thiết kế này chưa hoàn hảo nhưng chúng tôi tin rằng nó có thể tiếp tục được cải thiện và triển khai như một trường hợp sử dụng thực tế để việc tuân thủ không còn đồng nghĩa với quy định nữa.
「Liên kết gốc‖
Chào mừng bạn tham gia cộng đồng chính thức của BlockBeats:
Nhóm Telegram đăng ký: https://t.me/theblockbeats
Nhóm Telegram thảo luận: https://t.me/BlockBeats_App
Tài khoản Twitter chính thức: https://twitter.com/BlockBeatsAsia