Closed palango closed 1 month ago
I've tested this on different testnets, with Holesky as Layer1. It seems to work as expected (well). Some lessons:
OP_BATCHER_MAX_CHANNEL_DURATION
(500-5000) will avoid making "empty" batcher txs and optimize the costs on L1. Also setting a high number of OP_BATCHER_TARGET_NUM_FRAMES
(combined with OP_BATCHER_MAX_CHANNEL_DURATION
) would optimize the L1 fees, at cost of increasing time interval for L2 block transition from unsafe
-> safe
(particularly if activity on L2 is low).Example of batcher transactions with different blob gas price conditions: High gas Fee: Low/Normal gas fee:
We need a Beacon Node provider for op-node syncing using blob data. So far the more reliable (and with a free-usage option) is https://www.rockx.com/. Using other providers (publicnode free holesky beacon endpoint) caused some issues.
For full syncing nodes we also might need a blob archive node: https://docs.optimism.io/builders/node-operators/management/blobs#configure-a-blob-archiver-archive-nodes See #232 and #233 for the respective issues.
Regarding costs, I assume it's still cheaper than posting it as call data?
For full syncing nodes we also might need a blob archive node: https://docs.optimism.io/builders/node-operators/management/blobs#configure-a-blob-archiver-archive-nodes
Yes, exactly (op-node fullsync)
Regarding costs, I assume it's still cheaper than posting it as call data?
In most and what we probably could say "expected" conditions, blob data should be cheaper than calldata (particularly on Mainnet). But I guess there can be conditions where it can be more expensive to use blob data depending on network conditions, activity on L2 and missconfigurations on your batcher. As summary things I've learned:
OP_BATCHER_MAX_CHANNEL_DURATION
, you may be submitting almost empty blobs to L1.But I think in "normal" conditions we can expect blob DA to be cheaper than calldata DA. Also my initial guess to me is that blob DA throughput can be higher that calldata throughput, in case of very high activity on L2.
Also as a summary recommendation:
calldata
if your L2 has very low activity (and low OP_BATCHER_MAX_CHANNEL_DURATION
).blob
with 1 frame when your L2 has low-moderate load, and you want to speed up L1 submission speed (lower OP_BATCHER_MAX_CHANNEL_DURATION
windows).blob
with 6 frames for as the more efficient L1 gas option, and also the configuration with more throughput. This is the desired configuration for savings fees while having a medium-high L2 activity. Downside is that it may take longer to commit your L2 data on L1, particularly for applications/providers that are waiting for L1 state (bridges, exchanges, etc...)..
Enable proto-danksharding on the testnet
--data-availability-type=blobs
in batcher config