사용자 활성화 소프트포크
사용자 활성화 소프트포크 또는 UASF(User Activated Soft Fork)는 소프트포크의 활성화 시간이 사용자들이 참여하는 전체 노드에 의해 시행되는 특정 날짜(예: 2017년 8월 1일)에 발생하는 포크 메커니즘이다. 비트코인 네트워크에 연결된 모든 컴퓨터를 노드라고 하고, 모든 규칙을 완전히 적용하는 노드 비트코인은 전체 노드라고 부른다. 경제 대다수라고도 하는 개념이다. UASF는 공동체 전체로부터 많은 양의 협력을 필요로 하며, 필요한 경우 하드포크(hard fork)에 대한 우수 사례로 간주되며, 지역 사회로부터 더 많은 협력과 노력이 필요하다. 과거에는 P2SH 소프트포크(BIP16)를 활성화하기 위해 UASF가 성공적으로 수행되었다. UASF 개념은 BIP148 제안에서 세그윗(SegWit) 활성화와 결합되었다.[1]
개요
사용자 활성화 소프트포크, UASF는 블록체인이 네트워크의 해시력을 제공하는 사람들이 직접 지원하지 않는 업그레이드를 추가하는 방법을 탐색하는 논란의 여지가 있는 아이디어이다. 사용자 활성화 소프트포크의 아이디어는 마이닝 풀의 지원 임계 값을 기다리는 대신 소프트 포크를 활성화하는 기능이 전체 노드를 실행하는 교환기, 지갑 및 비즈니스로 이동한다는 것이다. UASF는 소프트 포크를 활성하기 위한 메커니즘으로 활성화 시간은 미리 지정되어 있으며 각 참가자는 결과 및 소프트웨어 업그레이드 준비를 할 수 있다. 그럼에도 불구하고 UASF는 대다수의 사용자와 조직이 지원해야한다. 이 개념은 세그윗을 구현하기 위해 BIP148 제안 활성화를 시작하기 위해 적용되었다.
제안 배경
BIP148 : 사용자 활성화 소프트 포크(UASF)는 2017년 3월, 세그윗을 탐탁지 않게 생각하는 채굴자들이 있는 상황에서 세그윗 강제 활성화를 위해 발표되었다. BIP148은 8월 1일부로 bit 1을 전송하지 않는 채굴자들의 블록을 거부한다. 이는 UASF 노드들이 bit 1을 전송하지 않는 채굴자의 블록을 받아들지이 않도록 만듦으로써 비트코인 체인을 분리시킬 가능성이 있다. 만약 체인 분리가 일어난다면, 그리고 세그윗 반대파의 체인이 더 길다면, 블록체인 개편은 실패로 돌아간다. 블록체인 개편은 클라이언트들이 실제로 더 긴 블록체인을 발견하고 더 짧은 기존의 블록체인을 버리게 만듦으로써 일어난다. 따라서 세그윗 체인이 세그윗 반대파의 체인보다 길어진다면, 블록체인 개편이 일어나고 세그윗 반대파가 체인 분리 과정에서 채굴한 보상은 무효로 돌아간다. 만약 BIP141이나 BIP91이 발동된다면, 세그윗은 BIP91이나 BIP141을 통해 일어나며 누군가가 하드포크를 계획하지 않는 한, 모든 체인은 세그윗 체인으로 바뀌며 체인 분리는 일어나지 않는다. 또한, UASF가 충분한 채굴 능력의 지지를 받지 못한다면, 높은 채굴능력을 가진 마이닝 풀의 리플레이 공격에 취약할 수 있다. 난이도 변경을 위해서는 최소한 15%의 채굴 능력이 UASF를 지지해야 한다.
단점
UASF의 개념은 간단하지만, 그렇다고 해서 그것이 성공하기 쉽다는 것을 의미하는 것은 아니다. 해시 파워가 활성화된 소프트 포크에 비해 UASF는 두 가지 리스크를 증가시킨다. 그리고 하드 포크처럼 일이 잘 안풀리면 양립할 수 없는 두 개의 네트워크, 즉 블록체인과 통화로 분리될 수 있다.
- 조정이 어려울 수 있다. 가장 중요한 것은 UASF가 경제에 의해 실제로 지원되고 시행될 것인지 확실히 알 수 없다는 것이다. 교환, 지갑 제공자, 결제 프로세서 등 중앙 집중식 서비스의 지원을 측적할 수 있지만 개별 노드는 3배 이상 스푸핑되어 있다. 그리고 경제의 소수만이 새로운 규칙을 시행하고 과반수가 원래의 규칙을 시행한다면 둘로 쪼개질 것이다.
- 경제의 상당 부분이 소프트 포크를 시행하더라도 결정된 대다수의 채굴자는 여전히 업그레이드를 좌절시킬 수 있다. 만약 이 채굴자들이 오래된 체인을 채굴하는 에너지를 기꺼이 낭비할 수 있다면, 업그레이드되지 않은 어떤 사용자도 귀중한 경제 체인이 아니라 더 작은 체인을 따를 것이다. 이 사용자는 적어도 광부들이 자원 낭비를 할 용의가 있고 할 수 있는 한 이중 지불에 취약할 것이다.
사례
- UASF와 UAHF를 적용한 가장 중요한 예로는 이더리움의 역사가 있다. 2016년 6월에 이더리움 다오(DAO) 계약 플랫폼에 존재하는 취약점을 이용해 360만 개의 이더리움(ETH)이 해킹당하는 사고가 발생했다. 이 사건 때문에 이더리움의 가격은 폭락하였고, 궁극적으로 전체 이더리움의 10%에 달하는 이더리움이 해킹당하는 결과를 보였다. 이더리움 다오 플랫폼은 당연히 코드를 기반으로 작동하며 내부적으로 나누기(Split) 기능이 사용된다. splitDAO() 함수는 특정 계정의 잔액과 합계 금액을 갱신하는 함수이다. 따라서 splitDAO가 다시 호출되기 이전에 어떠한 함수의 호출이라도 발생시킬 수 있다면 무한 재귀호출(Infinite Recursion)을 발생시켜 원하는 만큼 자금을 이동시킬 수 있다. 실제 공격자의 지갑을 살펴보면 2016년 6월에 무려 360만 개의 이더리움을 소유한 것을 알 수 있다. 그래서 다오 프로젝트의 책임 개발자는 소프트 포크와 하드 포크로 크게 두 가지 해결책을 제시했다. 소프트 포크를 이용한 방법은 다오와 해당 공격자의 자식 다오 지갑의 사용을 정지하는 형태의 소프트 포크이며, 하드 포크는 다오 토큰 보유자들이 이더리움을 돌려받도록 하는 형태의 하드 포크이다. 결과적으로 이더리움 재단이 다양한 관계자들과 협의하여 소프트 포크 기술을 적용하도록 의사결정이 이루어졌다. 하지만 네트워크 불안정 문제가 발생하여 하드 포크를 수행하는 방향으로 다시 의사결정이 이루어졌다. 따라서 1,920,000번째 블록을 기준으로 하드 포크가 성공적으로 진행되었다. 다만 하드 포크가 진행됨에 되어 기존의 기술을 따르는 이더리움 클래식과 새롭게 탄생한 이더리움으로 이더리움 블록체인 플랫폼이 나뉘게 되었다.
- 비트코인 시세가 확 떨어졌다. 비트코인의 경우 8월 1일에 있을 소프트포크(UASF, BIP148)와 그와 반대로 비트메인(bitmain)에서는 하드포크(UAHF)를 강행하겠다고 나서 사용자들 입장에서는 비트코인이 Core, UASF, UAHF 세가지 버전으로 쪼개 지는건 아닌지 불안 심리가 커졌기 때문이다. 비트코인의 가장 큰 해시파워를 가지고있는 비트메인을 주축으로 사용자 활성화 소프트포크를 무력화 시키기 위해 자신들이 지지하는 세그윗2x(Segwit2x) 방식을 적용한 채굴 프로그램 클라이언트 소프트웨어(client software)를 전 날부터 돌리기 시작했고 하루 144 블록동안 80%가 넘는 해시파워로 인해 비트코인은 앞으로 세그윗2x로 진행하게 되버렸다. 결국 8월1일 있을 사용자 활성화 소프트포크는 의미가 없어졌다. 2017년 8월 1일 10시 16분에 생성된 478558 블록을 기점으로 UAHF가 활성화되어 비트코인(BTC)와 비트코인 캐시(BCC, BCH) 둘로 쪼개지게 되었다. 비트코인을 가지고 있떤 이용자는 1:1 비율로 비트코인 캐시를 지급받았다.
각주
- ↑ susueng, 〈BIP148은 무엇입니까?〉, 《네이버 블로그》, 2017-06-04
참고자료
- susueng, 〈BIP148은 무엇입니까?〉, 《네이버 블로그》, 2017-06-04
- 레드곰, 〈Bitcoin 포크에 대한 짧은 안내서〉, 《티스토리》, 2017-03-27
- 폐인, 〈비트코인 소프트 포크, 하드 포크 관련 참고〉, 《코인톡》, 2017-06-21
- veritaholic, 〈비트코인 분리 사태: 숨은 의도는?(1/2)〉, 《뉴스페퍼민트》, 2017-07-26
- Aaron Van Wirdum, 〈The Latest Twist to the Block Size Debate Is Called a “UASF”〉,《비트코인 매거진》, 2017-03-02
- 〈User-Activated Soft And Hard Forks〉, 《Blockspoint》, 2018-02-02
- 흰곰s, 〈비트코인 캐시- 중국이 꽉잡고있는 코인〉, 《티스토리》, 2017-10-28
- 안경잡이개발자, 〈이더리움(Ethereum) DAO 재귀 함수 해킹 사례〉, 《티스토리》, 2017-04-09
같이 보기
- 사용자 활성화 하드포크(UAHF)
- 소프트포크
- 포크