블록체인-기초2

기초이론 공부

Featured image

🎤 프로젝트 소개

블록체인 기초이론 학습

🎤 블록체인 기초이론학습2

1.이더리움 소개 2015년 6월 동작 시작 비탈리 부틴이 제안한 공개형 블록체인

분산어플리케이션을 위한 플랫폼을 표방

블록체인 2.0이다 기존의 1.0에서 스마트 컨트랙트를 탑재함 이더리움에서 발행한 암호화폐 » 이더

스마트 컨트랙트란?

중개자 없이 P2P로 쉽고 편리하게 계약을 체결하고 수정 할 수 있는 기술. 자판기 천원 넣고 음료수 누르면 잔돈이랑 음료수를 자동으로 주는 행동

만드는 순서

  1. 스마트 컨트랙트 코딩 : 구현하고자 하는 내용을 솔리디티나 다른 언어로 코딩합니다.
  2. 구현한 소스 코드를 컴파일 : 컴파일 결과 EVM 바이트 코드가 생성됩니다.
  3. 스마트 컨트랙트 배포 : 스마트 컨트랙트를 배포한다는 것은 컴파일된 EVM코드를 하나의 트랜잭션처럼 블락에 추가 시켜서 블록체인에 등록시키는 작업입니다. :소스 컴파일 > EVM 바이트 코드 > 구체적인 작업은 ABI 취득 > ABI 로부터 컨트랙트 객체생성 > 블락에추가

분산화된 상태전이 머신

-트랜잭션에 기반한 상태전이 >이전의 상태로 되돌아갈 수 없음 -암호화 알고리즘을 활용 > 무작위로 상태전이가 일어나는것을 방지 -모든 참여자가 동일한 상태를 공유 -블록은 해당 시점의 이더리움의 상태를 나타낸다고 볼 수있음 > 현재블록이 이더리움 현재상태다

이더리움의 주요한 구성요소들

이더리움 계정의 종류 1.비트코인처럼 외부 소유 계정 EOA 개인키를 통한 주소 관리 ETH전송, 컨트랙트 실행을 위한 거래 전송 가능 컨트랙트 코드를 가지고 있지 않음 2.컨트랙트 계정 CA 주소를 가지고 있으나 개인키는 존재하지않음 컨트랙트 코드를 보유 거래나 메시지를 수신하면 보유하고있는 컨트랙트 코드를 실행

상태

어느한시점에대한 이더의 잔액, 기타정보를 담고 있는 계정들의 집합 모든 이더리움의 참여노드는 로컬에 상태 정보를 유지한다. 이더리움 주소, 이더리움 주소의 HASH 값, 이더리움 계정 , 상태를 저장할 DB , 컨트랙트 코드

이더리움의 상태전이

블록채굴로 인한 거래내역 추가 시 상태전이 발생 상태전이함수에 의해 수행 APPLY(S,TX) > S’ or Error

트랜잭션은 2가지종류

  1. EOA 가 다른 EOA 혹은 CA로 보내는 서명된 메시지 -EOA > EOA : ETH잔액 변경(이더리움 송금) -EOA > CA : 컨트랙트 코드 실행 계정의 상태 변화를 유도하는 일종의 트리거

  2. CA가 다른 CA혹은 EOA에게 전달하는 서명되지 않은 메시지 -주로 컨트랙트 함수 호출에 사용 -블록체인에 별도로 저장되지 않음

트랜잭션 구조

//외부 트랜잭션의 수 //트랜잭션 수수료 //지불할 최대 가스양 //거래의 수신처 //거래하고자하는 ETH양 //메시지, 함수호출등 //서명정보

트랜잭션 리시트

트랜잭션의 실행 결과를 기록

블록

이더리움 장부에 기록되는 데이터의 기본단위 트랜잭션들의 집합 주요 데이터 -이전 블록의 헤더 해시값 -엉클블록 -채굴한사람 -MPT의 루트값 -트랜잭션 리스트값 -이블록의 번호 -이블록의 최대가스양 -소모된 가스양 -이블록의최초 생성시간

엉클블록

메인 블록에서 채굴 난이도가 낮아 메인 체인에 연결되지 못한 블록 블록 생성시간이 빠를 수록 엉클 블록의 발생확률이 높음 문제점 - 엉클블록에 포함된 트랜잭션은 승인되지 않았기 때문에 트랜잭션 처리 지연 발생 , 연산량이 낭비됨

작업증명 Pow -계산은 어렵게, 검증은 쉽게, 전문 채굴 장비 저항성을 높임

지분증명 PoS - 검증자가 가진 지분에 비례한 확률로 블록생성 권한을 획등하고 생성된 블록을 원하는 체인에 연결,보상획득 Pow의 문제점 개선 이더리움은 Casper를 통해 Pos로 전환중

캐스퍼 FFG - Pow + Pos의 하이브리드 방식

1~99번째 블록은 pow 100번째블록은 Pos방식으로 채굴 pos블록의 비율을 늘릴예정

스마트 컨트랙트!

-스마트 컨트랙트 개발언어 -Solidity : 현재 가장 많이 사용되고 있는 이더리움 스마트 컨트랙트 언어 솔리디티 작동과정

스마트 컨트랙트 작성ㅣ 바이트 코드 배포> 이더리움상의 블록에 저장되어 배포된다 > 장부 블록 컴파일 ㅣ 바이트코드,ABI ㅣ

스마트 컨트랙트의 배포

-스마트 컨트랙트를 이더리움에 배포하기 위해 Recipient > 수신자 미정 payload > 바이트코드와 ABI 스마트 컨트랙트 배포를 위한 가스 를 담은 특수한 형태의 트랜잭션을 생성,전송

스마트 컨트랙트의 실행

Recipient > 해당 스마트 컨트랙트의 CA Payload > 실행하려는 함수, 매개변수 스마트 컨트랙트 실행을 위한 가스름 담은 형태의 트랜잭션 생성,전ㅅㅇ

가스 란?

이더리움을 움직이게하는 기본단위 트랜잭션, 스마트 컨트랙트를 위한 수수료 - 최대가스 x 가스가격 가스가격의 기본단위 Gwei 이는 사용자가정의 할수있으며 단위가 클수록 트랜잭션의 빠른 처리가 가능 가스를 도입한이유는 악의적인 사용자들이 dos공격이나 무한 루프 돌리게 하는걸 방지하려고 도입했다. 중요

이더리움의 동작 매커니즘

계정,트랜잭션의 생성 > 서명 > 검증 > 채굴

이더리움 가상머신 EVM

EX)옛날 자바가상머신 없을때 생각해보면 굉장히 불편했었다. Dos의 공격을 방지하기위해서 가스가 지불되어야한다. EVM의 프로그램은 내부에서만 실행되고 가상머신의 HOST환경에는 접근 불가 EVM간 메시지를 통해 데이터를 송수신 할 수 있음 결정적 머신 > 때문에 항상 동일한 상태를 반환

스택기반동작의 이해

-입력값 > ByteCode -입력값의 종류에 따라 다른 동작을 수행

EVM Memory

-스마트 컨트랙트 호출시 생성 -함수의 매개변수 지역 변수 및 반환 값 등을 임시적으로 저장 -일반적인 pc의 ram과 마찬가지로 휘발성

EVM 스토리지

-키 밸류 저장소 -스마트 컨트랙트는 자신의 스토리지에만 접근가능

솔리디티 개요

(스마트 컨트랙트 구현) 이더리움 스마트 컨트랙트 언어의종류 -가장많이 활용되는 언어 -Java와 유사한 문법을가짐 -객체지향언어 -정적타입언어 -스택기반으로 동작하는 evm구조