diff --git a/CNAME b/CNAME deleted file mode 100644 index c718e1d27..000000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -specs.optimism.io \ No newline at end of file diff --git a/print.html b/print.html index ba9e1153f..2d939b815 100644 --- a/print.html +++ b/print.html @@ -1893,7 +1893,8 @@
engine_forkchoiceUpdatedV3
-See engine_forkchoiceUpdatedV2
for a description of the forkchoice updated method.
See engine_forkchoiceUpdatedV2
for a description of the forkchoice updated method.
+engine_forkchoiceUpdatedV3
must only be called with Ecotone payload.
To support rollup functionality, one backwards-compatible change is introduced
to engine_forkchoiceUpdatedV3
: the extended PayloadAttributesV3
PayloadAttributesV2
with
the addition of parentBeaconBlockRoot
which is the parent beacon block root from the L1 origin block of the L2 block.
-The parentBeaconBlockRoot
must be nil for Bedrock/Canyon/Delta payloads.
-Starting at Ecotone, the parentBeaconBlockRoot
must be set to the L1 origin parentBeaconBlockRoot
,
+
Starting at Ecotone, the parentBeaconBlockRoot
must be set to the L1 origin parentBeaconBlockRoot
,
or a zero bytes32
if the Dencun functionality with parentBeaconBlockRoot
is not active on L1.
engine_newPayloadV2
No modifications to engine_newPayloadV2
.
Applies a L2 block to the engine state.
engine_newPayloadV3
engine_newPayloadV3
applies an Ecotone L2 block to the engine state. There are no
-modifications to this API. The additional parameters should be set as follows:
engine_newPayloadV3
must only be called with Ecotone payload.
+The additional parameters should be set as follows:
expectedBlobVersionedHashes
MUST be an empty array.parentBeaconBlockRoot
MUST be the parent beacon block root from the L1 origin block of the L2 block.engine_forkchoiceUpdatedV2
when called with payloadAttributes
.
engine_getPayloadV3
engine_getPayloadV3
retrieves a payload by ID, prepared by engine_forkchoiceUpdatedV3
-when called with payloadAttributes
.
payloadAttributes
.
+engine_getPayloadV3
must only be called with Ecotone payload.
The response is extended to:
{
@@ -1940,8 +1943,7 @@ Extended
parentBeaconBlockRoot: DATA (32 bytes)
}
-For Bedrock and Canyon parentBeaconBlockRoot
MUST be nil and in Ecotone it MUST be set to the parentBeaconBlockRoot
-from the L1 Origin block of the L2 block.
In Ecotone it MUST be set to the parentBeaconBlockRoot from the L1 Origin block of the L2 block.
engine_signalSuperchainV1
Optional extension to the Engine API. Signals superchain information to the Engine: V1 signals which protocol version is recommended and required.
diff --git a/protocol/exec-engine.html b/protocol/exec-engine.html index c7d8ce3c6..90fecbe56 100644 --- a/protocol/exec-engine.html +++ b/protocol/exec-engine.html @@ -418,7 +418,8 @@engine_forkchoiceUpdatedV3
See engine_forkchoiceUpdatedV2
for a description of the forkchoice updated method.
See engine_forkchoiceUpdatedV2
for a description of the forkchoice updated method.
+engine_forkchoiceUpdatedV3
must only be called with Ecotone payload.
To support rollup functionality, one backwards-compatible change is introduced
to engine_forkchoiceUpdatedV3
: the extended PayloadAttributesV3
PayloadAttributesV2
with
the addition of parentBeaconBlockRoot
which is the parent beacon block root from the L1 origin block of the L2 block.
-The parentBeaconBlockRoot
must be nil for Bedrock/Canyon/Delta payloads.
-Starting at Ecotone, the parentBeaconBlockRoot
must be set to the L1 origin parentBeaconBlockRoot
,
+
Starting at Ecotone, the parentBeaconBlockRoot
must be set to the L1 origin parentBeaconBlockRoot
,
or a zero bytes32
if the Dencun functionality with parentBeaconBlockRoot
is not active on L1.
engine_newPayloadV2
No modifications to engine_newPayloadV2
.
Applies a L2 block to the engine state.
engine_newPayloadV3
engine_newPayloadV3
applies an Ecotone L2 block to the engine state. There are no
-modifications to this API. The additional parameters should be set as follows:
engine_newPayloadV3
must only be called with Ecotone payload.
+The additional parameters should be set as follows:
expectedBlobVersionedHashes
MUST be an empty array.parentBeaconBlockRoot
MUST be the parent beacon block root from the L1 origin block of the L2 block.engine_forkchoiceUpdatedV2
when called with payloadAttributes
.
engine_getPayloadV3
engine_getPayloadV3
retrieves a payload by ID, prepared by engine_forkchoiceUpdatedV3
-when called with payloadAttributes
.
payloadAttributes
.
+engine_getPayloadV3
must only be called with Ecotone payload.
The response is extended to:
{
@@ -465,8 +468,7 @@ Extended
parentBeaconBlockRoot: DATA (32 bytes)
}
-For Bedrock and Canyon parentBeaconBlockRoot
MUST be nil and in Ecotone it MUST be set to the parentBeaconBlockRoot
-from the L1 Origin block of the L2 block.
In Ecotone it MUST be set to the parentBeaconBlockRoot from the L1 Origin block of the L2 block.
engine_signalSuperchainV1
Optional extension to the Engine API. Signals superchain information to the Engine: V1 signals which protocol version is recommended and required.
diff --git a/searchindex.js b/searchindex.js index 8daf627b6..e30df649f 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Object.assign(window.search, {"doc_urls":["root.html#op-stack-specs","root.html#specification-contents","root.html#experimental","root.html#design-goals","introduction.html#introduction","introduction.html#foundations","introduction.html#what-is-ethereum-scalability","introduction.html#what-is-an-optimistic-rollup","introduction.html#what-is-evm-equivalence","introduction.html#-all-together-now-","introduction.html#protocol-guarantees","introduction.html#network-participants","introduction.html#users","introduction.html#sequencers","introduction.html#verifiers","introduction.html#key-interaction-diagrams","introduction.html#depositing-and-sending-transactions","introduction.html#withdrawing","introduction.html#next-steps","protocol/overview.html#optimism-overview","protocol/overview.html#architecture-design-goals","protocol/overview.html#components","protocol/overview.html#l1-components","protocol/overview.html#l2-components","protocol/overview.html#transactionblock-propagation","protocol/overview.html#key-interactions-in-depth","protocol/overview.html#deposits","protocol/overview.html#block-derivation","protocol/overview.html#engine-api","protocol/bridges.html#standard-bridges","protocol/bridges.html#token-depositing","protocol/bridges.html#upgradability","protocol/messengers.html#cross-domain-messengers","protocol/messengers.html#message-passing","protocol/messengers.html#upgradability","protocol/messengers.html#message-versioning","protocol/messengers.html#message-version-0","protocol/messengers.html#message-version-1","protocol/messengers.html#backwards-compatibility-notes","protocol/deposits.html#deposits","protocol/deposits.html#the-deposited-transaction-type","protocol/deposits.html#source-hash-computation","protocol/deposits.html#kinds-of-deposited-transactions","protocol/deposits.html#validation-and-authorization-of-deposited-transactions","protocol/deposits.html#execution","protocol/deposits.html#deposit-receipt","protocol/deposits.html#l1-attributes-deposited-transaction","protocol/deposits.html#l1-attributes-deposited-transaction-calldata","protocol/deposits.html#special-accounts-on-l2","protocol/deposits.html#l1-attributes-depositor-account","protocol/deposits.html#l1-attributes-predeployed-contract","protocol/deposits.html#user-deposited-transactions","protocol/deposits.html#deposit-contract","protocol/withdrawals.html#withdrawals","protocol/withdrawals.html#withdrawal-flow","protocol/withdrawals.html#on-l2","protocol/withdrawals.html#on-l1","protocol/withdrawals.html#the-l2tol1messagepasser-contract","protocol/withdrawals.html#addresses-are-not-aliased-on-withdrawals","protocol/withdrawals.html#the-optimism-portal-contract","protocol/withdrawals.html#withdrawal-verification-and-finalization","protocol/withdrawals.html#security-considerations","protocol/withdrawals.html#key-properties-of-withdrawal-verification","protocol/withdrawals.html#handling-successfully-verified-messages-that-fail-when-relayed","protocol/withdrawals.html#optimismportal-can-send-arbitrary-messages-on-l1","protocol/guaranteed-gas-market.html#guaranteed-gas-fee-market","protocol/guaranteed-gas-market.html#gas-stipend","protocol/guaranteed-gas-market.html#default-values","protocol/guaranteed-gas-market.html#limiting-guaranteed-gas","protocol/guaranteed-gas-market.html#rationale-for-burning-l1-gas","protocol/guaranteed-gas-market.html#on-preventing-griefing-attacks","protocol/proposals.html#l2-output-root-proposals-specification","protocol/proposals.html#proposing-l2-output-commitments","protocol/proposals.html#l2outputoracle-v100","protocol/proposals.html#l2-output-commitment-construction","protocol/proposals.html#l2-output-oracle-smart-contract","protocol/proposals.html#configuration","protocol/proposals.html#security-considerations","protocol/proposals.html#l1-reorgs","protocol/exec-engine.html#l2-execution-engine","protocol/exec-engine.html#1559-parameters","protocol/exec-engine.html#deposited-transaction-processing","protocol/exec-engine.html#deposited-transaction-boundaries","protocol/exec-engine.html#fees","protocol/exec-engine.html#fee-vaults","protocol/exec-engine.html#priority-fees-sequencer-fee-vault","protocol/exec-engine.html#base-fees-base-fee-vault","protocol/exec-engine.html#l1-cost-fees-l1-fee-vault","protocol/exec-engine.html#engine-api","protocol/exec-engine.html#engine_forkchoiceupdatedv2","protocol/exec-engine.html#engine_forkchoiceupdatedv3","protocol/exec-engine.html#engine_newpayloadv2","protocol/exec-engine.html#engine_newpayloadv3","protocol/exec-engine.html#engine_getpayloadv2","protocol/exec-engine.html#engine_getpayloadv3","protocol/exec-engine.html#engine_signalsuperchainv1","protocol/exec-engine.html#networking","protocol/exec-engine.html#sync","protocol/exec-engine.html#happy-path-sync","protocol/exec-engine.html#worst-case-sync","protocol/exec-engine.html#ecotone-disable-blob-transactions","protocol/exec-engine.html#ecotone-beacon-block-root","protocol/rollup-node.html#rollup-node-specification","protocol/rollup-node.html#driver","protocol/rollup-node.html#derivation","protocol/rollup-node.html#l2-output-rpc-method","protocol/rollup-node.html#structures","protocol/rollup-node.html#output-method-api","protocol/rollup-node.html#protocol-version-tracking","protocol/rollup-node-p2p.html#rollup-node-p2p-interface","protocol/rollup-node-p2p.html#p2p-configuration","protocol/rollup-node-p2p.html#identification","protocol/rollup-node-p2p.html#discv5","protocol/rollup-node-p2p.html#libp2p","protocol/rollup-node-p2p.html#gossip-topics","protocol/rollup-node-p2p.html#blocksv1","protocol/rollup-node-p2p.html#blocksv2","protocol/rollup-node-p2p.html#blocksv3","protocol/rollup-node-p2p.html#block-encoding","protocol/rollup-node-p2p.html#block-signatures","protocol/rollup-node-p2p.html#block-validation","protocol/rollup-node-p2p.html#req-resp","protocol/rollup-node-p2p.html#payload_by_number","protocol/derivation.html#l2-chain-derivation-specification","protocol/derivation.html#overview","protocol/derivation.html#eager-block-derivation","protocol/derivation.html#batch-submission","protocol/derivation.html#sequencing--batch-submission-overview","protocol/derivation.html#batch-submission-wire-format","protocol/derivation.html#batcher-transaction-format","protocol/derivation.html#frame-format","protocol/derivation.html#channel-format","protocol/derivation.html#batch-format","protocol/derivation.html#architecture","protocol/derivation.html#l2-chain-derivation-pipeline","protocol/derivation.html#l1-traversal","protocol/derivation.html#l1-retrieval","protocol/derivation.html#frame-queue","protocol/derivation.html#channel-bank","protocol/derivation.html#channel-reader-batch-decoding","protocol/derivation.html#batch-queue","protocol/derivation.html#payload-attributes-derivation","protocol/derivation.html#engine-queue","protocol/derivation.html#resetting-the-pipeline","protocol/derivation.html#deriving-payload-attributes","protocol/derivation.html#deriving-the-transaction-list","protocol/derivation.html#network-upgrade-automation-transactions","protocol/derivation.html#building-individual-payload-attributes","protocol/span-batches.html#span-batches","protocol/span-batches.html#introduction","protocol/span-batches.html#span-batch-format","protocol/span-batches.html#max-span-batch-size","protocol/span-batches.html#future-batch-format-extension","protocol/span-batches.html#span-batch-activation-rule","protocol/span-batches.html#optimization-strategies","protocol/span-batches.html#truncating-information-and-storing-only-necessary-data","protocol/span-batches.html#tx_data_headers-removal-from-initial-specs","protocol/span-batches.html#chain-id-removal-from-initial-specs","protocol/span-batches.html#reorganization-of-constant-length-transaction-fields","protocol/span-batches.html#rlp-encoding-for-only-variable-length-fields","protocol/span-batches.html#store-y_parity-and-protected_bit-instead-of-v","protocol/span-batches.html#adjust-txs-data-layout-for-better-compression","protocol/span-batches.html#fee_recipients-encoding-scheme","protocol/span-batches.html#how-derivation-works-with-span-batch","protocol/span-batches.html#integration","protocol/span-batches.html#channel-reader-batch-decoding","protocol/span-batches.html#batch-queue","protocol/span-batches.html#batcher","protocol/batcher.html#batch-submitter","protocol/safe-liveness-checking.html#safe-liveness-checking","protocol/safe-liveness-checking.html#liveness-checking-mechanism","protocol/safe-liveness-checking.html#liveness-checking-methodology","protocol/safe-liveness-checking.html#the-liveness-guard","protocol/safe-liveness-checking.html#the-liveness-module","protocol/safe-liveness-checking.html#owner-removal-call-flow","protocol/safe-liveness-checking.html#shutdown","protocol/safe-liveness-checking.html#security-properties","protocol/safe-liveness-checking.html#interdependency-between-the-guard-and-module","protocol/safe-liveness-checking.html#operational-considerations","protocol/safe-liveness-checking.html#manual-validation-of-new-owner-liveness","protocol/safe-liveness-checking.html#deploying-the-liveness-checking-system","protocol/safe-liveness-checking.html#modify-the-liveness-checking-system","protocol/predeploys.html#predeploys","protocol/predeploys.html#overview","protocol/predeploys.html#legacymessagepasser","protocol/predeploys.html#l2tol1messagepasser","protocol/predeploys.html#deployerwhitelist","protocol/predeploys.html#legacyerc20eth","protocol/predeploys.html#weth9","protocol/predeploys.html#l2crossdomainmessenger","protocol/predeploys.html#l2standardbridge","protocol/predeploys.html#l1blocknumber","protocol/predeploys.html#gaspriceoracle","protocol/predeploys.html#l1block","protocol/predeploys.html#proxyadmin","protocol/predeploys.html#sequencerfeevault","protocol/predeploys.html#optimismmintableerc20factory","protocol/predeploys.html#optimismmintableerc721factory","protocol/predeploys.html#basefeevault","protocol/predeploys.html#l1feevault","protocol/predeploys.html#schemaregistry","protocol/predeploys.html#eas","protocol/predeploys.html#create2deployer","protocol/preinstalls.html#preinstalls","protocol/preinstalls.html#overview","protocol/preinstalls.html#safe","protocol/preinstalls.html#safel2","protocol/preinstalls.html#multisend","protocol/preinstalls.html#multisendcallonly","protocol/preinstalls.html#safesingletonfactory","protocol/preinstalls.html#multicall3","protocol/preinstalls.html#arachnids-deterministic-deployment-proxy","protocol/preinstalls.html#permit2","protocol/preinstalls.html#erc-4337-entrypoint","protocol/preinstalls.html#erc-4337-sendercreator","protocol/superchain-configuration.html#superchain-configuration","protocol/superchain-configuration.html#configurable-values","protocol/superchain-configuration.html#configuration-data-flow","protocol/superchain-configuration.html#pausability","protocol/superchain-upgrades.html#superchain-upgrades","protocol/superchain-upgrades.html#protocol-version","protocol/superchain-upgrades.html#protocol-version-format","protocol/superchain-upgrades.html#protocol-version-exposure","protocol/superchain-upgrades.html#superchain-target","protocol/superchain-upgrades.html#superchain-version-signaling","protocol/superchain-upgrades.html#protocolversions-l1-contract","protocol/superchain-upgrades.html#activation-rules","protocol/superchain-upgrades.html#l2-block-number-based-activation-deprecated","protocol/superchain-upgrades.html#l2-block-timestamp-based-activation","protocol/superchain-upgrades.html#op-stack-protocol-versions","protocol/superchain-upgrades.html#post-bedrock-network-upgrades","protocol/superchain-upgrades.html#regolith","protocol/superchain-upgrades.html#canyon","protocol/superchain-upgrades.html#delta","protocol/superchain-upgrades.html#ecotone","protocol/superchain-upgrades.html#fjord","protocol/system_config.html#system-config","protocol/system_config.html#system-config-contents-version-0","protocol/system_config.html#batcherhash-bytes32","protocol/system_config.html#scalars","protocol/system_config.html#gaslimit-uint64","protocol/system_config.html#unsafeblocksigner-address","protocol/system_config.html#writing-the-system-config","protocol/system_config.html#reading-the-system-config","experimental/fault-proof/index.html#fault-proof","experimental/fault-proof/index.html#overview","experimental/fault-proof/index.html#pre-image-oracle","experimental/fault-proof/index.html#pre-image-key-types","experimental/fault-proof/index.html#bootstrapping","experimental/fault-proof/index.html#hinting","experimental/fault-proof/index.html#pre-image-communication","experimental/fault-proof/index.html#fault-proof-program","experimental/fault-proof/index.html#prologue","experimental/fault-proof/index.html#main-content","experimental/fault-proof/index.html#epilogue","experimental/fault-proof/index.html#pre-image-hinting-routes","experimental/fault-proof/index.html#fault-proof-vm","experimental/fault-proof/index.html#fault-proof-interactive-dispute-game","experimental/fault-proof/cannon-fault-proof-vm.html#cannon-fault-proof-virtual-machine","experimental/fault-proof/cannon-fault-proof-vm.html#overview","experimental/fault-proof/cannon-fault-proof-vm.html#state","experimental/fault-proof/cannon-fault-proof-vm.html#state-hash","experimental/fault-proof/cannon-fault-proof-vm.html#memory","experimental/fault-proof/cannon-fault-proof-vm.html#heap","experimental/fault-proof/cannon-fault-proof-vm.html#delay-slots","experimental/fault-proof/cannon-fault-proof-vm.html#syscalls","experimental/fault-proof/cannon-fault-proof-vm.html#io","experimental/fault-proof/cannon-fault-proof-vm.html#standard-streams","experimental/fault-proof/cannon-fault-proof-vm.html#hint-communication","experimental/fault-proof/cannon-fault-proof-vm.html#pre-image-communication","experimental/fault-proof/cannon-fault-proof-vm.html#exceptions","experimental/fault-proof/dispute-game-interface.html#dispute-game-interface","experimental/fault-proof/dispute-game-interface.html#overview","experimental/fault-proof/dispute-game-interface.html#types","experimental/fault-proof/dispute-game-interface.html#disputegamefactory-interface","experimental/fault-proof/dispute-game-interface.html#disputegame-interface","experimental/fault-proof/fault-dispute-game.html#fault-dispute-game","experimental/fault-proof/fault-dispute-game.html#overview","experimental/fault-proof/fault-dispute-game.html#definitions","experimental/fault-proof/fault-dispute-game.html#virtual-machine-vm","experimental/fault-proof/fault-dispute-game.html#preimageoracle","experimental/fault-proof/fault-dispute-game.html#execution-trace","experimental/fault-proof/fault-dispute-game.html#claims","experimental/fault-proof/fault-dispute-game.html#dag","experimental/fault-proof/fault-dispute-game.html#subgame","experimental/fault-proof/fault-dispute-game.html#game-tree","experimental/fault-proof/fault-dispute-game.html#position","experimental/fault-proof/fault-dispute-game.html#game_duration","experimental/fault-proof/fault-dispute-game.html#game-mechanics","experimental/fault-proof/fault-dispute-game.html#actors","experimental/fault-proof/fault-dispute-game.html#moves","experimental/fault-proof/fault-dispute-game.html#step","experimental/fault-proof/fault-dispute-game.html#step-types","experimental/fault-proof/fault-dispute-game.html#preimageoracle-interaction","experimental/fault-proof/fault-dispute-game.html#team-dynamics","experimental/fault-proof/fault-dispute-game.html#game-clock","experimental/fault-proof/fault-dispute-game.html#resolution","experimental/fault-proof/honest-challenger-fdg.html#honest-challenger-fault-dispute-game","experimental/fault-proof/honest-challenger-fdg.html#overview","experimental/fault-proof/honest-challenger-fdg.html#fdg-responses","experimental/fault-proof/honest-challenger-fdg.html#root-claims","experimental/fault-proof/honest-challenger-fdg.html#counter-claims","experimental/fault-proof/honest-challenger-fdg.html#steps","experimental/fault-proof/honest-challenger-fdg.html#resolution","glossary.html#glossary","glossary.html#general-terms","glossary.html#layer-1-l1","glossary.html#layer-2-l2","glossary.html#block","glossary.html#eoa","glossary.html#merkle-patricia-trie","glossary.html#chain-re-organization","glossary.html#predeployed-contract-predeploy","glossary.html#preinstalled-contract-preinstall","glossary.html#receipt","glossary.html#transaction-type","glossary.html#fork-choice-rule","glossary.html#priority-gas-auction","glossary.html#sequencing","glossary.html#sequencer","glossary.html#sequencing-window","glossary.html#sequencing-epoch","glossary.html#l1-origin","glossary.html#deposits","glossary.html#deposited-transaction","glossary.html#l1-attributes-deposited-transaction","glossary.html#user-deposited-transaction","glossary.html#depositing-call","glossary.html#depositing-transaction","glossary.html#depositor","glossary.html#deposited-transaction-type","glossary.html#deposit-contract","glossary.html#withdrawals","glossary.html#relayer","glossary.html#finalization-period","glossary.html#batch-submission","glossary.html#data-availability","glossary.html#data-availability-provider","glossary.html#sequencer-batch","glossary.html#channel","glossary.html#channel-frame","glossary.html#batcher","glossary.html#batcher-transaction","glossary.html#channel-timeout","glossary.html#l2-output-root-proposals","glossary.html#proposer","glossary.html#l2-chain-derivation","glossary.html#l2-derivation-inputs","glossary.html#system-configuration","glossary.html#payload-attributes","glossary.html#l2-genesis-block","glossary.html#l2-chain-inception","glossary.html#safe-l2-block","glossary.html#safe-l2-head","glossary.html#unsafe-l2-block","glossary.html#unsafe-l2-head","glossary.html#unsafe-block-consolidation","glossary.html#finalized-l2-head","glossary.html#other-l2-chain-concepts","glossary.html#address-aliasing","glossary.html#rollup-node","glossary.html#rollup-driver","glossary.html#l1-attributes-predeployed-contract","glossary.html#l2-output-root","glossary.html#l2-output-oracle-contract","glossary.html#validator","glossary.html#fault-proof","glossary.html#time-slot","glossary.html#block-time","glossary.html#unsafe-sync","glossary.html#execution-engine-concepts","glossary.html#execution-engine","meta/index.html#meta-processes","meta/linting.html#linting","meta/linting.html#markdown","meta/linting.html#go","meta/versioning.html#versioning","meta/versioning.html#go-modules","meta/versioning.html#versioning-process","meta/versioning.html#typescript","meta/markdown-style.html#markdown-style-guide","meta/markdown-style.html#linting","meta/markdown-style.html#links","meta/markdown-style.html#glossary","meta/markdown-style.html#internal-in-file-links"],"index":{"documentStore":{"docInfo":{"0":{"body":14,"breadcrumbs":4,"title":3},"1":{"body":31,"breadcrumbs":3,"title":2},"10":{"body":140,"breadcrumbs":3,"title":2},"100":{"body":97,"breadcrumbs":10,"title":4},"101":{"body":80,"breadcrumbs":10,"title":4},"102":{"body":45,"breadcrumbs":9,"title":3},"103":{"body":26,"breadcrumbs":7,"title":1},"104":{"body":85,"breadcrumbs":7,"title":1},"105":{"body":13,"breadcrumbs":10,"title":4},"106":{"body":112,"breadcrumbs":7,"title":1},"107":{"body":57,"breadcrumbs":9,"title":3},"108":{"body":61,"breadcrumbs":9,"title":3},"109":{"body":190,"breadcrumbs":13,"title":4},"11":{"body":8,"breadcrumbs":3,"title":2},"110":{"body":0,"breadcrumbs":11,"title":2},"111":{"body":69,"breadcrumbs":10,"title":1},"112":{"body":147,"breadcrumbs":10,"title":1},"113":{"body":576,"breadcrumbs":10,"title":1},"114":{"body":9,"breadcrumbs":11,"title":2},"115":{"body":5,"breadcrumbs":10,"title":1},"116":{"body":4,"breadcrumbs":10,"title":1},"117":{"body":4,"breadcrumbs":10,"title":1},"118":{"body":71,"breadcrumbs":11,"title":2},"119":{"body":39,"breadcrumbs":11,"title":2},"12":{"body":32,"breadcrumbs":2,"title":1},"120":{"body":233,"breadcrumbs":11,"title":2},"121":{"body":167,"breadcrumbs":11,"title":2},"122":{"body":255,"breadcrumbs":10,"title":1},"123":{"body":103,"breadcrumbs":11,"title":4},"124":{"body":420,"breadcrumbs":8,"title":1},"125":{"body":59,"breadcrumbs":10,"title":3},"126":{"body":0,"breadcrumbs":9,"title":2},"127":{"body":147,"breadcrumbs":11,"title":4},"128":{"body":516,"breadcrumbs":11,"title":4},"129":{"body":58,"breadcrumbs":10,"title":3},"13":{"body":97,"breadcrumbs":2,"title":1},"130":{"body":115,"breadcrumbs":9,"title":2},"131":{"body":124,"breadcrumbs":9,"title":2},"132":{"body":103,"breadcrumbs":9,"title":2},"133":{"body":33,"breadcrumbs":8,"title":1},"134":{"body":143,"breadcrumbs":11,"title":4},"135":{"body":47,"breadcrumbs":9,"title":2},"136":{"body":446,"breadcrumbs":9,"title":2},"137":{"body":20,"breadcrumbs":9,"title":2},"138":{"body":309,"breadcrumbs":9,"title":2},"139":{"body":17,"breadcrumbs":11,"title":4},"14":{"body":29,"breadcrumbs":2,"title":1},"140":{"body":480,"breadcrumbs":9,"title":2},"141":{"body":57,"breadcrumbs":10,"title":3},"142":{"body":874,"breadcrumbs":9,"title":2},"143":{"body":581,"breadcrumbs":9,"title":2},"144":{"body":43,"breadcrumbs":10,"title":3},"145":{"body":140,"breadcrumbs":10,"title":3},"146":{"body":700,"breadcrumbs":11,"title":4},"147":{"body":65,"breadcrumbs":11,"title":4},"148":{"body":81,"breadcrumbs":10,"title":2},"149":{"body":143,"breadcrumbs":9,"title":1},"15":{"body":17,"breadcrumbs":4,"title":3},"150":{"body":314,"breadcrumbs":11,"title":3},"151":{"body":77,"breadcrumbs":12,"title":4},"152":{"body":74,"breadcrumbs":12,"title":4},"153":{"body":41,"breadcrumbs":12,"title":4},"154":{"body":0,"breadcrumbs":10,"title":2},"155":{"body":27,"breadcrumbs":13,"title":5},"156":{"body":19,"breadcrumbs":12,"title":4},"157":{"body":20,"breadcrumbs":13,"title":5},"158":{"body":24,"breadcrumbs":13,"title":5},"159":{"body":44,"breadcrumbs":13,"title":5},"16":{"body":42,"breadcrumbs":4,"title":3},"160":{"body":64,"breadcrumbs":13,"title":5},"161":{"body":38,"breadcrumbs":14,"title":6},"162":{"body":75,"breadcrumbs":11,"title":3},"163":{"body":141,"breadcrumbs":12,"title":4},"164":{"body":0,"breadcrumbs":9,"title":1},"165":{"body":18,"breadcrumbs":12,"title":4},"166":{"body":482,"breadcrumbs":10,"title":2},"167":{"body":101,"breadcrumbs":9,"title":1},"168":{"body":116,"breadcrumbs":8,"title":2},"169":{"body":44,"breadcrumbs":9,"title":3},"17":{"body":27,"breadcrumbs":2,"title":1},"170":{"body":50,"breadcrumbs":9,"title":3},"171":{"body":35,"breadcrumbs":9,"title":3},"172":{"body":94,"breadcrumbs":8,"title":2},"173":{"body":52,"breadcrumbs":8,"title":2},"174":{"body":51,"breadcrumbs":10,"title":4},"175":{"body":23,"breadcrumbs":7,"title":1},"176":{"body":120,"breadcrumbs":8,"title":2},"177":{"body":29,"breadcrumbs":10,"title":4},"178":{"body":0,"breadcrumbs":8,"title":2},"179":{"body":22,"breadcrumbs":11,"title":5},"18":{"body":28,"breadcrumbs":3,"title":2},"180":{"body":63,"breadcrumbs":10,"title":4},"181":{"body":74,"breadcrumbs":10,"title":4},"182":{"body":22,"breadcrumbs":5,"title":1},"183":{"body":168,"breadcrumbs":5,"title":1},"184":{"body":71,"breadcrumbs":5,"title":1},"185":{"body":33,"breadcrumbs":5,"title":1},"186":{"body":48,"breadcrumbs":5,"title":1},"187":{"body":41,"breadcrumbs":5,"title":1},"188":{"body":19,"breadcrumbs":5,"title":1},"189":{"body":59,"breadcrumbs":5,"title":1},"19":{"body":51,"breadcrumbs":5,"title":2},"190":{"body":84,"breadcrumbs":5,"title":1},"191":{"body":30,"breadcrumbs":5,"title":1},"192":{"body":132,"breadcrumbs":5,"title":1},"193":{"body":16,"breadcrumbs":5,"title":1},"194":{"body":18,"breadcrumbs":5,"title":1},"195":{"body":29,"breadcrumbs":5,"title":1},"196":{"body":43,"breadcrumbs":5,"title":1},"197":{"body":14,"breadcrumbs":5,"title":1},"198":{"body":25,"breadcrumbs":5,"title":1},"199":{"body":21,"breadcrumbs":5,"title":1},"2":{"body":18,"breadcrumbs":2,"title":1},"20":{"body":98,"breadcrumbs":6,"title":3},"200":{"body":13,"breadcrumbs":5,"title":1},"201":{"body":10,"breadcrumbs":5,"title":1},"202":{"body":127,"breadcrumbs":5,"title":1},"203":{"body":20,"breadcrumbs":5,"title":1},"204":{"body":80,"breadcrumbs":5,"title":1},"205":{"body":18,"breadcrumbs":5,"title":1},"206":{"body":16,"breadcrumbs":5,"title":1},"207":{"body":8,"breadcrumbs":5,"title":1},"208":{"body":9,"breadcrumbs":5,"title":1},"209":{"body":51,"breadcrumbs":5,"title":1},"21":{"body":1,"breadcrumbs":4,"title":1},"210":{"body":24,"breadcrumbs":5,"title":1},"211":{"body":88,"breadcrumbs":8,"title":4},"212":{"body":22,"breadcrumbs":5,"title":1},"213":{"body":11,"breadcrumbs":7,"title":3},"214":{"body":13,"breadcrumbs":7,"title":3},"215":{"body":26,"breadcrumbs":8,"title":2},"216":{"body":25,"breadcrumbs":8,"title":2},"217":{"body":29,"breadcrumbs":9,"title":3},"218":{"body":70,"breadcrumbs":7,"title":1},"219":{"body":111,"breadcrumbs":8,"title":2},"22":{"body":88,"breadcrumbs":5,"title":2},"220":{"body":123,"breadcrumbs":8,"title":2},"221":{"body":326,"breadcrumbs":9,"title":3},"222":{"body":36,"breadcrumbs":9,"title":3},"223":{"body":42,"breadcrumbs":8,"title":2},"224":{"body":88,"breadcrumbs":9,"title":3},"225":{"body":47,"breadcrumbs":9,"title":3},"226":{"body":58,"breadcrumbs":8,"title":2},"227":{"body":72,"breadcrumbs":12,"title":6},"228":{"body":100,"breadcrumbs":11,"title":5},"229":{"body":87,"breadcrumbs":10,"title":4},"23":{"body":80,"breadcrumbs":5,"title":2},"230":{"body":0,"breadcrumbs":10,"title":4},"231":{"body":158,"breadcrumbs":7,"title":1},"232":{"body":88,"breadcrumbs":7,"title":1},"233":{"body":21,"breadcrumbs":7,"title":1},"234":{"body":128,"breadcrumbs":7,"title":1},"235":{"body":7,"breadcrumbs":7,"title":1},"236":{"body":49,"breadcrumbs":7,"title":2},"237":{"body":8,"breadcrumbs":10,"title":5},"238":{"body":43,"breadcrumbs":7,"title":2},"239":{"body":287,"breadcrumbs":6,"title":1},"24":{"body":56,"breadcrumbs":5,"title":2},"240":{"body":31,"breadcrumbs":7,"title":2},"241":{"body":51,"breadcrumbs":7,"title":2},"242":{"body":33,"breadcrumbs":8,"title":3},"243":{"body":219,"breadcrumbs":8,"title":3},"244":{"body":89,"breadcrumbs":5,"title":2},"245":{"body":77,"breadcrumbs":4,"title":1},"246":{"body":52,"breadcrumbs":6,"title":3},"247":{"body":398,"breadcrumbs":7,"title":4},"248":{"body":51,"breadcrumbs":4,"title":1},"249":{"body":215,"breadcrumbs":4,"title":1},"25":{"body":0,"breadcrumbs":6,"title":3},"250":{"body":128,"breadcrumbs":6,"title":3},"251":{"body":55,"breadcrumbs":6,"title":3},"252":{"body":146,"breadcrumbs":4,"title":1},"253":{"body":252,"breadcrumbs":5,"title":2},"254":{"body":142,"breadcrumbs":4,"title":1},"255":{"body":166,"breadcrumbs":7,"title":4},"256":{"body":104,"breadcrumbs":6,"title":3},"257":{"body":92,"breadcrumbs":8,"title":5},"258":{"body":24,"breadcrumbs":12,"title":5},"259":{"body":75,"breadcrumbs":8,"title":1},"26":{"body":69,"breadcrumbs":4,"title":1},"260":{"body":111,"breadcrumbs":8,"title":1},"261":{"body":51,"breadcrumbs":9,"title":2},"262":{"body":59,"breadcrumbs":8,"title":1},"263":{"body":82,"breadcrumbs":8,"title":1},"264":{"body":63,"breadcrumbs":9,"title":2},"265":{"body":165,"breadcrumbs":8,"title":1},"266":{"body":126,"breadcrumbs":8,"title":1},"267":{"body":26,"breadcrumbs":9,"title":2},"268":{"body":22,"breadcrumbs":9,"title":2},"269":{"body":162,"breadcrumbs":10,"title":3},"27":{"body":326,"breadcrumbs":5,"title":2},"270":{"body":68,"breadcrumbs":8,"title":1},"271":{"body":8,"breadcrumbs":9,"title":3},"272":{"body":74,"breadcrumbs":7,"title":1},"273":{"body":145,"breadcrumbs":7,"title":1},"274":{"body":546,"breadcrumbs":8,"title":2},"275":{"body":275,"breadcrumbs":8,"title":2},"276":{"body":33,"breadcrumbs":9,"title":3},"277":{"body":79,"breadcrumbs":7,"title":1},"278":{"body":0,"breadcrumbs":7,"title":1},"279":{"body":44,"breadcrumbs":9,"title":3},"28":{"body":139,"breadcrumbs":5,"title":2},"280":{"body":31,"breadcrumbs":7,"title":1},"281":{"body":25,"breadcrumbs":8,"title":2},"282":{"body":63,"breadcrumbs":7,"title":1},"283":{"body":34,"breadcrumbs":7,"title":1},"284":{"body":80,"breadcrumbs":7,"title":1},"285":{"body":68,"breadcrumbs":8,"title":2},"286":{"body":110,"breadcrumbs":7,"title":1},"287":{"body":17,"breadcrumbs":7,"title":1},"288":{"body":0,"breadcrumbs":8,"title":2},"289":{"body":32,"breadcrumbs":7,"title":1},"29":{"body":191,"breadcrumbs":6,"title":2},"290":{"body":214,"breadcrumbs":7,"title":1},"291":{"body":122,"breadcrumbs":7,"title":1},"292":{"body":123,"breadcrumbs":8,"title":2},"293":{"body":425,"breadcrumbs":8,"title":2},"294":{"body":58,"breadcrumbs":8,"title":2},"295":{"body":51,"breadcrumbs":8,"title":2},"296":{"body":162,"breadcrumbs":7,"title":1},"297":{"body":47,"breadcrumbs":13,"title":5},"298":{"body":55,"breadcrumbs":9,"title":1},"299":{"body":0,"breadcrumbs":10,"title":2},"3":{"body":172,"breadcrumbs":3,"title":2},"30":{"body":24,"breadcrumbs":6,"title":2},"300":{"body":60,"breadcrumbs":10,"title":2},"301":{"body":224,"breadcrumbs":10,"title":2},"302":{"body":57,"breadcrumbs":9,"title":1},"303":{"body":64,"breadcrumbs":9,"title":1},"304":{"body":155,"breadcrumbs":2,"title":1},"305":{"body":0,"breadcrumbs":3,"title":2},"306":{"body":9,"breadcrumbs":4,"title":3},"307":{"body":12,"breadcrumbs":4,"title":3},"308":{"body":62,"breadcrumbs":2,"title":1},"309":{"body":12,"breadcrumbs":2,"title":1},"31":{"body":8,"breadcrumbs":5,"title":1},"310":{"body":34,"breadcrumbs":4,"title":3},"311":{"body":38,"breadcrumbs":4,"title":3},"312":{"body":13,"breadcrumbs":4,"title":3},"313":{"body":27,"breadcrumbs":4,"title":3},"314":{"body":45,"breadcrumbs":2,"title":1},"315":{"body":19,"breadcrumbs":3,"title":2},"316":{"body":34,"breadcrumbs":4,"title":3},"317":{"body":57,"breadcrumbs":4,"title":3},"318":{"body":33,"breadcrumbs":2,"title":1},"319":{"body":31,"breadcrumbs":2,"title":1},"32":{"body":202,"breadcrumbs":8,"title":3},"320":{"body":50,"breadcrumbs":3,"title":2},"321":{"body":36,"breadcrumbs":3,"title":2},"322":{"body":9,"breadcrumbs":3,"title":2},"323":{"body":80,"breadcrumbs":2,"title":1},"324":{"body":34,"breadcrumbs":3,"title":2},"325":{"body":41,"breadcrumbs":5,"title":4},"326":{"body":21,"breadcrumbs":4,"title":3},"327":{"body":20,"breadcrumbs":3,"title":2},"328":{"body":9,"breadcrumbs":3,"title":2},"329":{"body":15,"breadcrumbs":2,"title":1},"33":{"body":75,"breadcrumbs":7,"title":2},"330":{"body":21,"breadcrumbs":4,"title":3},"331":{"body":46,"breadcrumbs":3,"title":2},"332":{"body":53,"breadcrumbs":2,"title":1},"333":{"body":10,"breadcrumbs":2,"title":1},"334":{"body":30,"breadcrumbs":3,"title":2},"335":{"body":0,"breadcrumbs":3,"title":2},"336":{"body":48,"breadcrumbs":3,"title":2},"337":{"body":39,"breadcrumbs":4,"title":3},"338":{"body":54,"breadcrumbs":3,"title":2},"339":{"body":77,"breadcrumbs":2,"title":1},"34":{"body":13,"breadcrumbs":6,"title":1},"340":{"body":22,"breadcrumbs":3,"title":2},"341":{"body":40,"breadcrumbs":2,"title":1},"342":{"body":50,"breadcrumbs":3,"title":2},"343":{"body":97,"breadcrumbs":3,"title":2},"344":{"body":0,"breadcrumbs":5,"title":4},"345":{"body":36,"breadcrumbs":2,"title":1},"346":{"body":20,"breadcrumbs":4,"title":3},"347":{"body":38,"breadcrumbs":4,"title":3},"348":{"body":29,"breadcrumbs":3,"title":2},"349":{"body":45,"breadcrumbs":3,"title":2},"35":{"body":36,"breadcrumbs":7,"title":2},"350":{"body":121,"breadcrumbs":4,"title":3},"351":{"body":21,"breadcrumbs":4,"title":3},"352":{"body":18,"breadcrumbs":4,"title":3},"353":{"body":10,"breadcrumbs":4,"title":3},"354":{"body":25,"breadcrumbs":4,"title":3},"355":{"body":10,"breadcrumbs":4,"title":3},"356":{"body":49,"breadcrumbs":4,"title":3},"357":{"body":21,"breadcrumbs":4,"title":3},"358":{"body":0,"breadcrumbs":4,"title":3},"359":{"body":17,"breadcrumbs":3,"title":2},"36":{"body":6,"breadcrumbs":8,"title":3},"360":{"body":91,"breadcrumbs":3,"title":2},"361":{"body":26,"breadcrumbs":3,"title":2},"362":{"body":22,"breadcrumbs":5,"title":4},"363":{"body":14,"breadcrumbs":4,"title":3},"364":{"body":7,"breadcrumbs":5,"title":4},"365":{"body":46,"breadcrumbs":2,"title":1},"366":{"body":14,"breadcrumbs":3,"title":2},"367":{"body":32,"breadcrumbs":3,"title":2},"368":{"body":36,"breadcrumbs":3,"title":2},"369":{"body":21,"breadcrumbs":3,"title":2},"37":{"body":8,"breadcrumbs":8,"title":3},"370":{"body":0,"breadcrumbs":4,"title":3},"371":{"body":71,"breadcrumbs":3,"title":2},"372":{"body":18,"breadcrumbs":3,"title":2},"373":{"body":4,"breadcrumbs":3,"title":1},"374":{"body":99,"breadcrumbs":3,"title":1},"375":{"body":53,"breadcrumbs":3,"title":1},"376":{"body":7,"breadcrumbs":3,"title":1},"377":{"body":23,"breadcrumbs":4,"title":2},"378":{"body":18,"breadcrumbs":4,"title":2},"379":{"body":2,"breadcrumbs":3,"title":1},"38":{"body":45,"breadcrumbs":8,"title":3},"380":{"body":8,"breadcrumbs":6,"title":3},"381":{"body":18,"breadcrumbs":4,"title":1},"382":{"body":40,"breadcrumbs":4,"title":1},"383":{"body":36,"breadcrumbs":4,"title":1},"384":{"body":22,"breadcrumbs":6,"title":3},"39":{"body":109,"breadcrumbs":6,"title":1},"4":{"body":50,"breadcrumbs":2,"title":1},"40":{"body":206,"breadcrumbs":8,"title":3},"41":{"body":114,"breadcrumbs":8,"title":3},"42":{"body":57,"breadcrumbs":8,"title":3},"43":{"body":24,"breadcrumbs":9,"title":4},"44":{"body":370,"breadcrumbs":6,"title":1},"45":{"body":146,"breadcrumbs":7,"title":2},"46":{"body":70,"breadcrumbs":9,"title":4},"47":{"body":231,"breadcrumbs":10,"title":5},"48":{"body":17,"breadcrumbs":8,"title":3},"49":{"body":19,"breadcrumbs":9,"title":4},"5":{"body":0,"breadcrumbs":2,"title":1},"50":{"body":315,"breadcrumbs":9,"title":4},"51":{"body":92,"breadcrumbs":8,"title":3},"52":{"body":121,"breadcrumbs":7,"title":2},"53":{"body":166,"breadcrumbs":6,"title":1},"54":{"body":8,"breadcrumbs":7,"title":2},"55":{"body":17,"breadcrumbs":6,"title":1},"56":{"body":133,"breadcrumbs":6,"title":1},"57":{"body":81,"breadcrumbs":7,"title":2},"58":{"body":60,"breadcrumbs":8,"title":3},"59":{"body":54,"breadcrumbs":8,"title":3},"6":{"body":47,"breadcrumbs":3,"title":2},"60":{"body":97,"breadcrumbs":8,"title":3},"61":{"body":0,"breadcrumbs":7,"title":2},"62":{"body":79,"breadcrumbs":9,"title":4},"63":{"body":25,"breadcrumbs":11,"title":6},"64":{"body":63,"breadcrumbs":10,"title":5},"65":{"body":138,"breadcrumbs":11,"title":4},"66":{"body":41,"breadcrumbs":9,"title":2},"67":{"body":18,"breadcrumbs":9,"title":2},"68":{"body":294,"breadcrumbs":10,"title":3},"69":{"body":79,"breadcrumbs":11,"title":4},"7":{"body":46,"breadcrumbs":3,"title":2},"70":{"body":79,"breadcrumbs":10,"title":3},"71":{"body":96,"breadcrumbs":10,"title":5},"72":{"body":36,"breadcrumbs":9,"title":4},"73":{"body":112,"breadcrumbs":7,"title":2},"74":{"body":128,"breadcrumbs":9,"title":4},"75":{"body":153,"breadcrumbs":10,"title":5},"76":{"body":17,"breadcrumbs":6,"title":1},"77":{"body":0,"breadcrumbs":7,"title":2},"78":{"body":36,"breadcrumbs":7,"title":2},"79":{"body":79,"breadcrumbs":9,"title":3},"8":{"body":27,"breadcrumbs":3,"title":2},"80":{"body":29,"breadcrumbs":8,"title":2},"81":{"body":34,"breadcrumbs":9,"title":3},"82":{"body":54,"breadcrumbs":9,"title":3},"83":{"body":16,"breadcrumbs":7,"title":1},"84":{"body":56,"breadcrumbs":8,"title":2},"85":{"body":22,"breadcrumbs":11,"title":5},"86":{"body":19,"breadcrumbs":11,"title":5},"87":{"body":419,"breadcrumbs":12,"title":6},"88":{"body":0,"breadcrumbs":8,"title":2},"89":{"body":260,"breadcrumbs":7,"title":1},"9":{"body":9,"breadcrumbs":3,"title":2},"90":{"body":81,"breadcrumbs":7,"title":1},"91":{"body":7,"breadcrumbs":7,"title":1},"92":{"body":26,"breadcrumbs":7,"title":1},"93":{"body":9,"breadcrumbs":7,"title":1},"94":{"body":36,"breadcrumbs":7,"title":1},"95":{"body":72,"breadcrumbs":7,"title":1},"96":{"body":99,"breadcrumbs":7,"title":1},"97":{"body":53,"breadcrumbs":7,"title":1},"98":{"body":99,"breadcrumbs":9,"title":3},"99":{"body":47,"breadcrumbs":9,"title":3}},"docs":{"0":{"body":"This directory contains the plain english specs for Optimism, a minimal optimistic rollup protocol that maintains 1:1 compatibility with Ethereum.","breadcrumbs":"Root » OP Stack Specs","id":"0","title":"OP Stack Specs"},"1":{"body":"Introduction Overview Deposits Withdrawals Execution Engine L2 Output Root Proposals Rollup Node Rollup Node P2p L2 Chain Derivation Superchain Upgrades System Config Batch Submitter Guaranteed Gas Market Messengers Bridges Predeploys Glossary","breadcrumbs":"Root » Specification Contents","id":"1","title":"Specification Contents"},"10":{"body":"In order to scale Ethereum without sacrificing security, we must preserve 3 critical properties of Ethereum layer 1: liveness, availability, and validity. Liveness Anyone must be able to extend the rollup chain by sending transactions at any time. There are two ways transactions can be sent to the rollup chain: 1) via the sequencer, and 2) directly on layer 1. The sequencer provides low latency & low cost transactions, while sending transactions directly to layer 1 provides censorship resistance. Availability Anyone must be able to download the rollup chain. All information required to derive the chain is embedded into layer 1 blocks. That way as long as the layer 1 chain is available, so is the rollup. Validity All transactions must be correctly executed and all withdrawals correctly processed. The rollup state and withdrawals are managed on an L1 contract called the L2OutputOracle. This oracle is guaranteed to only finalize correct (ie. valid) rollup block hashes given a single honest verifier assumption. If there is ever an invalid block hash asserted on layer 1, an honest verifier will prove it is invalid and win a bond. Footnote : There are two main ways to enforce validity of a rollup: fault proofs (optimistic rollup) and validity proofs (zkRollup). For the purposes of this spec we only focus on fault proofs but it is worth noting that validity proofs can also be plugged in once they have been made feasible.","breadcrumbs":"Introduction » Protocol Guarantees","id":"10","title":"Protocol Guarantees"},"100":{"body":"EIP-4844 introduces Blob transactions: featuring all the functionality of an EIP-1559 transaction, plus a list of \"blobs\": \"Binary Large Object\", i.e. a dedicated data type for serving Data-Availability as base-layer. With the Ecotone upgrade, all Cancun L1 execution features are enabled, with EIP-4844 as exception: as a L2, the OP-Stack does not serve blobs, and thus disables this new transaction type. EIP-4844 is disabled as following: Transaction network-layer announcements, announcing blob-type transactions, are ignored. Transactions of the blob-type, through the RPC or otherwise, are not allowed into the transaction pool. Block-building code does not select EIP-4844 transactions. An L2 block state-transition with EIP-4844 transactions is invalid. The BLOBBASEFEE opcode is present but its semantics are altered because there are no blobs processed by L2. The opcode will always push a value of 1 onto the stack.","breadcrumbs":"OP Stack Protocol » Clients » Execution Engine » Ecotone: disable Blob-transactions","id":"100","title":"Ecotone: disable Blob-transactions"},"101":{"body":"EIP-4788 introduces a \"beacon block root\" into the execution-layer block-header and EVM. This block root is an SSZ hash-tree-root of the consensus-layer contents of the previous consensus block. With the adoption of EIP-4399 in the Bedrock upgrade the OP-Stack already includes the PREVRANDAO of L1. And thus with EIP-4788 the L1 beacon block root is made available. For the Ecotone upgrade, this entails that: The parent_beacon_block_root of the L1 origin is now embedded in the L2 block header. The \"Beacon roots contract\" is deployed at Ecotone upgrade-time, or embedded at genesis if activated at genesis. The block state-transition process now includes the same special beacon-block-root EVM processing as L1 ethereum.","breadcrumbs":"OP Stack Protocol » Clients » Execution Engine » Ecotone: Beacon Block Root","id":"101","title":"Ecotone: Beacon Block Root"},"102":{"body":"The rollup node is the component responsible for deriving the L2 chain from L1 blocks (and their associated receipts ). The part of the rollup node that derives the L2 chain is called the rollup driver . This document is currently only concerned with the specification of the rollup driver. Table of Contents Driver Derivation L2 Output RPC method Structures BlockID L1BlockRef L2BlockRef SyncStatus Output Method API Protocol Version tracking","breadcrumbs":"OP Stack Protocol » Clients » Rollup Node » Rollup Node Specification","id":"102","title":"Rollup Node Specification"},"103":{"body":"The task of the driver in the rollup node is to manage the derivation process: Keep track of L1 head block Keep track of the L2 chain sync progress Iterate over the derivation steps as new inputs become available","breadcrumbs":"OP Stack Protocol » Clients » Rollup Node » Driver","id":"103","title":"Driver"},"104":{"body":"This process happens in three steps: Select inputs from the L1 chain, on top of the last L2 block: a list of blocks, with transactions and associated data and receipts. Read L1 information, deposits, and sequencing batches in order to generate payload attributes (essentially a block without output properties ). Pass the payload attributes to the execution engine , so that the L2 block (including output block properties ) may be computed. While this process is conceptually a pure function from the L1 chain to the L2 chain, it is in practice incremental. The L2 chain is extended whenever new L1 blocks are added to the L1 chain. Similarly, the L2 chain re-organizes whenever the L1 chain re-organizes . For a complete specification of the L2 block derivation, refer to the L2 block derivation document .","breadcrumbs":"OP Stack Protocol » Clients » Rollup Node » Derivation","id":"104","title":"Derivation"},"105":{"body":"The Rollup node has its own RPC method, optimism_outputAtBlock which returns a 32 byte hash corresponding to the L2 output root .","breadcrumbs":"OP Stack Protocol » Clients » Rollup Node » L2 Output RPC method","id":"105","title":"L2 Output RPC method"},"106":{"body":"These define the types used by rollup node API methods. The types defined here are extended from the engine API specs . BlockID hash: DATA, 32 Bytes number: QUANTITY, 64 Bits L1BlockRef hash: DATA, 32 Bytes number: QUANTITY, 64 Bits parentHash: DATA, 32 Bytes timestamp: QUANTITY, 64 Bits L2BlockRef hash: DATA, 32 Bytes number: QUANTITY, 64 Bits parentHash: DATA, 32 Bytes timestamp: QUANTITY, 64 Bits l1origin: BlockID sequenceNumber: QUANTITY, 64 Bits - distance to first block of epoch SyncStatus Represents a snapshot of the rollup driver. current_l1: Object - instance of L1BlockRef . current_l1_finalized: Object - instance of L1BlockRef . head_l1: Object - instance of L1BlockRef . safe_l1: Object - instance of L1BlockRef . finalized_l1: Object - instance of L1BlockRef . unsafe_l2: Object - instance of L2BlockRef . safe_l2: Object - instance of L2BlockRef . finalized_l2: Object - instance of L2BlockRef . pending_safe_l2: Object - instance of L2BlockRef . queued_unsafe_l2: Object - instance of L2BlockRef .","breadcrumbs":"OP Stack Protocol » Clients » Rollup Node » Structures","id":"106","title":"Structures"},"107":{"body":"The input and return types here are as defined by the engine API specs . method: optimism_outputAtBlock params: blockNumber: QUANTITY, 64 bits - L2 integer block number. returns: version: DATA, 32 Bytes - the output root version number, beginning with 0. outputRoot: DATA, 32 Bytes - the output root. blockRef: Object - instance of L2BlockRef . withdrawalStorageRoot: 32 bytes - storage root of the L2toL1MessagePasser contract. stateRoot: DATA: 32 bytes - the state root. syncStatus: Object - instance of SyncStatus .","breadcrumbs":"OP Stack Protocol » Clients » Rollup Node » Output Method API","id":"107","title":"Output Method API"},"108":{"body":"The rollup-node should monitor the recommended and required protocol version by monitoring the Protocol Version contract on L1, as specified in the Superchain Version Signaling specifications . This can be implemented through polling in the Driver loop. After polling the Protocol Version, the rollup node SHOULD communicate it with the execution-engine through an engine_signalSuperchainV1 call. The rollup node SHOULD warn the user when the recommended version is newer than the current version supported by the rollup node. The rollup node SHOULD take safety precautions if it does not meet the required protocol version. This may include halting the engine, with consent of the rollup node operator.","breadcrumbs":"OP Stack Protocol » Clients » Rollup Node » Protocol Version tracking","id":"108","title":"Protocol Version tracking"},"109":{"body":"The rollup node has an optional peer-to-peer (P2P) network service to improve the latency between the view of sequencers and the rest of the network by bypassing the L1 in the happy case, without relying on a single centralized endpoint. This also enables faster historical sync to be bootstrapped by providing block headers to sync towards, and only having to compare the L2 chain inputs to the L1 data as compared to processing everything one block at a time. The rollup node will always prioritize L1 and reorganize to match the canonical chain. The L2 data retrieved via the P2P interface is strictly a speculative extension, also known as the \"unsafe\" chain, to improve the happy case performance. This also means that P2P behavior is a soft-rule: nodes keep each other in check with scoring and eventual banning of malicious peers by identity or IP. Any behavior on the P2P layer does not affect the rollup security, at worst nodes rely on higher-latency data from L1 to serve. In summary, the P2P stack looks like: Discovery to find peers: Discv5 Connections, peering, transport security, multiplexing, gossip: LibP2P Application-layer publishing and validation of gossiped messages like L2 blocks. This document only specifies the composition and configuration of these network libraries. These components have their own standards, implementations in Go/Rust/Java/Nim/JS/more, and are adopted by several other blockchains, most notably the L1 consensus layer (Eth2) . Table of Contents P2P configuration Identification Discv5 Structure LibP2P Transport Dialing NAT Peer management Transport security Protocol negotiation Identify Ping Multiplexing GossipSub Heartbeat and parameters Topic configuration Topic validation Gossip Topics blocksv1 blocksv2 blocksv3 Block encoding Block signatures Block validation Block processing Block topic scoring parameters Req-Resp payload_by_number","breadcrumbs":"OP Stack Protocol » Clients » Rollup Node » Rollup Node P2P » Rollup-node P2P interface","id":"109","title":"Rollup-node P2P interface"},"11":{"body":"There are three actors in Optimism: users, sequencers, and verifiers. Network Overview","breadcrumbs":"Introduction » Network Participants","id":"11","title":"Network Participants"},"110":{"body":"","breadcrumbs":"OP Stack Protocol » Clients » Rollup Node » Rollup Node P2P » P2P configuration","id":"110","title":"P2P configuration"},"111":{"body":"Nodes have a separate network- and consensus-identity. The network identity is a secp256k1 key, used for both discovery and active LibP2P connections. Common representations of network identity: PeerID: a LibP2P specific ID derived from the pubkey (through protobuf encoding, typing and hashing) NodeID: a Discv5 specific ID derived from the pubkey (through hashing, used in the DHT) Multi-address: an unsigned address, containing: IP, TCP port, PeerID ENR: a signed record used for discovery, containing: IP, TCP port, UDP port, signature (pubkey can be derived) and L2 network identification. Generally encoded in base64.","breadcrumbs":"OP Stack Protocol » Clients » Rollup Node » Rollup Node P2P » Identification","id":"111","title":"Identification"},"112":{"body":"Structure The Ethereum Node Record (ENR) for an Optimism rollup node must contain the following values, identified by unique keys: An IPv4 address (ip field) and/or IPv6 address (ip6 field). A TCP port (tcp field) representing the local libp2p listening port. A UDP port (udp field) representing the local discv5 listening port. An OpStack (opstack field) L2 network identifier The opstack value is encoded as a single RLP bytes value, the concatenation of: chain ID (unsigned varint) fork ID (unsigned varint) Note that DiscV5 is a shared DHT (Distributed Hash Table): the L1 consensus and execution nodes, as well as testnet nodes, and even external IOT nodes, all communicate records in this large common DHT. This makes it more difficult to censor the discovery of node records. The discovery process in Optimism is a pipeline of node records: Fill the table with FINDNODES if necessary (Performed by Discv5 library) Pull additional records with searches to random Node IDs if necessary (e.g. iterate RandomNodes() in Go implementation) Pull records from the DiscV5 module when looking for peers Check if the record contains the opstack entry, verify it matches the chain ID and current or future fork number If not already connected, and not recently disconnected or put on deny-list, attempt to dial.","breadcrumbs":"OP Stack Protocol » Clients » Rollup Node » Rollup Node P2P » Discv5","id":"112","title":"Discv5"},"113":{"body":"Transport TCP transport. Additional transports are supported by LibP2P, but not required. Dialing Nodes should be publicly dialable, not rely on relay extensions, and able to dial both IPv4 and IPv6. NAT The listening endpoint must be publicly facing, but may be configured behind a NAT. LibP2P will use PMP / UPNP based techniques to track the external IP of the node. It is recommended to disable the above if the external IP is static and configured manually. Peer management The default is to maintain a peer count with a tide-system based on active peer count: At \"low tide\" the node starts to actively search for additional peer connections. At \"high tide\" the node starts to prune active connections, except those that are marked as trusted or have a grace period. Peers will have a grace period for a configurable amount of time after joining. In an emergency, when memory runs low, the node should start pruning more aggressively. Peer records can be persisted to disk to quickly reconnect with known peers after restarting the rollup node. The discovery process feeds the peerstore with peer records to connect to, tagged with a time-to-live (TTL). The current P2P processes do not require selective topic-specific peer connections, other than filtering for the basic network participation requirement. Peers may be banned if their performance score is too low, or if an objectively malicious action was detected. Banned peers will be persisted to the same data-store as the peerstore records. TODO: the connection gater does currently not gate by IP address on the dial Accept-callback. Transport security Libp2p-noise , XX handshake, with the secp256k1 P2P identity, as popularized in Eth2. The TLS option is available as well, but noise should be prioritized in negotiation. Protocol negotiation Multistream-select 1.0 (/multistream/1.0.0) is an interactive protocol used to negotiate sub-protocols supported in LibP2P peers. Multistream-select 2.0 may be used in the future. Identify LibP2P offers a minimal identification module to share client version and programming language. This is optional and can be disabled for enhanced privacy. It also includes the same protocol negotiation information, which can speed up initial connections. Ping LibP2P includes a simple ping protocol to track latency between connections. This should be enabled to help provide insight into the network health. Multiplexing For async communication over different channels over the same connection, multiplexing is used. mplex (/mplex/6.7.0) is required, and yamux (/yamux/1.0.0) is recommended but optional GossipSub GossipSub 1.1 (/meshsub/1.1.0, i.e. with peer-scoring extension) is a pubsub protocol for mesh-networks, deployed on L1 consensus (Eth2) and other protocols such as Filecoin, offering lots of customization options. Content-based message identification Messages are deduplicated, and filtered through application-layer signature verification. Thus origin-stamping is disabled and published messages must only contain application data, enforced through a StrictNoSign Signature Policy This provides greater privacy, and allows sequencers (consensus identity) to maintain multiple network identities for redundancy. Message compression and limits The application contents are compressed with snappy single-block-compression (as opposed to frame-compression), and constrained to 10 MiB. Message ID computation Same as L1 , with recognition of compression: If message.data has a valid snappy decompression, set message-id to the first 20 bytes of the SHA256 hash of the concatenation of MESSAGE_DOMAIN_VALID_SNAPPY with the snappy decompressed message data, i.e. SHA256(MESSAGE_DOMAIN_VALID_SNAPPY + snappy_decompress(message.data))[:20]. Otherwise, set message-id to the first 20 bytes of the SHA256 hash of the concatenation of MESSAGE_DOMAIN_INVALID_SNAPPY with the raw message data, i.e. SHA256(MESSAGE_DOMAIN_INVALID_SNAPPY + message.data)[:20]. Heartbeat and parameters GossipSub parameters : D (topic stable mesh target count): 8 D_low (topic stable mesh low watermark): 6 D_high (topic stable mesh high watermark): 12 D_lazy (gossip target): 6 heartbeat_interval (interval of heartbeat, in seconds): 0.5 fanout_ttl (ttl for fanout maps for topics we are not subscribed to but have published to, in seconds): 24 mcache_len (number of windows to retain full messages in cache for IWANT responses): 12 mcache_gossip (number of windows to gossip about): 3 seen_ttl (number of heartbeat intervals to retain message IDs): 130 (= 65 seconds) Notable differences from L1 consensus (Eth2): seen_ttl does not need to cover a full L1 epoch (6.4 minutes), but rather just a small window covering latest blocks fanout_ttl: adjusted to lower than seen_ttl mcache_len: a larger number of heartbeats can be retained since the gossip is much less noisy. heartbeat_interval: faster interval to reduce latency, bandwidth should still be reasonable since there are far fewer messages to gossip about each interval than on L1 which uses an interval of 0.7 seconds. Topic configuration Topics have string identifiers and are communicated with messages and subscriptions. /optimism/chain_id/hardfork_version/Name chain_id: replace with decimal representation of chain ID hardfork_version: replace with decimal representation of hardfork, starting at 0 Name: topic application-name Note that the topic encoding depends on the topic, unlike L1, since there are less topics, and all are snappy-compressed. Topic validation To ensure only valid messages are relayed, and malicious peers get scored based on application behavior, an extended validator checks the message before it is relayed or processed. The extended validator emits one of the following validation signals: ACCEPT valid, relayed to other peers and passed to local topic subscriber IGNORE scored like inactivity, message is dropped and not processed REJECT score penalties, message is dropped","breadcrumbs":"OP Stack Protocol » Clients » Rollup Node » Rollup Node P2P » LibP2P","id":"113","title":"LibP2P"},"114":{"body":"There are three topics for distributing blocks to other nodes faster than proxying through L1 would. These are:","breadcrumbs":"OP Stack Protocol » Clients » Rollup Node » Rollup Node P2P » Gossip Topics","id":"114","title":"Gossip Topics"},"115":{"body":"Pre-Canyon/Shanghai blocks are broadcast on /optimism/