Chuyển tới nội dung chính

Cấu trúc dự án Aiken

Bài học này giúp bạn hiểu cách tổ chức một dự án Aiken chuyên nghiệp.

Mục tiêu học tập

  • Hiểu cấu trúc thư mục chuẩn
  • Biết mục đích từng thành phần
  • Nắm cách cấu hình dự án

Cấu trúc thư mục chuẩn

my-project/
├── aiken.toml # File cấu hình dự án
├── plutus.json # Output sau khi build
├── lib/ # Thư viện nội bộ
│ ├── types.ak # Định nghĩa types
│ ├── utils.ak # Hàm tiện ích
│ └── my_module/
│ └── helpers.ak
├── validators/ # Smart contracts
│ ├── spend.ak # Spending validator
└── env/ # Cấu hình môi trường
└── default.ak

Chi tiết từng thành phần

aiken.toml - File cấu hình

aiken.toml
name = "my-org/my-project"
version = "0.1.0"
license = "Apache-2.0"
description = "Mô tả dự án của bạn"

[repository]
user = "my-org"
project = "my-project"
platform = "github"

[[dependencies]]
name = "aiken-lang/stdlib"
version = "v2.2.0"
source = "github"

[[dependencies]]
name = "aiken-lang/fuzz"
version = "v2.1.0"
source = "github"

Thư mục lib/

Chứa code thư viện có thể tái sử dụng:

lib/
├── types.ak # Types dùng chung
├── utils.ak # Hàm helper
└── validation/
├── signature.ak # Logic xác thực chữ ký
└── time.ak # Logic xử lý thời gian

Thư mục validators/

Chứa các smart contract:

validators/
├── spend.ak # Spending validator

Thư mục env/ - Cấu hình môi trường

env/
├── default.ak # Cấu hình mặc định
├── testnet.ak # Cấu hình testnet
└── mainnet.ak # Cấu hình mainnet

Chuyển đổi môi trường

# Sử dụng cấu hình testnet
aiken build --env testnet

# Sử dụng cấu hình mainnet
aiken build --env mainnet

File plutus.json

Sơ đồ tổng quan

┌─────────────────────────────────────────────────────────────┐
│ PROJECT STRUCTURE │
│ │
│ ┌─────────────┐ │
│ │ aiken.toml │ ← Cấu hình + dependencies │
│ └─────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ lib/ │────▶│ validators/ │ │
│ │ (reusable) │ │ (contracts)│ │
│ └─────────────┘ └─────────────┘ │
│ │ │ │
│ └─────────┬─────────┘ │
│ ▼ │
│ ┌─────────────┐ │
│ │ aiken build │ │
│ └─────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ plutus.json │ ← Compiled output │
│ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘

Best Practices

1. Tổ chức theo tính năng

lib/
├── auction/
│ ├── types.ak
│ ├── validation.ak
│ └── helpers.ak
└── marketplace/
├── types.ak
└── validation.ak

2. Đặt tên nhất quán

LoạiConventionVí dụ
Filesnake_caseuser_info.ak
TypePascalCaseUserInfo
Functionsnake_casevalidate_user
Constantsnake_casemin_amount

Bước tiếp theo

Trong bài tiếp theo, chúng ta sẽ học về biến và hằng số trong Aiken - nền tảng để lưu trữ dữ liệu.