Trang này được dịch tự động. Bản gốc tiếng Anh là phiên bản chính thức. Đọc bằng tiếng Anh
Chuyển đến nội dung chính

Thanh toán & Đáo hạn

Quyền chọn trên Hypercall là kiểu châu Âu và được thanh toán bằng tiền mặt. Tại thời điểm đáo hạn, các vị thế được thanh toán tự động dựa trên giá tham chiếu của tài sản cơ sở, với giá trị thanh toán được ghi có hoặc ghi nợ vào tài khoản của bạn.

Thời điểm đáo hạn

Trên mạng chính, các hợp đồng SpaceX (SPCX) đáo hạn lúc 4:00 PM ET vào ngày đáo hạn.

Testnet hiện đáo hạn lúc 08:00 UTC vào ngày đáo hạn.

Tại thời điểm đáo hạn:

  • Lệnh mới bị từ chối
  • Các lệnh đang mở bị hủy
  • Các vị thế bước vào quy trình thanh toán

Vòng đời của công cụ giao dịch

Các công cụ giao dịch trải qua ba trạng thái:

Trạng tháiMô tảGiao dịch
ActiveGiao dịch bình thườngĐược bật
Expired Pending PriceĐang chờ giá thanh toán từ oracleBị tắt
SettledThanh toán hoàn tất, vị thế đã đóngN/A

Chuyển đổi trạng thái

  1. Active → Expired Pending Price: Đã đến thời điểm đáo hạn của hợp đồng
  2. Expired Pending Price → Settled: Giá thanh toán đã có và tất cả vị thế đã được thanh toán

Khi một công cụ giao dịch chuyển sang trạng thái Expired Pending Price, tất cả lệnh đang mở sẽ bị hủy và lệnh mới bị từ chối với thông báo "Instrument has expired".

Giá thanh toán

Giá thanh toán là TWAP 30 phút (Time-Weighted Average Price - Giá trung bình theo thời gian) của giá chỉ số Hyperliquid Oracle cho tài sản cơ sở.

Tham sốGiá trị
Nguồn giáHyperliquid Oracle (giá chỉ số)
Cửa sổ TWAP30 phút
Kết thúc cửa sổThời điểm đáo hạn hợp đồng

Oracle bắt đầu lấy mẫu 30 phút trước khi đáo hạn và tính TWAP tại thời điểm đáo hạn.

Việc thanh toán yêu cầu TWAP đã được hoàn tất. Nếu giá hoàn tất đó chưa có tại thời điểm đáo hạn, công cụ giao dịch sẽ ở lại trạng thái Expired Pending Price và tự động thử lại. Giao dịch đã bị tắt trong trạng thái này, nhưng các khoản ghi có và ghi nợ tiền mặt chỉ được ghi nhận sau khi có giá oracle hoàn tất.

Tính toán giá trị thanh toán

Giá trị thanh toán được tính bằng giá trị nội tại của quyền chọn tại thời điểm đáo hạn:

Quyền chọn mua (Call):

Settlement Value=max(0,SK)×Q\text{Settlement Value} = \max(0, S - K) \times Q

Quyền chọn bán (Put):

Settlement Value=max(0,KS)×Q\text{Settlement Value} = \max(0, K - S) \times Q

Trong đó:

  • SS = Giá thanh toán (TWAP 30 phút)
  • KK = Giá thực hiện
  • QQ = Quy mô vị thế (có dấu: dương cho long, âm cho short)

Ví dụ

Long Call (lãi - ITM):

  • Vị thế: Long 2 BTC-100000-C
  • Giá thanh toán: $105,000
  • Giá trị nội tại: max(0, 105000 - 100000) = $5,000
  • Giá trị thanh toán: 5,000×2=+5,000 × 2 = **+10,000** (được ghi có)

Short Call (lãi - ITM):

  • Vị thế: Short 2 BTC-100000-C
  • Giá thanh toán: $105,000
  • Giá trị thanh toán: 5,000×2=5,000 × -2 = **-10,000** (bị ghi nợ)

Long Put (lỗ - OTM):

  • Vị thế: Long 1 BTC-100000-P
  • Giá thanh toán: $105,000
  • Giá trị nội tại: max(0, 100000 - 105000) = $0
  • Giá trị thanh toán: $0 (đáo hạn vô giá trị)

Quy trình thanh toán

Khi thanh toán diễn ra:

  1. Lấy giá: Oracle trả về TWAP 30 phút
  2. Tính giá trị: Giá trị nội tại được tính cho từng vị thế
  3. Cập nhật tiền mặt: Giá trị thanh toán được cộng vào (long ITM) hoặc trừ khỏi (short ITM) số dư tài khoản
  4. Xóa vị thế: Vị thế được đóng và xóa khỏi danh mục
  5. Phát sự kiện: Thông báo PositionExpired được gửi qua WebSocket

Việc thanh toán được xử lý một cách nguyên tử (atomic) cho từng vị thế với đảm bảo tính idempotent. Việc phát lại hoặc khởi động lại không thể gây ra thanh toán hai lần.

Sự kiện WebSocket

PositionExpired

Được gửi khi một vị thế được thanh toán:

{
"type": "PositionExpired",
"wallet_address": "0x...",
"symbol": "BTC-20250131-100000-C",
"position_size": 2.0,
"settlement_price": 5000.0,
"settlement_value": 10000.0,
"timestamp": 1738310400000
}
TrườngMô tả
position_sizeQuy mô vị thế có dấu (dương = long, âm = short)
settlement_priceGiá trị nội tại trên mỗi hợp đồng
settlement_valueTổng giá trị thanh toán bằng tiền mặt

MarketExpired

Được gửi khi một công cụ giao dịch chuyển sang trạng thái Expired Pending Price:

{
"type": "MarketUpdate",
"symbol": "BTC-20250131-100000-C",
"status": "MARKET_EXPIRED",
"timestamp": 1738310400000
}

Các endpoint API

Lấy trạng thái công cụ giao dịch

GET /instruments/{symbol}

Trả về trạng thái hiện tại của công cụ giao dịch (ACTIVE, EXPIRED_PENDING_PRICE, hoặc SETTLED).

Lấy lịch sử thanh toán

GET /settlement/history?wallet=0x...

Trả về các bản ghi thanh toán cho tài khoản của bạn.

Phản hồi:

{
"success": true,
"data": [
{
"symbol": "BTC-20250131-100000-C",
"position_size": 2.0,
"settlement_price": 5000.0,
"settlement_value": 10000.0,
"settled_at": 1738310400000
}
]
}

Xử lý sự cố

Oracle không khả dụng

Nếu oracle không thể cung cấp giá thanh toán tại thời điểm đáo hạn:

  • Công cụ giao dịch vẫn ở trạng thái Expired Pending Price
  • Hệ thống thử lại mỗi 30 giây
  • Cảnh báo trên môi trường production được kích hoạt nếu việc chờ giá hoàn tất kéo dài

Giao dịch bị chặn ngay lập tức tại thời điểm đáo hạn bất kể oracle có khả dụng hay không.

Giá hoàn tất bị trì hoãn

Nếu TWAP hoàn tất bị trì hoãn:

  • Việc thanh toán bị trì hoãn
  • Hệ thống chờ giá thanh toán hoàn tất từ oracle
  • Người dùng có thể thấy công cụ giao dịch vẫn ở trạng thái Expired Pending Price
  • Khoản thanh toán tiền mặt sẽ xuất hiện sau khi quy trình thử lại áp dụng giá hoàn tất

Khởi động lại hệ thống

Trạng thái thanh toán được lưu vào cơ sở dữ liệu. Nếu hệ thống khởi động lại:

  • Các công cụ giao dịch đã đáo hạn được xác định từ DB khi khởi động
  • Việc thanh toán tiếp tục tự động
  • Đảm bảo tính idempotent ngăn chặn thanh toán hai lần

Tham số

Tham sốGiá trịMô tả
Khoảng thời gian kiểm tra đáo hạn60 giâyTần suất hệ thống kiểm tra các đợt đáo hạn
Cửa sổ TWAP30 phútCửa sổ tính trung bình giá thanh toán
Khoảng thời gian thử lại thanh toán30 giâyTần suất thử lại khi giá không khả dụng
Ngưỡng cảnh báo giá hoàn tất30 phútCảnh báo nếu công cụ giao dịch đã đáo hạn vẫn đang chờ giá hoàn tất
Ngưỡng cảnh báo thanh toán đang chờ1 giờCảnh báo nghiêm trọng nếu các bản ghi thanh toán chưa được áp dụng

Thực hành tốt nhất

  1. Theo dõi ngày đáo hạn: Theo dõi ngày đáo hạn của các vị thế qua endpoint danh mục
  2. Lên kế hoạch trước: Đóng vị thế trước khi đáo hạn nếu bạn muốn tránh thanh toán
  3. Kiểm tra giá thanh toán: Xác minh giá oracle khớp với kỳ vọng của bạn
  4. Đăng ký WebSocket: Nhận sự kiện PositionExpired theo thời gian thực để được thông báo ngay lập tức
  5. Duy trì vùng đệm ký quỹ: Đảm bảo đủ ký quỹ cho các khoản thanh toán vị thế short ITM tiềm năng

Thanh toán trên chuỗi (On-Chain)

Trên mạng chính, giá thanh toán được đăng lên chuỗi sau khi tính toán:

  • Oracle tính TWAP thanh toán và công bố giá đáo hạn cuối cùng.
  • Hợp đồng Exchange có thể xác minh giá thanh toán đã đăng trên chuỗi.
  • Dữ liệu oracle trực tiếp không được truyền lên chuỗi. Giá thanh toán cuối cùng là tham chiếu trên chuỗi cho việc đáo hạn.

Xem thêm: