zySync relies on event logs to trigger txs. The info in logs are quire comprehensive, however, there are cases where the same info can be obtained through function calldata. this will save quite some gas true!
There are multiple places where abi.encodePacked should be used in place of abi.encode. Given the value types, they will result in the same bytes, yet with less gas. As example:
keccak256(abi.encode(passThroughDataHash, metadataHash, auxiliaryOutputHash));
return abi.encode(_block.l2LogsTreeRoot, l2ToL1LogsHash, initialStorageChangesHash, repeatedStorageChangesHash);