M08-L03 · Defi And Token Economics

M08 — Staking Reward Accounting

M08 — Staking Reward Accounting

1. Bài toán

Thiết kế mô hình staking reward accounting để hiểu các ràng buộc kế toán của DeFi.

2. Vấn đề

Không thể dựa vào UI hoặc backend để đảm bảo invariant tài sản; integer division, rounding, quyền truy cập và thao túng giá gây rủi ro.

3. Giải pháp

Mô hình hóa state và kiểm tra các điều kiện trước/sau mỗi thao tác bằng smart contract cùng unit tests.

4. Lý thuyết

Đọc solution/src/StakingRewards.sol và xác định state, công thức, preconditions, invariants. Đây là mô hình toán học, không phải protocol production; không giữ hoặc chuyển tài sản thật.

5. Lab chi tiết

  1. Cài Foundry, kiểm tra forge --version.
  2. Mở starter/README.md, tự viết contract.
  3. Đối chiếu solution/src/StakingRewards.sol.
  4. Chạy cd solution && forge test -vvv.
  5. Thay đổi input, thử trường hợp biên và xem revert.

6. Expected output

[PASS] testScenario(); forge test exit code 0 (expected, chưa xác minh trên môi trường hiện tại).

7. Exercises

8. Interview

  1. Tại sao integer rounding ảnh hưởng tài sản trong DeFi?
  2. State invariant là gì và test thế nào?
  3. Vì sao mô hình này không được dùng production?
  4. Làm sao giảm rủi ro từ price oracle?