智能合約
合約層是資金的唯一真相來源。刻意保持精簡:一個工廠、三種獎池實作、一個共用基底。
工廠與最小代理克隆
Section titled “工廠與最小代理克隆”PoolFactory 用 OpenZeppelin Clones 最小代理模式,為每場 Loot 部署一個獎池。三種實作模板(各對應一種資產)只部署一次;每場新 Loot 是輕量代理,指向對應模板並初始化活動設定。
因此單場部署成本遠低於完整合約,大量小活動才划得來。工廠還會在創建時把當前驗證服務地址寫進獎池,即使協議日後輪替驗證者,該獎池的授權者在其生命週期內不變。
| 實作 | 持有 | 存入 | 轉出 |
|---|---|---|---|
| ETHPool | 原生代幣 | msg.value | 原生轉帳 |
| ERC20Pool | 單一 ERC-20 | approve + transferFrom | safeTransfer |
| ERC721Pool | 指定 NFT | 批次 safeTransferFrom | 逐 token 轉 |
三者共用 PoolBase(含重入防護),集中管理設定、出資帳本、狀態邏輯、領取/取回流程。
目前主網部署如下。每條網路都有自己的 PoolFactory、實作合約、驗證服務和 multisig owner。
| 元件 | Ethereum 主網 | BNB Smart Chain 主網 |
|---|---|---|
| PoolFactory | 0x15223285C92f9bD1aFAfAB7e9B65c36B038e175D | 0x8b86CCc413875e80771A4cb156Df0e06268da49b |
| ETHPool | 0x56D28FF25e111d93eb536D24E70461e1c2EF9F4C | 0x4BB8d502a184Ab993c87116c8f087D5e46a2Ed29 |
| ERC20Pool | 0xf94DaB5F8dE94DEC45B10ED81b05438823ca3c17 | 0x56D28FF25e111d93eb536D24E70461e1c2EF9F4C |
| ERC721Pool | 0x8b86CCc413875e80771A4cb156Df0e06268da49b | 0xf94DaB5F8dE94DEC45B10ED81b05438823ca3c17 |
| Verifier(驗證服務) | 0x043B5B25Bd5a44EDb319910387F1C741F1eb4DDe | 0x043B5B25Bd5a44EDb319910387F1C741F1eb4DDe |
| Multisig owner | 0x50D08f2294ECD8410663A75e7D2D1AEaCd935Bc3 | 0x50D08f2294ECD8410663A75e7D2D1AEaCd935Bc3 |
部署元資料:
| 網路 | Deployer | Multisig threshold | 部署時間 |
|---|---|---|---|
| Ethereum 主網 | 0x043B5B25Bd5a44EDb319910387F1C741F1eb4DDe | 1 | 2026-06-01 07:42:14 UTC |
| BNB Smart Chain 主網 | 0x043B5B25Bd5a44EDb319910387F1C741F1eb4DDe | 1 | 2026-06-01 06:36:30 UTC |
創建時獎池快照不可變的 config:創作者、驗證者、代幣地址、資產類型、玩法、起迄時間、最大領取人數、是否允許外部出資。並追蹤 state:剩餘餘額、累計存入與領取、出資者與領取者計數。
狀態是推算的,不另外存:
- Pending — 開始時間尚未到,或獎池尚未有出資。
- Active — 開始時間已到且至少有一筆出資——開放領取。
- Ended — 時間到、名額滿或餘額歸零。
出資只在 Pending 接受。進行中的獎池固定,參與者永遠對已知餘額領取。
每位出資者的金額——ERC-721 則含 token ID——記在鏈上。某地址第一筆存入會增加出資者計數。這份帳本讓取回公平:沒人能取回超過自己出的。
每個重要動作都 emit 事件——獎池創建、出資、領取、取回、獎池結束、驗證者/實作/治理變更。索引器消費這些事件建讀取模型;任何人都能從鏈上 log 還原整場 Loot 的歷史。透明是系統屬性,不是後加功能。