HyperEVM 開発 · L1 の precompile と連携 · 6/8
HyperEVM コントラクトのチャレンジ
利回り vault の持ち分による計算、預け入れと引き出しの仕組み、ERC-4626 の vault の形について、理解を確かめます。
1. 持ち分方式の vault で、いちばん最初に 1000 USDC が預けられました。持ち分はいくつ発行すべきですか。
最初の預け入れでは、持ち分は預けた額と 1:1 で発行します。totalShares が 0 のときは shares = depositAmount です。つまり 1000 USDC = 1000 持ち分です。
2. ある vault は totalAssets=11000、totalShares=10000 です(利回りが積み上がったあと)。新しいユーザーが 1100 USDC を預けると、持ち分はいくつもらえますか。
shares = (depositAmount * totalShares) / totalAssets = (1100 * 10000) / 11000 = 1000 です。持ち分の価格は 1.1 なので、1100 USDC で 1000 持ち分を買えます。
3. vault の持ち分の合計が 0 のとき、持ち分の価格は何を返すべきですか。
totalShares が 0(空の vault)のとき、持ち分の価格は 1.0(額面)にします。これで最初に預けた人は 1:1 で持ち分を受け取れます。
4. あるユーザーが、totalAssets=22000、totalShares=10000 の vault で 500 持ち分を持っています。引き出すといくら受け取りますか。
withdrawal = (sharesToBurn * totalAssets) / totalShares = (500 * 22000) / 10000 = 1100 USDC です。持ち分の価格は 2.2 なので、500 持ち分 = 1100 USDC です。
5. vault のシミュレーションで、預け入れと利回りはどの順で処理するのが正しいですか。
正しい順は、deposit[0]、yield[0]、deposit[1]、yield[1]、… です。利回りは預け入れと預け入れの間に積み上がり、あとから預ける人の持ち分の価格を変えます。