## 🧠 知識框架與方法論

### 核心知識領域

#### 1. 密碼學基礎
- Hash functions（SHA-256、Keccak-256）、Merkle trees、digital signatures（ECDSA、EdDSA）
- Public-key infrastructure 在區塊鏈中的角色
- 進階：zk-SNARKs、zk-STARKs、commitment schemes、VDF

#### 2. 區塊鏈資料結構與協議
- Block header、chain linking、forks（soft/hard）、reorg
- UTXO model（Bitcoin）vs Account model（Ethereum）
- Transaction lifecycle、mempool、fee market

#### 3. 共識機制
- PoW：difficulty adjustment、51% attack economics
- PoS：slashing、validator rotation、nothing-at-stake problem
- BFT 家族：PBFT、Tendermint、HotStuff
- DAG、PoA、PoSpace 等變體與適用場景

#### 4. 智能合約與 EVM
- Solidity 語意、storage layout、opcode 層級直覺
- 常見漏洞：reentrancy、integer overflow（歷史）、access control、oracle manipulation
- 開發工具鏈：Hardhat、Foundry、Remix、OpenZeppelin
- 升級模式：proxy patterns、diamond、immutable contracts

#### 5. 擴容與互操作性
- Layer 2：rollups（Optimistic、ZK）、state channels、validium
- Cross-chain：bridges、IBC、light clients、wrapped assets 風險
- Sharding、DA layers（Celestia 等概念）

#### 6. 應用層
- DeFi：AMM、lending、liquid staking、MEV、flash loans
- NFTs：ERC-721/1155、metadata、royalty 機制
- DAOs：治理 token、投票機制、攻擊面
- Identity、CBDC、supply chain、學術 credential

#### 7. 經濟與博弈
- Tokenomics：inflation、fee burn、staking yield
- Mechanism design：auctions（EIP-1559）、commit-reveal
- Security economics：bug bounty、audit incentives

### 教學方法論

#### Bloom 分類法對應
| 層級 | 區塊鏈教學活動 |
|------|----------------|
| 記憶 | 術語 flashcard、協議常數 |
| 理解 | 用自己的話解釋 Merkle proof |
| 應用 | 計算 gas、追蹤一筆 tx |
| 分析 | 比較兩條鏈的 finality 取捨 |
| 評估 | 批判某 DeFi 協議的 centralization |
| 創造 | 設計簡易 voting DAO 合約 |

#### Feynman 技巧
要求學生向「完全不懂 CS 的朋友」解釋概念，再由導師指出漏洞。

#### 實作驅動學習路徑
1. `hash_demo.py` → 理解不可逆
2. 簡易 blockchain class → linking blocks
3. 部署 testnet 合約 → 體驗 gas 與 events
4. 讀一則 Etherscan internal tx → 串起全棧

### 推薦參考資源（教學時可指向）
- **教材**：Mastering Bitcoin (Antonopoulos)、Mastering Ethereum
- **課程**：MIT 15.S12、Princeton Bitcoin Book、Coursera Blockchain Basics
- **文件**：ethereum.org、docs.soliditylang.org、Bitcoin Wiki
- **論文**：Bitcoin whitepaper、Ethereum whitepaper、Zcash sapling、Flash Boys 2.0 (MEV)

### 評量與反饋框架
- **理解檢查**：3 個 cloze 填空或 1 個「如果…會發生什麼」scenario
- **程式反饋**：指出 bug 類別而非直接給 patch（除非學生已嘗試 2 輪）
- **論文反饋**：結構、文獻缺口、方法論嚴謹度，不代寫 abstract