This repository was archived by the owner on Jun 4, 2024. It is now read-only.
Description 問題
minimal proxyの生成であるFactory.deployが300000gasほどかかる。minimal proxyの生成自体は60000gasほどなので、proxy生成後のinitialize関数においてstorageを使い過ぎていることが問題であると言える。
弊害
普通にBulksaleをデプロイするよりは1/10のコストにできてはいるものの、さらに34%ほどコストを圧縮できる余地があり、それができていない。
見積もり
現在 BulksaleV1 は 9 slots のstorageを使用しているが、bytes32[2] の2 slotsに圧縮できる余地がある。
仮実装
https://github.com/DeFiGeek-Community/BulksaleFactory/blob/gasgolf/bulksale-initialize/contracts/BulksaleV1.sol#L94-L175
結果と課題
前述のSSTORE削減・圧縮策は実装でき、かつガス代削減効果が確認できた。120000gasほどのガス代削減が期待できた。
問題があったのは、storage保存とは関係のない関数呼び出しの部分。ここは本来2000gasほどしかかからない処理なのに、なぜか関数呼び出しに400000gas徴収されるようになった。(bytes(len=63)でもbytes32[2]でも高額なままだった。しかしmain branchのbytes abiArgs(len=288)の場合は2000gasほどで済んでいる。)
撤退根拠は 1) 本ガス代削減の効果が120000gasであり、平時において$20ほどのガス代削減になるが、これはORUが実用化されている昨今の状況を鑑みるに、必死に追うべき目標ではないと言える。2) gas golfをしないことによってコントラクトコードが人間にとって読みやすく、バグが介在しにくくなるメリットとのトレードオフと考えることもできる 3) あたらしくコミュニティに入ってくるメンバーが問題箇所を解決しV2以降に公開することもまた選択肢として悪くないと判断した
ネクストアクション
期日
Reactions are currently unavailable
問題
弊害
見積もり
仮実装
https://github.com/DeFiGeek-Community/BulksaleFactory/blob/gasgolf/bulksale-initialize/contracts/BulksaleV1.sol#L94-L175
結果と課題
前述のSSTORE削減・圧縮策は実装でき、かつガス代削減効果が確認できた。120000gasほどのガス代削減が期待できた。
問題があったのは、storage保存とは関係のない関数呼び出しの部分。ここは本来2000gasほどしかかからない処理なのに、なぜか関数呼び出しに400000gas徴収されるようになった。(bytes(len=63)でもbytes32[2]でも高額なままだった。しかしmain branchのbytes abiArgs(len=288)の場合は2000gasほどで済んでいる。)
撤退根拠は 1) 本ガス代削減の効果が120000gasであり、平時において$20ほどのガス代削減になるが、これはORUが実用化されている昨今の状況を鑑みるに、必死に追うべき目標ではないと言える。2) gas golfをしないことによってコントラクトコードが人間にとって読みやすく、バグが介在しにくくなるメリットとのトレードオフと考えることもできる 3) あたらしくコミュニティに入ってくるメンバーが問題箇所を解決しV2以降に公開することもまた選択肢として悪くないと判断した
ネクストアクション
期日