목록2023/08 (4)
devops
Optimism의 op-batcher는 Layer1에 Tx Batch를 생성하여 압축, 전송하는 역할을 담당한다. 코드를 통해서 간단히 알아보자. # op-batcher func main() { oplog.SetupDefaults() app := cli.NewApp() app.Flags = flags.Flags app.Version = fmt.Sprintf("%s-%s-%s", Version, GitCommit, GitDate) app.Name = "op-batcher" app.Usage = "Batch Submitter Service" app.Description = "Service for generating and submitting L2 tx batches to L1" app.Action = cur..
L2 옵티미즘의 derivation이 어떻게 진행되는지를 정리해보려고 한다. derivation은 L2 체인을 derive하기 위해서 L1으로 부터 L2 derivation input을 읽는 과정이다. 내가 이해한 바로는 L1으로부터 필요한 정보를 가져와 L2 체인을 실행과 운영에 활용하는 것이다. 이 과정이 필요한 이유는 Layer2는 Layer1의 보안에 의존하기 때문에 트랜잭션 실행부터 Layer1 calldata 전송의 비용과 Layer2의 비용 산정, Deposit과 Withdraw를 안정적으로 진행할 수 있기 때문이다. Layer2라면 아주 중요한 파트 중 하나이며, 여기서 L2가 읽는 derivation input은 아래와 같다. L1 block attributes(block number, ..
Optimism의 Opstack은 약간의 코드 수정을 통해서 다양한 L1의 롤업을 지원할 수 있다고 생각한다. 여기서 L2의 트랜잭션 배치를 전송해야하기 때문에 L1의 정보를 derive할 필요가 있고, 그 과정을 이해해야한다. 최대한 이해할 수 있도록 정리해본다. L2 chain derivation 이는 간단히 말해서 L1의 데이터를 L2 블록으로 불러오는 것이라고 볼 수 있다. 이는 op-node(롤업노드)의 가장 중요한 역할이다. validate와 sequence하는 과정에서 L1의 데이터가 활용된다. 특히 L1의 re-org 이슈가 발생하면 L2에서 빠르게 대응해야하기 때문에 op-node의 역할이 더욱 강조된다. 각 L1 block은 L2의 시퀀싱 에포크에 맵핑되어 있다. 각 에포크 숫자는 L1..
옵티미즘의 베드락은 OP 메인넷의 주요 릴리즈 버전이다. 몇 가지 특징을 추려보자. Block Production Bedrock 버전 이후로 2초마다 새 블록을 생성한다. 기존에는 하나의 트랜잭션에 하나의 블록을 생성했었지만, 이젠 'TIMESTAMP'의 2초 간격으로 블록이 생성되며, 'BLOCKNUMBER'를 통해서 그 간격을 확인할 수 있다. System transactions Bedrock은 시스템 트랜잭션이라는 새로운 개념이 도입되었다. 시스템 트랜잭션은 op-node에 의해서 생성되는 것으로 L1 정보를 기록하여 deposit과 L2 업데이트에 활용된다. 모든 블록은 하나의 시스템 트랜잭션을 포함하며 이를 'L1 attrubutes desposited transaction'이라고 한다. 이는 ..