스택스로 비트코인을 번다? PoX란 무엇일까?
본 글은 단순 정보 제공을 위해 작성 되었고 투자, 법률, 자문 등 어떤 부분에서도 책임을 지지 않습니다. 특정 자산에 대한 투자를 추천하는 것이 아님을 밝히며, 본문의 내용만을 바탕으로 투자에 대한 의사결정을 내리지 마십시오.
1. Introduction
많은 이들이 스택스 코인을 스택(stack)하면 비트코인이 지갑으로 들어온다는 이야기를 한번쯤은 들어봤을 것이다. 그리고 스택스가 튜링 불완전한 스크립트 언어로 만들어진 비트코인 위에 스마트 컨트랙트를 올리는 놀라운 프로젝트라는 이야기도 한번씩 들어봤을 것이다. 네트워크 합의 알고리즘에 참여하면 비트코인을 벌 수 있고, 비트코인 위에 스마트 컨트랙트를 올릴 수 있다니, 얼마나 멋진 이야기인가? 하지만 그렇다면 이것이 어떻게 가능한 것일까? 이 질문에 선뜻 대답이 나오지 않는 사람들을 위해, 스택스가 어떤 프로젝트이고 스택스의 합의 알고리즘 PoX(Proof of Transfer)은 어떤 것인지 알아보았다.
우선 스택스의 탄생부터 간략하게 알아보자. 비트코인 위에 인터넷을 세워본다는 아이디어는 2013년도 무닙 알리(Muneeb Ali)이 박사 논문을 쓰는 과정 중에 나왔고, 이후 그는 스타트업 악셀레이터 Y Combinator 에서 라이언 시아(Ryan Shea)와 함께 Blockstack이라는 이름의 팀을 이루어 해당 아이디어를 발전시켜나간다. Blockstack는 2017년 $47M의 자금 조달했으며, 이때 하버드대학교의 기금을 관리하는 하버드 인베스트먼트가 $10M을 투자하여 화제가 되기도 했다. 이듬해인 2019년, 모든 코인들 통틀어 사상 최초로 SEC의 승인을 받고 Reg A offering과 Reg S offering을 진행해 $23M의 자금을 조달받는다. 이후 2020년 Blockstack은 지금의 Stacks로 리브랜딩을 거쳤고 2021년 1월 스택스 2.0 메인넷을 출시했다. 이후 스택스는 계속해서 수정과 업데이트를 거치며 메인넷을 개선시키고, 현재 다양한 프로젝트들을 끌어들이며 생태계를 확장시켜나가는 중이다.
2. What is PoX
앞서 언급했듯이, 스택스는 비트코인을 활용한 인터넷을 만들어보자는 아이디어로부터 발전한 프로젝트이다. 그렇다면 비트코인을 ‘활용'한다는 것이 구체적으로 어떤 의미일까? 비트코인을 활용한다는 것은, 구체적으로 스택스의 합의 알고리즘 PoX(Proof of Transfer) 방식을 지칭한다. PoX는 기존에 존재하던 PoB(Proof of Burn) 방식이 살짝 개정된 형태이다. PoB 방식에서는 블록을 생성할 채굴자로 선출되기 위해 특정 주소로 자신의 자산을 전송하여 소각시킨다. 그리고 소각시킨 자산의 양에 비례하여 채굴자로 선출될 가능성이 높아진다. 만약 채굴자로 선출되면 해당 채굴자는 새로운 블록들을 생성해내고 블록 보상과 거래 수수료를 벌어간다. 즉 채굴자의 채굴 비용은 해당 채굴자가 소각시킨 자산의 양이 된다. 채굴 비용이 PoW(Proof of Work) 방식에서는 전력 소모 비용, PoS(Proof of Stake)에서는 스테이킹한 자산으로 표현된다는 것과 차이점이 존재한다. PoX 방식은 여기서 한 가지가 다르다. 채굴자로 선출되기 위해 전송한 자산이 소각되는 것이 아니라, 스택커라는 다른 참여자들(추후 자세히 설명할 예정)에게 전송된다. 즉, 채굴자로 선출되기 위해서는 자신의 자산을 스택커에게 전송해야한다. 채굴자의 채굴 비용은 해당 채굴자가 전송한 자산이고, 이런 의미에서 PoX, 즉 전송 증명 방식이라고 이름이 붙여졌다. 스택스와 같은 경우에 채굴자가 되기 위해서 스택커에게 전송하는 자산이 바로 비트코인이며, 그렇게 선출된 채굴자는 스택스(STX) 코인을 보상 받는다.
PoX 방식에 대해서 더 구체적으로 알아보기 위해, 이 합의 알고리즘에 있는 두 종류 참여자의 측면에서 각각 합의 과정을 천천히 따라가보도록 하자.
- 채굴자 (Miner)
우선 채굴자 후보들은 리더 선출 과정을 거친다. 이 과정에서 채굴자 후보들은 일정량의 BTC를 일정 주소로 보내고, (전송한 BTC /전체 전송된 BTC)의 값에 비례한 리더 선출 확률을 부여받게 된다. 이후 VRF(Verifiable Random Function)을 통해 리더가 선출된다. 선출된 리더는 일정 사이클 동안 모든 블록의 생성을 책임지게 된다. 여기서 일정 사이클이란 보상 사이클(Reward Cycle)을 의미하며, 정확히 2000 블록(약 2주)이 생성되는 기간을 나타낸다. 리더로 선출된 채굴자는 해당 기간 동안 블록을 채굴하는 대신 블록 당 보상과 거래 수수료 보상을 STX 코인으로 받아간다. 해당 보상은 채굴한 블록으로부터 100블록이 경과된 후 수령할 수 있다.
2. 스택커(Stacker)
스택커들은 자신이 보유한 STX 코인을 락업, 즉 스택시킨다. 이때, 스택커는 자신의 STX를 몇 보상 사이클 동안 락업시킬 수 있는지 결정할 수 있으며, 스택된 STX는 해당 사이클이 다 지나기 전까지는 유통될 수 없다. 이때 각 스택커는 비트코인 보상을 수령할 비트코인 지갑 주소를 입력한다. 스택스 체인에서 생성될 블록 하나 당 두개의 슬롯이 존재하는데, 블록이 생성될 때마다 VRF를 통해 스택커들의 비트코인 지갑 주소가 랜덤으로 뽑혀 슬롯 당 하나씩 배정된다. 즉 정리하면, 스택스 체인에서 하나의 블록이 추가될 때마다 랜덤으로 선출된 2개(2개의 슬롯 * 1개의 비트코인 지갑 주소)의 비트코인 지갑 주소로 채굴자 후보들이 전송한 비트코인이 균등하게 전송된다. 하나의 보상 사이클은 총 2000블록이므로, 총 4000개의 비트코인 지갑이 하나의 보상 사이클 동안 비트코인을 수령하게 된다. 스택킹 과정에 참여하기 위해 요구되는 최소 STX량이 존재하는데, 이는 매 사이클마다 일정 기준에 따라 변경된다. 평균적으로 120K STX 정도 되는데, 이는 개인 스택커에겐 큰 금액일 수도 있다. 그래서 여러 개인 스택커들이 모여 풀을 이루어 그 전체 풀이 스택킹에 참여하는 다양한 서비스들이 제공되고 있다.
스택스 체인의 PoX 방식은 작업증명과 지분증명, 그리고 소각 증명이 모두 합쳐진 형태를 갖고 있다. 일반적으로 새롭게 탄생한 블록체인에게 초기 부트스트랩 과정과 전력 및 컴퓨팅 파워 문제를 해결하는 것은 쉽지 않다. 초창기 채굴자, 홀더, 스테이커들 등 다양한 참여자들이 보상으로 받는 해당 체인의 네이티브 토큰의 가격이 일정수준으로 방어되지 않는다면 해당 블록체인의 운영에 참여할 인센티브가 떨어진다. 하지만 스택스의 PoX 방식은 기존에 존재하던 블록체인 중에서도 가장 탈중앙화되어있고 안전한 것으로 알려진 비트코인에 엥커링하여 초기 체인의 부트스트랩 문제를 해결한다.
3. Blocks and Microblocks
스택스는 비트코인과 아예 독립적인 하나의 레이어 1이지만, 트랜잭션의 파이널리티(Finality)를 위해서만 비트코인 체인을 활용한다. 세계에서 가장 탈중앙화되어있고 보안성이 뛰어난 비트코인 체인에 트랜잭션을 기록하는 방식으로, 비트코인의 보안성과 컴퓨팅 파워를 레버리징한다고 볼 수 있다. 스택스 체인에서 발생한 수천개의 트랜잭션들은 비트코인에서 하나의 해시값으로 묶여 비트코인 블록 내에 확정(settle)된다. 즉, 스택스에서 수많은 트랜잭션들로 묶인 블록 전체 하나가 비트코인에서는 하나의 블록 안에 있는 하나의 트랜잭션이 된다. 이러한 특성 때문에 스택스는 비트코인과 동일한 블록 생성 주기(약 10분)을 갖게 된다.
비트코인에서 블록이 생성되는 것과 동시에 확정이 되는 트랜잭션들의 묶음을 앵커 블록(Anchor Block)이라고 부른다. 앵커 블록은 평균적으로 10분 마다 생성이 되는데, DApp을 올려 운영해야할 체인 치고는 상당히 긴 시간이다. 이 때문에, 지금까지 스택스의 수많은 장점들에도 불구하고 스택스는 ‘느리다'라는 단점이 많이 언급되어왔다. 이를 해결하기 위해 스택스 2.0에서는 마이크로블록(Microblock)이라는 개념을 도입했다.
위 그림에서 진한 파란색으로 표시된 막대들이이 앵커 블록이다. 비트코인에서 블록이 생성되는 주기에 맞춰 스택스 체인의 앵커 블록도 확정이 된다. 그리고 연한 파란색으로 표시된 막대들은, 이전 앵커 블록이 생성된 시점부터 다음 앵커 블록이 생성되기 전까지 아직 확정되지 못한 채 대기 상태(pending)에 있는 트랜잭션들이다. 리더로 선출된 채굴자는 보상 사이클이 시작되기 전에 트랜잭션을 처리하는 방식으로 Batching과 Streaming 두 가지 모드 중 하나를 선택할 수 있다. Batching 모드는 비트코인의 블록 생성 주기에 맞춰 앵커 블록만을 생성하는 것이고, Streaming 모드를 선택하면 앵커 블록과 더불어 그 사이 대기 상태로 멤풀(mempool)에 떠다니는 트랜잭션들을 묶어 마이크로 블록들을 생성할 수 있다.
이 마이크로블록과 관련하여 스택스 커뮤니티 내에서도 많은 혼란이 있었다. 마이크로블록은 트랜잭션 지연을 줄이고자 한 것이지, 확장성 자체를 늘리고자 한 것은 아니다. 마이크로블록에 담긴 트랜잭션들은 블록에 담겨 확정되지 않더라도 그 결과값을 알 수가 있다. 이는 스택스 트랜잭션을 수행하는 기반 언어인 Clarity가 튜링 불완전 언어이기 때문에 가능하다. 하지만 중요한 것은, 마이크로블록에 담긴 트랜잭션의 결과값들을 조회 가능하더라도, 여전히 트랜잭션이 확정되기 위해서는 비트코인 체인에서 확정(Settle) 되어야 한다는 것이다. 결론적으로 말하자면, 마이크로블록은 스택스의 느린 트랜잭션 처리 속도에 대한 보완책으로써, 트랜잭션들이 확정되지 않더라도 그 결과를 ‘조회'할 수가 있다. 하지만 마이크로블록 속의 트랜잭션들은 여전히 대기(pending) 상태이다. 이는 앵커 블록이 생성되는 시점에 가야만 비로소 확정되는 트랜잭션들인 것이다. 따라서 스택스의 확장성 자체가 커지는 것은 아니다. 그저 그 트랜잭션이 확정된 것이라고 가정하고 그 결과값을 미리 조회할 수 있는 기능을 유저에게 제공한다는 취지이다. 그리고 스택스 체인을 활용하여 서비스를 만드는 개발자들은, 사용자 경험을 개선하기 위해서 트랜잭션이 확정되지 않더라도 중간 상태인 마이크로블록일 때의 데이터를 보여줄 수 있다. 사용자들은 아직 확정되기 이전 트랜잭션의 결과값들을 조회하면서 더 나은 경험을 할 수 있다. 다만 마이크로블록을 활용할지 안할지는 온전히 개발자의 선택이다.
4. Conclusion
비트코인 위에 스마트 컨트랙트를 올리고, 합의 알고리즘 속에 비트코인을 중요한 요소로 투입하는 시도를 하는 스택스 프로젝트에 많은 이들이 관심을 가지고 있다. 그저 막연하게 비트코인과 관련이 있는 블록체인이라고만 아는 것보다는, 스택스가 구체적으로 어떻게 비트코인과 연관이 되어있는 것인지 확실하게 이해한 후 스택스를 바라보는 것이 올바른 방향일 것이다. 스택스의 생태계는 이제 막 확장을 시작하고 있는 단계이고, 아직 앞으로 걸어갈 길이 많이 있다. 스택스가 앞으로 어떤 행보를 걸어나갈 것인지 지켜보도록 하자.
Contact information
email : ricky@superblock.co
twitter : @SatoshiN0bunaga
telegram : @jjh8477