이더리움은 퍼블릭 블록체인 기반의 분산 컴퓨팅 플랫폼이다. 전세계의 수많은 작은 컴퓨터로 구성된 하나의 큰 컴퓨터로도 생각할 수 있는데 응용 프로그램을 작성하고 글로벌 컴퓨터에서 실행할 수 있으며, 이 플랫폼은 중단 시간, 검열, 사기 또는 제 3자의 간섭없이 항상 실행되도록 보장한다.
응용 프로그램을 실행하는 것 외에도, 이더리움 블록체인을 통해 중앙 권한없이 두 당사자간에 돈을 이체할 수 있다.
이를 가능한케 한 이유는 이더리움이 다음과 같은 특징을 가지고 있기 때문이다.
이러한 모든 컴퓨터(노드)는 서로 연결되어 있으며 코드와 데이터의 전체 복사본을 가지고 있다.
이더리움 블록체인에 코드를 배포하면 코드가 네트워크의 모든 노드로 복제된다.
응용 프로그램에 데이터가 저장되면 모든 노드에서 해당 데이터가 복제된다.
네트워크에는 수천 개의 노드가 있으며 노드를 중지시키는 것은 거의 불가능하다.
따라서 응용 프로그램에 항상 액세스 할 수 있다.
이더리움은 데이터베이스에 데이터(트랜잭션)과 코드를 저장하고 이 코드를 EVM(Ethereum Virtual Machine)에서 실행한다.
이더리움 블록체인을 활용해 투표 응용 프로그램(DApp)을 만든다고 가정하자.
DApp
블록체인을 기반으로 돌아가는 애플리케이션.
이더리움, 이오스, 네오 등 스마트계약 기능이 있는 2세대 블록체인 플랫폼에서 스마트계약을 활용한 애플리케이션이다.
이러한 모든 트랜잭션은 공개되며 누구나 볼 수 있고 확인할 수 있다. 이 데이터는 절대로 조작할 수 없다. 네트워크의 모든 노드에 동일한 데이터 복사본이 있는지 확인하고, 유효하지 않은 데이터가 이 데이터베이스에 기록되지 않도록 하기 위해 이더리움은 작업증명(POW)이라는 알고리즘을 사용하여 네트워크를 보호한다.
또한 이더리움에는 웹 기반 Dapp을 만들기 위해 web3.js라는 편리한 자바스크립트 라이브러리가 있다.
이 라이브러리는 블록체인 노드에 연결되어 reactjs, angularjs 등의 유명한 js 프레임워크에 이 라이브러리를 포함시킬 수도 있다.
DApp의 사용자(모든 클라이언트)는 중앙 서버 없이 응용 프로그램 자체 인스턴스와 통신한다.
즉, 이상적인 탈중앙화 세계에서 DApp과 상호작용하려는 모든 사람은 컴퓨터,스마트폰 등의 기기에 실행죽인 블록체인 전체 복사본이 필요하며, 이말은 곧 애플리케이션을 사용하려면 먼저 전체 블록체인을 다운로드한 다음 애플리케이션 사용을 시작해야한다는 말이지만
모든 사람을들이 이 앱을 사용하기 위해 블록체인 전체를 다운받는 것은 하드웨어에 많은 부담이 들기 때문에 기대하기 어렵다.
그래서 블록체인 서버 호스팅 서비스, Metamask(지갑) 등 제안된 몇가지 솔루션을 사용한다면 하드 디스크와 RAM을 많이 사용하지 않아도 블록체인 전체 복사본을 다운로드하고 실행하면서도 탈중앙화를 훼손하지 않을 수 있다.