0
0
Lập trình
Thaycacac
Thaycacac thaycacac

Dettery - Nền tảng Xổ Số Phi Tập Trung trên Ethereum

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

• 7 phút đọc

Giới thiệu

Dettery là một ứng dụng xổ số phi tập trung được xây dựng trên Ethereum Sepolia testnet, cung cấp một hệ thống xổ số minh bạch, công bằng và an toàn. Với Dettery, bạn có thể tham gia xổ số một cách dễ dàng và nhận thưởng tự động mà không cần qua bất kỳ trung gian nào.

Tính năng nổi bật

  • Bảo mật & Minh bạch
    • Hợp đồng thông minh đã được xác thực - Tất cả hợp đồng đều có thể kiểm tra và xác minh.
    • Ngẫu nhiên từ Block Hash - Sử dụng dữ liệu blockchain để tạo ra sự ngẫu nhiên miễn phí và an toàn.
    • Không có cơ quan trung ương - Hoạt động hoàn toàn phi tập trung.
    • Thanh toán tự động - Người chiến thắng nhận 80%, quản trị viên nhận 20%.
    • Blockchain công khai - Tất cả giao dịch đều minh bạch và có thể xác minh.

Trải nghiệm người dùng

  • Giao diện hiện đại - Thiết kế đẹp mắt và phản hồi tốt với Tailwind CSS.
  • Cập nhật thời gian thực - Không cần làm mới trang để cập nhật xổ số.
  • Tính năng người tham gia - Hiển thị tất cả người tham gia và số lần tham gia của họ.
  • Hỗ trợ nhiều lần tham gia - Người dùng có thể tham gia nhiều lần.
  • Tích hợp ví - Hỗ trợ MetaMask và ví Web3.

Tính năng kỹ thuật

  • TypeScript - Đảm bảo tính an toàn kiểu toàn diện cho ứng dụng.
  • Wagmi & Viem - Công cụ phát triển Ethereum hiện đại.
  • Hardhat - Khung phát triển hợp đồng thông minh chuyên nghiệp.
  • Sepolia Testnet - Đã triển khai và thử nghiệm trên testnet của Ethereum.
  • Cập nhật tự động - Dữ liệu thời gian thực sau giao dịch.

Hướng dẫn nhanh

Yêu cầu trước khi bắt đầu

  • Node.js 18+
  • npm hoặc yarn
  • Ví MetaMask hoặc Web3
  • ETH Sepolia (nhận từ faucet)

Cài đặt

  1. Clone kho lưu trữ
    bash Copy
    git clone https://github.com/yourusername/dettery.git  
    cd dettery  
  2. Cài đặt phụ thuộc
    bash Copy
    # Cài đặt phụ thuộc frontend  
    npm install  
    # Cài đặt phụ thuộc hợp đồng thông minh  
    cd contracts  
    npm install  
    cd ..  
  3. Cài đặt môi trường
    bash Copy
    # Sao chép mẫu môi trường  
    cp contracts/.env.example contracts/.env  
    # Chỉnh sửa contracts/.env với cấu hình của bạn  
    SEPOLIA_RPC_URL=https://ethereum-sepolia.publicnode.com  
    PRIVATE_KEY=your_private_key_here  
    ETHERSCAN_API_KEY=your_etherscan_api_key  
  4. Triển khai hợp đồng thông minh
    bash Copy
    cd contracts  
    npx hardhat compile  
    npx hardhat run scripts/deploy.ts --network sepolia  
  5. Cập nhật cấu hình Frontend
    javascript Copy
    // Cập nhật src/lib/config.ts với địa chỉ hợp đồng của bạn  
    export const FACTORY_ADDRESS = 'your_deployed_contract_address';  
  6. Khởi động ứng dụng
    bash Copy
    npm run dev  
  7. Mở trong trình duyệt
    http://localhost:3000

Cách hoạt động

  1. Tạo Pool xổ số

    • Đặt giá vé và số lượng người chơi tối đa.
    • Triển khai một hợp đồng xổ số mới.
    • Xổ số sẽ sẵn sàng cho việc tham gia.
  2. Tham gia

    • Kết nối ví Web3 của bạn.
    • Thanh toán giá vé để tham gia.
    • Hỗ trợ nhiều lần tham gia cho mỗi người dùng.
  3. Chọn người chiến thắng

    • Khi xổ số đạt số người chơi tối đa, hệ thống sẽ chờ 2 block để đảm bảo ngẫu nhiên công bằng.
    • Sự ngẫu nhiên từ block hash sẽ tự động chọn người chiến thắng.
  4. Thanh toán

    • Người chiến thắng nhận 80% tổng pool.
    • Quản trị viên nhận 20% phí.
    • Tất cả giao dịch đều tự động và minh bạch.

Kiến trúc

Hợp đồng thông minh

Copy
contracts/  
├── Lottery.sol # Logic xổ số cá nhân  
├── LotteryFactory.sol # Nhà máy tạo xổ số  
└── scripts/  
└── deploy.ts # Kịch bản triển khai  

Frontend

Copy
src/  
├── app/ # Next.js App Router  
├── components/ # Các thành phần React  
│ ├── ConnectWallet.tsx  
│ ├── CreateLottery.tsx  
│ ├── LotteryCard.tsx  
│ └── LotteryList.tsx  
└── lib/  
└── config.ts # Địa chỉ hợp đồng và ABIs  

Cấu hình

Biến môi trường

Tạo file contracts/.env:

Copy
SEPOLIA_RPC_URL=https://ethereum-sepolia.publicnode.com  
PRIVATE_KEY=your_private_key_here  
ETHERSCAN_API_KEY=your_etherscan_api_key  

Địa chỉ hợp đồng

Cập nhật file src/lib/config.ts:

Copy
export const FACTORY_ADDRESS = '0xDE22C7fF7Ac8C7645AfB673a4Ea7087705FE94Ce';  

Kiểm thử

Kiểm thử hợp đồng thông minh

Copy
cd contracts  
npx hardhat test  

Kiểm thử Frontend

Copy
npm run test  

Kiểm thử thủ công

  • Kết nối MetaMask với testnet Sepolia.
  • Nhận ETH Sepolia từ faucet.
  • Tạo pool xổ số.
  • Tham gia với nhiều ví.
  • Kiểm thử việc chọn người chiến thắng và thanh toán.

Chi tiết hợp đồng thông minh

Hợp đồng xổ số

solidity Copy
contract Lottery {  
// Các biến trạng thái chính  
uint256 public immutable i_ticketPrice;  
uint256 public immutable i_maxPlayers;  
address payable public immutable i_admin;  

// Trạng thái xổ số  
enum LotteryState { OPEN, CALCULATING_WINNER, CLOSED }
LotteryState private s_lotteryState;  

// Người tham gia và người chiến thắng  
address payable[] public s_players;  
address public s_winner;  

// Ngẫu nhiên  
uint256 public s_commitBlock;  
uint256 public s_revealBlock;  

Các chức năng chính

  • enter() - Tham gia xổ số bằng cách trả giá vé.
  • pickWinner() - Chọn người chiến thắng bằng sự ngẫu nhiên từ block hash.
  • getPlayers() - Lấy danh sách tất cả người tham gia.
  • getLotteryState() - Lấy trạng thái xổ số hiện tại.

Tính năng bảo mật

Ngẫu nhiên

  • Sử dụng blockhash(), block.timestamp, và block.prevrandao.
  • Cam kết với block ngẫu nhiên, tiết lộ sau 2 block.
  • Ngăn chặn việc thao túng và đảm bảo tính công bằng.

Kiểm soát quyền truy cập

  • Chỉ người tham gia xổ số mới có thể kích hoạt việc chọn người chiến thắng.
  • Quản trị viên không thể thao túng kết quả.
  • Tất cả các chức năng đều công khai và có thể kiểm tra.

Minh bạch

  • Tất cả dữ liệu xổ số đều công khai.
  • Mã nguồn hợp đồng đã được xác minh.
  • Tất cả giao dịch đều trên chuỗi.

Triển khai

Testnet Sepolia (Hiện tại)

  • Địa chỉ hợp đồng nhà máy: 0xDE22C7fF7Ac8C7645AfB673a4Ea7087705FE94Ce
  • Mạng: Ethereum Sepolia
  • RPC: https://ethereum-sepolia.publicnode.com

Triển khai Mainnet

  • Cập nhật biến môi trường.
  • Triển khai lên mainnet.
  • Xác minh hợp đồng trên Etherscan.
  • Cập nhật cấu hình frontend.

Tham gia phát triển

Chúng tôi hoan nghênh sự đóng góp! Vui lòng xem Hướng dẫn đóng góp của chúng tôi để biết thêm chi tiết.

Thiết lập phát triển

  • Fork kho lưu trữ.
  • Tạo một nhánh tính năng.
  • Thực hiện thay đổi của bạn.
  • Thêm các bài kiểm tra nếu có.
  • Gửi pull request.

Giấy phép

Dự án này được cấp phép theo Giấy phép MIT - xem file LICENSE để biết thêm chi tiết.

Hỗ trợ

  • Vấn đề: GitHub Issues
  • Thảo luận: GitHub Discussions
  • Tài liệu: Wiki

Cảm ơn

  • Hardhat - Khung phát triển hợp đồng thông minh.
  • Next.js - Khung React.
  • Wagmi - React hooks cho Ethereum.
  • Viem - Giao diện TypeScript cho Ethereum.
  • Tailwind CSS - Khung CSS.

Lộ trình

  • Triển khai Mainnet.
  • Ứng dụng di động (React Native).
  • Các nhà cung cấp ngẫu nhiên bổ sung.
  • Các loại xổ số và chủ đề.
  • Token quản trị.
  • Hỗ trợ đa chuỗi.
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