Content
@
0 reply
0 recast
2 reactions
horsefacts
@horsefacts.eth
Optimizing my first serious L2 contracts has been a journey: 1) Dev: your intuitions are all wrong now. 2) Testnet: cheap L2 gas, cheap L1 calldata. Many tools overestimate L2 gas and it can outweigh calldata unlike IRL. 3) Mainnet: cheap L2 gas, L1 calldata is 20-100x testnet cost. Calldata costs dominate everything.
5 replies
6 recasts
22 reactions
horsefacts
@horsefacts.eth
My advice to others would be to 1) profile calldata during development as a proxy for total cost, the same way you're used to watching gas and 2) trust only mainnet forks to profile real cost—easy to fool yourself otherwise.
2 replies
0 recast
4 reactions
Aleks Bykhun
@caffeinum
what’s the easy way to profile calldata?
1 reply
0 recast
0 reaction
horsefacts
@horsefacts.eth
console.log(msg.data.length) 😹
1 reply
0 recast
1 reaction
Aleks Bykhun
@caffeinum
well haha… i also wonder how does this apply to contract deployment? do we pay for the whole code deployed anyway?
1 reply
0 recast
0 reaction
horsefacts
@horsefacts.eth
Yes, your contract's initcode is calldata, so you'll pay the L1 calldata cost to store it, just like other tx calldata.
0 reply
0 recast
1 reaction