안녕하세요. 어미새입니다.
지난 이더리움 백서의 내용중 부실했던 부분들을 채워나가는 형태로, 지난 비트코인 시리즈와 비슷하게 최대한 쉽고 자세하게 풀어서 설명하는 포스팅을 진행 하도록하겠습니다.
오늘 포스팅에서는 DApp이란 무엇이고, 이더리움의 어카운트에 대한 개념정리를 하도록 하겠습니다.
이더리움의 목적
이더리움은 비트코인과 같은 탈 중앙화된 금융시스템을 위한 시스템을 넘어서 탈 중앙화된 어플리케이션 제작을 위한 대체 프로토콜을 만드는 것입니다. 튜링 완전 언어를 내장하고 있는 블록체이인이라는 필수적이고 근본적인 기반을 제공함으로써, 대규모 분산 어플리케이션에 유용한 개발 기법을 제공하고, 개발 시간 단축, 높은 보안성, 다른 어플리케이션과 상호작용할 수 있는 생태계를 만들고자하였습니다. (이더리움 백서5편 참조)
이더리움은 단순한 화폐 교환뿐만 아니라, 탈 중앙화된 어플리케이션, 즉 DApp을 제작할 수 있는 프로토콜, 플랫폼을 만들고 싶었습니다. 이러한 시스템을 만들기 위해서는 비트코인보다 더 다양한 상태정보를 저장하고 관리할 수 있는 방법이 필요했습니다. 그렇다면 DApp, 탈 중앙화된 어플리케이션이란 무엇일까요?
DApp(Decentralized application)
탈 중앙화 애플리케이션은 말 그대로 중앙에서 제어하거나 관리하는 중앙 서버가 있지 않고, 개인 과 개인 즉, Peer to Peer 형태의 네트워크에서 동작할 수 있는 애플리케이션을 의미합니다. 누구나 인터넷만 연결되어 있으면 DApp 네트워크에 참여할 수 있으며, 어떠한 단일 노드가 DApp에 대한 전체적인 제어권을 가지고 있지 않습니다. 이러한 DApp은 인터넷에 연결된 사용자라면 누구나 피어가 될 수 있으므로 악의적인 사용자가 잘못된 데이터를 전달하거나, 데이터를 잘못된 값으로 변경하는 행위를 방지하는것이 가장 큰 도전 과제라고할 수 있겠습니다. 즉, 피어들이 발행하는 정보가 올바른 정보인지 검증하기 위한 합의 프로토콜이 반드시 필요하다는 의미입니다.
비트코인
조금더 쉽게 생각해보면 비트코인도 DApp의 한 종류라고 볼 수 있습니다. 중앙에서 관리하는 중앙 서버가 없으며, 피어 투 피어 형태의 네트워크가 구성되어 있고, 조작된 데이터의 유효성 검증을 위해 합의 알고리즘인 작업 증명(Proof of work)방식으로 데이터를 검증하였습니다. 이러한 비트코인 DApp의 목적은 탈 중앙화된 금융 거래가 가능한 애플리케이션이었던거죠!
이러한 DApp을 별도로 개발하기 위해서는 정말 많은 시간과 노력이 필요합니다. DApp 생태계를 만들기 위해서는 자신들의 네트워크를 형성하고, 합의 알고리즘이 도입되어야 하며, 인센티브 제도를 만들어나가야합니다. 즉 정말 많은 시간과 노력이 필요합니다. 그리고 이더리움은 이러한 생태계를 이더리움을 통해 쉽고 빠르게 개발할 수 있도록 지원하는 플랫폼을 만들고 싶었던것입니다.
보다 다양한 상태 정보 저장
앞서 이더리움의 목적은 탈 중앙화된 어플리케이션을 제작할 수 있는 프로토콜을 만드는것이라고 설명해드렸습니다. 이러한 생태계를 만들기 위해서는 비트코인의 UTXO의 단순한 상태 정보가 아닌 더 다양한 상태 정보를 담을 수 있는 방법이 필요했으며, 이러한 역할을 수행하기 위해 만들어진것이 바로 어카운트(account) Object라고 생각하시면 좋을것 같습니다.
계정(Account)
이더리움의 상태(State)는 어카운트(account)라고 하는 오브젝트(object)들로 구성되어 있으며, 각 어카운트 오브젝트에는 20바이트의 주소와, 상태변화(state transition)을 가지고 있습니다. 이러한 어카운트는 외부 소유 어카운트인 EOA(Externall Owned Accounts)와, 컨트랙트 어카운트(Contract Account)로 구분할 수 있습니다.
외부 소유 어카운트와, 컨트랙트 어카운트에 대한 세부적인 설명을 하기 앞서 이더리움에서 상태라는 개념에 대해 조금더 이야기를 해보도록 하겠습니다.
이더리움 프로토콜이 만들어지고 어떠한 트랜잭션이 한 번도 실행되지 않은 상태를, Genesis state라고표현하며, Genesis state에서 어떤 트랜잭션이 실행되었을 경우 state 정보가 변합니다.
트랜잭션이 실행되었다는 의미는 마이닝 과정을 통해서 트랜잭션에 대한 검증이 이루어지고, 블록에 담기어 전파되었다는 것을 뜻하며 이렇게 블록에 담기고 전파되었을 경우의 상태를 Final state라고합니다. 그리고 이더리움 프로토콜에 참여한 모든 사용자가 최종 상태 정보를 공유하게되는것입니다.
이러한 어카운트는 사용하는 목적과, 특성에 따라서 다음과 같이 두가지로 분류될 수 있습니다
EOA(Externall Owned Accounts)
는 외부 소유 어카운트로서 프라이빗 키에 의해 통제되는 계정 정보CA(Contract Accounts)
는 컨트랙트 어카운트로서 컨트랙트 코드에 의해 통제되는 계정 정보
EOA와 CA에 대한 자세한 내용은 다음 포스팅에서 구체적으로 다루도록 하겠습니다.
비트코인에서도 그랬지만 블록체인 기술과 관련된 용어들을 한번에 이해하기란 매우 어렵고, 또 개념들이 서로 연관되어 있기 때문에 A는 A다! 라고 명확하게 설명하기 어려운 부분들이 있습니다. state가 뭐다! 라고 설명하고 있지만 한번에 이해하기엔 어려움이 있습니다. 하지만 계속해서 읽어나가시면 언젠간 무릎을 탁! 치면서 아 이게 state구나, 탁! 아 이게 Account 구나라고 반드시 이해하실겁니다.
다음시간에는 조금 더 많은 자료와, 좋은 내용을 찾아뵙도록 하겠습니다.
[참고문헌]
제 글을 보실 실력이 아니신 거 같은데...댓글 달러 왔다가 깜짝...
수고하셨습니다~~
정말 꼭 공부해야하는 기본 중에 기본을 너무 잘 알려주고 계시네요 ^^
아닙니다~ 미술관님이 작성해주신 글을 읽고 많은 도움을 받았는걸요~!
저보다 오래전에 좋은 글 작성해주셔서 정말 감사합니다~ !
공부를 열심히 하고 있지만 포스팅으로 옮기기엔 아직 부족한 부분이 많이 있네요 ㅎㅎ;;;
이더리움 알면알수록 정말 매력있습니다... 체인톡 보면서 힐끔힐끔 공부중인데 너무흥미롭네요. 글 감사하고요 늘 ^^
저야 말로 늘 방문해주셔서 감사합니다~ 조금만 더 일찍 블록체인을 기술적으로 알았다면 얼마나 좋았을까 하는 생각을 요즘 많이합니다 하하~:)
어미새님
요즘 핫한 오미새고에 대해 아십니까..
오미새도에 대해 조금은 알고 있으나 많은 정보를 알고 있지는 않습니다.
그래서 도움이 조금 될만한 자료 첨부해드립니다~ 시간나실때 읽어보면 좋을것 같아요 ^^;
[블록체인 상식 #5-1] 플라즈마? 그건 또 뭐에요?
[그 코인 시리즈] 오미세고(Omisego, OMG): 더 저렴하고 빠른 스마트계약을 위한 도약
오늘도 호출해주셔서 감사합니다!