经过 Ugly Bob | OCT 17, 2022
0:03 最小读取
오픈 소스 소프트웨어 개발에 익숙하다면 포크( fork)라는 것에 대해 들어봤을 것입니다. 그러나 이 개념은 암호화 공간에서 보다 전문화된 의미를 갖습니다.
암호화에서 포크는 블록체인에 대한 합의 프로토콜의 변경입니다. 노드가 원래 체인과 별도의 체인에서 블록을 확인하기 시작하는 변경입니다.
개발자가 공개된 GitHub와 같은 플랫폼에 코드 조각을 나열한다고 가정해 보겠습니다. 오픈소스라고 합니다.
이것은 사용자가 자신의 사용을 위해 소스 코드의 복사본을 만들 수 있음을 의미합니다. 그들은 소프트웨어 자체를 컴파일할 의도로 이 작업을 수행할 수 있습니다. 그들은 소프트웨어의 원래 작성자가 추가하지 않았거나 원래 작성자가 거부했을 수 있는 기능을 추가하기 위해 이 작업을 수행할 수 있습니다.
이 소스 코드를 가져와서 독립적으로 구축하는 것을 Forking 이라고 합니다. 오픈소스의 생명력을 좌우하는 열쇠입니다.
암호화 소프트웨어의 뉘앙스는 합의에 있습니다. 작동하는 블록체인 프로토콜의 주요 속성입니다. 네트워크에서 작동하는 모든 노드는 다른 모든 노드와 동일한 소프트웨어를 사용해야 하며 그렇지 않으면 페널티 및 제외 위험이 있습니다.
따라서 기존 암호화 소프트웨어를 분기하고 싶다고 가정해 보겠습니다. 이러한 합의가 필요하기 때문에 전체 블록체인을 포크해야 합니다. 즉, 기존 노드의 대다수가 소프트웨어를 귀하의 소프트웨어로 교체하도록 할 수 없다면 항상 쉬운 일이 아닙니다!
포크는 여러 가지 이유로 발생합니다.
합의 규칙이 변경되는 암호화 공간에는 두 가지 유형의 포크가 있습니다. 둘 다 이전 노드의 참여를 포함하거나 제외하는 다른 결과를 준수해야 합니다.
하드 포크는 네트워크의 특정 변경 사항을 수용하기 위해 합의 규칙이 느슨해질 때 발생합니다. 이러한 변경은 블록 확인 동작의 기능을 향상시킵니다. 이러한 변경 사항은 이전 소프트웨어를 실행하는 노드와 호환되지 않으며 원래 블록체인에서 새 분기를 시작합니다.
네트워크 자산의 광범위한 기능이 변경되면 자산의 경제적 속성도 변경됩니다. 이러한 변경 사항에는 다음이 포함될 수 있습니다.
목록은 계속 진행되지만 한 가지는 확실합니다. 새 블록체인에서 거래하려면 새 자산이 필요합니다.
예를 들면: 이전 소프트웨어를 실행하는 노드가 1MB 블록을 예상할 때 2MB 블록을 수신한다고 가정해 보겠습니다. 이 2MB 블록은 이전 네트워크의 규칙이 허용하는 것보다 크기 때문에 유효하지 않습니다. 2MB 블록은 별도의 네트워크에서 보내야 합니다.
소프트 포크는 네트워크의 특정 변경 사항을 수용하기 위해 합의 규칙이 강화될 때 발생합니다. 이 변경은 블록 확인 또는 합의 동작의 특정 기능을 생성합니다. 이 유형의 포크는 이전 소프트웨어를 실행하는 노드와 호환되며 노드가 업데이트된 참여 방법을 포기할 수 있습니다.
이전 예제를 사용하려면: 노드가 1MB 블록을 예상하지만 0.8MB 블록을 수신한다고 가정해 보겠습니다. 이 경우 이 작은 블록은 전체 블록보다 작은 것으로 보이지만 여전히 허용됩니다.
실제로 이러한 모든 포크의 몇 가지 예를 살펴보겠습니다. 오늘날의 위치에 도달하기 위해 성장통을 겪었던 가장 인기 있는 두 가지 암호화 네트워크를 살펴보겠습니다.
2010년대 중후반에 Bitcoin( BTC / USDT )은 Bitcoin 사용자의 두 파벌 사이에서 경쟁하는 경로와 함께 확장성 문제에 직면했습니다.
Bitcoin 소프트웨어에서 Segregated Witness(SegWit) 기능을 구현하기 위한 제안이 있었습니다. SegWit은 Bitcoin의 트랜잭션 아키텍처에 대한 변경으로 제안되었습니다. 이 변경은 서명 데이터를 트랜잭션에 연결된 데이터 트리로 저장하고 트랜잭션 ID에 계산되지 않습니다. SegWit은 옵트인 선택으로 제안되었습니다. 이것은 소프트 포크의 예가 될 것입니다.
실제로 비트코인 주소의 차이점을 확인할 수 있습니다. 1번으로 시작하는 주소는 레거시 트랜잭션 구조를 사용하는 반면 ‘bc1’ 또는 3번으로 시작하는 주소는 각각 기본 SegWit 및 중첩 SegWit을 사용합니다.
그래서 Bitcoiners는 더 많은 트랜잭션이 1MB 블록에 들어갈 수 있도록 트랜잭션에 필요한 데이터를 줄이는 것과 블록 크기를 8MB로 늘리는 것 사이에서 고민했습니다. 더 큰 블록에 대한 SegWit의 거부는 네트워크의 하드 포크가 필요합니다. 2017년 8월, 비트코인이 하드포크되어 비트코인 캐시가 생성되었습니다 .
2016년 6월, 해커들은 이더리움 네트워크의 프로젝트에 대한 투자를 제공하기 위한 수단으로 만들어진 대규모 재무부 ‘The DAO’에 침입했습니다. 해커는 약 5,500만 달러를 훔쳤습니다 .
해킹이 발생하기 전에 DAO의 재무부에 약 2억 5천만 달러가 있었습니다. 작동 방식은 다음과 같습니다.
각 회원은 재무부에 예치된 1 ETH마다 100 DAO 토큰을 받습니다. 이 토큰은 주어진 투자 제안이 잠재적으로 수익성이 있는지 여부를 투표하는 데 사용되었습니다. 제안이 통과되면 재무부는 제안된 ETH 투자를 프로젝트를 대표하는 스마트 계약으로 자동 이전합니다.
아이디어는 헤지 펀드와 비슷했습니다. 프로젝트가 투자보다 더 많은 수익을 창출했다면, 이익은 DAO 재무부에 다시 예치되고 DAO 토큰의 가치가 높아집니다.
그러나 스마트 계약에는 공격자가 재무부가 비워질 때까지 무한 인출을 할 수 있도록 악용되는 취약점이 있었습니다.
물론 이 이야기에는 많은 세부 사항이 있지만 주요 사건에 충실합시다. 공격하는 해커는 가능한 한 많은 돈을 인출하기 위해 싸웠고 커뮤니티의 화이트햇 해커는 재무부의 자금을 절약하기 위해 동일한 악용을 필사적으로 사용하려고 했습니다.
결국 두 진영 모두 할 수 있는 모든 전력을 소모했지만 피해는 끝났습니다. 공격을 완전히 완화하기 위해 블록체인의 하드포크가 제안되었습니다. 블록체인은 해킹 이전부터 다시 시작되고 아무 일도 없었던 것처럼 계속됩니다. 이것은 우리가 알고 있는 이더리움( ETH/USDT )의 현재 캐논 블록체인입니다.
그러나 일부 사용자는 이것이 나쁜 선례이며 해킹이 발생한 블록체인에 남을 것이라고 생각했습니다. 현재 Ethereum Classic으로 알려져 있습니다.
포크는 일반적으로 프로토콜을 개선하기 위해 수행됩니다. 변경 사항이 좋은지 나쁜지는 변경하는 커뮤니티에 달려 있습니다.
포크 네트워크는 기술적, 경제적 속성이 다르기 때문에 근본적으로 다른 자산입니다. 이러한 요소는 자산의 가치 상승 여부에 영향을 미칩니다.
분기할 최고의 암호는 없으며 모든 오픈 소스 프로젝트를 분기할 수 있습니다.
사용자가 소프트웨어 업그레이드에서 지분 증명 모델을 고수하는 경우 이더리움 2.0 은 하드 포크로 간주되지 않습니다. 작업 증명(Proof-of-Work) 버전의 ETH는 새로운 블록체인을 만들 것입니다.
비트코인은 일반적으로 확장성 문제를 해결하기 위해 하드 포크를 구현합니다. 문제는 일반적으로 초당 트랜잭션과 블록 크기입니다.
Vasil은 Cardano( ADA/ USDT )의 하드 포크입니다.
하드포크는 새로운 블록체인을 필요로 하는 역호환성이 없고 소프트포크는 이전 블록체인과 역호환됩니다. 자세한 설명은 위의 글을 참고하세요.