@subasuba님의 블록체인 글을 읽다가 마침 두 개를 비교해주신 글이 있어서 리스팀했습니다.
ms-dos와 윈도우라는 표현이 와닿더라구요.ㅎㅎ
비트코인에서 이더리움으로.. 시작의 차이(개혁과 발전)1
그럼 어제에 이어 오늘은 이더리움의 시작에 관해 글을 써보겠습니다.
어제 글을 한 문장으로 요약하면 비트코인은 기존 화폐의 문제점을 개혁하기 위해 만든 암호화 화폐이고 블록체인은 그 화폐를 가능하게 만드는 수단이었다는 것입니다.
주된 목표는 비트코인이라는 화폐였지 블록체인이라는 기술이 아니었다는 것이죠.
그럼 이더리움은 어떨까요?
이더리움을 만든 비탈릭 부테린은 비트코인 블록체인을 대하는 방향이 좀 달랐습니다.
'어 저 블록체인이라는 거 멋진데?' 에서 시작하죠.
작업증명의 기반이 되는 작동방식은 매우 혁신적인 것이었는데, 이것은 두가지 문제를 동시에 해결하기 때문이다. 첫째, 이것은 간단하면서도 상당히 효과적인 합의 알고리즘을 제공해주었다. (중략) 둘째, 누구나 합의 프로세스에 참여할 수 있도록 허용해줌으로써 합의결정권에 대한 정치적 문제를 해결할 수 있을 뿐만 아니라 동시에 시빌공격(sybil attacks)도 방어해줄 수 있는 메커니즘을 제공했다.
비탈릭은 이더리움 백서에서 저 두 가지를 혁신적이라고 표현하고 있습니다. 비트코인 블록체인이 나오기 전에 있었던 디지털 화폐들의 문제점을 바로 작업증명(POW) 합의 알고리즘에 의해 풀어냈기 때문입니다. 비탈릭은 그 결과 탄생하게 된 비트코인이라는 화폐의 가능성이 아니라, 그 동안 가장 어려운 문제였던 합의 알고리즘을 풀어낸 블록체인이라는 시스템에서 상당한 가능성을 발견한 것입니다.
이 블럭체인의 가능성을 누구나 개발에 참여할 수 있는 오픈 플랫폼의 형태로 발전시킨 것이 이더리움입니다. 비트코인이 하나의 기능에 집중했다면 이더리움은 블럭체인을 플랫폼으로 만들고 그 위에서 누구나 개발하고 참여할 수 있게 열어버린거죠 . 비트코인이 현실 문제의 개혁을 위해 만들어졌다면 이더리움은 비트코인이 가지고 있는 블록체인을 발전시키기 위해 만들어진 것입니다.
이더리움은 블록체인을 발전시키기 위해 비트코인 블록체인의 한계를 없애야 했습니다.
그 중 가장 큰 한계가 스크립트 라는 언어였죠. 저번 글에서도 설명했듯이 스크립트는 작은 전자계산기와 같습니다. 단순하지만 안전하고 적은 용량으로 쉽게 처리할 수 있지만 할 수 있는 일에 한계가 있습니다. 거래 지불수단인 비트코인에는 적합하지만 그 이상의 다양한 프로그래밍을 위해서는 한계가 있었습니다. 이더리움은 이 한계를 넘기 위해 튜링 완전한 Solidity란 프로그래밍 언어를 씁니다. 여기서 자주 듣게 되는 튜링 완전함(Turing-Completeness) 이라는 말이 나옵니다.
이 튜링 완전함이라는 개념은 블록체인의 가능성이란 말과 닮아 있어 조금 설명을 하도록 하겠습니다.
비트코인 스크립트가 튜링 완전하지않다(Turing-incompleteness)라고 하는 이유는 순환명령(loop)을 할 수 없기 때문이라고 알려져 있습니다. 비트코인이 이 무한루프(자동반복)을 하지 못하게 한 이유는 거래 내역 안에 논리 폭탄을 막기 위한 것이었습니다. 하나의 명령이 끝없이 돌아가면, 제어장치가 없는 비트코인 노드는 과부하가 걸리기 때문입니다. 프로그래밍 언어로 튜링 불완전하다는 것은 이렇게 구현할 수 없는 기능이 있다는 것으로 설명됩니다.
그럼 튜링 완전함이라는 것은 프로그래밍으로 모든 것을 구현할 수 있다는 것인데, 이 튜링 완전함에 대한 설명에서 이더리움이 추구하는 바를 유추해 볼 수 있습니다.
(앨런 튜링 : 영화 '이미테이션 게임' 의 주인공)
튜링 완전함이란 말은 앨런 튜링이라는 사람이 만든 튜링 머신라는 개념에서 나옵니다. 튜링 머신은 튜링 완전한 언어와 무한한 저장 공간을 가진다면 모든 문제를 풀 수 있다고 합니다. 즉 충분한 공간만 있으면 모든 문제를 풀 수 있는 언어라는 것이죠. 모든 문제를 풀 수 있는 언어로, 화폐에 국한되지 않는 다양한 서비스를 블록체인 위에 구현하고자 한 이더리움과 닮아있지 않나요? 19살 괴짜 천재의 눈에는 블록체인이 저 튜링 머신처럼 모든 걸 이뤄낼 수 있는 세계처럼 보인 게 아닌가 상상하게 됩니다.(현재 많은 문제점이 나오고 있지만요.ㅎㅎ)
이더리움은 지불수단이라는 비트코인의 기능을 발전시킵니다. 누구에게 돈을 주고 받고 송금하고의 문제는 두 사람간의 합의가 바탕이 된 하나의 계약입니다. 이 계약의 한 가지 방식을 설계 가능한 모든 계약 형태로 확장시키는 거죠. 이것이 이더리움의 핵심 기능인 스마트 컨트랙트입니다.
이더리움이 제공하려는 것은 완벽한 튜링완전(turing-complete) 프로그래밍 언어가 심어진 블록체인이다. 이 프로그래밍 언어는, 코딩된 규칙에 따라 '어떤 상태'를 다르게 변환시키는 기능(arbitrary state transition functions)이 포함된 "계약(contracts)"을 유저들이 작성할 수 있게 함으로써 앞서 설명한 시스템들을 구현 가능하게 할 뿐만 아니라 우리가 아직 상상하지 못한 다른 많은 어플리케이션도 매우 쉽게 만들 수 있도록 도와줄 것이다.
비트코인도 블록체인에서 하나의 Dapp(Decentralized Application)이라고 불리는 이유가 바로 이것입니다. 블록체인 기능을 확장시켜 다양한 어플리케이션을 사용한다면, 비트코인도 지불이나 송금을 할 수 있는 어플리케이션 중에 하나가 되는거죠.
백서에서 스마트 컨트랙트를 매개로 하는 Dapp은 다양한 서비스들을 구현할 수 있다고 합니다. 현실에서 컨트랙트(계약)이라고 하면 약관이란 것을 생각하게 되는데, 인터넷 사이트 회원가입할 때 가장 많이 보는 것 같네요. 그리고 은행 계좌나 카드 만들 때, 이사한다고 집 계약할 때, 보험 등등에서 약관이라는 걸 봅니다.
회원가입할 때 하는 약관은 신원 확인이나 개인 인증과 관련된 계약이니 이런 인증 시스템을 블록체인 위에 올릴 수 있습니다. 집 계약과 관계된 소유권 이전 같은 계약도 블록체인의 모든 정보가 공개되고 조작될 수 없다는 특성 상 잘 어울리는 서비스가 될 수 있습니다. 금융에 관계된 계약들은 이미 나온 수많은 암호화폐들이 보여주고 있죠.
또한 P2P네트워크로 연결된 노드 시스템이라는 점은 전세계 컴퓨터가 연결되어 있다는 것이니 그 컴퓨터를 이용하는 방식으로도 이용할 수 있을 것입니다. 네이버 클라우드 같은 클라우딩 컴퓨터나 분산 저장소가 만들어 질 수 있겠죠.
이더리움은 이런 구체적인 예들을 이더리움을 처음 소개하는 백서에서 설명하고 있습니다. 이더리움 플랫폼 위에 올라갈 Dapp들의 로드맵이 될 수도 있고 블록체인 자체의 발전방향이라고 말할 수도 있겠죠. 이더리움을 만들게 된 이유이기도 하고요.
그만큼 암호화 화폐의 보조수단이 아니라 블록체인 자체와 그 위에서 할 수 있는 일들의 가능성을 말하고 싶었던 것이 아닐까요?
이더리움은 분명 현재 많은 한계를 들어내고 있습니다. 올해 우리나라에 수많은 이더교도를 생산했지만 많은 문제점도 역시 들어내고 말았죠. 저두 아직 공부가 덜 되 이더리움이 블록체인에서 할 수 있다는 말은 이해가 가지만, 왜 블럭체인에서 저런 걸 해야하는 지는 잘 모르겠습니다. 블럭체인의 장점을 잘 살릴 수 있는 영역은 분명 있겠지만 아닌 영역도 분명 있다고 생각합니다. 이걸 알아내기 위해 공부해야겠죠.ㅎㅎ 사실 저두 사이비 이더교 신자이긴 하지만 이더의 가능성을 믿는 건 바로 좋은 개발진을 많이 선점했다는 점입니다. 엉성하긴 하지만 실제 Dapp들이 나오고 있고요. 밑에 새로운 킬러앱 같은.ㅎㅎ 그래두 아직 이더리움도 갈 길이 멀다는 건 팩트인거 같습니다.
(이더리움 플랫폼에 올라온 이더레이싱이란 Dapp입니다. 차는 ER-4, ER-1, ER-3가 좋습니다)
어쩌다 보니 이더리움 백서의 초반 부분을 설명한 것처럼 되어버렸네요.ㅎ
이더리움 백서의 초반부분은 비트코인을 설명하는 것으로 시작됩니다. 그리고 그 한계를 지적하면서 이더리움으로 넘어가죠. 어제 오늘 글이 그 흐름을 따르고 있습니다.
다음 글에서는 이해하기 쉬운 것보다 자세한 차이를 좀 집어보겠습니다. 그리고 백서로 넘어가야죠!!!
튜링 완전함에 대해서 글을 찾아보다가 알게된 글이 있어 소개합니다. 자세히 알고 싶은 분은 한승환 님의 브런치 글 [이더리움 개론 + 튜링완전]을 읽어보시기 바랍니다. 튜링 완전함을 인간의 뇌에 비교하시면서 알기 쉽게 설명해주셨습니다. 물론 이더리움에 대해서도 잘 설명해주셨구요.ㅎ
글이 너무 길어졌네요. 이렇게 안 쓸려고 했는데 컨디션이 좀 메롱하다보니...죄송합니다!!!
긴 글 읽어주셔서 감사드립니다. 오늘은 사견이 좀 많이 들어간 거 같은데 의견은 나누라고 있는거니 댓글로 남겨주시고 같이 공부해요~~~
Ourselves 캠페인
셀프보팅을 하지 않고 글을 올리시고
ourselves 테그를 달아 주시면
많은 분들이 관심 가져 줄꺼에요