세계의 컴퓨터

이더리움은 퍼블릭 블록체인 기반의 분산 컴퓨팅 플랫폼입니다.

전세계의 수많은 작은 컴퓨터로 구성된 하나의 큰 컴퓨터로 생각할 수도 있습니다.

응용 프로그램을 작성하고 이 글로벌 컴퓨터에서 실행할 수 있으며, 이 플랫폼은 중단 시간, 검열, 사기 또는 제 3자의 간섭 없이 항상 실행되도록 보장합니다.

응용 프로그램을 실행하는 것 외에도, 이더리움 블록체인을 통해 중앙 권한 없이 두 당사자 간에 돈을 이체할 수 있습니다.

이러한 모든 컴퓨터(노드라고도 함)는 서로 연결되어 있으며 코드와 데이터의 전체 복사본을 가지고 있습니다.

이더리움 블록체인에 코드를 배포하면 코드가 네트워크의 모든 노드로 복제됩니다. 응용 프로그램에 데이터가 저장되면 모든 노드에서 해당 데이터가 복제됩니다.

Untitled

네트워크에는 수천 개의 노드가 있으며 모든 노드를 중지시키는 것은 거의 불가능합니다. 따라서 응용 프로그램엠 항상 액세스할 수 있습니다.

이더리움 아키텍쳐

Untitled

이더리움을 이해하는 가장 좋은 방법 중 하나는 기존의 클라이언트/서버 아키텍처와 비교하는 것입니다.

이것은 간단한 웹 애플리케이션의 클라이언트/서버 아키텍처입니다. 일반적인 웹 응용 프로그램은 일반적으로 자바, C#, 루비, 파이썬 과 같은 프로그래밍 언어로 작성된 서버 단 코드로 구성됩니다. 프론트엔드 코드는 HTML/CSS/자바스크립트를 사용하여 구현됩니다. 전체 애플리케이션은 AWS, 마이크로소프트 애져, 구글 클라우드 플랫폼, Heroku 또는 VPS와 같은 호스팅 제공 업체에서 호스팅됩니다. 사용자는 웹 브라우저, curl/wget(커맨드 라인) 또는 API를 통해 클라이언트를 사용하여 웹 응용 프로그램과 상호 작용합니다. 중앙화된 하나의 웹 응용 프로그램이 있으며 모든 클라이언트가 이 응용 프로그램과 상호 작용합니다. 클라이언트가 서버에 요청하면 서버는 요청을 처리하고 데이터베이스 또는 캐시와 상호 작용하며 데이터베이스를 읽고, 쓰고, 업데이트하고 클라이언트에 응답을 반환합니다.

Untitled

위 그림에서 알 수 있듯이, 모든 클라이언트(브라우저)는 응용 프로그램의 자체 인스턴스와 통신합니다. 모든 클라이언트가 연결할 중앙 서버가 없습니다. 즉, 이상적인 탈중앙화 세계에서 Dapp(탈중앙화 애플리케이션)과 상호 작용하려는 모든 사람은 컴퓨터/스마트폰 등의 기기에 실행 중인 블록체인의 전체 복사본이 필요합니다. 즉, 애플리케이션을 사용하려면 먼저 전체 블록체을 다운로드한 다음 애플리케이션 사용을 시작해야 합니다. 우리가 사는 세계는 이상적인 세계가 아니기에, 모든 사람들이 이러한 앱을 사용하기 위해 블록체인 서버를 운영할 것으로 기대하는 것은 무리입니다. 하지만 탈중앙화의 배경은 단일/중앙화된 서버에 의존하지 않는 것입니다. 그래서 제안된 몇 가지 솔루션(블록체인 서버 호스팅 서비스, Metamask 등)을 사용하면 하드 디스크와 RAM을 많이 사용하지 않아도 블록체인의 전체 복사본을 다운로드하고 실행하면서도 탈중앙화를 훼손하지 않을 수 있습니다.

그렇다면 이더리움 블록체인이 정확이 무엇일까요? 블록체인에는 2가지 구성 요소가 있습니다.

  1. 데이터베이스

    : 네트워크의 모든 트랜잭션은 블록체인에 저장됩니다. 응용 프로그램을 배포하는 행위도 트랜잭션으로 간주됩니다. 후보자 투표를 위한 투표 응용 프로그램을 예로 들면 하나하나의 투표가 트랜잭션으로 간주됩니다. 이러한 모든 트랜잭션은 공개되며 누구나 볼 수 있고 확인할 수 있습니다. 이 데이터는 절대로 조작할 수 없습니다. 네트워크는 모든 노드에 동일한 데이터 복사본이 있는지 확인하고, 유효하지 않은 데이터가 이 데이터베이스에 기록되지 않도록 하기 위해 이더리움은 작업증명(Proof of Work)이라는 알고리즘을 사용하여 네트워크를 보호합니다.

    (http://ethereum.stackexchange.com/questions/14/what-proof-of-work-function-does-ethereum-use)