Skip to content

智能合約

合約層是資金的唯一真相來源。刻意保持精簡:一個工廠、三種獎池實作、一個共用基底。

PoolFactoryOpenZeppelin Clones 最小代理模式,為每場 Loot 部署一個獎池。三種實作模板(各對應一種資產)只部署一次;每場新 Loot 是輕量代理,指向對應模板並初始化活動設定。

因此單場部署成本遠低於完整合約,大量小活動才划得來。工廠還會在創建時把當前驗證服務地址寫進獎池,即使協議日後輪替驗證者,該獎池的授權者在其生命週期內不變。

實作持有存入轉出
ETHPool原生幣msg.value直接 send
ERC20Pool單一 ERC-20approve + transferFromsafeTransfer
ERC721Pool指定 NFT批次 safeTransferFrom逐 token 轉

三者共用 PoolBase(含重入防護),集中管理設定、出資帳本、狀態邏輯、領取/取回流程。

創建時獎池快照不可變的 config:創作者、驗證者、代幣地址、資產類型、玩法、起迄時間、最大領取人數、是否允許外部出資。並追蹤 state:剩餘餘額、累計存入與領取、出資者與領取者計數。

狀態是推算的,不另外存:

  • Pending — 開始時間尚未到,或獎池尚未有出資。
  • Active — 開始時間已到且至少有一筆出資——開放領取。
  • Ended — 時間到、名額滿或餘額歸零。

出資只在 Pending 接受。進行中的獎池固定,參與者永遠對已知餘額領取。

每位出資者的金額——ERC-721 則含 token ID——記在鏈上。某地址第一筆存入會增加出資者計數。這份帳本讓取回公平:沒人能取回超過自己出的。

每個重要動作都 emit 事件——獎池創建、出資、領取、取回、獎池結束、驗證者/實作/治理變更。索引器消費這些事件建讀取模型;任何人都能從鏈上 log 還原整場 Loot 的歷史。透明是系統屬性,不是後加功能。