devops

Optimism Opstack의 Transaction & Block 본문

Layer2

Optimism Opstack의 Transaction & Block

vata500 2023. 7. 16. 16:13
반응형

Opstack Transaction

L2의 트랜잭션은 L1인 이더리움에 먼저 기록되어야 한다. op-batcher가 L2 트랜잭션을 L1에 전송하지만, 모든 사용자는 batcher를 우회하기 위해 L1 트랜잭션을 전송할 수 도 있다.

L2의 상태 업데이트를 위해 op-geth에서 트랜잭션이 실행된다. 그 후엔 op-proposer가 새 상태의 커밋을 L1에 전송한다.

L2 Transaction Process

가장 먼저 user의 Tx는 L1의 batch inbox에 전송해야하는데, 여기서 트랜잭션들을 Batch로 압축하여 L1에 포스트하는 단계가 진행된다. op-batcher는 압축률을 최대화하기 위해서 시퀀서 배치를 채널로 나눈다. 채널이 채워지거나 시간이 초과되면 채널이 압축되고 저장된다.

1) L1에 Batch 저장

압축 후엔 트랜잭션을 L1에 배치로 묶어 저장하고, 채널이 포화 상태가 되면 데이터 크기에 따라서 단일 또는 여러 개로 되어 L1에 전송된다.

L2 트랜잭션은 unsafe, safe, finalized 세 가지의 상태를 가진다.

  • unsafe : 처리가 되었으나 아직 L1에 기록되지 않음
  • safe : 처리되어 L1에 기록되었지만 L1 재구성으로 인해 삭제될 수 있음
  • finalized : 시간이 오래 지난 L1 블록에 기록됨

트랜잭션이 finalized 상태가 되면 취소가 안된다.

2) 실행

state processing 단계에서는 기존 상태에 트랜잭션을 적용하여 새 상태를 생성하고, 상태를 나타내는 새 머클 루트를 제안하는 두 가지 주요 단계가 포함된다. 이 과정은 op-geth와 op-proposer가 진행한다. op-geth는 트랜잭션을 현재 상태에 적용한다. 이 작업은 트랜잭션이 적용됨에 따라서 새 상태가 만들어진다.

3) 변경된 상태 루트 제안

op-proposer가 개입하여 상태의 새 머클 루트를 제안하고 이 루트를 L1 L2OutputOracle 컨트랙트에 저장한다. 전체 상태를 L1에 기록하는 것이 아닌 머클 루트를 사용한다. 머클 루트는 상태 변경에 대한 정보를 갖고 있고 효과적인 검증이 가능하다.


Opstack Block

배드락 이전에는 한 블록에 tx하나가 기록되었다. 그러나 배드락 업데이트 후부터는 2초마다 블록이 생성되고 이 기간 동안 전송된 트랜잭션과 변경된 상태 루트가 블록에 기록된다.

모든 블록에는 L1 블록의 최신 정보를 L1 Attributes Deposited Transaction(L1 ADT라고 칭하겠음)이라는 시스템 트랜잭션을 생성하 매 블록에 기록한다.

106860548 block에 포함된 System Address가 보낸 Set L1Block Values 트랜잭션

이 L1 ADT 트랜잭션은 두가지 주요 역할을 한다.

1) L1 컨트랙트에 가장 최근의 L1 블록의 정보를 제공하여 별도 크로스 체인 호출이 필요하지 않게 해준다.

2) L2 컨트랙트가 시퀀서가 제공한 L1 블록 정보의 정확성을 인증할 수 있게 한다.

블록이 생성하는 과정에서 op-node는 ADT 트랜잭션을 생성한다. 이 트랜잭션에 L1 블록번호, 타임스탬프, 기본 수수료와 해시 및 기타 정보를 기록된다. L1 Attributes Deposit Account에서 생성되며 이더리움의 value를 포함하지 않고 L2 gaspool과도 상호작용하지 않으며, 유효성 관계없이 원활한 블록 구성을 보장하기 위해서 항상 블록에 포함시킨다.

여기서 L1 Attributes Predeploy contract는 이 정보를 저장하고 액세스할 수 있는 역할을 담당한다.

  • op-node는 L2 블록에 가장 최근의 L1 블록 정보를 포함하는 L1 Attributes Deposited Transaction을 생성
  • 이 Tx는 L2에서 수행되고 L1 속성 사전 배포된 컨트랙트를 시작
  • 사전 배포된 컨트랙트는 L1 블록 데이터를 보유하고 이벤트를 트리거
  • 다른 L2 컨트랙트는 사전 배포된 컨트랙트와 연동하여 최신 L1 블록 정보를 가져올 수 있음

참고자료 : https://medium.com/fourpillars/op-stack-블록체인을-구축하기-위한-가장-간편한-프레임워크-5e86cc18768a

 

OP-Stack: 블록체인을 구축하기 위한 가장 간편한 프레임워크

면책 조항: 본 글은 일반적인 정보 제공을 목적으로 작성되었으며, 법률, 사업, 투자 또는 세금 관련 조언을 제공하지 않습니다. 본 글을 기반으로 투자 결정을 내리거나 이를 회계, 법률, 세무

medium.com

 

반응형
Comments