0
0
Lập trình
Admin Team
Admin Teamtechmely

Tiền Thưởng Token Dựa Trên Thông Tin Riêng Tư: GBC

Đăng vào 3 ngày trước

• 5 phút đọc

Giới thiệu

Trong thế giới ngày nay, việc bảo vệ thông tin cá nhân đang trở thành một yêu cầu thiết yếu, đặc biệt là trong lĩnh vực blockchain. Dự án Golf Barbecue Coin (GBC) mà tôi phát triển không chỉ nhằm khuyến khích những người bạn chơi golf cải thiện kỹ năng, mà còn giúp bảo vệ thông tin riêng tư của họ. Qua bài viết này, tôi sẽ chia sẻ về cách mà tôi xây dựng token GBC dựa trên thông tin cá nhân mà không làm lộ ra dữ liệu nhạy cảm.

Những gì tôi đã xây dựng

Trong quá trình chơi golf cùng bạn bè, chúng tôi muốn theo dõi các chỉ số (thống kê) riêng tư của từng người. Để khuyến khích chúng tôi cải thiện kỹ năng, chúng tôi đã tạo ra một token ERC-20 với một cái tên vui nhộn. Vào cuối mùa hè, mỗi người trong chúng tôi phải sử dụng số dư token tích lũy để góp mặt cho một buổi tiệc chia tay. Điều này đã dẫn đến việc chúng tôi cần một phương thức tự động để cập nhật số dư token dựa trên các sự kiện phạt trong quá trình chơi golf.

Mục tiêu và thách thức

Mục tiêu của tôi là xây dựng một hệ thống nơi mỗi người có thể nhập thông tin lỗ golf (hole details) riêng tư và tự động cập nhật số dư token dựa trên các sự kiện phạt. Đây là một trường hợp hoàn hảo cho công nghệ của Midnight/Compact, giúp chứng minh tính đủ điều kiện để nhận tiền thưởng token mà không tiết lộ thông tin cá nhân.

Tuy nhiên, dự án này khá khó khăn vì tôi không tìm thấy tài liệu hay ví dụ nào phù hợp để thực hiện một chứng nhận dựa trên trạng thái riêng tư thay đổi. Tôi rất tự hào với những gì mình đã đạt được, mặc dù tôi biết rằng còn nhiều điều cần cải thiện. Trong vài tháng tới, tôi dự định hoàn thành các phần còn lại và chuyển giao nguyên mẫu lên môi trường sản xuất.

Demo

Toàn bộ mã nguồn tôi phát triển có thể tìm thấy tại đây. Repository chứa một hợp đồng compact có tên là gbc.compact, một ứng dụng API/CLI được khởi tạo bởi create-midnight-app trong thư mục boilerplate/contract-cl, và giao diện người dùng trong boilerplate/gbc-ui.

Dưới đây là một video về UI đang hoạt động, hiển thị số dư GBC (công khai) dựa trên thông tin lỗ golf (riêng tư) mà người dùng nhập vào.

Trong video, bạn sẽ thấy hợp đồng gbc được triển khai và được gọi, với chứng nhận dựa trên dữ liệu động riêng tư (kết quả lỗ golf do người dùng cung cấp). Tôi cần hỗ trợ kết nối các cuộc gọi hợp đồng thực tế với UI của mình, phần này vẫn còn là TODO.

Cách tôi sử dụng công nghệ của Midnight

  • Sử dụng ngôn ngữ compact để viết gbc.compact
  • Sử dụng công cụ hỗ trợ create-midnight-app để tạo scaffold cho CLI từ hợp đồng GBC. Việc mở rộng scaffold này không dễ dàng, vì nó đưa ra nhiều giả định quá đơn giản.
  • Tôi đã dành khá nhiều thời gian để viết giao diện người dùng tương tác với hợp đồng đã triển khai. Tôi đã thử hai cách tiếp cận chính: 1) điều chỉnh UI example-bboard, sử dụng các mô-đun như API Kết nối DApp của Midnight, và 2) cố gắng sử dụng bộ công cụ xây dựng UI của OpenZeppelin. Cuối cùng, tôi không thành công với cả hai cách. Một hướng dẫn đơn giản sẽ giúp đỡ rất nhiều.

Một TODO nữa trước khi đi vào sản xuất sẽ là tích hợp hợp đồng compact FungibleToken của OpenZeppelin, vì các khả năng token trong gbc.compact hiện tại còn rất sơ khai.

Bảo vệ dữ liệu như một tính năng cốt lõi

Để đạt được nguyên mẫu này, tôi đã thực hiện một chứng nhận dựa trên trạng thái riêng tư thay đổi. Cụ thể, khi người dùng nhập kết quả cho một lỗ golf cụ thể, thông tin riêng tư này sẽ cập nhật vào chứng nhận latestResult(), để hợp đồng có thể kích hoạt hàm nextHole() và cập nhật số dư trong sổ ghi chép.

Hướng dẫn cài đặt

Như đã mô tả trong README,

Bắt đầu bằng cách chạy npm install ở thư mục gốc.

Đối với hợp đồng

  1. Chạy npm install từ thư mục boilerplate/contract
  2. Chạy npm run compact từ thư mục boilerplate/contract
  3. Chạy npm run build từ thư mục boilerplate/contract

Đối với CLI

  1. Chạy npm install từ thư mục boilerplate/contract-cli
  2. Chạy npm run build
  3. Chạy npm run standalone hoặc npm run testnet-remote (cái sau yêu cầu khởi động máy chủ proof qua docker)

Đối với UI

  1. Chạy npm install từ thư mục boilerplate/gbc-ui
  2. Chạy npm run dev từ thư mục boilerplate/gbc-ui
  3. Mở trình duyệt tại localhost:5173

Các thực tiễn tốt nhất

  • Luôn cập nhật tài liệu và ví dụ mẫu để hỗ trợ phát triển.
  • Thực hiện kiểm thử thường xuyên để đảm bảo tính ổn định của hợp đồng và giao diện người dùng.
  • Sử dụng các công cụ phân tích để theo dõi hiệu suất và phát hiện lỗi sớm.

Những cạm bẫy thường gặp

  • Không theo dõi trạng thái cập nhật có thể dẫn đến lỗi trong việc tính toán số dư.
  • Thiếu tài liệu có thể khiến quá trình phát triển trở nên khó khăn.

Mẹo hiệu suất

  • Tối ưu hóa mã bằng cách loại bỏ các phần không cần thiết và sử dụng cấu trúc dữ liệu thích hợp.
  • Kiểm tra tính tương thích của các phiên bản thư viện để tránh xung đột.

Giải quyết sự cố

  • Nếu gặp khó khăn trong việc triển khai, hãy kiểm tra các log và thông báo lỗi để xác định nguyên nhân.
  • Tham khảo cộng đồng hoặc các diễn đàn trực tuyến để tìm kiếm sự trợ giúp.

Kết luận

Dự án GBC không chỉ là một token thú vị mà còn là một ví dụ điển hình cho việc bảo vệ thông tin cá nhân trong blockchain. Hy vọng rằng qua bài viết này, bạn sẽ có thêm thông tin hữu ích và cảm hứng để phát triển các ứng dụng tương tự. Nếu bạn có bất kỳ câu hỏi nào, hãy để lại bình luận bên dưới nhé!

Câu hỏi thường gặp (FAQ)

1. GBC là gì?
GBC là một token ERC-20 được sử dụng để khuyến khích người chơi golf cải thiện kỹ năng của họ.

2. Làm thế nào để bảo vệ thông tin cá nhân khi sử dụng GBC?
GBC sử dụng công nghệ Midnight để đảm bảo rằng thông tin cá nhân không bị tiết lộ trong quá trình xác minh.

3. Có tài liệu nào hướng dẫn sử dụng GBC không?
Có, bạn có thể tìm thấy hướng dẫn chi tiết trong README của dự án.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào