ERC-4626 代幣化金庫
ERC-4626 是一套「生息金庫」的標準:你存入一種代幣,金庫拿它去運作(出借、耕作、質押),你則收到代表「自己在這只不斷增長的鍋中所佔份額」的份額代幣。隨著金庫獲利,每一份份額便能贖回更多基礎資產。在這個標準出現之前,每個收益聚合器(Yearn 式金庫、借貸包裝)都自創一套介面,整合方得為每一個各寫客製程式碼;ERC-4626 給了他們單一可對接的形狀。
它本身就是一個 ERC-20(份額即一種同質化代幣),外加一組針對基礎資產 asset() 所定義的函式:deposit(assets, receiver) 與 mint(shares, receiver) 用以存入、withdraw(assets, receiver, owner) 與 redeem(shares, receiver, owner) 用以取出、totalAssets() 給出鍋的大小,以及換算輔助函式 convertToShares 與 convertToAssets。匯率不過是「totalAssets 除以份額的 totalSupply」:當金庫有 1000 單位基礎資產撐著 800 份份額時,每份份額值 1.25 單位基礎資產。各 preview 函式(previewDeposit、previewRedeem 等)讓呼叫方能在動手前模擬出確切結果。
這個標準最重要的安全教訓,是針對「空金庫」的灌水(或稱「捐贈」)攻擊。若金庫一開始是空的,第一位存款人可存入 1 wei 鑄出 1 份份額,再直接把一大筆基礎資產轉進金庫,把份額價格灌得極高,使後來存款人的資金在換算份額時向下取整為零、形同被竊。現代實作內建的緩解手段包括「虛擬份額/資產偏移」,以及以一筆極小的初始存款(死份額)為金庫打底。取整方向同樣重要:規格要求取整一律朝對金庫有利的方向,以防每次操作都有價值滲漏給使用者。
份額與資產的換算;取整偏向金庫以阻止價值滲漏。
一份份額並不是對固定金額的固定請求權——它的贖回價值會隨金庫資產浮動。「份額數量」不變,而「每份份額對應的資產」會增長;讀餘額時切勿把兩者混為一談。