본문으로 건너뛰기
0%

섀도우 포크란 무엇인가요?

Alchemy team headshot

작성자 Alchemy

2022년 6월 24일에 게시됨3분 읽기

shadow fork이란 무엇인가?

Shadow fork는 devnet과 비슷하지만, 자체 state를 갖는 대신 다른 네트워크(devnet 또는 mainnet)의 state를 복사한다.

예를 들어, Ethereum 메인 네트워크의 shadow fork는 여전히 mainnet으로 전송되는 모든 트랜잭션을 받아들인다.

이 브랜치는 Proof-of-Stake로 전환될 수 있지만, mainnet의 트랜잭션과 그 외의 state/히스토리 데이터는 그대로 유지한다.

shadow fork에서 머지가 성공적으로 이루어진 후에는 Proof-of-Stake 체인으로 넘어가고, mainnet에 추가된 Proof-of-Work 블록은 무시한다.

shadow fork는 일반 fork와 어떻게 다른가?

shadow fork가 원본 체인의 기존 state 데이터를 사용해 네트워크 업그레이드를 테스트하기 위해 의도적으로 만들어지는 것과 달리, 일반 fork는 개발 커뮤니티가 프로토콜을 수정하거나 해킹의 영향을 받을 때 발생한다. fork가 일어나면 블록체인이 분리되어, 첫 번째 체인과 동일한 히스토리를 가지지만 경로가 다른 두 번째(새로운) 블록체인이 만들어진다.

핵심 개발자들의 블록체인 업그레이드로 인해 fork가 발생한 예로는, Ethereum의 트랜잭션 수수료 구조를 최적화하기 위해 EIP-1559를 도입한 London Hard Fork가 있다.

Bitcoin과 Ethereum은 모두 블록체인 기술을 기반으로 하며 오픈 소스 소프트웨어로 동작한다. 이들이 "블록체인"이라고 불리는 이유는 네트워크의 첫 트랜잭션까지 연결될 수 있는 데이터 블록들로 구성되어 있기 때문이다.

오픈 소스이기 때문에, 이들 커뮤니티는 소스 코드를 유지 관리하고 개선할 책임이 있다. 그 결과, 블록체인을 더 안전하게 만들거나, 새로운 기능을 추가하거나, 2016년 The DAO 해킹 이후처럼 해킹의 영향을 완화하기 위해 fork가 발생하기도 한다.

2016년 Ethereum 블록체인은 도난당한 360만 ETH를 그대로 반영하는 정확한 원장을 유지한 Ethereum Classic과, 해킹을 되돌리기 위해 fork된 Ethereum으로 나뉘었다.

soft fork와 hard fork의 차이는 무엇인가?

soft fork와 hard fork의 차이는, soft fork는 기존 블록체인의 코드를 변경하는 반면 hard fork는 블록체인을 두 개의 별개 블록체인으로 나눈다는 것이다.

Soft fork

soft fork는 블록체인을 구동하는 소프트웨어의 업데이트라고 생각할 수 있다. 모두가 이를 사용하는 한, 이것이 네트워크의 새로운 규칙 집합이 된다.

soft fork는 보통 코드베이스와 클라이언트 소프트웨어를 변경하여 Ethereum에 새로운 기능이나 기능을 추가하는 데 사용되어 왔다. 결과적으로 단일 블록체인이 유지되기 때문에, 이 변경 사항은 fork 이전에 만들어진 블록들과도 호환된다.

Hard fork

코드가 크게 변경되어 새 버전이 이전 블록과 함께 사용될 수 없게 되면 이를 "hard fork"라고 부른다. 이 경우 블록체인은 두 부분으로 나뉜다:

  1. 기존 규칙을 따르는 기존 블록체인
  2. 새로운 규칙을 따르는 새 블록체인

이렇게 하면 완전히 새로운 암호화폐가 만들어지며, 많은 유명 암호화폐들이 이런 방식으로 시작되었다. hard fork를 통해 원래 Bitcoin 블록체인에서 Bitcoin Cash가 만들어졌고, Ethereum(ETH)에서 Ethereum Classic(ETC)이 만들어졌다.

shadow fork가 중요한 이유는 무엇인가?

shadow fork는 web3 개발자들이 mainnet 프로덕션 환경의 최신 상태를 기준으로 네트워크의 향후 업그레이드에 대한 가정을 테스트할 수 있게 해주는 중요한 도구다.

shadow fork는 Ethereum의 Execution Layer를 Proof-of-Work에서 Proof-of-Stake로 전환한 The Merge를 준비하기 위해 공개 testnet과 함께 사용되었다.

shadow fork는 머지가 네트워크에서 실행되는 기존 앱에 해로운 전환 없이 실현될 것임을 보여주는 데 중요하다.

이러한 shadow fork를 갖춘 testnet은 원활한 머지 전환이 이루어지도록 하는 테스트 환경이 되며, 노드 운영자와 빌더들에게 신뢰를 심어주는 데 도움이 될 것이다.

shadow fork는 어떻게 동작하는가?

기존 Goerli 체인에서 shadow fork가 생성되는 방식을 보여주는 이미지
An image showing how a shadow fork is created out of an existing Goerli chain. Source: AllCoreDevs Update #011 https://tim.mirror.xyz/PWFVaHY3Mrx7srarMmuBWya0J5kioR1l2xaH3p5APDk

위 그림에서, Goerli 블록의 맨 위 행은 shadow fork에 대해 알지 못하는 canonical(즉, 원본) 블록체인 상의 노드를 보여준다.

Goerli 블록의 중간 행은 terminal total difficulty(TTD), 즉 클라이언트가 채굴을 멈추고 PoS로 전환하는 트리거로 사용되는 총 채굴 난이도에 도달했을 때 분기하도록 설정이 다른 shadow-forked 체인 상의 노드를 나타낸다. 마지막 행에는 shadow fork를 위해 별도로 만들어진 Beacon Chain의 모습이 있다. TTD에 도달하면, canonical 체인의 노드들은 마치 아무 일도 없었다는 듯이 계속 블록을 생성하고, 설정이 변경된 노드들은 분리되어 머지를 거친다.

그런 다음, 다음 validator가 머지 이후 Beacon Chain의 첫 블록을 생성한다.

shadow forking은 공개 testnet이나 mainnet에 영향을 주지 않으면서 fork 및 머지 프로세스가 얼마나 잘 작동하는지 테스트할 수 있게 해주기 때문에 이를 수행하는 가장 좋은 방법이다.

이러한 shadow fork 작업을 반복적으로 수행함으로써, 개발자들은 다양한 상황에서 머지 전환을 테스트할 수 있다.

잘 알려진 shadow fork에는 어떤 것들이 있는가?

가장 잘 알려진 shadow fork를 가진 testnet으로 두 가지가 두드러진다: Goerli는 세 번의 shadow fork를, mainnet은 여섯 번의 shadow fork를 거쳤다. 두 mainnet shadow fork의 주요 차이점은, 모든 클라이언트 조합이 shadow fork 전송을 거쳐도 동기화 상태를 유지했다는 점이다.

이 shadow fork는 각 클라이언트에 대해 develop/unstable 브랜치를 사용한다. 즉, 개발자들이 더 이상 브랜치를 병합할 필요가 없다. mainnet에서는 deposit contract가 다시 사용되었지만, fork ID는 달랐다.

이는 shadow fork에서 모든 mainnet deposit이 처리되어 무효로 표시되어야 함을 의미한다. 이 자원 집약적인 연산은 소수의 클라이언트에서 일부 예외적인 상황을 유발했지만, 네트워크는 여전히 정상적으로 작동했다.

Ethereum을 shadow fork하는 방법

Ethereum을 fork하는 데 관심이 있다면, 무료 Alchemy 계정, HardHat, 그리고 커맨드 라인 인터페이스(CLI)를 사용해 Ethereum mainnet을 fork하는 방법에 대한 Alchemy의 단계별 가이드를 참고할 수 있다.

shadow fork는 필수적인 Ethereum 개발자 도구다

shadow fork는 Ethereum 블록체인의 지속적인 개발과 확장성 개선에서 중요한 역할을 한다. shadow fork를 통해 핵심 Ethereum 개발자, 노드 제공자, 독립 스테이커들은 다가오는 네트워크 전반의 변경 사항에 대비할 수 있으며, 이로써 Ethereum 애플리케이션 생태계가 중단되지 않도록 할 수 있다.

Background gradient

블록체인 매직을 만드세요

Alchemy는 가장 강력한 Web3 개발자 제품 및 도구를 리소스, 커뮤니티, 그리고 전설적인 지원과 결합합니다.