개발 강의로 유명한 인프런에 이더리움 입문자를 위한 바이블 강의가 있습니다.
이더리움으로 개발자가 되시려는 분들이
필수적으로 알아야 하는 지식에 대한 내용인데요.
제가 잘 정리해서 블로그에 주기적으로 올려보도록 하겠습니다!_!
📑 목차
- 지불(Payment), 그 이상을 향해
- 세계의 컴퓨터
- 웹앱 아키텍처 VS 이더리움 아키텍처
- 블록체인의 2가지 구성 요소
- 마무리
📌 지불(Payment), 그 이상을 향해
가장 많이 알고 계실 비트코인은
주로 은행과 같은 중앙 기관의 중재 없이
블록체인의 다양한 당사자 간에 돈을 송금하는 데 사용됩니다.
.
.
.
비탈릭 부테린이라는 이름의 19세 청년 개발자는
이러한 탈중앙화의 개념을 송금 외에 다른 분야에 적용하고자 했습니다.
그는 중앙화된 통제 권한 없이 전 세계적으로 운영될 수 있는 응용 프로그램을 만들고 싶었습니다.
.
.
.
예를 들어,
페이스북의 경우 페이스북이 사용자의 데이터를 소유하고 있으며
원하면 사용자의 계정을 제거할 수 있는 권리를 가집니다.
10년 뒤 페이스북이 사라진다고 가정하면 모든 데이터가 손실될 수도 있습니다.
.
.
.
비탈릭은 응용 프로그램을 빌드할 수 있도록
비트코인에 스크립팅 언어를 추가할 것을 제안하지만
비트코인 개발팀과의 합의에 도달하지 못합니다.
.
.
.
결국 그는 2014년 1월에 일반적인 스크립팅 언어를 사용할 수 있는
새로운 플랫폼에 대한 백서를 출간합니다.
곧이어 개발팀이 꾸려지고, 개빈 우드(이더리움의 어머니 같은 존재) 박사의 팀이
이더리움 황서(이더리움 설계서)에서 네트워크의 모든 스마트 계약을 실행하는
런타임 환경인 EVM(Ethereum Virtual Machine)에 대해 설명했습니다.
이 플랫폼의 개발을 위한 자금의 크라우딩 펀딩은 2014년 7월부터 8월에 거쳐 이루어졌으며,
펀딩 참가자는 비트코인으로 이더리움 벨류 토큰인 이더(Ether)를 구입했습니다.
📌 세계의 컴퓨터
이더리움은 퍼블릭 블록체인 기반의 분산 컴퓨팅 플랫폼입니다.
전 세계의 수많은 작은 컴퓨터로 구성된 하나의 큰 컴퓨터로 생각할 수도 있습니다.
.
.
.
응용 프로그램을 작성하고 이 글로벌 컴퓨터에서 실행할 수 있으며,
이 플랫폼은 중단 시간, 검열, 사기 또는 제3 자의 간섭 없이 항상 실행되도록 보장합니다.
.
.
.
응용 프로그램을 실행하는 것 외에도,
이더리움 블록체인을 통해 중앙 권한 없이 두 당사자 간에 돈을 이체할 수 있습니다.
이러한 모든 컴퓨터(노드라고도 함)는 서로 연결되어 있으며
코드와 데이터의 전체 복사본을 가지고 있습니다.
이더리움 블록체인에 코드를 배포하면 코드가 네트워크의 모든 노드로 복제됩니다.
응용 프로그램에 데이터가 저장되면 모든 노드에서 해당 데이터가 복제됩니다.
네트워크에는 수천 개의 노드가 있으며 모든 노드를 중지시키는 것은 거의 불가능합니다.
따라서 응용 프로그램에 항상 액세스(접근)할 수 있습니다.
📌 웹앱 아키텍처 VS 이더리움 아키텍처
이더리움을 이해하는 가장 좋은 방법 중 하나는
기존의 클라이언트 / 서버 아키텍처와 비교하는 것입니다.
.
.
.
"웹앱 아키텍처"
이것은 간단한 웹 애플리케이션의 Client/Sever 아키텍처입니다.
위의 웹 응용 프로그램은 일반적으로 Java, C#, Ruby, Python과 같은 프로그래밍 언어로 작성된 서버 단 코드(백엔드)로 구성됩니다.
여기서 프론트엔드 코드는 HTML/CSS/Javascript를 사용하여 구현됩니다.
전체 애플리케이션은 AWS, Azure, Google Cloud Platform
또는 VPS(가상 사설 서버)와 같은 호스팅 제공 업체에서 호스팅 됩니다.
사용자는 웹 브라우저, Curl/Wget(웹 서버로부터 콘텐츠를 가져오는 Linux 커맨드)
또는 API를 통해 클라이언트를 사용하여 웹 응용 프로그램과 상호 작용합니다.
중앙화된 하나의 웹 응용 프로그램이 있으며 모든 클라이언트가 이 응용 프로그램과 상호 작용합니다.
클라이언트가 서버에 요청하면 서버는 요청을 처리하고
데이터베이스 또는 캐시와 상호 작용하며 데이터베이스를
읽고, 쓰고, 업데이트하고 클라이언트에 응답을 반환합니다.
.
.
.
"이더리움 아키텍처"
옆 그림에서 알 수 있듯이,
모든 클라이언트(브라우저)는 응용 프로그램의 자체 인스턴스들과 통신합니다.
모든 클라이언트가 연결할 중앙 서버가 없습니다.
이상적인 탈중앙화 세계에서 Dapp(탈중앙화 애플리케이션)과 상호 작용하려는
모든 사람은 컴퓨터/스마트폰 등의 기기에 실행 중인 블록체인 전체 복사본이 필요합니다.
즉, 애플리케이션을 사용하려면 먼저 전체 블록체인을 다운로드한 다음 애플리케이션 사용을 시작해야 합니다.
우리가 사는 세계는 이상적인 세계가 아니기에,
모든 사람들이 이러한 앱을 사용하기 위해 블록체인 서버를 운영할 것으로 기대하는 것은 무리입니다.
하지만 탈중앙화의 배경은 단일/중앙화된 서버에 의존하지 않는 것입니다.
그래서 제안된 몇 가지 솔루션(Ethereum API, Metamask 등)을 사용하면
하드 디스크와 RAM을 많이 사용하지 않아도 블록체인의 전체 복사본을 다운로드하고
실행하면서도 탈중앙화를 훼손하지 않을 수 있습니다.
📌 블록체인 2가지 구성 요소
1. 데이터베이스(Database)
네트워크의 모든 트랜젝션은 블록체인에 저장됩니다.
응용 프로그램을 배포하는 행위도 트랜잭션으로 간주됩니다.
후보자 투표를 위한 투표 응용 프로그램을 예로 들면 하나하나의 투표가 트랜잭션으로 간주됩니다.
이러한 모든 트랜잭션은 공개되며 누구나 볼 수 있고 확인할 수 있습니다.
이 데이터는 절대로 조작할 수 없습니다.
네트워크의 모든 노드에 동일한 데이터 복사본이 있는지 확인하고,
유효하지 않은 데이터가 이 데이터베이스에 기록되지 않도록 하기 위해
이더리움은 작업 증명(Proof of Work, PoW)이라는 알고리즘을 사용하여 네트워크를 보호합니다.
.
.
.
2. 코드(Code)
블록체인의 데이터베이스 요소는 트랜잭션을 저장합니다.
그렇다면 투표 응용 프로그램에서 투표에 대한 모든 논리는 어디에 담길까요?
이더리움 세계에서는 솔리디티(Solidity)라는 언어로 논리/응용 프로그램 코드(스마트 계약)를 작성합니다.
그런 다음 솔리디티 컴파일러를 사용하여
이더리움 바이트코드(Ethereum Byte Code)로 컴파일한 다음 해당 바이트 코드를 블록체인에 배포합니다.
따라서, 이더리움 블록체인은 트랜잭션을 저장할 뿐 아니라 스마트 계약 코드를 저장 하고 실행합니다.
📌 마무리
기본적으로 블록체인은 데이터를 저장하고 코드를 저장하며
코드를 EVM(Ethereum Virtual Machine)에서 실행합니다.
이후 이어지는 절에서 바이트코드 및 EVM에 대해 자세히 배울 예정입니다.
추가로, 이더리움에는 웹 기반 Dapp을 만들기 위해 블록체인 노드에 연결되는
web3.js라는 편리한 자바스크립트 라이브러리가 있습니다.
따라서 react.js, angular.js 등의 유명한 js 프레임워크에 이 라이브러리를 포함시킬 수도 있습니다.
이제 블록체인 개발자의 첫걸음을 내디뎠습니다.
꾸준히 블록체인 관련한 정보 및 내용들을 정리해서
이해하기 쉽게끔 블로그에 주기적으로 업로드하도록 하겠습니다.
⬇️ 인스타그램으로도 관련 정보를 만나보시려면 아래 링크로 놀러 오세요☺
️
'BlockChain' 카테고리의 다른 글
모든 이더리움 입문자를 위한 이더리움 입문 바이블: #3. 알고 있어야 할 개발 툴들 (0) | 2021.08.31 |
---|---|
모든 이더리움 입문자를 위한 이더리움 입문 바이블: #2. 중요한 관련 개념들 (0) | 2021.08.30 |
비트코인은 21세기 금, 이더리움은 제2의 인터넷 적절한 비유일까? (1) | 2021.08.01 |
암호화폐 101 시리즈 with 노마드코더 | #8. 비트코인, 이더리움의 기술적 한계를 꼭 알아야 하는 이유 | 3세대 블록체인, 트릴레마, 작업증명 (0) | 2021.06.29 |
암호화폐 101 시리즈 with 노마드코더 | #6. 금융의 미래? ‘디파이’(DeFi)를 꼭 알아야 하는 이유!, #7. 암호화폐의 단점? 개발자가 설명해드림! (0) | 2021.06.10 |