본문 바로가기

Study

코어 이더리움 프로그래밍 (1)

Chapter 1

1.1 비트코인

돈이란? : 물건의 가치를 표현하는 단위이자 필요한 물건과 교환하기 위한 수단. 시공간의 제약없이 가치가 저장되고 전잘될 수 있어 부를 저장하는 수단. : 그 가치는 사회적 합의와 신뢰를 통해 인정되고 유지됨.

스톤머니 to 암호화폐

돈 X > 물물교환

물건의 가치를 대신해 교환할 수 있고 부를 축척할 수 있는

1세대 : 조개껍데기(파손쉬움), 금,은,동(파손 가능성 낮음)

스톤머니 (rai stone) : 4톤 넘는 돌도 있음. 이동이 어려워 소유자를 돈에 기록. 크기가 크면 클수록 값어치도 높음

2세대 : 통화화폐 (지폐나 동전)

  • 각 나라의 중앙은행이 발행함.
    • 우리나라 : 한국은행
    • 미국 : FRB (Federal Reserve Board) - 은행 아니고 전통 깊은 금융 가문들의 개인회사.

도토리(싸이월드), 게임머니, 사이버머니, 교통카드, 하이패스 : 기존 화폐기능을 보다 편리하게 활용하도록 해주는 일반 전자화폐 : 제 3의 기관이 보증 및 관리 해야함.

새로운 암호화폐 비트코인

2009년

암호화폐 : 안전한 거래와 통화 발행을 조정하기 위해 암호학을 사용하여 교환의 수단으로 만들어진 디지털 자산이다.

비트코인, 이더리움, 라이트 코인, 리플, 네임코인,...etc.

제 3의 화폐?

암호화폐는 가상화폐랑 다르다? 전자화폐의 일부다

디기캐시(데이비트 차움, 1983, RSA암호화) > b-money (웨이 다이, 1998) > bit gold (닉 사보)

비트코인의 시작 : 사토시 나카모토의 논문

2009년 1월 3일 최초 발행.

2,100만개의 지정된 발행량. 공급량, 시기 공개되어 있음. 사기성 거래 불가능.

탈 중앙화.

알트코인

알트코인 : 비트코인 프로토콜을 수정하여 개발된 코인. 비트코인을 제외한 암호화폐를 지칭하는 용어

ex ) 리플, 라이트코인, 대시, 이더리움 클래식, 등등

리플

  • XRP코인.
  • 각 기관의 정산 과정을 줄이기 위해 개발된 정산 시스템.

라이트코인

  • 비트코인의 블록 생성 시간을 단축시키기 위해 개발됨.
  • 비트코인 블록 생성시간 1시간 > 이걸 줄이기 위해 코어 프로토콜 변경

이더리움 클래식

  • 2016년 이더리움 해킹 발생
    • 독일의 slock.it가 관리자의 통제 없이 스마트 컨트랙트를 통해 자동 투자할 수 있는 이더리움 기반의 크라우드 펀딩 시스템인 dao를 만들었다.
    • 이때 spilit이라는 컨트랙트를 개발했다.
    • 스피릿 컨트랙트 : 투자금을 반환 요청하면 dao토큰을 이더로 반환해줌.
    • 문제점 : 즉시 반환요청이 처리되는 것이 아니라 시간이 지난 후에 반환요청이 처리됨.
    • reentrant attack (재진입 공격)을 통해 해킹함.
    • 이때 코드변경을 한 것이 이더리움. 안 한 것이 이더리움 클래식

비트코인 캐시

  • 블록 크기를 늘리면 트랜잭션 확인 속도가 높아진다. = 트랜잭션 비용문제를 해결할 수 있다.
  • 블록 크기를 기존 1MB에서 2MB로 증가한 것이 비트코인 캐시

모네로 & Zcash

  • 익명성 강화 암호화폐
  • 모네로 : 트랜잭션을 숨김 > 거래의 익명성 강화
  • Zcash : zero-knowledge 증명방식으로 신원확인 없이 화폐 교환 가능 > 트랜잭션의 세부사항만 숨김

1.2 블록체인 기술의 탄생

블록체인 구현 문제점

  1. 악의적인 참가자에 의한 위변조나 거래 부인 문제
  2. 네트워크 지연으로 인해 전송된 정보상의 불일치 > 이중지급
  3. 개인 간 거래시 안정적인 p2p네트워크 유지 > 중앙관리자 없이도 자율적이고 성장할 수 있는 네트워크

비잔티움 장군 (1982) 레슬리 램포트, 쇼스탁, 피스 :

신뢰가 없는 5장군이 전부 협업해야 이길 수 있는 전쟁에서 어떻게 해야 올바른 정보를 공유해 전쟁에서 승리할 수 있을까?

  • 어떻게 소통할지
  • 신뢰할 만한 사람이 얼마나 있는지

이분제를 해결하지 위해 일련의 트랜잭션 정보를 모아 블록을 만들고 이것을 시간순으로 연결한 공유 원장(shared ledger)기술인 블록체인을 고안하여 거래 시 위변조가 불가능하도록 만듬

블록체인에 신규 블록들을 연결할 때 : 참가자들이 어려운 계산과제를 가장 빨리 해결하고 이 결과를 참가자들의 과반수가 승인함으로써 완료된다.

이런 과정들을 통한 POW(거래 승인 작업)를 비트코인 마이닝 이라고 하고 계산 작업을 가장 빨리한 사람(블록을 생성한 사람)은 송금 수수료와 비트코인을 받는 인센티브 기반 운영 시스템이다.

  • 전자 서명기술 > 이전 소유자와 본인을 증명하여 거래 부인이 불가능하다.

중앙집중 원장과 분산 공유 원장

기존 비즈니스 및 거래 시스템

  • 모든 정보를 한 곳에서 관리하는 중앙집중 원장 사용.
  • 외부공격으로 인한 보호, 무정지로 운영되는 시스템 구축, 데이터의 이중화 등

블록체인

  • 데이터 전부를 네트워크에 참여한 모든 주체가 동일하게 가지고 있는 분산 공유 원장 사용.
  • 시간 순서에 따라 순차적 기록. > 위변조를 위해서는 해당 시점 이후의 모든 데이터를 모든 분산 원장에서 변조해야한다. 거의 불가능에 가까움
  • 개인 키로 전자 서명이 되어있기 때문에 개인 키를 확보하지 못하면 위변조 x

1.3 블록체인 p2p 컴퓨팅

컴퓨틴 플랫폼의 발전과정

컴퓨팅 플랫폼 : 프로그램 작동되게 하는 프레임워크.

웹 : 컴퓨팅 플랫폼

1950 ~ 1970 주요 플랫폼 : 대형 메인 프레임

  • 중앙의 대형 서버에 터미널로 연결 후 모든 데이터와 뷰처리를 중앙서버에서 하고 그 결과를 더미 터미널에서 봄

1990 플랫폼 : 클라이언트ㅡ/서버 컴퓨팅

  • 클라이언트와 서버 컴퓨터가 역할을 나눠서 처리함
  • 데이터 처림, 비즈니스 로직 : 서버
  • 결과 저장 및 화면 출력 : 클라이언트

2000 플랫폼 : 웹

  • http 프로토콜 사용한 전달
  • html 렌더링 전달
  • 비즈니스 로직 + 데이터 = DBMS에서 처리

SPA (Single Page Application)

  • JS / HTML / CSS
  • AJAX
  • XMLHttpRequest
  • Web2.0

2010 : 클라우드 컴퓨팅

현재 : 블록체인 컴퓨팅

  • 분산 웹서비스
  • Web3.0이라고 불리기도 함

1.3.2 블록체인 p2p 컴퓨팅

p2p 컴퓨팅

  • 모든 컴퓨터가 동일한 역할과 기능을 수행하는 컴퓨팅 처리 방식
  • 컴퓨터 (노드, 피어)가 클리이언트인 동시에 서버이기도 하다.
  • p2p컴퓨팅 기반 서비스 : 냅스터, 그누텔라, 프리넷 등등....

네트워크 연결 방식

  • 중앙집중형
  • 링형
  • 계층형
  • 완전 분산형
  • 하이브리드형 (중앙집중형 + 링형)
  • 하이브리드형 (중앙집중형 + 완전 분산형)

이더리움 = 중앙집중형

장점

  • 네트워크에 누구나 참여 가능 (확장성)
  • 노드들이 모두 연결되어 있기 때문에 일부 노드에 문제가 생겨도 안전
  • 관리감독 기능이 없어서 책임질 것도 없음

단점

  • 동등한 권한의 노드들로 구성되기 때문에 관리가 어려움
  • 모든 노드가 안정한지 검증하기 어려움 (신뢰성 문제)
  • 노드마다 컴퓨팅파워, 네트워크 속도가 달라 전체 성능에 영향을 미친다.

1.4 블록체인 기반 플랫폼 분류

공개형 블록체인

권한 공개형 블록체인 - 누구나 네트워크를 구성하는 노드가 될 수 있다.

  • 비트코인 코어
  • 이더리움 : 비탈릭 부테링 (2013) 4단계 로드맵 제시. 현재는 3단계 진행중
    • 1단계 프론티어 : 이더리움 개발 및 채굴, 네트워크 형성
    • 2단계 홈스테드 : 노드 생성, 생태계 구축 초기 단계
    다오 공격, 이더리움 클래식으로 쪼개짐
    • 3단계 메트로폴리스 : 대중화를 위한 인프라 형성단계 pow에서 pos로 전환 예정
    • 4단계 세레니티 : 모든 변화 후에 평정을 찾는 마지막 단계
  • 기타
    • 비트코인 코어 + 이더리움 가상버신 = 퀀텀
    • 매트릭스 형태의 블록체인 = EOS.IO

프라이빗 블록체인

특정 조직에서 권한을 가진 노드들만 합의를 하도록 설정하거나 데이터를 모두에게 공개하지 않고 트랜잭션과 관련된 노드들에게만 공유하는 경우가에 많이 사용한다.

프라이빗 블록체인에서 지원해야 할 기능

  • 프라이빗 채널 : 해당 거래와 직접 관계가 있는 참여자들에게만 정보를 공유한다.
  • 권한이 다른 노드들
  • 빠른 처리 속도와 높은 처리량
  • 슷마트 컨트랙트
  • 시스템 커스터마이징
  • 하이퍼레저 패브릭
    • 멤버십 서비스 : 허가나 인증 받은 노드만이 네트워크에 참여가능.
    • 블록체인 서비스 : PBFT - 전체 노드가 아니라 권한이 있는 참여 노드들이 투표를 하여 합의하는 알고리즘
    • 체인 코드 서비스 : go언어, 자바 진행
    • 패브릭 노드 구성 : 노드들에게 승인 권한이 있어야한다
  • 코다 : 금융기관끼리 블록체인을 금융 서비스에 적용하기 위해 결성한 공동 프로젝트
  • EEA : 공개형 이더리움 플랫폼을 기업 및 조직에 적용하는데 도움을 줌

클라우드 블록체인

  • 마이크로소프트 : 코코 프레임워크
  • IBM : IBM 블록체인
  • 오라클
  • 기타 : 블록앱스, 블록사이퍼, 완클라우드