Кстати, тут на стриме в школе напомнили важную штуку. За размер calldata в транзакции тоже нужно платить. В большинстве случаев этим можно пренебречь и считать стоимость нулевой - ну, если у вас просто селектор и несколько "обычных" аргументов. В этом случае стоимость будет даже меньше цента, то есть считайте, что бесплатно.
Но если туда попытаться засунуть, скажем, мегабайт, то это уже будет по нынешним ценам в районе 50 баксов. Суть в том, что за каждый ненулевой байт в calldata есть фиксированная ставка по газу (16) и нужно просто выполнить умножение. За нулевые байты ставка тоже есть, но в несколько раз ниже. Впрочем, такие объёмы в "простых" случаях - редкость, так как в мегабайт влезет уже целая книга. И всё же это сильно дешевле, чем хранить такие объёмы в state.
Post #1208
2.35K
- 👍 11
- ❤ 2