twitter: @0xb2p github: @bap2pecs
How to fix ERR_SSL_VERSION_OR_CIPHER_MISMATCH
I was setting up SSL for a domain using cloudflare along with nginx-acme and nginx-proxy but I got error ERR_SSL_VERSION_OR_CIPHER_MISMATCH when testing. Checking the container logs, everything looks alright. By using SSL Labs toolkit, it shows error “Failed to communicate with the secure server”:Looking it up, I found https://community.cloudflare.com/t/failed-to-communicate-with-the-secure-server/186871 which links to https://developers.cloudflare.com/ssl/troubleshooting/version-cipher-misma...
How to spin up your own PoA EVM chain?
We will set up 1 bootnode and 2 geth nodes in 3 different servers. They will form the network for the EVM chain. All the nodes will run in containers.My setupI created 3 droplets on digitalocean (CentOS; shared CPU; 1GB 1Core)install and start docker (with the compose plugin) in all dropletsStep 1: set up bootnode (droplet A)first create boot.keymkdir /root/devnet/ && docker run -d --rm -v /root:/root ethereum/client-go:alltools-latest bootnode --genkey=/root/devnet/boot.key then cr...
Filecoin/FVM: Study Notes
Study Stepsread https://docs.filecoin.io/about/basics/introduction/read The Filecoin Virtual Machine: Everything You Need to Knowread https://docs.filecoin.io/about/basics/filecoin-faq/read How Filecoin storage and retrieval workswatch Space Warp Summit 🛸 Understanding the FVM - Raul Kripalaniwatch Space Warp Summit 🛸 Programming on the FEVM - Zak AyeshHigh-levelFilecoin is built on top of the same software powering IPFS protocol but they are different networksFilecoin is different from IPF...
How to fix ERR_SSL_VERSION_OR_CIPHER_MISMATCH
I was setting up SSL for a domain using cloudflare along with nginx-acme and nginx-proxy but I got error ERR_SSL_VERSION_OR_CIPHER_MISMATCH when testing. Checking the container logs, everything looks alright. By using SSL Labs toolkit, it shows error “Failed to communicate with the secure server”:Looking it up, I found https://community.cloudflare.com/t/failed-to-communicate-with-the-secure-server/186871 which links to https://developers.cloudflare.com/ssl/troubleshooting/version-cipher-misma...
How to spin up your own PoA EVM chain?
We will set up 1 bootnode and 2 geth nodes in 3 different servers. They will form the network for the EVM chain. All the nodes will run in containers.My setupI created 3 droplets on digitalocean (CentOS; shared CPU; 1GB 1Core)install and start docker (with the compose plugin) in all dropletsStep 1: set up bootnode (droplet A)first create boot.keymkdir /root/devnet/ && docker run -d --rm -v /root:/root ethereum/client-go:alltools-latest bootnode --genkey=/root/devnet/boot.key then cr...
Filecoin/FVM: Study Notes
Study Stepsread https://docs.filecoin.io/about/basics/introduction/read The Filecoin Virtual Machine: Everything You Need to Knowread https://docs.filecoin.io/about/basics/filecoin-faq/read How Filecoin storage and retrieval workswatch Space Warp Summit 🛸 Understanding the FVM - Raul Kripalaniwatch Space Warp Summit 🛸 Programming on the FEVM - Zak AyeshHigh-levelFilecoin is built on top of the same software powering IPFS protocol but they are different networksFilecoin is different from IPF...
twitter: @0xb2p github: @bap2pecs

Subscribe to bap2pecs

Subscribe to bap2pecs
Share Dialog
Share Dialog
<100 subscribers
<100 subscribers
Disclaimer: My goal is to learn the OP Bedrock protocol quickly so I can understand the code more easily to be able to plug in with my own DA layer to the OP stack. So I only read the things I think that can be helpful. The goal is not to understand every piece of the details.
watch the talks given by OP Labs’ Karl Floersch and Kelvin Fichter at Devcon 6
read the following specs: Introduction, Overview, Deposits, Rollup Node, Batch Submitter, System Config, L2 Chain Derivation(*)
*: for the derivation spec, I started to skip lots of the details from section Batch Queue
It should take ~2-3 days to study everything on this list.
The OP stack is modular and minimal. It’s easy to swap with your own e.g. consensus, DA layers. The Superchain vision is able to scale horizontally.
Example: Metis forked OP and customized the DA layer with a DA committee
The 3 primary layers
Consensus
DA: an array of byte strings. not necessary a ledger
Derivation: takes the DA layer and the current state of the rollup and produces Engine API payloads
Execution: state transition
Settlement: a view that another chain has over your chain


Note: step 4 is related to the concept of finalized L2 head.

The L2OutputOracle is a L1 contract to store rollup states (i.e. L2 output roots) and manage withdrawals. It will be helpful to think of it as the rollup output store and DepositFeed and BatchInbox as the rollup input store. So the L1 is simply the DA layer for storing rollup inputs and outputs, and the L2 is the computing layer.
DepositFeed is for a special transaction type (i.e. Deposited Transaction) on L2 defined by the Optimism protocol. BatchInbox is for the other normal L2 transactions (i.e. only transaction inputs) that are batch-submitted to L1.
It’s also useful to know that the BatchInbox is a regular EOA address (note: for saving gas cost by not executing any EVM code). The sequencer submits L2 transaction batches included in the calldata of the L1 transaction to the address.
Deposited Transactions: This is a new transaction type on L2 defined by the protocol.
It’s important to understand that when tokens are deposited from L1 to L2, it’s technically “depositing the transactions to the L2“. The tokens are locked on L1 and then minted on L2.
deposited transactions do not need a signature and rely on other mechanisms for authorization and validation
L1 attributes deposited transaction and user-deposited transactions
L1 Attributes Depositor Account: an EOA with unknown private key.

System Config: batcherHash stores the current authorized batcher sender(s)
Payload Attributes: object to be passed to the execution engine
L2 Chain Inception: the L1 block number where the L2 genesis starts
Disclaimer: My goal is to learn the OP Bedrock protocol quickly so I can understand the code more easily to be able to plug in with my own DA layer to the OP stack. So I only read the things I think that can be helpful. The goal is not to understand every piece of the details.
watch the talks given by OP Labs’ Karl Floersch and Kelvin Fichter at Devcon 6
read the following specs: Introduction, Overview, Deposits, Rollup Node, Batch Submitter, System Config, L2 Chain Derivation(*)
*: for the derivation spec, I started to skip lots of the details from section Batch Queue
It should take ~2-3 days to study everything on this list.
The OP stack is modular and minimal. It’s easy to swap with your own e.g. consensus, DA layers. The Superchain vision is able to scale horizontally.
Example: Metis forked OP and customized the DA layer with a DA committee
The 3 primary layers
Consensus
DA: an array of byte strings. not necessary a ledger
Derivation: takes the DA layer and the current state of the rollup and produces Engine API payloads
Execution: state transition
Settlement: a view that another chain has over your chain


Note: step 4 is related to the concept of finalized L2 head.

The L2OutputOracle is a L1 contract to store rollup states (i.e. L2 output roots) and manage withdrawals. It will be helpful to think of it as the rollup output store and DepositFeed and BatchInbox as the rollup input store. So the L1 is simply the DA layer for storing rollup inputs and outputs, and the L2 is the computing layer.
DepositFeed is for a special transaction type (i.e. Deposited Transaction) on L2 defined by the Optimism protocol. BatchInbox is for the other normal L2 transactions (i.e. only transaction inputs) that are batch-submitted to L1.
It’s also useful to know that the BatchInbox is a regular EOA address (note: for saving gas cost by not executing any EVM code). The sequencer submits L2 transaction batches included in the calldata of the L1 transaction to the address.
Deposited Transactions: This is a new transaction type on L2 defined by the protocol.
It’s important to understand that when tokens are deposited from L1 to L2, it’s technically “depositing the transactions to the L2“. The tokens are locked on L1 and then minted on L2.
deposited transactions do not need a signature and rely on other mechanisms for authorization and validation
L1 attributes deposited transaction and user-deposited transactions
L1 Attributes Depositor Account: an EOA with unknown private key.

System Config: batcherHash stores the current authorized batcher sender(s)
Payload Attributes: object to be passed to the execution engine
L2 Chain Inception: the L1 block number where the L2 genesis starts
Data Availability Provider (e.g. Ethereum calldata)
Sequencer Batch: each batch represents the inputs needed to build one L2 block
Batcher Transaction: a transaction submitted by a batcher to a data availability provider
Channel and Channel Frame
The diagram below illustrates these concepts as a whole
it’s important to distinguish the difference of finalizing the L2 head with the concept of finalization period. The former form of finalization only affects inputs while the later affects Optimistic-rollup outputs.
Fork Choice Rule: to determine the blockchain head
Time Slot: every 2 second per L2 block
Data Availability Provider (e.g. Ethereum calldata)
Sequencer Batch: each batch represents the inputs needed to build one L2 block
Batcher Transaction: a transaction submitted by a batcher to a data availability provider
Channel and Channel Frame
The diagram below illustrates these concepts as a whole
it’s important to distinguish the difference of finalizing the L2 head with the concept of finalization period. The former form of finalization only affects inputs while the later affects Optimistic-rollup outputs.
Fork Choice Rule: to determine the blockchain head
Time Slot: every 2 second per L2 block
No activity yet