이더리움과 GIWA의 차이

GIWA 체인은 OP 스택을 기반으로 하고 있어요. OP 스택은 EVM(Ethereum Virtual Machine) equivalent 하기 때문에 이더리움과 거의 동일한 환경을 제공해요.

하지만 레이어 2인 GIWA와 레이어 1인 이더리움 사이에는 몇가지 작은 차이가 존재합니다. 여러분이 GIWA 체인에서 앱을 개발할 때 이러한 차이를 인지하고 있으면 예상치 못한 이슈를 줄일 수 있습니다.

블록(Block)

항목
이더리움
GIWA

블록 생성 주기

12 초

1 초

블록 gas limit

45,000,000

60,000,000

블록 생성 방식

제안자 + 검증자 구조

시퀀서

브릿징

GIWA는 이더리움 위에 구축된 레이어 2이기 때문에 브릿지를 통해 자산을 양방향(이더리움 <-> GIWA)으로 보낼 수 있어요.

Deposit 트랜잭션

Deposit 트랜잭션은 레이어 1인 이더리움에 트랜잭션을 전송함으로써 레이어 2인 GIWA의 상태를 바꾸는 것을 의미해요. 이를 통해 레이어 1에 있는 ETH 및 토큰들을 GIWA로 이동시킬 수 있어요. 이외에도 레이어 1 트랜잭션을 통해 GIWA에 있는 컨트랙트 호출 등이 가능합니다.

Withdrawal 트랜잭션

Withdrawal 트랜잭션은 레이어 2 트랜잭션을 통해 레이어 2에 있는 자산을 레이어 1으로 이동시키는 방식이에요. 이때 withdrawal을 위해 레이어 1에 레이어 2 상태에 대한 증명을 제출해야해요. 증명이 잘못되었을 수도 있기 때문에 증명을 검증하는 fault proof 기간이 추가됩니다.

Address Aliasing

Deposit 트랜잭션을 스마트 컨트랙트(Smart Contract)가 트리거하는 경우, 레이어 2에서 기록되는 해당 트랜잭션의 sender 주소는 레이어 1 스마트컨트랙트 주소 + 0x1111000000000000000000000000000000001111 형태로 aliasing이 이루어져요. 여러분이 크로스체인 앱을 개발하는 경우 반드시 고려해야 합니다.

Address Aliasing이 왜 필요한가요?

CREATE opcode 동작에 의하면 레이어 1과 레이어 2에서 배포되는 컨트랙트의 코드가 달라도 동일한 컨트랙트 주소를 가질 수 있어요. 이렇게 주소가 충돌할 수 있기 때문에 브릿징 등을 고려했을 때 문제가 발생할 수 있습니다. 이 때문에 레이어 1 컨트랙트가 보낸 트랜잭션의 sender는 alias 처리된 주소로 바뀌어야해요.

Mempool

이더리움에서는 트랜잭션을 전송하면 네트워크 내 노드들이 트랜잭션을 서로 전파하는 과정이 이루어져요. 이렇게 전파된 트랜잭션들은 블록에 포함되기 전까지 mempool에 존재하죠. 이더리움에는 public mempool이 있어 누구든 mempool 내 트랜잭션 내용을 확인할 수 있습니다.

레이어 2인 GIWA에서는 public mempool 이 존재하지 않아요. 블록을 생성하는 시퀀서만 mempool을 볼 수 있죠. 현재 GIWA 시퀀서는 높은 fee 순서대로 트랜잭션을 실행하고 있습니다.

Finality

이더리움과 다르게 레이어 2인 GIWA에서는 블록이 unsafe, safe, finalized 이렇게 3가지 상태를 가질 수 있어요.

  • unsafe: GIWA 시퀀서가 생성하고나서 아직 레이어 1인 이더리움에는 publish 되지 않은 경우

  • safe: 이더리움에 publish까지 이루어진 경우

  • finalized: 이더리움에 publish 까지 한 후, 해당 레이어 1 블록이 finalized 상태를 가지는 경우

여러분이 GIWA 앱을 개발할 때 레이어 2 블록의 상태를 고려해야할 수 있습니다.

더 알아보기

Last updated