2024.02.19

블록체인

블록체인 개요 :

  • 비트코인 : 정부 거대 기업으로부터 개인의 권리와 자산을 지키기 위한 운동. 사토시 나카모토가 발명
  • 세계 최초의 탈중앙형 화폐
  • 2009 1월 3일 사토시 나카모토의 첫 채굴이 일어나며 비트코인 네트워크 가동 시작
  • 비트코인 최초 블록 에는 영국 정부의 구제금융 발표 뉴스의 제목 기록

블록체인 2.0

  • 업계 최초 ICO (Initial Coin Offering) 를 통해 개발비 모금
  • 2015 이더리움 네트워크 시작
  • 탈 중앙화된 컴퓨팅 인프라. 월드 컴퓨터라고도 불림
  • 블록체인에 스마트 컨트랙드 도입. DAO (Decentralized Autonomous Organization) 자기주권신원증명 탈중앙형 금융등의 가능성을 보여주고 Web3.0의 기반을 마련했다는 평가

블록체인 정의 :

P2P (Peer to Peer) 네트워크를 통해 관리되는 분산 데이터 베이스의 한형태로 블록체인 노드에 디지털 서명된 거래 정보를 보관하는 분산 원장 기술

동작 원리 :

  1. 누군가 트랜잭션을 만들어 요청
  2. 트랜잭션을 요청 받은 노드는 트랜잭션의 유효성 검증
  3. 유효한 트랜잭션이 블록체인의 P2P 네트워크에 전파
  4. 블록 생성자는 블록 생성 규칙 준수하며, 검증된 트랜잭션을 포함하는 새 블록을 생성한다.
  5. 생성된 새로운 블록이 P2P 네트워크엑 전파
  6. 기존 블록에 새로운 블록이 연결되며 트랜잭션이 처리된다,

블록체인의 암호학

  1. 공개키 암호화
  • 공개키 암호화 == 비대칭 암호화
  • 계산하기는 쉽지만 그 역을 계산하기 어려운 특수한 함수를 바탕으로 생성된 고유한 키를 사용하여 정보를 보호하는 방법
  • 비트코인 및 이더리움에서는 이산 로그 문제를 이용하는 타원곡선 암호화를 활용

  • 개인키(k)
    • 1 ~ 2^256 사이의 무작위로 선택한 숫자
    • 개인키 생성 프로세스는 오프라인 프로세스
    • 대부분의 프로그래밍 언어에 있는 rand 함수 같은 암호학적으로 안전하지 않는 난수 생성기 사용 금지
    • 임의로 생성한 16진수 개인키의 예가 있긴 함

해시 함수

  • 임의 크기의 데이터를 고정된 크기 데이터로 매핑하는 함수
  • 해시 함수의 입력을 메시지 또는 입력 데이터 결과를 해시(hash) 라 함
  • 결과값을 알고 있을 때 입력데이터를 다시 작성하는 것이 불가능한 단방향 함수

트랜잭션

  • 외부 소유 의해 서명된 메시지
  • 이더리움 네트워크에 전송되고 블록체인에 기록된다.
  • 블록체인 상태 변경을 유발하거나 컨트랙트를 실행하는 유일한 방법이다.
  • 이더리움은 독자적으로 상태가 변경되지 않는다
  • 컨트랙트는 독자적으로 실행되지 않는다.

Nonce

해당 주소에서 생성한 트랜잭션의 건수

  1. 논스값은 0부터 시작하여 트랜잭션을 생성할 때 순차적으로 증가한다.
    1. 트랜잭션을 순차적으로 처리하기 위해 사용한다.

가스

  1. 이더에 대한 사용자 지정 환율을 가진 별도의 개념이다.
  2. 트랜잭션이 사용할 수 있는 자원의 양을 제어하는데 사용
  3. gasLmit : 최대 가스 단위 수를 지정한다.
  4. 1 ETH = 10 ^ 18 wei

값과 데이터 (value & data )

트랜잭션의 주요 페이로드 총 네가지 조합 모두 유효하다 값만 있는 경우 : 이더 지급 데이터만 있는 경우 호출 값과 데이터 모두 있는 경우 : 지급 + 호출 값과 데이터 모두 없느 ㄴ경우 : 트랜잭션은 보내지지만 가스 낭비

  • 새로운 컨트랙트는 트랜잭션
    • 수신자 주소 0x0 (영주소), 데이터 : 컴파일된 컨트랙트의 바이트 코드

디지털 서명

트랜잭션 정보를 개인키를 사용하여 서명

  • 서명이 담긴 트랜잭션을 함께 받은 누구나 메시지와 공개키만 사용하여 서명을 검증할 수 있다.
  • 개인키 소지자에 의해 트랜잭션이 승인되었음을 증명
  • 객인키 소지자가 해당 트랜잭션을 승인했음을 부인할 수 없다.
  • 서명 후 데이터가 수정되지 않았다.

트랜잭션 전파와 기록

  • 보안의 이유로 개인키의 서명과 전송을 분리
  • 서명된 트랜잭션은 이더리움 네트워크로 전송할 준비 완료
  • 서명된 트랜잭션을 받은 p2p 네트워크에 연결 노드는 다음 동작 시행
    • 수신 트랜잭션 서명 검증
    • 유효시 사본 저장 , 자신 이웃 노드에 전파
  • 결과적으로 전 세계 모든 노드로 전파됨
    • 각 노드의 관점에서는 트랜잭션의 출처 식별 불가
    • 특정 노드는 트랜잭션을 블록에 축사하여 새로운 블록을 만드는 작업 수행

합의 Consensus

  1. 작업증명
  2. 지분증명
  • 분산 시스템에서 상태를 동기화 하기 위해 사용
  • 탈중앙화되었지만 결정론적으로 운영하기 위해 각자 지켜야 하는 규칙
  • 누가 생성한 블록이 유효한지 합의하기 위한 프로토콜
  • 작업증명, 지분증명이 가장 일반적
  • 이더리움은 PoW 에서 PoS로 전환하는 더 머지(the Merge) 업그레이드 완료 /15.09.22

스마트 컨트랙트

계약에 필요한 요소를 코드를 통해 스스로 실행되게 하는 전선화된 거래 약속
온라인 상에서 중개자 없이 계약 집행 가능
계약 당사자가 사전 협의 내용을 미리 프로그래밍 해서 전자 계약서 문서 안에 넣어두고, 해당 조건이 충족되면 블록체인 네트워크에서 자동적으로 계약을 집행하는 기능

특징

  • 탈중앙화
    • 중개자의 개입 없이 가능
  • 자동화
  • 확장성

필요한 곳

  • 투명하게 거래내역 공개가 필요한 곳
  • 중개인이 필요하거나 비용이 많이 드는 곳
  • 수수료가 너무 커서 해당 비용 절감 니즈가 있는 곳

또 이더리움 너야 ?

  • 블록에 트랜잭션 쌓임
    • 트랜잭션에는 거래 내역 뿐 아니라 컨트랙트도 쌓임

이더리움 계정

  • 외부 소유 계정 (EOA) - 개인 키를 가진 사람이 제어하는 계정
    • 계정을 만드는데 비용이 들지 않음
    • 외부 소유 계정 간의 ETH 전송, CA 호출 등 다양한 활동 가능
  • 계약 계정 (CA) - 컨트랙트 코드에 의해 제어되는 계정
    • 네트워크 스토리지를 사용하기 때문에 계정 생성시 비용이 발생
    • 거래 수신에 대한 응답으로만 거래를 보낼 수 있음(스스로 동작 할 수 없음)
    • 새 계약 생성 등의 작업을 실행할 수 있는 코드를 트리거 할 수 있음
    • 계약 계정에는 개인 키가 없고, 대신 스마트 계약 코드의 논리에 의해 제어
    • Storage hash, code hash 를 가짐

EVM 이더리움 가상 머신

  • Ethereum의 스마트 컨트랙트를 위한 런타임 환경
  • 스마트 컨트랙트의 배포와 Solidity 코드 실행을 처리
  • 완벽한 고립성
  • EVM에서 구동되는 코드는 네트워크 파일 시스템 다른 프로세스 접근 권한 없음

상세

  • PC
  • Stack :
  • Memory : 트랜잭셕 실행 중에만 유지되는 휘발성 데이터 저장소
  • 가상 ROM
  • World State
  • Storage

Bytecode, ABI(Application Binary Interface)

ABI : 고수준 언어와 저수준 언어의 소통을 도와주는 인터페이스

  • 컨트랙트 함수와 매개변수들을 JSON 형식으로 나타낸 리스트
  • 컨트랙트의 객체를 만들 수 있고 컨트랙트 함수를 호출할 수 있음

개발 환경

  • Geth
  • 가나슈 (Ganache)
  • 트러플 (Truffle)
  • 메타마스크(Metamask)
  • Infura

퍼블릭 블록체인 스마트 컨트랙트 단점

  • 미인증 참여자, 해커 접근 가능 > 악의적 공격에 방어하며 모든 노드가 데이터를 공유해야 하므로 성능을 많이 포기함
  • 퍼블릭 블록체인의 거래 내역을 검증, 신뢰할 수 있는 블록을 만들기 위해 마이닝이 필요함

기술적 한계

  • 오라클 문제
    • 스마트 컨트랙트의 경우 블록체인 외부에서 발생되는 이벤트나 조건에 대한 정보를 수집할 수 없으므로 외부에서 데이터를 입력해줘야 하는데, 블록체인 외부에서 내부로 들어오는 데어트이 차이에 따라 발생하는 문제를 오라클 문제라고 함

사설 블록체인 스마트 컨트랙트 플랫폼도 있음

HYPERLEDGER FABRIC

  • 특징
    • 엔터프라이즈 환경에서 사용하도록 설계된 오픈 소스 분산 원장 기술(DLT) 플랫폼
    • 공개형이 아닌 허가형 블록체인(폐쇄 / 기업형 블록체인)
    • 모듈형 구조를 가져서 다양한 네트워크 구성 가능
    • 암호화폐 기반 아님
    • 일반 프로그래밍 언어를 사용
    • 멀티 블록체인 지원
    • 거래 병렬 처리
    • 체인코드로 패키징되어 블록체인 네트워크에 배포
  • 흐름
    • 트랜잭션의 흐름을 세 단계로 분리함
  • r3 corda

이더리움 백서

  • truffle
  • infura