[블록체인 스터디 노트 #7] Ethereum의 탄생: 분산화 된 애플리케이션 플랫폼
안녕하세요. 이글아이(@eaglekeeneye) 입니다.
이번 글은 지난 글에 이어진 이야기입니다. 아래의 링크부터 차례로 먼저 읽고 오시길 권장 드립니다.
시리즈 서두:
[블록체인 스터디 노트 #1] 또 블록체인이야?
[블록체인 스터디 노트 #2] 중앙집권적 금융체제의 폐해1세대 암호자산 비트코인:
[블록체인 스터디 노트 #3] Bitcoin의 탄생: 분산화 된 가치 저장수단
[블록체인 스터디 노트 #4] Bitcoin은 어떻게 신뢰를 얻게 되었나 1
[블록체인 스터디 노트 #5] Bitcoin은 어떻게 신뢰를 얻게 되었나 2
[블록체인 스터디 노트 #6] Bitcoin, 그리고 그 이후
0) 이야기 순서
길고 긴 비트코인의 이야기를 끝내고 블록체인 2.0으로 평가받고 있는 이더리움(Ethereum)에 대한 이야기를 시작해보려 합니다.
우선 "1) 프로그래밍 가능한 블록체인" 에서 이더리움 이 비트코인과 비교해서 근본적으로 다른 점이 무엇인지 설명하겠습니다.
그다음 "2) Smart Contract : 탈중앙화 소프트웨어" 에서 이더리움을 플랫폼 위에 구동되는 dApp의 개념과 gas의 개념을 설명하겠습니다.
마지막으로 "3) 이더리움 플랫폼 등장의 의의" 에서는 이더리움의 등장과 함께 블록체인 dApp의 많은 산업적용 가능성과 토큰 이코노미 등장에 대해 이야기를 하겠습니다.
1) 프로그래밍 가능한 블록체인
( a ) 비트코인 Script의 한계점
비트코인 생태계에서는 Script 라는 프로그래밍 언어를 사용합니다. 이 언어를 사용함으로써 비트코인의 모든 거래를 유효화시킵니다. 이 프로그래밍 언어의 특징은 for 구문, 즉 반복 구문을 허용하지 않는다는 것입니다. 이러한 특징으로 인해 비트코인 생태계는 루프에 빠지지 않습니다.
바로 반복 구문을 허용하길 바라서 비트코인 코어 팀에 여러 번 건의를 넣은 사람이 있었습니다. 비탈릭 부테린
이라는 소년인데, 20살에 이더리움 백서를 고안해낸 천재 소년입니다. 그는 2011년부터 2014년까지 비트코인에 관심을 가져, 비트코인 매거진이라는 발행물을 발행하였습니다. 그리고 20살이 되던 해인 2014년에 그는 비트코인의 가치저장기능과 함께 개발 플랫폼이 되도록 이더리움을 창안하였습니다.
( b ) 이더리움이란
이더리움과 비트코인의 차이를 '스마트 계약'으로 알고 있는 경우가 많습니다. 그런데 간단한 탈중앙화 계약기능은 비트코인도 존재합니다. 바로 제 3자의 도움 없이 개인과 개인 간의 송금이 가능하여, 송금 기능에 한한 계약기능은 존재하는 것입니다.
그래서 비트코인이 할 수 없는 기능 중에 이더리움이 할 수 있는 것은 '계약' 기능이 아니라, '스마트한 계약'이라고 할 수 있습니다. 조금 더 명확하게 표현하자면, 이더리움은 분산화된 애플리케이션을 수행할 수 있습니다.
만약 블록체인상에 반복 구문을 사용할 수 있다면, 블록체인 기술 응용에 무한한 가능성이 존재합니다. 불특정 다수의 사람이 어떤 행위를 하고 프로그램된 시스템에 의해 토큰을 보상받거나 블록체인상에 기록이 되는 것 가능해집니다. 즉, 분산화된 애플리케이션을 만드는 것이 가능해집니다.
아래는 이더리움의 공식 정보를 얻을 수 있는 사이트 입니다.
- 이더리움(Ethereum) 공식 사이트: 이더리움의 공식 사이트
- Ethereum Homestead Documentation: 이더리움의 개념, 개발 가이드 자료
2) Smart Contract : 탈중앙화 소프트웨어
( a ) 왜 스마트 계약인가
( i ) 탈중앙화 된 계약의 의미
이더리움은 프로그래밍 가능한 블록체인이라고 설명하였습니다. 비트코인이 특정 계정에 가치 저장 수단을 중앙화된 제 3자 개입 없이 송금이 가능했다면, 이더리움은 계정끼리 중앙화된 제 3자의 개입이 필요 없이 송금 이외에 조금 더 복잡한 계약을 수행할 수 있습니다.
그런데 이 ‘계약’이라는 단어는 많은 사람에게 혼동을 주었습니다. 거래하고 당사자들 간에 합의를 볼 때 쓰는 ‘계약’만을 떠올리기 때문이라고 생각합니다. 사실 스마트 계약은 블록체인 위에 구동하는 소프트웨어이며 애플리케이션입니다.
( ii ) dApp (decentralized Application)의 의미
블록체인 플랫폼이 등장하고 '댑', '디앱'이라는 용어를 많이 들어보셨을 것입니다.dApp 은 decentralized Application의 줄임말로, 직역하자면 탈중앙화 애플리케이션이라는 의미입니다.
이더리움 위에 구동할 애플리케이션을 deploy 하는데, 이 애플리케이션이 체인 상에 올려지면 그 누구도 계약을 관장하지 않고 당사자들만 계약코드에 따라 거래를 합니다. 다시 말해, 제 3자의 개입 없이 계약에 적혀 있는 코드에 따라 계약이 진행되기 때문에 탈중앙화된 애플리케이션이라고 불립니다.
그리고 이 탈중앙화 애플리케이션은 이더리움 체인 상에 올리면 개발자조차도 수정하지 못하고, 커뮤니티의 합의에 따라 하드포크를 함으로써 오류가 없는 새로운 프로그램으로 재업로드해야합니다. 이것이 바로 Code-is-Law
의 개념입니다.
( b ) dApp 의 예시
블록체인상에 프로그램이 가능해진다면 복잡한 방식의 계약이 가능해지는데 아래 2가지 예시를 소개합니다.
( i ) 계약의 예시1
이더리움의 계정 A와 계정 B는 특정 조건이 만족이 되면 이더리움을 지급받기로 한다고 가정해 봅시다.
① 계정 A는 이더리움 계약 주소 C에 이더를 전송합니다.
② 계정 B는 이더를 받기 위해 서비스를 제공해줍니다.
③ 계정 A는 계정 B에게 서비스를 받고, 계약 C는 서비스를 받은 것을 확인하고 계정 B 에게 이더리움을 전송합니다.
( i ) 계약의 예시2
개발사가 만든 이더리움 기반 토큰을 사람들에게 세일하는 ICO (Initial Coin Offering)
를 진행하고자 합니다.
① 계정 A1, A2, A3는 이더리움 기반의 토큰 D 구매에 참여하기 위해 이더리움을 준비했습니다.
② dApp 개발사 계정 B는 토큰 D 판매를 진행하기 위해 이더리움 계약 주소 C를 생성했습니다. 계약상에는 1이더당 1개의 토큰 D를 주기로 되어있습니다.
③ 토큰 세일이 시작되어 계정 A1, A2, A3는 이더리움 3, 1, 2개를 계약 C로 전송합니다.
④ 토큰 세일이 끝나면 계약 C는 자동으로 계정 A1, A2, A3에 각각 3, 1, 2개의 토큰 D를 전송하고 계정 B에게 토큰판매를 위해 모은 이더리움 전량을 계정 B로 전송합니다.
( c ) EVM (Ethereum Virtual Machine, 이더리움 가상 머신)을 구동하기 위한 프로그래밍 언어
이더리움의 dApp 을 구동하기 위해서 복잡한 과정이 존재해서 프로그래밍을 해야 합니다. 이때 쓰이는 프로그래밍 언어가 있는데 이더리움은 튜링 완전(turing completeness) 언어
로 알려진 Solidity
를 프로그래밍 언어로 대부분 채택하고 있습니다. Solidity 이외에 이더리움 프로토콜에 쓰이는 언어는 Serpent, LLL, Mutan (현재 쓰이고 있지 않음)이 있습니다.
Solidity: EVM (Ethereum Virtual Machine, 이더리움 가상 머신) 용으로 많이 쓰이는 언어 라이브러리입니다. 자바스크립트 및 C 언어와 유사한 고수준의 스마트 계약용 언어로써 스마트 계약을 개발하고 EVM 바이트코드로 컴파일할 수 있습니다.
튜링 완전(turing completeness) 언어: 어떤 프로그래밍 언어나 가상기계가 튜링 기계(turing machine)와 동일한 계산 능력을 가진것을 뜻합니다. 프로그램이 어떤 명령을 수행하고자 할때, 튜링 기계는 그명령을 수행하기 위해 프로세스를 세부적으로 쪼갤 것입니다. 그리고 그 명령이 수행 완료될때까지 무한히 반복할 것입니다.
예를 들어, "저 책상위의 연필로 'A'자를 써라"에서 책상을 보고, 연필을 찾고, 손을 연필쪽으로 뻗고, 연필을 손으로 집고, 종이를 준비하고, 'A'를 써야 쓰는 일련의 작은 프로세스들을 거쳐야합니다. 각각의 프로세스가 완료될 때 까지 기계는 무한히 반복을 합니다.
( d ) Gas 의 개념
이처럼 이더리움은 반복 구문을 쓸 수 있는데 이때 문제가 발생합니다. 만약 악의적인 누군가가 이더리움 위에 무한히 반복하는 dApp을 체인 상에 올린다면 어떻게 될까요?
이더리움의 체인이 정상적인 dApp을 못 돌리고, 악의적으로 올린 dApp에 의해 시스템이 마비가 될 것입니다. 게다가 한번 올린 dApp 은 올린 사람도 함부로 수정을 못하기 때문에 이러한 문제는 아주 심각한 사태를 초래할 수 있습니다. 애초에 비트코인 스크립트에서도 반복 구문을 허용하지 않은 것은 이러한 DDoS 공격을 원천 차단하기 위함이었습니다.
그래서 이더리움 프로토콜에서 고안해낸 것이 ‘gas’라는 수수료 개념입니다. 이더리움 계약을 구동할 때마다 gas를 소비하도록 만든 것입니다. 그렇게 하면 컴퓨팅 자원을 쓸데없이 낭비하는 계약을 올리는 계정에는 gas를 소비하게 하면서 경제적인 타격을 가할 수 있게 됩니다. 그리고 계약마다 gas limit 값을 걸어서 혹시나 개발자가 실수로 무한히 돌아가는 계약을 올려도 멈출 수 있도록 만들어놨습니다.
그런데 바로 이 ‘gas’ 때문에 일반인들이 암호자산 이용에 큰 불편함이 있어, 이더리움의 큰 약점이 되고 있습니다. 이 이야기는 추후에 이더리움의 한계점에서 다루도록 하겠습니다.
3) 이더리움 플랫폼 등장의 의의
( a ) 복잡한 토큰경제(Token Economy)의 탄생
비트코인은 반복 구문을 이용하지 않았지만, 간단하게나마 토큰 경제가 존재했습니다. 그래서 엄밀히 말해서 이더리움이 토큰 경제의 최초라고 할 수는 없습니다.
비트코인 생태계의 경우,
- 채굴자들은 자신의 컴퓨팅 자원을 사용해서 비트코인 네트워크가 안정적이고 장부의 신뢰성을 높여주는 역할을 합니다.
- 자신의 컴퓨팅 자원을 사용하여 이에 대한 보상을 ‘비트코인’이라는 토큰으로 받아갑니다.
하지만 이더리움은 프로그래밍이 가능한 블록체인으로, 더욱 복잡한 토큰 경제 체계를 만들어갈 수 있게 되었습니다. 이에 토큰 시스템의 프로그래밍이 가능해지면서 누구나 자신만의 토큰을 만들거나, 이더리움 기반의 dApp 을 만들어 낼 수 있었습니다. 블록체인 기반의 사업을 시작하고자 하는 개발사들이 이더리움 기반의 토큰을 발행하고 시작하기 용이해졌습니다. 반면, 이에 대한 부작용으로 개발사들이 작정하고 사기를 칠 생각으로 ICO로 토큰 발행하고 이더리움을 받아가는 사례가 많았습니다.
2017년 하반기에는 ICO(Initial Coin Offering) 붐이 일어났다 해도 과언이 아니었습니다. 이때부터 일반 대중들에게 암호자산이 알려지면서, 종류 무관하게 아무 코인이나 사면 무조건 수익을 낸다는 소문이 퍼지면서 가격 거품을 형성하게 되었습니다. 특히 ICO로 크게는 40배 벌었다는 소문이 퍼지면서 사람들이 ICO에 눈을 돌리면서 기하급수적인 자금이 암호자산시장으로 몰려들게 되었습니다. 이에 대한 결말은 어떻게 되었는지는 대부분의 사람은 알 것입니다.
이런 부작용에도 불구하고 이더리움의 탄생은 복잡한 토큰 경제를 만들었다는 것에 큰 의의가 있다고 생각합니다. 현재는 이더리움 킬러를 자처하며, 이더리움의 문제를 보완하는 수많은 플랫폼이 등장하고 있는 상황입니다.
( b ) 블록체인 기술의 산업적용 예시
아래는 블록체인을 적용하여 산업에 응용할 수 있는 예시입니다. 실제로 이보다 더 많은 적용 가능성이 있고, 아래의 소개한 예시는 블록체인 기술로 적용하기 가장 쉬워서 가까운 미래에 나올 가능성이 높습니다.
( i ) 탈중앙화 거래소
거래소에서 암호자산 거래를 할 때 매수/매도 호가 장부가 뜹니다. 당연히 매수자 매도자가 같은 가격에 호가를 내놓으면 거래가 체결됩니다. 그런데 만약에 거래소가 있지도 않은 토큰을 시스템을 조작하여 매도한다면 어떨까요? 이것은 거래소가 암호자산을 싸게 매집하고 싶거나, 숏(short)에 배팅하여 수익을 얻고자 하는 단체와 결탁하여 시세조작을 할 가능성이 존재하게 됩니다. 거래소 내에 있는 잔고 숫자는 결국은 거래소에서 "보여주는 것"이기 때문입니다.
예를 들어, 빗썸 거래소에서 토큰 해킹을 당해서 거래소 잔고에 토큰이 없어지면 결국 고객의 잔고도 같이 없는 것인데 고객의 잔고에 차감하지 않습니다(고객들은 모르는 것이 나으니까). 필자는 시스템 점검을 이유로 토큰 출금 정지를 걸어놓는 것이 "보여주는 잔고"와 실제 보유하고 있는 잔고의 차이가 클 가능성이 크다고 생각합니다. 현재 암호자산 거래소는 기존의 은행처럼 지급준비율
(은행이 자금을 빌려주고, 자금을 찾아오려는 고객들에게 돌려주기 위해 비축해두어야 할 양)에 대한 규제가 없으니 결국 거래소의 마음인 것입니다.
반면에 탈중앙화 거래소는 계약이기 때문에 거래 수수료 수익은 투명하게 토큰의 홀더들에게 그대로 보이게 되고, 거래 장부는 블록체인상에 의해 올린 것만 보이므로 실제로 존재하는 토큰의 수량에 대한 매수/매도 호가가 나타나 집니다. 이때 거래자들은 자신들이 보낸 토큰들만 가지고 거래가 되기 때문에 허위주문량이 없습니다. 거기다가 수익구조가 기록에 모두 기록에 남아서 투명합니다.
( ii ) 게임 산업
블록체인기술이 게임에 적용된다면 가장 장점을 가지는 것은 이용자들 간의 캐릭터, 희귀 아이템에 대한 거래일 것입니다. 실제로 게임 캐릭터와 희귀 아이템은 게임 이용자 커뮤니티 사이에 적지 않은 금액으로 거래가 되고 있습니다.
만약에 희귀아이템 거래를 위해 사고자 하는 사람과 거래를 매칭해주고자 하면 그 과정에 안전하고 공정하게 거래가 가능해야 합니다. 개인과 개인 간의 거래를 한다면 약속한 아이템을 주지 않거나 돈을 송금하지 않는 등 사기의 가능성이 존재합니다. 제 3자의 개입을 할 경우 거래를 관장하는 사이트가 수수료를 떼어가는데 이것이 적정량인지 모릅니다. 블록체인 기술을 도입하면 이런 신뢰성을 회복할 수 있게 됩니다.
( iii ) 카지노 산업
카지노 dApp은 현재 이오스 플랫폼에서 굉장히 활발하게 적용이 되고 있으며, 사실상 이오스의 첫 번째 killer dApp 이라고 봐도 무방하다 할 수 있습니다. 도박 산업이 블록체인상에 빠르게 침투할 수 있었던 것은 필자는 크게 2가지라고 생각합니다.
첫 번째는 바로 국가의 규제입니다. 각 나라의 카지노는 서비스를 이용할 수 있는 사람들이 제한되어있습니다. 특히 우리나라의 경우 도박은 외국인들에게만 허용하고, 필요 이상의 세금을 떼어간다. 이에 개발사들은 일반 도박장에서도 똑같이 할 수 있는 것들을 블록체인상에서 옮긴 것입니다. 법정화폐로 불법 사이트를 개설하면 처벌받으니 개발사 입장에서는 블록체인상에서 하는 것이 오히려 최고의 사업 환경일 것이라 생각합니다.
두 번째는 서비스의 품질과 신뢰입니다. 사람들이 카지노의 기계의 확률을 얼마나 많이 신뢰할까요? 카드게임 딜러와 게임 참여자들과 결탁해서 내가 불리하도록 판을 자지 않았을지 완벽히 신뢰하지 못합니다. 만약 도박하는 과정을 신뢰할 수 있는 프로그램이 관장하여 게임을 진행한다면 사람들이 이에 대한 신뢰를 조금이나마 더 할 수 있을 것입니다. 또한 카지노 dApp에 참여하면서 각종 재미있는 이벤트와 게임을 통해 얻은 토큰으로 해당 dApp의 수익을 투명하게 분배받을 수 있는 것이 매력이라 할 수 있습니다.
( vi ) 소셜 네트워크 시스템
우리가 흔히 알고 있는 IT 공룡들의 수익의 원천은 바로 광고수익입니다. 페이스북, 트위터, 유튜브 모두 콘텐츠를 소비하는 사람들이 모이면 여기에 광고를 끼워서 수익을 얻습니다. 하지만, 콘텐츠 제작자는 바로 IT 기업이 직접 만든 것이 아니라 바로 이 SNS 서비스 이용자들입니다. 이용자들이 양질의 콘텐츠를 만들어내는데, 왜 보상은 IT 공룡들이 다 가져가는지 의문을 품은 콘텐츠 크리에이터들도 많을 것입니다.
유튜브의 경우도 콘텐츠 제작자들에게 많은 부분 배분하는 것도 있는데, 그래도 개발사에서 큰 비중을 차지해가는 실정입니다. 현재는 페이스북 사용자, 네이버 블로거들 역시 콘텐츠 생산의 보상이 없는 부분에 큰 불만을 느끼고 유튜브로 플랫폼을 많이 옮겨가는 추세입니다. 블록체인을 이용하면 좋은 콘텐츠 크리에이터와 큐레이터 모두에게 보상을 받을 수 있는 플랫폼을 만들 수 있습니다.
블록체인 기반의 SNS 플랫폼의 가능성을 보여준 것은 단연 스팀잇입니다. 물론 위의 그림은 스팀잇의 토큰이코노미 구성은 아니지만, 대략 플랫폼 내에 좋은 콘텐츠를 생산하는 사람, 보유한 토큰을 이용해서 좋은 콘텐츠를 큐레이팅하는 사람 모두 보상을 받을 수 있는 시스템을 만들 수 있다는 것을 보여주기 위함입니다.
4)결론
이번 포스팅에서는 이더리움 플랫폼과 비트코인의 근본적인 차이를 설명했습니다. 이더리움은 프로그래밍이 가능한 블록체인 플랫폼으로서 그 다양한 응용이 존재합니다.
포스팅에서는 dApp의 예시를 설명하였으며, 현재는 이더리움이 아닌 EOS 플랫폼상에서 거래소, 카지노 dApp, 이 크게 성공한 상태입니다. 그 이후 바른 시일 내에 성공할 dApp의 분야인 게임과 소셜 네트워크 시스템에서 승자가 어디서 나올지 모르는 상황입니다. 그 이외의 dApp 은 시간은 오래 걸리지만 다른 다양한 분야의 적용이 이루어지고 있습니다.
다음 포스팅에서는 지금까지의 이더리움의 역사를 총 정리하는 내용의 포스팅을 올리겠습니다.
5)참고자료 및 각주
참고문헌:
- [1] 쉬밍성, 티엔잉, 리지위에, 알기쉬운 블록체인(광문각, 2017)
- [2] 다니엘 드레셔, 블록체인 무엇인가(이지스 퍼블리싱, 2018)
- [3] 안드레아스 M. 안토노풀로스, 비트코인, 블록체인과 금융의 혁신 (Mastering Bitcoin)(고려대학교 출판문화원, 2015)
- [4] 크리스 다넨, 이더리움과 솔리디티 입문: 이더리움을 이용한 블록체인과 암호화폐 개발 이론과 실무 (Introducing Ethereum and Solidity)(위키북스, 2018)
- [5] Ethereum: the World Computer
- [6] A Next-Generation Smart Contract and Decentralized Application Platform
- [7] 차세대 스마트 컨트랙트와 탈중앙화된 어플리케이션 플랫폼
각주:
긴 글 읽어주셔서 감사합니다.
여러분의 팔로우+업보팅+리스팀은 저에게 힘이 됩니다.
짱짱맨 호출에 응답하여 보팅하였습니다.
Hi @eaglekeeneye!
Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 1.370 which ranks you at #40945 across all Steem accounts.
Your rank has improved 523 places in the last three days (old rank 41468).
In our last Algorithmic Curation Round, consisting of 373 contributions, your post is ranked at #239.
Evaluation of your UA score:
Feel free to join our @steem-ua Discord server