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
- Chạy
npm install
từ thư mụcboilerplate/contract
- Chạy
npm run compact
từ thư mụcboilerplate/contract
- Chạy
npm run build
từ thư mụcboilerplate/contract
Đối với CLI
- Chạy
npm install
từ thư mụcboilerplate/contract-cli
- Chạy
npm run build
- Chạy
npm run standalone
hoặcnpm run testnet-remote
(cái sau yêu cầu khởi động máy chủ proof qua docker)
Đối với UI
- Chạy
npm install
từ thư mụcboilerplate/gbc-ui
- Chạy
npm run dev
từ thư mụcboilerplate/gbc-ui
- 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.