코어 이더리움 프로그래밍#1(Chapter 01) - NomadJin/Blockchain-Study GitHub Wiki
Chapter 01 블록체인 컴퓨팅
1.1 비트코인
돈은 물건의 가치를 표현하는 단위이자 필요한 물건과 교환하기 위한 수단이다. 돈은 쉽게 구하기 어려운 희소성이 있어야 하고, 똑같은 모양과 형상을 하고, 휴대성, 내구성이 있어야 한다. 그리고 가치를 쉽게 구별할 수 있어야 한다. 사회적 합의와 신뢰를 통해 인정되고 유지된다.
돌로 만든 스톤머니에서 암호화폐까지
- 금이나 은 같은 물질 기반의 돈이 1세대라면, 2세대는 지폐와 동전 같은 통화화폐다.
- 통화화폐는 각 나라의 중앙은행이 발행한다.
- 미국의 중앙은행인 FRB(연방 중비제도 이사회, Federal Reserve Board)는 은행이 아닌 개인 회사다.
- FRB는 로스차일드, 록펠레, JP모간, 워버그 가문처럼 전통 깊은 금융 가문들의 소유다.
새로운 암호화폐, 비트코인의 출현
- 암호화폐는 안전한 거래와 통화 발행을 조정하기 위해 암호학을 사용하여 교환의 수단으로 만들어진 디지털 자산이다.
- 암호화폐를 현실화한 비트코인은 사토시 나카모토라는 수수께기 인물이 2008년 10월 31일 공개한 논문을 구현한 것.
- 순수한 P2P 버전의 전자화폐는 은행 같은 금융 기관을 거치지 않고 한 대상이 다른 대상에게 직접 전달도는 온라인 지급을 가능하게 한다.
- 비트코인은 누구든지 자발적으로 네트워크에 참여하고 채굴 작업을 통해 비트코인 발행에 참여할 수 있다.
알트코인
- 리플은 글로벌 정산 네트워크에서 정산을 단순하게 처리하게 위해 개발
- 라이트코인은 비트코인의 블록생성 시간을 단축시키기 위해 개발
- 비트코인 캐시는 비트코인의 블록 크기를 2MB로 증가시키는 기존 비트코인과는 다른 프로토콜을 갖느다.
1.2 블록체인 기술의 탄생
블록체인 기술의 탄생
- 암호화폐 구현하기 위한 문제 해결
- 악의적인 참가자에 의한 위변조나 거래 부인 같은 문제가 발생
- 네트워크 지연으로 인해 전송된 정보의 불일치로 이중 지급 같은 문제 발생
- 안정적인 P2P 네트워크 유지 방안 및 운영 시스템 확보
- 비트코인은 일련의 거래 정보를 모아 블록을 만들고, 이 블록을 시간순으로 연결한 공유 원장 기술인 블록체인을 고안하여 거래 시 위변조가 불가능하도록 만들었다.
- 신규 블록들을 연결할 때는 참가자들의 거래에 대한 승인 작업을 반드시 거쳐야 하고, 거래 기록에 포함된 해결하기 어려운 계산 과제(특정 해시값을 찾는)를 가장 빨리 해결하고 이 결과를 네트워크 참가자들의 과반수가 승인함으로써 완료된다. => 거래 승인 작업(Proof of Work)
- 전자 서명 기술을 사용하여 이전 소유자와 본인을 증명하기 때문에 거래 부인이 원천적으로 불가능하도록 만들었다.
중앙집중 원장과 분산 공유 원장
-
기존의 비즈니스 및 거래 시스템들은 중앙에 고성능/대용량 시스템을 구축하고 모든 거래와 비즈니스 관련 정보를 한 곳에서 공유 및 관리하는 중앙집중 원장을 사용한다.
-
외부 공격으로부터 시스템을 안전하게 지켜야 하고, 무정지로 운영하기 위한 막대한 비용으로 시스템 및 데이터의 이중화 등 구축 비용 외에도 많은 운영 비용이 발생한다.
-
블록체인에서는 비즈니스 및 거래 데이터를 전부 해당 서비스 네트워크에 참여한 모든 주체가 동일하게 복제하여 공유하고 관리하는 분산 공유 원장을 사용하다.
-
모든 참여 주체의 분산 공유 원장을 위변조 하거나 해당 개인 키(private key)를 확보하지 않는 한 위변조가 불가능.
1.3 블록체인 P2P 컴퓨팅
1.3.1 컴퓨팅 플랫폼의 발전 과정
- 컴퓨터 플랫폼은 일련의 소프트웨어 프로그램을 작동되게 하는 프레임워크를 말한다.
- 컴퓨터 아키텍처와 운영 시스템 또는 개발 언어와 런타임 라이브러리 등으로 구성.
컴퓨팅 플랫폼의 발전 과정
- 메인 프레임 : 중앙의 대형 서버에 터미널로 연결한 후 모든 데이터와 뷰 처리를 중앙 서버에서 하고 그 결과를 더미 터미널에서 보는 처리 방식
- 클라이언트 서버 컴퓨팅 : 네트워크를 통해 연결된 클라이언트 컴퓨터와 서버 컴퓨터가 일정한 역할을 서로 나워서 처리
- 웹 서버/씬 클라이언트 : 대부분의 처리는 서버에서 이루어지고, 클라이언트는 결과 HTML을 렌더링한 결과만을 제공
- 웹 서버/리치 클라이언트 : 웹 페이지를 동적으로 클라이언트에서 재구성하여 마치 데스크톰용 애플리케이션 같은 사용성을 제공
- 클라우드 컴퓨팅 : 스토리지와 서버 컴퓨팅, 네트워크, 그리고 운영체제에 이르기까지 모든 자원을 논리적으로 구분하여 추상화함으로써 하나의 인프라를 여러 서비스가 공유할 수 있고, 사용한 만큼 비용을 지급
- 블록체인 P2P 컴퓨팅 : 이더리움을 통해 컴퓨팅 플랫폼으로 거듭나기 시작. 스마트 컨트랙트를 다양한 개발 언어로 개발한 후, P2P 네트워크를 통해 블록체인에 배포하고 이를 이더리움 가상 머신을 통해 실행해 준다.
1.3.2 블록체인 P2P 컴퓨팅
-
P2P 컴퓨팅은 네트워크에 참여한 모든 컴퓨터가 동일한 역할과 기능을 수행하는 컴퓨팅 처리 방식.
-
해당 컴퓨터가 서버이자 클라이언트.
-
이더리움의 스마트 컨트랙트는 컴퓨팅 프로세스 공유, 스웜(Swarm)은 파일 공유, 휘스퍼(Whisper)는 메시지 공유에 해당
-
이더리움은 완전 분산형 연결 방식을 사용
-
모든 노드가 동등한 권리와 권한을 갖고 이더리움 네트워크에 참여하는 것을 기본 철학
장점
- 네트워크에 누구나 참여할 수 있기 때문에 확장성이 좋다.
- 노드들이 모두 서로 연결되어 있기 때문에 일부 노드에 문제가 생겨도 안전하다.
- 관리 및 감독 기능이 별도로 없기 때문에 책임질 것 또한 없다?
단점
- 동등한 권한의 노드들로 구성되기 때문에 관리가 어렵다.
- 연결된 노드가 안전한지 검증하기 어렵기 때문에 신뢰성이 떨어진다.
- 노드마다 컴퓨팅 파워, 네트워크 속도 등이 다르기 때문에 전체 성능에 영향을 미친다.
- 하이퍼레저 패브릭은 하이브리드형 P2P 네트워크 구성을 채택.
- 별도의 멤버십 서버를 갖고 있으며, 트랜잭션 정합성을 검증해 주는 별도의 노드가 중간에 위치함.
1.4 블록체인 기반 플랫폼 분류
공개형 블록체인
- 비트코인 코어
- 이더리움 : 1단계 프론티어 > 2단계 홈스테드(DAO 포트, 이더리움 클래식) > 3단계 메트로폴리스(비잔티움, 콘스탄티노플) > 4단계 세레니티
- 기타
프라이빗 블록체인
참여 대상을 미리 지정하고 이들의 권한을 제어할 수 있는 블록체인
하이퍼레저 패플릭
- 멤버십 서비스 : 참가자에 대한 관리
- 블록체인 서비스 : 공유 원장과 P2P 프로토콜, 합의 엔진 등이 구현. PBFT 알고리즘을 사용 > 권한이 있는 참여 노드들이 투표를 하여 합의한다. 트랜잭션 처리 속도를 높이고 많은 트랜잭션 처리
- 체인 코드 서비스 : 트랜잭션을 수행하기 위해 작성하는 프로그램
- 패브릭 노드 구성 : 승인 노드는 트랜잭션 유효성의 검증을 위한 합의 프로토콜의 실행을 담당
코다 블록체인이 아닌 공유 원장 플랫폼
EEA Enterprise Ethereum Alliance, 공개형 이더리움 플랫폼을 기업 및 조직에 적용하는 데 필요한 것을 지원.
클라우드 블록체인
코코 프레임워크 IBM 블록체인 오라클
1.5 블록체인 운영 모델에 대한 이해
암호화폐의 기반에는 명환한 구현 목적과 이 목적의 실현에 동의하는 다양한 사람들이 모여 있는 생태계가 존재한다.
중앙집중식 플랫폼 비즈니스 모델
중앙집중식 플랫폼 비즈니스에서 모든 규칙은 플랫폼 소유자의 수익을 극대화하기 위해 만들어진다. 플랫폼이 작동되고 수익을 만드는 데 참여한 사람들의 공헌에 따른 가치 공유는 고려되지 않거나 플랫폼 소유자의 일방적인 규칙에 따라 결정된다.
블록체인 기반 탈중앙형 플랫폼 비즈니스
중앙에 집중화된 서버와 데이터가 없다. 분산된 플랫폼에 참여한 개별 컴퓨터가 하나의 서버이고, 이 서버들이 네트워크로 연결되어 하나의 거대한 네트워크 기반 클라우드 서버가 된다. 데이터는 모두 동일하게 공유되고 위변조가 불가능하다. 서비스를 이용하면 이에 대한 대가로 암호화폐를 지급한다. 플랫폼에 참여한 구성원들의 역할과 제공된 노력만큼 자동으로 전달된다.
독립형 생태계를 꿈꾸는 블록체인
- 많은 개별서버가 자발적으로 참여하고 안정적으로 운영되어야 한다.
- 중앙집중 방식의 플랫폼이 반드시 비효율적인 것만은 아니다.
- 두 방식의 근본적인 차이점은 결국 비즈니스 모델.