20201001 SushiSwap を読むの続き
WIP: SushiSwap のマイグレーション の続き
Uniswap は Factory という単一のコントラクトから、swap する二つのトークンからなるトークンプールを表す Pair コントラクトを作成する
SushiSwap の Migrator を見ると factory と oldFactory という二つのアドレスを参照している
orig.burn(address(pair)); は https://uniswap.org/docs/v2/smart-contracts/pair/#burn-1 によれば、プールコントラクトを destroy する。引数の address に token0, token1 のどちらも送金するっぽい?
pair.mint(msg.sender); はペアトークンの発行をするっぽい?
MasterChef が新しいプール(Pair)を追加したり、SUSHI トークンを発行したりする
MasterChef.deposit
引数で指定された pid のプールの LP トークンを、msg.sender -> MasterChef に transfer する
msg.sender の SUSHI を増やす
MasterChef.migrate
migrator.migrate を呼び出す
migrator.migrate
引数で指定された古いプールの通貨ペアと同じ通貨ペアの新しいプールを作成
古いプールの LP トークンについて、MasterChef アドレスに残っているものを古いプール自身のアドレスに transfer
古いプールの LP トークンを burn する
新しいプールの LP トークンを mint する