[COSINT] 세상에서 제일 쉬운 블록체인 이야기 – 5편: 비트코인 시스템의 한계

COSINT_f.jpg

안녕하세요. 블록체인에 대한 칼럼 및 설명을 작성하고, 해외 코인 뉴스 및 정보를 더욱 이해하기 쉽고 빠르게 전달해 드리기 위해 노력하는 @kilu83 COSINT입니다.

매주 월요일, 목요일마다 < 세상에서 제일 쉬운 블록체인 이야기 > 연재를 소개해드리고 있습니다. 원 출처는 EpitomeCL의 Chief Ethics and Integrity Officer 정유표님께서 페이스북에 총 25편 분량으로 게시한 글입니다.

시리즈의 전반부(1~12편)는 일반인들도 쉽게 이해할 수 있도록 일상의 예시로 블록체인과 암호화폐를 설명합니다. 이후 중반부(13편~17편)는 블록체인 기술 속에 담긴 사상과 철학을 조망하고, 후반부(18편~25편)은 저자가 재직 중인 EpitomeCL의 사명과 지향점을 소개하는 내용으로 구성되어 있습니다.

블록체인을 처음 접하시는 분에겐 가벼운 입문서, 블록체인의 가능성을 탐구하시는 분에겐 심도 있는 철학적 고민을 던져주는 좋은 글이기에, @kilu83 COSINT와 저자 정유표님의 공동작업으로써 스팀잇 유저분들께 소개 공유합니다.

남겨주시는 댓글은 원 저자와 함께 모니터링하고 답변드릴 예정이오니, 많은 관심과 의견 부탁드리겠습니다.

첫 편부터 정주행을 위한 1편 바로가기 : https://goo.gl/hc3Aoz
이전 편을 못 보신 분을 위한 전편 바로가기 : https://goo.gl/Kgdstq


< 세상에서 제일 쉬운 블록체인 이야기 > 

5편: 비트코인 시스템의 한계 – 낮은 처리 속도

‘세상에서 제일 쉬운 블록체인 이야기’ (1)편에서 (4)편까지의 주된 초점은 블록체인의 가능성에 관한 이야기였습니다. 많은 분들이 블록체인에 주목하고 더욱 많은 사람들을 비트코인 투자로 이끈 치명적 매력이기도 합니다.

그러나 세상 일이란게 무조건 좋은 것만 있는 것은 아니지요. 그에 대비되는 그늘이 있기 마련인데, (5)~(7)편의 주제는 비트코인이 가진 한계와 현행 암호화폐 거래소의 애매모호함(?)에 대한 주제를 다뤄보려고 합니다.

비트코인을 처음 제작할 당시, 아마 ‘사토시’는 이것이 이렇게 전세계적으로 흥행할지는 예측하지 못했던 것 같습니다. 그가 설계한 비트코인은 하나의 블록에 1MB 정도의 거래량만 기록 가능합니다. ‘나와 철수의 집 거래’를 차용하자면 초당 7개 정도의 계약서를 블록에 집어넣을 수 있는 수준인데, 집 거래라는 게 그리 자주 일어나는 일이 아니니 그 용도로만 사용한다면 충분히 쓸만한 시스템입니다.

하지만 비트코인은 ‘화폐’를 목적으로 만든 시스템이라 그리 간단치 않습니다. VISA 카드의 경우 성수기 때 전 세계적으로 발생하는 거래량이 초당 4만 7천여건에 이른다고 합니다. 비트코인이 그에 필적하는 처리량을 가지려면 지금보다 6,700배 이상으로 빨라져야 한다는 계산이 나옵니다.

저희 집 근처엔 광명시장이라는 꽤 큰 규모의 재래시장이 있습니다. 약 400 개의 점포가 입주하고 있는데, 시장을 둘러보면 적어도 초당 7건 이상의 매매가 이루어지고 있음을 확인할 수 있습니다. 만약 비트코인이 광명시장에 쓰인다면 피크시간 대에는 상인과 구매자는 자신들의 거래가 승인될 때까지(=앞선 거래들이 다 승인되고 자신의 차례가 될 때까지) 한참을 기다리는 상황이 발생하게 됩니다. 비트코인은 대한민국 중소도시에 있는 시장 하나에서조차도 쓰기에 버겁다는 것이지요.

실제 비트코인이 전 세계적으로 히트를 치면서 거래량이 급증하게 됩니다. 초당 7건으로는 어림 없을 정도로 사고 파는 사람이 많아지게 된 것이지요. 그러다 보니 블록을 만드는 사람(컴퓨터)들에게 줘야 할 수수료의 가치도 급등하게 됩니다. 정보통신 기술이 분산원장을 쉽고 빠르게 해주었다고 하지만, 누군가는 24시간 컴퓨터를 켜놓아야 블록을 만들 수 있으니, 그에 합당한 보상으로 수수료를 줄 수밖에 없거든요.

비트코인은 1번의 거래당 최소 0.0005 비트코인을 수수료로 주어야 합니다. 현 시세 기준으로 약 1만원 정도를 ‘매 거래시’ 내야 한다는 뜻입니다. 천원 짜리 물건을 사도 수수료 1만원을 내야합니다. 그리고 이건 어디까지나 최소 수수료입니다. 앞서 블록을 만드는 사람에게 웃돈을 주면 내 거래를 빨리 블록에 끼워 넣어주는데, 현재 그 시세가 0.002 비트코인(한화 5~6만원)입니다. 이 정도되면 비트코인은 화폐로써의 실용이 거의 없다고 봐도 무방할 것 같습니다.

이렇게까지 한계가 명백한데 왜 사람들은 비트코인에 이토록 열광하는 걸까요? 저는 암호화폐에 투자를 하지도 않지만, 만약 한다면 되려 다른 알트 코인들을 주목할 것 같습니다. 혹자는 미래 기술에 투자한다고 하지만 제가 보는 관점에서 비트코인의 미래는 상당히 어둡습니다. (비트코인이 어둡다는 것이지 블록체인이 암울하다는 이야기는 절대 아닙니다. ^^)

그리고 이 쯤오면 대개 두 가지 정도의 질문을 떠올립니다. 1) 용량이 한계에 다다랐다면 업그레이드 하면 되는 것 아닌가? 2) 그런데 비트코인 거래소에선 어떻게 하루에 수십만건의 거래가 이루어지지? (그 수수료를 다 내고서 사고 파는 건가?) 라는 부분입니다. 이 이야기는 다음 편으로 넘겨 살펴보도록 하지요 ^^


목요일에 기재될 예정인 < 세상에서 제일 쉬운 블록체인 이야기 – 6편: 현행 거래소 시스템의 문제점 – 중앙화된 깜깜이식 운영 > 역시 많은 관심 부탁드립니다.

오늘 하루도 마무리 잘 하시길 바랍니다.

이더리움 캐스퍼 첫걸음 (2) by Jon Choi

Ethereum Core Researcher인 Jon Choi의 Ethereum Casper 101을 저자의 허락을 받아 전문 번역하였습니다.

Jon Choi에 대한 정보는 다음의 링크를 참조해주세요!


이더리움 캐스퍼 첫걸음 글 목록:
이더리움 캐스퍼 첫걸음 (1) by Jon Choi
이더리움 캐스퍼 첫걸음 (2) by Jon Choi (현재 보고 계신 글)
이더리움 캐스퍼 첫걸음 (용어 정리) by Jon Choi


캐스퍼가 중요한 이유

말로만 듣던 캐스퍼 프로젝트가 어떤 것인지 조금 이해 되셨나요? 그럼 이제 PoS와 캐스퍼에 대해 공부한 내용을 합쳐서 이게 왜 중요한지에 대해 알아봅시다.

핵심 내용은 다음과 같습니다:

  1. 탈중앙화 (PoS에서 다뤘음)
  2. 에너지 효율성 (PoS에서 다뤘음)
  3. 명백한 경제적 안전성 (PoS에서 다뤘음)
  4. 이더리움의 확장
  5. PoW로부터의 부드러운 이전

PoS이기 때문에

처음 세 항목은 PoS 파트에서 이미 다루었습니다. 그러나 이더리움은 시가총액이 280억달러에 달하고 전체 시가 총액의 18%를 차지하여 암호화폐 중 두번째로 큰 프로젝트인 만큼, 조금이라도 탈중앙화가 더 진행되고 에너지 효율성을 조금이라도 더 개선할 수 있다면 현재로써도 적지않은 영향을 끼칠 수 있고 미래에는 더더욱 큰 영향을 끼칠 것입니다.

다시 한 번 되짚어보면, (1) PoS는 규모의 경제의 영향력을 줄입니다 – 1달러는 오직 1달러의 가치만을 갖는거죠. 채굴자나 검증인 하나가 남들보다 더 큰 영향력을 가질 수 없습니다. PoW에서는 큰 채굴장일수록 1달러 당 얻을 수 있는 해시 파워가 개인 채굴자에 비해 더 크지만, PoS에서는 1달러로는 1달러어치의 영향력만 얻을 수 있으므로 채굴의 중앙화를 막을 수 있습니다.

또한 (2) PoW는 네트워크의 안전성을 얻기 위해 에너지를 낭비하지만 PoS는 예치금을 잃을 가능성을 이용해 네트워크의 안전성을 확보합니다. 여기서 해결해야 할 과제는 (3) PoW의 장점을 어떻게 흉내내는 (그리고 개선시키는) 동시에 PoS가 갖는 경제적 매커니즘 설계 측면의 약점을 어떻게 줄일 것인가 입니다.

확장성 문제 해결을 위해

이제 새로운 내용을 얘기해봅시다. 바로 (4) 확장 입니다. 이 부분을 이해하기 위한 방법은 두 단계로 나뉩니다. (a) 캐스퍼는 명시적인 완결성(확률적인 완결성과 대비되는 개념으로서)을 얻고자 하며 (b) 명시적 완결성은 샤딩을 통한 네트워크 확장이 진행되는 동안 네트워크의 안전성을 유지합니다.

PoW 체인에서 완결성은 명시적으로 나타나지 않습니다 (잔뜩 낸 전기세가 곧 PoW 체인에 대한 투자라는 것 만큼이나 덜 직접적이죠). PoW 체인의 특징인 암시적 완결성은 실생활에서 PoW 체인을 활용하여 거래 할 때 거래가 어떻게 완결되는지를 살펴보면 쉽게 발견할 수 있습니다. PoW 체인을 활용하게 되면, 결제가 얼마나 중요한지/얼마나 큰 금액인지에 따라 더 많은 블록의 확인(가장 긴 체인에 거래 내역이 기록된 이후 생성된 블록의 갯수)을 기다리곤 하죠. 예를 들어 커피 한 잔을 산다면 확인 몇번이면 괜찮지만, 자동차를 구매한다면 일반적인 확인 횟수보다 더 많은 확인 횟수를 필요로 할 것입니다.

반면에 캐스퍼는 명시적인 완결성을 제공합니다. 예를 들면, 캐스퍼 FFG는 PoW 체인 위에 완결성을 부여하는 층을 씌웁니다. 따라서 아래에 있는 PoW 체인은 여전히 거래의 완결성을 암시적으로 판단하는 방법을 사용합니다. 그러나 캐스퍼 FFG는 약 2.5 에폭타임뒤에 명시적인 완결성을 제공합니다(각 에폭타임은 50개의 PoW 블록의 연결을 뜻하며, 각 에폭의 마지막 블록이 체크포인트가 됩니다. 그 내용은 검증인 그룹에 의해 우선 “타당성이 증명(justify)”된 후 “완결(finalize)”됩니다. 더 자세한 내용은 앞서 링크된 논문과 나중에 올라올 포스팅을 참고해주세요.).

그러면 그 때 비잔티움 장애 허용 방식의 가설에 기반하여 우리의 가설이 위반되었는지, 아니면 체크포인트가 완결 되었는지 확인할 수 있습니다. 여기서 검증인 그룹에 대해서는 이미 알고 있는 상황(물론 변동될 수 있지만)이므로, 나쁜 행동을 한 사람들에게는 처벌이 가해지게 됩니다.

그렇다면 샤딩과 확장성은 이것과 무슨 관계일까요? 명시적 완결성의 유무 여부는 각 노드가 네트워크에 얼마나 많은(좀 더 정확하게 말하면, 얼마나 적은) 일을 해야 하느냐와 관련이 있습니다. 명시적 완결성이 규칙적으로 부여되게 된다면 다음과 같은 부분까지 논의를 확장할 수 있습니다: 만약 모든 노드가 모든 거래 내역이나 상태를 보관 할 필요가 없다면? 모든 노드가 모든 거래를 검증할 필요가 없다면? 퍼블릭 블록체인의 각 노드와 관련된 이러한 서로 다른 “책임”에 대한 문제들은 블록체인 샤딩을 통해 해결될 수 있습니다.

다시 논점으로 돌아와서, “보다 적은 노력” 또는 “보다 적은 지식”으로 네트워크의 각 노드를 탐색해야 하는 상황이라면, 블록체인의 첫번째 블록부터 지금까지의 발생한 확률적 체인을 전부 고려하는 것 보다는 지난 몇 에폭동안의 완결성만을 고려하는 것이 훨씬 도움이 될 것입니다. 그러므로 완결성 검증이 이와 같은 에폭 간격마다 한 번씩 진행 될 때는, 단순한 거래를 검증하는데에 완결성은 큰 도움이 안 될 것입니다. 그런 단순한 거래들은 해당 에폭 간격보다 짧은 시간동안 발생하는 확인 과정만으로도 충분히 검증되기 때문입니다. 그 대신, 완결성이 갖춰진다면 현재의 초당 10회 수준의 거래량보다 수십배, 수백배 더 많은 거래를 처리할 수 있게 될 것입니다.

이더리움의 시가총액이 280억달러에 달하기 때문에

마지막 포인트는 (5) PoW로부터의 부드러운 전환 입니다. 저처럼 처음 접하는 분들을 위해 배경 설명을 드리면, 이더리움의 PoS로의 이전은 2017년에 있었던 이더의 급격한 가격 상승 이전부터 계획되었습니다. PoS로의 이전 계획은 ethash 기반의 PoW 체인 위에 PoS층을 덧붙이는 방식으로 시작해서 점차 순수한 PoS 방식으로 이전해가는 것이었죠. 그러나 이더의 가격이 급상승하면서, 이더리움 인프라의 많은 부분을 변경하는 과정인 PoS로의 전환 도중에 이더의 가격이 급락하는 것을 방지하기 위해서도 점진적인 전환을 진행할 수 밖에 없게 되었습니다.

추가 자료

샤딩 FAQ – 이더리움 위키
느린 블록타임과 빠른 블록 타임 – Vitalik Buterin


설계 원칙

이 부분에서는 Vlad와 Vitalik의 여러 포스팅에서 발견할 수 있는 설계 원칙들을 정리해두었습니다. 현재 캐스퍼의 설계 원칙들은 여러 자료들에 흩어져 있습니다. 정리해둔 내용을 읽으시면서 전체적인 설계 원칙을 파악하시는데 도움이 되면 좋겠습니다.

  1. 참여자의 행위를 유도하기 위한 경제학. 명시적인 경제적 매커니즘의 설계를 통해 다른 사회적 계약들(PoW와 같은 합의 알고리즘 등)에서 발견할 수 있는 암시적인 경제적 인센티브를 부여하는 구조를 만들 수 있다. 비유를 좋아한다면, 캐스퍼의 역사 파트3의 “빅 게임”부분을 참조.
  2. 공격 비용의 최대화. 예를 들어, 공격자가 프로토콜의 효용에 일정 크기의 피해를 가한다면 공격자 역시 일정 수준의 피해를 받아야 한다(griefing factor). 100달러의 피해를 주는 공격에 드는 비용이 0.01달러여서는 안되며, 적어도 100달러 정도는 비용이 들어야 한다. 다시 말해, 프로토콜을 공격할 때 소모되는 1달러 당의 “공격 배수”를 최소화시켜야 한다(다른 포스팅에서 더 자세히 다룰 예정).
  3. 개인이 아닌 공공의 비용 대비 이익. 우리는 퍼블릭 블록체인의 확장을 진행하므로 프로토콜 경제학 역시 사회(공공)의 비용과 이익(부정적인 외부비용과 긍정적인 외부비용)을 고려해야 한다. 에너지 소모량, 환경에의 영향, 부의 분배가 대표적인 예.
  4. 규모의 경제를 방지. 중앙화는 퍼블릭 블록체인의 가치 제안(value proposition)을 약화시킨다. 규모의 경제를 막음으로써 중앙화 요인을 막을 수 있고, 보다 안전한 블록체인을 만들 수 있다.
  5. 네트워크의 안전성은 네트워크에 투입되어있는 비용에서 나온다. 단순한 말이지만 다시 언급할만한 부분. 당신이 네트워크에 많은 돈을 걸어두어 네트워크가 피해를 입을 경우 당신이 입는 피해가 클수록, 우리는 당신을 검증인으로서 더 신뢰할 수 있다. PoW체인은 에너지 소모를 통해 보안을 얻지만, PoS체인에서는 경제적 가치의 손실 가능성을 높임으로써 보안을 얻는다.
  6. 소수독점 구조를 위한 설계. 협력 게임 이론은 네트워크의 권력이 중앙화되는 것(예: 규모의 경제)을 완벽히 막을 수 없는 상황을 부르는 말이다. 다르게 말하면, 개인의 이익을 최대화하기 위해 참가자들이 집단을 만드는 모든 행동을 분석하는 과정이다. 특히, 프로토콜은 집단에 속해있지 않은 검증인들에 대해 다른 검증인 집단이 짓궂게 굴지 않도록(친절하게 행동하도록) 설계되어야 한다.
  7. 책임 부여를 통한 안전성. 악한 행위를 하는 참여자에게 책임을 물을 수 있는 구조가 되어야 한다. 캐스퍼는 비잔티움 행위를 하는 참여자에게 처벌을 가하는 기능에 의존한다.
  8. 합리적인 생존성. 공격자가 체인을 막음으로써 체크포인트나 블록에 대한 제안 또는 투표가 진행되지 못하게 하는 것을 구조적으로 금지한다. 이 부분이 캐스퍼가 텐더민트같은 다른 방식과 다른 점으로, 텐더민트에서는 안전성이 확보되지 않으면 “잠금”상태로 변환한다.
  9. 동기성 가정의 최소화. 생존성을 유지하는 동시에 체인의 성장을 막는 것을 피하기 위해, 캐스퍼는 최소한의 동기성을 가정한다. 실제로, 우리는 각 노드들이 몇달에 한 번 정도 접속하는 것을 가정하고 있다.
  10. 탈중앙화되었다면 복구할 수 있어야 한다. 프로토콜은 모든 다른 노드가 사라지고 노드가 딱 하나만 남았더라도 모든것을 복구 할 수 있는 경우에만 “탈중앙화”되었다고 말할 수 있다. (텐더민트는 체인 생성의 정지에 예민하며 다시 복구될 수 없다. Matthew Wampler-Doty와 Vlad의 관찰에 따르면, 텐더민트의 검증인 그룹은 매 번 나뉠때마다 점점 작아지게 된다.
  11. 검열에의 의욕 저하. 이러한 시스템의 경우, 검증인들이 점차 접속을 끊는 식으로 공격을 가할 수 있다는 문제가 있다. 그러나 집단 검열이 더욱 큰 문제이다. 보상 및 다른 페널티에 대하여 상대적인 검열 비용(예치금의 몇 퍼센트라거나)을 적절하게 정하는 것이 이 문제를 해결하기 위해 매우 중요할 것이다.

추가 자료

PoS 설계 철학
? 캐스퍼의 역사 (위에서 제시한 링크 참조)


해결해야 할 문제들

이더리움 전반에 대한 과제 목록은 여기를 참조하시기 바랍니다.

PoS와 관련된 과제

Nothing-at-stake 문제 – 체인의 포크가 발생할 경우, 검증인에게 가장 이익이 되는 행동은 모든 체인을 검증함으로써 포크의 결과와 상관 없이 보상을 받는 것입니다.

장거리 공격 – 51% 공격과 같은 방식(더 긴 체인을 만들어 공격자가 원하는 내용으로 장부를 수정하는 것)이지만, 여섯 블록만 뒤로 돌아가는 것이 아니라 한참 전에 생성된 블록부터 조작을 시도하는 것입니다. PoS에서 이 공격이 가능한 이유는, 매우 긴 체인을 생성하는데에 드는 PoW 과정(과 같은 시간이 오래 걸리는 작업)이 PoS에는 없기 때문입니다.

이 두 문제는 삭감(과 이를 개선한 방법들)을 통해 해결되었습니다. 이 문제를 해결하기 위해 중요한 점은 (1) 검증인들이 알려져있어 검증인 단계에서 책임을 물을 수 있을 것, 그리고 (2) 특정 행동에 대한 의지를 꺾는 강한 “삭감 조건”이 있을 것, 이 두가지 입니다. 또한 이 예시는 캐스퍼 팀의 합의 알고리즘 설계에 대한 시각 – 경제적 매커니즘을 적절히 설계함으로써 분산 시스템을 보호할 수 있다 – 을 이해하는데 매우 중요합니다.

PoS에 대한 비판

바람직하지 않은 검증인의 선출 – 잘못된 행동을 할 경우 엄청한 페널티가 가해진다면, 많은 일반적인 위험 회피 성향의 “검증인 후보”들은 검증인으로 참여하는 것을 주저할 것입니다. 그렇게 되면 시스템에서 분쟁을 일으켜 더 많은 이익을 얻고자 하는 사람들만 검증인으로 참여하게 되겠죠. 좀 더 넓게 보면, (평균적으로) 선한 행동을 하는 사람은 악한 행동을 하는 사람들보다 더 높은 투자수익을 가져갈 수 없을 것입니다.

이에 대한 대답:
이 부분은 연구팀이 많은 관심을 두고 앞으로도 연구해야 하는 “암호경제학(cryptoeconomics)”과 관련된 내용입니다. 매커니즘의 수식화가 진행됨에 따라, 악한 행동에 대한 처벌 및 예치금의 크기에 따른 리스크와 보상의 균형 등을 최적화하는 과정을 진행할 예정입니다.

이 문제는 비트코인에도 동일하게 존재한다는 점(PoW이므로 상대적으로 덜하긴 하지만)은 주목할 만 합니다.

“돈이 돈을 번다” – “예치한 금액에 기반한 합의 알고리즘”이라는 말을 듣는 분들이 많이들 우려하시는 또 하나의 부분이 바로 이 부분이죠. 이렇게 될 경우 암호화폐 생태계에서 부의 불평등을 가속화하고 더 나아가 세계 경제에도 부의 불평등이 더 심화되는게 아니냐면서요.

이에 대한 대답:
여기서 기억해야 할 것은 PoS는 현재 비트코인에 사용되고 있는 PoW에 비해 더 평등주의적(즉, 자본이 많은 사람에게 적은 이익이 돌아가는 것)이라는 점입니다.

위에서 PoS에 대해 살펴보았던 것 처럼, PoS는 채굴자가 모여 집단을 이루려는 의욕을 저하시킴으로써 규모의 경제를 완화시킵니다. PoS에서, 1달러는 1달러의 가치를 가지는 것이죠.

그러므로, PoS에 대해 처음 들었을 때 PoS가 부의 불평등을 악화시킬 것이라는 생각이 드는 것과는 정 반대로, 실제로는 현재 상태에 비하면 상당한 수준의 개선이 이뤄지게 됩니다.

잠깐 다른 이야기를 하자면: 규모가 커질수록 비용이 더 많이 들게 하거나, 자본이 적은 참가자가 더 많은 보상을 받게 하려면(부의 불평등을 해소하기 위한 한 걸음 더 나아간 방법), 성숙하고 신뢰할만한 신원/평판 관리 시스템이 반드시 필요합니다. 그렇지 않으면, 큰 자본을 가진 집단이 신분을 위조해서 그들이 가진 자본을 “가난한” 그들의 위조 신원으로 분배함으로써 전체적으로 누진세 시스템(progressive reward system)에서 이익을 보는 구조를 취할 수 있을 것입니다. 그러나 이 문제는 캐스퍼의 범위를 넘어가는 것이고, 앞으로 차차 해결해 나가야 할 부분입니다.

캐스퍼와 관련된 질문들

“캐스퍼가 여러개라 헷갈려요!”
죄송해요! 이 포스팅을 통해 그 부분을 조금 해소하려고 한 거였어요. 다시 정리하자면, 캐스퍼는 이더리움의 PoS 연구 개발 프로젝트들을 묶어서 부르는 말이에요. 나중에는 이 프로젝트들이 하나로 합쳐지겠지만, 프로토콜을 연구하다보면 가장 좋은 방법을 찾을 때 까지는 포크도 하면서 여러 방법들을 시도하게 되잖아요? 원래 일은 간단해지기 전까지는 점점 복잡해지기 마련이니까요 ??

“캐스퍼가 텐더민트와 다른점이 뭐죠?”
간단히 정리하면 캐스퍼는 생존성(가용성)을 우선으로하는 동시에 일시적인 안전성(정확성)의 저하는 수용한다는 점입니다. 텐더민트는 뛰어난 프로젝트이지만, 체크포인트에서 투표가 2/3 이상 이뤄지지 않으면 체인이 정지한다는 문제가 있습니다. 이 점 때문에 이더리움은 텐더민트와 협업하기보다는 캐스퍼를 연구하고 있는 것입니다.

Vlad Zamfir의 말을 인용하자면:

텐더민트는 안정성보다는 네트워크의 일관성을 우선하는 반면, 캐스퍼는 일관성보다 안정성을 우선합니다(CAP 정리 참조).

텐더민트는 단지 접속이 끊겼을 뿐인 검증인을 검열하는 것을 피하기 위해 접속중인 검증인을 처벌하지 않습니다.

보다 자세한 내용을 확인하시려면: Hudson Jameson이 위 인용문을 설명한 내용, Vitalik과 Jae Kwon이 참여한 레딧에서의 논의텐더민트 백서를 참조해주세요.

“?? 현재도 돌아가고 있는 280억달러짜리 라이브 네트워크의 엔진을 바꾸겠다고?”
네, 매우 야심차면서도 걱정도 되는 계획이죠. 그러나 PoS로의 이전은 오래전부터 의도된 방향이자 이 프로젝트의 진행 방향에 대한 철학이기도 합니다. 커뮤니티의 멤버들은 이더리움의 PoS로의 전환을 다들 잘 알고 있었습니다(이더리움 생태계의 참여자들이라면 많은 분들이 알고 계신 이더리움의 빙하기 – PoS로의 전환을 독려하기 위한 PoW체인의 난이도 조절 – 를 참조해주세요).

이런 변경을 말없이 진행할 수도 있겠지만, 이더리움 팀은 테스트 네트워크에서부터 변경을 시작하여 점차 옮겨올 계획입니다. 또, 초기의 하이브리드 방식에서는 PoS 요소가 끼치는 경제적인 – 동시에 보안에 대한 – 영향은 최종적으로 적용 될 “순수한” PoS 합의 방식에 비해 적을 것입니다.

“실제로는 10개 블록을 지나면 거래가 완료된 것으로 처리합니다. 왜 50블록 단위로 에폭을 설정해서 완결성을 검증하는게 중요하죠?”
위에서 다루긴 했지만, 중요한 부분이니까 한 번 더 정리해보죠.

우선, 캐스퍼는 샤딩이 가능하도록 만듭니다.

이 부분은 저도 처음엔 잘 이해가 안됐는데요, 이 부분을 이해하려면 캐스퍼의 배경에 대한 이해가 필요합니다. 이더리움의 목표는 여러가지가 있지만, 그 중 하나가 기술적/환경적으로 확장 가능한 블록체인 솔루션을 제공하는 것입니다. 이더리움은 암호화폐가 지금보다 훨씬 성장하여 세계 경제에서 큰 비중을 차지하는 세상을 만들고자 합니다. 그 비전을 달성하기 위해 캐스퍼는 PoW 채굴로 낭비되는 에너지를 줄이고자 합니다. 그러나 한편으로는 이더리움을 기술적으로 확장하기도 해야 합니다. 이 기술적 확장은 주로 샤딩을 통해 해결하고자 합니다.

현재 네트워크의 각 노드는 모든 일을 합니다. 샤딩은 그러한 각 노드의 책임 부담을 낮추는 방법을 찾기 위한 프로젝트입니다. 샤딩과 관련된 자세한 내용은 이 포스팅의 범위를 벗어나지만, 다음과 같은 질문을 통해 샤딩을 조금은 이해할 수 있습니다. “네트워크 전체가 아니라 일부의 노드만이 거래를 검증하는 새로운 매커니즘을 만들 수 없을까?”

여기서 중요한 부분은, 캐스퍼를 통해 주기적인 완결성이 확보된다면 샤딩을 적용했을 때 보안이 약화될 것에 대한 걱정을 줄일 수 있다는 점입니다.

두번째로, 명시적인 완결성은 블록체인의 일관성을 유지하는데 도움이 됩니다. Vitalik의 말을 인용하자면 다음과 같습니다:

PoW체인에서, 예를 들면 geth/parity 합의 부분에서 체인이 분기되어 두 체인 모두가 계속해서 블럭이 생성되는 경우를 가정해봅시다. 이 경우 거래소는 두 체인 중 한 쪽의 클라이언트를 구동해야 하므로, 갖고있는 자산이 잘못된 체인에 묶여버릴 위험을 지게 됩니다. 그러나 거래소가 캐스퍼에서 부여되는 완결성을 기다린다면, 만약 50 대 50으로 체인이 나뉜 경우라면 어느 체인도 완결되지 않을 것입니다. 즉, 이런 극단적인 상황에도 “잘못된” 내용을 완결하기보다는 “아무것도 완결하지 않는”것을 택함으로써 플랫폼의 안전성을 높이는 것입니다.

정리하자면, 직관과는 반대되지만, 명시적인 완결성은 거래의 완료보다는 블록체인의 확장 및 안전성과 더 관련이 있습니다.


앞으로의 진행

실행 사항

? FFG와 CBC의 설계 마무리
? 컨셉을 구현한 코드의 개발
? 테스트넷에 적용

“하나의 캐스퍼”

캐스퍼 PoS의 최종 상태를 생각해야 합니다. 멋지고 안전하면서 엘레강스한 하나의 캐스퍼를 만들기 위해 FFG와 CBC의 장점들을 어떻게 합쳐야 할까요.

매개변수 최적화

특정 매커니즘에서 원하는 방향으로 인센티브를 부여하기 위해 매개변수와 상수들을 최적화 하는 작업을 진행해야 합니다. 이 작업을 통해 얻은 지식에 기반해 매커니즘 설계를 변경하는 작업을 반복해야 하죠.

커뮤니티 교육

이더리움과 PoS, 그리고 암호화폐 커뮤니티 전체에 여러 연구 진행상황과 연구의 뒷배경에 있는 생각들을 더 많이 공유할 예정입니다.

앞으로의 포스팅 계획

? 캐스퍼의 역사 파트 6
? 캐스퍼를 통해 어떻게 샤딩이 구현될 수 있는지에 대한 자세한 설명
? 캐스퍼가 다른 설계들과 어떻게, 왜 다른지에 대한 자세한 설명
? “예치금”과 “투자한 돈”에 대한 비금전적인 측정 방법 (1000만원이라는 돈은 억만장자보다는 일반적인 사람들에게 상대적으로 더 큰 돈이죠)
? 슬픔 요소(griefing factor) 분석 2.0


원 글에서 이 부분에 있던 용어 정리는 별도 포스팅으로 분리하였습니다.
용어 정리 보러 가기


결론

“첫걸음” 치고는 새로운 정보가 무척 많긴 했지만, 이정도면 캐스퍼와 관련된 논의에 끼어들 정도의 기초적인 지식과 배경은 갖추신겁니다. 이 포스팅을 쓴 목적은 (1) 캐스퍼와 관련하여 넘쳐나는 정보를 하나로 묶어서 전달하고자, (2) 이더리움 확장(캐스퍼, 샤딩, 가스 가격 설정)과 관련된 암호경제학 연구를 시작하며 저 스스로의 캐스퍼에 대한 이해를 높이기 위해, (3) PoS, 캐스퍼, 이더리움과 관련된 정보를 널리 알리고 논의를 확산시키고자, 그리고 (4) 재능있는 수학자, 경제학자, 컴퓨터 과학자와 개발자들이 이 문제에 뛰어들도록 설득하기 위함이었습니다.

보다 더 자세히 알고 싶으시다면, 포스팅 전반에 걸쳐 소개된 자료들을 보시면서 앞으로의 진행에 참여해주시고, 주변에 있는 수학, 컴퓨터과학, 경제학, 게임이론, 분산시스템 분야의 (암호화폐 생태계에 속해있거나 아직 속해있지 않은) 여러 친구들 이더리움과 캐스퍼에 대해 이야기 해 주세요.

긴 글 읽어주셔서 감사합니다. 이 글이 도움이 되었길 바라며, 궁금하신 부분이나 걱정되는 점, 의견 등이 있으시면 이메일 또는 트위터로 연락해주세요!

이더리움 캐스퍼 첫걸음 (용어정리) by Jon Choi

Ethereum Core Researcher인 Jon Choi의 Ethereum Casper 101을 저자의 허락을 받아 전문 번역하였습니다.

Jon Choi에 대한 정보는 다음의 링크를 참조해주세요!


전체 글 목록:
이더리움 캐스퍼 첫걸음 (1) by Jon Choi
이더리움 캐스퍼 첫걸음 (2) by Jon Choi
이더리움 캐스퍼 첫걸음 (용어정리) by Jon Choi (현재 보고 계신 글)


용어 정리

“이더리움 캐스퍼 첫걸음”에서 무척 많은 개념들을 다루었는데요, 앞으로도 수많은 크롬 탭을 띄워가면서 자료들을 찾아보시다 보면 자주 보는 용어들이 있을거에요. 여기서는 가장 필요하고 자주 등장하는 개념들을 간단히 정리해두었습니다. 도움이 되었으면 좋겠네요!

Proof of Stake (PoS) – 네트워크의 검증인이 예치한 금액에 기반하는 퍼블릭 블록체인의 합의 알고리즘.

캐스퍼 – 이더리움의 PoS 연구 프로젝트 이름.

완결성(finality) – 시스템에서 어떤 작업이 완료되면, 그 작업은 번복될 수 없음(Vitalik의 합의 완결성에 대한 논의). 배경: PoW는 확률적이고 암시적(명시적이지 않음)인 완결성을 가짐. 캐스퍼는 완결성을 명시적으로 강제하는 매커니즘을 설계하고자 함.

포크 선택 규칙(fork choice rule) – 포크 선택 규칙이란, 여러 블록들과 메시지들을 입력으로 받아서 어떤 체인이 “올바른”체인인지 클라이언트에게 출력되는 함수로, 클라이언트는 출력을 전달받아서 평가를 함. PoW에서 주로 사용되는 “가장 긴 체인이 올바른 체인이다”가 대표적인 포크 선택 규칙 중 하나.

삭감 조건(slashing conditions) – 네트워크의 규칙을 어긴 검증인을 지분을 삭감함으로써 처벌하는 규칙.

신원 위조 공격(sybil attack) – P2P 네트워크에서 신원을 위조함으로써 평판 시스템을 무효화시키는 공격.

신원 위조 공격을 막기 위한 3 E(3 E’s of Sybil resistance) – 1. 진입 비용(entry cost) 2. 거주 비용(existence cost) 3. 탈퇴에 대한 페널티(exit penalty) (Dominic Williams가 만든 용어).

Nothing-at-stake 문제 – PoS 시스템에서 포크가 발생했을 경우, 검증인은 포크 된 체인 모두를 검증해버리면 손해보는 게 아무것도 없다는 문제가 존재함. PoS의 문제점으로 가장 잘 알려진 문제이자, 해결 가능한 문제로 여겨지고 있음. 예를 들면 삭감(Slasher) 등.

뇌물 공격(bribe attack) – 공격자가 프로토콜의 보안을 저해하기 위해 뇌물을 사용하여 검증인의 게임이론 프레임워크의 내시 균형을 변형시키는 것. (보다 자세한 내용은 캐스퍼의 역사 파트 2를 참조)

장거리 공격(long range attack) – 51% 공격과 같은 매커니즘(더 긴 체인을 만들어서 공격자가 원하는대로 장부를 수정하는 것)이지만, 여섯 블록 전부터 시작하는게 아니라 훨씬 이전(6만블록 전이라거나)부터 조작하는 것.

__DAG – “Directed Acyclic Graph(비순환 방향 그래프)”. 순환하지 않는 유한한 방향성을 갖는 그래프. (ETH Stack Exchange)

GHOST – “Greedy Heaviest Observed Subtree”. 보안과 탈중앙화 측면을 타협하는 대신 빠른 검증 시간을 우선 목표로 하는 체인 선택 규칙. (원본 논문ETH GHOST)

동기성(synchronicity) – 메시지의 시각과 관련된 가정 (동기, 비동기, 부분동기)

생존성(liveness) – “가용성(availability)”. 프로토콜을 따르는 노드들이 언젠가는(eventually) 값을 결정함. 네트워크의 상태가 값을 결정할 수 없는 상황과 반대의 경우 (예: 텐더민트에서 투표가 2/3 이상 모이지 않은 경우).

안전성(safety) – “정확성(correctness)”. 프로토콜을 따르는 노드들이 동일한 값을 도출함. 직관적으로 설명하면, 서로 충돌하는 내용을 담은 두 개의 블록이 체인에 포함될 수 있는지 여부와 관련된 부분.

FLP 불가능 정리 – 비동기 상태(asynchronous)이면서 안전(safe)한 상태로 운영(live)되는 네트워크는 존재할 수 없다 (증명된 바 있음).

책임을 물을 수 있는 장애(accountable faults) – 특정 검증인 또는 검증인 집단에게 책임을 물을 수 있는 장애.

비잔티움 장애 / 비잔티움 행위(Byzantine faults / Byzantine behavior) – 서로 다른 관찰자에게 서로 다른 증상을 보이는 장애를 지칭. 프로토콜을 따르지 않는 행위.

비잔티움 실패(Byzantine failure) – 합의가 필요한 시스템에서 비잔티움 장애로 인해 시스템 서비스에 발생한 손실.

비잔티움 장애 허용 (Byzantine fault tolerance, BFT) – 시스템이 비잔티움 장애를 견딜 수 있는 능력. 비동기 네트워크에서는 1/3을 비잔티움 행위의 한계로 설정하고, 동기 네트워크에서는 1/2로 설정. (새로운 캐스퍼와 텐더민트를 비롯한 Paxos, PBFT를 포함하는 BFT 합의 알고리즘).

나카모토 합의(Nakamoto consensus) – PoW에 기반한 비트코인같은 방식의 합의 생성 방식. BFT에 기반한 PoS와 대비하여 체인 방식의 PoS를 나카모토 스타일(Nakamoto-style) 합의라고 부르기도 함.

텐더민트(Tendermint) – 일관성에 중점을 두는 PoS 구현 방식. 악의를 품은 행위자가 1/3 이하일 때는 포크가 발생하지 않지만, 검증인 투표에서 2/3 이상의 투표가 진행되지 않으면 체인이 정지하는 단점이 있음.

검증인(validator) – 블록체인의 체크포인트/블록을 검증함으로써 보상을 얻는 주체. PoW의 채굴자 = PoS의 검증인.

검증인 집단(validator set) – 특정 시점의 어떤 체인의 검증인의 집단.

체크포인트(checkpoint) – FFG에서, PoW체인(예: ethash에 기반한 이더리움) 위에 PoS 검증 매커니즘이 덧붙여져 있을 때, 일정한 간격(50블록)을 둔 블록.

에폭(epoch) – 검증인이 블록의 완결성에 대한 투표를 진행하는 간격(FFG에서는 50블록). PoW 채굴자는 블록을 채굴하고 PoS 검증인은 매 에폭마다 체크포인트를 검증.

변동하는 검증인 집단 – 시간이 흐름에 따라 블록체인의 검증인 집단이 변화할 수 있다는 개념. BFT스타일의 합의 알고리즘에서 이 부분을 해결하는 것이 매우 중요한 발전이었음. 텐더민트가 처음으로 해결 방법을 제시하였음. 캐스퍼 역시 이 부분에 대한 연구가 활발히 진행되는 중.

얼버무림(equivocation) – 검증인이 서로 충돌하는 두 메시지를 보내는 행위 (보다 정확한 정의는 이 발표자료의 28번 슬라이드를 참조)

덩클(dunkles) – 지배적인 블록(“올바른” 체인에 생성된 블록)에 지배적이지 않은 블록(“올바르지 않은” 체인에 생성된 블록)의 데이터를 포함시키는 매커니즘. 이 매커니즘을 통해 보다 나은 인센티브 매커니즘을 만들 수 있었으며, Nothing-at-stake 문제를 완화시키는데에 큰 도움이 되었음 (링크)

제안 매커니즘(proposal mechanism) – 집단에 속한 검증인이 블록을 타당성 증명 또는 완결 하자고 건의하기 위한 매커니즘.

타당성 증명(justification) – FFG를 예로 들면, 검증인의 2/3 이상이 새로운 체크포인트에 대해 체크포인트의 기록이 정확하다고 동의하는 것. 이는 체크포인트를 완결하기 위한 중간단계임.

완결(finalization) – FFG를 예로 들면, 검증인의 2/3 이상이 타당성이 증명 된 체크포인트에 대해 체크포인트의 기록이 정확하다고 동의하는 것. 이 단계까지 마치면 체크포인트에 완결성이 부여됨.

상태 전환 시스템(state transition system) – 특정 상태(예: 거래 내역 목록 또는 계좌 목록 등)와 그 상태의 시간에 따른 변화(전환)를 유지하는 시스템. 비트코인, 이더리움, 그 외 퍼블릭 블록체인들은 상태 전환 시스템으로 볼 수 있음.

프로토콜 효용 함수(protocol utility function) – “…프로토콜이 얼마나 잘 동작하는지를 확인할 수 있는 공식으로, 이상적으로는 블록체인 내에서 계산할 수 있어야 함. PoW체인의 경우, 생성된 모든 블록 중 메인 체인에 포함된 블록의 비율로 볼 수 있음. 캐스퍼에서는 프로토콜 효용이 0인 경우 가장 완벽하게 동작하고 있는 것으로 봄. 이는 모든 에폭이 완결되고 아무런 안전성과 관련된 오류가 발생하지 않은 상황으로, 완결되지 않은 에폭이 발생하면 약간의 페널티를 받고, 안전성과 관련된 오류가 발생하면 매우 큰 페널티를 받는다. 프로토콜 효용 함수를 제대로 정립할 수 있다면, 악의적 행위에 대한 페널티를 해당 행위로 인해 프로토콜 효용이 손실된 정도와 비슷하게 설정할 수 있을 것이다.” (피해의 삼각형에서)

(역자 추가) 형식적 검증(formal verification) – 어떤 하드웨어나 소프트웨어 시스템이 의도된대로 동작하는지 여부를 형식 수법(formal method) 또는 수식을 통해 검증하는 것.

파일로 알아보는 블록체인

초심으로 돌아가서 다시 한번 블록체인을
연재하기로 했습니다

뻥이고

지금까진 블록체인에 대해서 얘기할때
여러모로 기술적 얘기가 들어갈 수밖에 없어서
많은 초보들이 레고블록을 택했습니다.

전 나름 쉽게한다고 하지만
어느새 저도 모르게 금단의 무공을 꺼내들어버리는거
같습니다. 나름 내공이 쌓인걸까요.
매번 댓글엔 ‘어려워 임마’ 라는 성토가 끊이질 않죠

그래서 요번엔 이것저것 생략하고
블록체인을 파일의 시점에서 보고
그로 인한 장단점을 통해 설명해보겠습니다.

장점


블록체인의 최대 장점은 블록파일입니다.

보통 우리가 어딘가 서버..
예를들면 네이버 같은데 접속을 하는 이유는
정보나 파일을 다운 받기 위함입니다.

그러한 정보파일들을 네이버는 서버에 독접하고
있습니다.


그래서 우린 네이버가 화장실 간다 하더라도
기다려야됩니다. 그 파일 가진건 네이버밖에 없기에..

하지만

블록체인은 누구라도 그러한 정보파일을 가지고
있을 수 있습니다.

그것이 블록파일입니다.

이것만 있으면 자신도 ‘아 너무 멋지다’ 소리를
들을 수 있는 것이죠(아님)

…사실은.. 위와는 상황이 다릅니다.
아무나 가질 수 있기에
블록파일을 들고 화장실갔다오면


자기 자리마저 위태롭습니다.
다들 다른 서버(블록파일 가진 애) 찾아가고 없습니다
이제 서버는 흔하거든요

이는 누구나 쉽게 서버가 되고
누구나 쉽게 접속가능하다는 것입니다.
그리고 파일 가진 애 다 찾아내서 족치지 않는 이상
사라지지도 않습니다.
게다가 죄다 들고 있기 때문에 조작을 시도하다간

혼자만 다른 치욕플레이를 겪어야됩니다.

덕분에 단순히 다른 이들과 같은 파일을 들고 있다는
이유하나만으로 철통보안이 성립하는 초강점을
가지고 있습니다.

단점


단점도 이 블록파일이 문제입니다.

새로운 기록들을 채워넣어서 새로운 블록이 만들어지면
이것이 인터넷으로 업로드, 전파됩니다.
이 뉴파일은 사람들이 이미 가지고 있던 파일의
마지막에 추가됩니다.

(새블록이 방금 들어온 모습)


(검증이 끝나면 마지막에 추가)

문제는 블록체인은 거래를 올리면 바로 다들 갱신하는게
아니라 저렇게 안에 거래를 채워놓은 블록파일로
받습니다.
이 블록파일이 만들어지기전까진
다른 곳에 업로드 하질 않죠

그래서 내 거래를 올려도 바로 갱신되는게 아니라
내 거래정보가 적혀 있는 블록파일이 만들어지고
인터넷 상에 전파 되기까지 기다려야됩니다.

이 시간을 블록타임이라고 하는데
일반적으로 드럽게 느립니다.

기존에 있는거야 그냥 바로 볼수 있지만
최신정보는 당연히 이 블록타임후에야 볼 수 있습니다
블록타임이 10분인 블록체인이 ‘실시간 야구정보를
블록체인에 접목해봤다’.. 이러면 그거 구라입니다.

10분에 한번씩 갱신되는데 실시간이 될리가 없죠.

그래서 4차산업이라고 너도나도 여기저기 쓰지만
실은 제약이 상당합니다.

남하고 다르면 인정못받는 부분도
수정불가라는 조작방지에는 최강이지만
어떠한 예외도 인정치 않음으로써
때때로 수정이 필요한 분야에선 사용할 수가 없죠.
게다가 모두가 가지고 있으니 모두가 열람할
수 있는 부분이 더해지면 더욱 많은 분야에서
매우 비효율적이 됩니다.

마치며


위에서 봤듯이 블록체인을 최대한 간단히 보면
정보가 기록된 파일을 블록단위로 나눠서
지속적으로 업로드 다운로드 하면서 유지하는 것입니다.

이 블록에 쓰일 거래 내용을 적는 프로그램이
메모장.. 이 아니라 지갑 프로그램이죠.
물론 그냥 적기만 하는게 아니라 암호적으로
사바사바도 합니다.

생각보다 간단하죠. 그리고 파일 만드시는 시간,
검증 시간, 업로드 시간, 파일 크기 등등
파일에 관련해서 생각해보면 장단점도 잘 보일 것입니다.

이 기본원리에 바탕해서 암호도 넣고
코인들 만들고 한 것이죠.
특히 코인은 신의 한수로써 위에서 말한 블록체인의
단점을 무시해버릴 정도의 강력한 위력을 발휘하고
있습니다.

요렇게만 알아도 기존의 블록체인에 대한 추상적인
것들보다 좀더 와닿지 않을까 합니다 +_+/