Balancer 流動性挖礦計算

Andy Tai
Nov 18, 2020

--

這幾天開始研究 Balancer 流動性挖礦怎麼分配,發現官方文件沒有隨著社群治理一起更新,所以在這裡整理一下現在 (2020/11/18) BAL 的分配計算方式。

BAL 每週分配 145,000 個,其中 45,000 個分配給 BAL staking ,剩下的照比例分配給加權後的總流動性。舉例來說,如果加權後的總流動性是 1,450,000 USD,那就是每提供一塊錢流動性可以分到 0.1 BAL。

所以 BAL 的分配就是圍繞著怎麼計算這個總流動性,大方向來說就是能夠為平台帶來越多流動性或是越可能承受無常損失的行為應該受到鼓勵,其中需要考慮的因素有

1. Fee factor

流動性池收越少的手續費,就會有越多人來用,所以手續費高加權就低,具體公式如下,其中 k = 0.25。如果 fee = 0.1 % ,那 (0.25 * 0.1) 的平方是 0.000625 ,最後 e 的 -0.000625 次方為 0.9994 ,所以 Fee factor 在手續費 0.1% 的情況下是 0.9994。

2. Ratio factor

流動池兩個資產的比例越接近 50 : 50,流動性越好,所以加權較高。具體公式為 4 * w1 * w2 也就是 4 乘以兩個資產各自的比例,例如 50 : 50 就是 4 * 0.5 * 0.5 = 1,如果是 80 : 20 就是 4 * 0.8 *0.2 = 0.64

3. Wrap factor

流動池的兩個資產如果非常像,例如 WETH/cETH 或是 DAI/aDai 這種流動池沒什麼存在的必要,因為有其他方式可以在這兩種資產中切換,所以這種池的加權應該要比較低,依照相似的程度分別為 0.1 (hard peg), 0.7 (soft peg), 1 (not peg)

4. Cap factor

如果流動池的資產不熱門,那對平台的幫助當然也比較小,所以除了 ETH, DAI, USD,WBTC 之外的 token 都有各自的上限,不過名單也常常投票更新。
例如假設 A token 有上限 10 M USD ,但是目前平台上有 20 M ,那在計算總流動性時 A token 就要乘上 10 / 20 = 0.5 ,等於你提供一塊錢的 A token 最後只算提供五毛。

5. Bal staking boost

以上幾個參數都比較好理解也比較直覺,不過這個 Bal staking boost 就很複雜。為了鼓勵 BAL 的持有者來提供流動性,所以社群投票讓每週分配的 145,000 BAL 裡面的 45,000 BAL 專門作為提供 BAL 流動性的獎勵(*2020/11/19 更新,這 45,000 不會分配給 BAL 官方投資人,等於是只給社群)。因為每週的總流動性跟 BAL 的流動性都是動態的,所以 staking boost 也是需要動態計算的,才能讓 BAL 流動性提供者能”剛好”分配到 45,000 / 145,000 = 31% 的 BAL。
假設在不加入 staking boost 的情況下平台的加權流動性是 327 M,其中有 17 M 不屬於官方投資人的 BAL (*2020/11/19 更新),這樣 BAL 只能分配到 17 /327 = 5% 的 BAL,不是我們想要的 31 ,所以我們要把 BAL 乘上 staking boost 讓他剛好分配到 31% ,具體算式為 (BAL * staking boost) / (加權流動性 + BAL * staking boost) = 31%,所以在這個例子裡 staking boost = 8.6 。

總結來說,池子費用越低越好,池子比例約接近 50 : 50 越好,提供的兩種資產是沒有上限的最好,並且提供 BAL 的報酬率會比提供同樣價值的貨幣高 staking boost 這麼多倍,以 2020/11/18 的數據來說大約是 8 倍。

參考資料:
1. Balancer 文件 (https://docs.balancer.finance/)
2. Balancer 社群治理 (https://snapshot.page/#/balancer)
3. Balancer 計算器 (https://pools.vision/)

--

--