포스트

[Week 2] 블록체인

이더리움 (스마트 컨트랙트, 가상 머신), 가스, 계정 (EOA, CA), 트랜잭션 생명 주기

[Week 2] 블록체인

이더리움

  • 2015년 7월 30일 비탈리크 부테린(Vitalik Buterin)이 개발
  • 전 세계 사용자들이 보유하고 있는 컴퓨팅 자원을 활용해 이더리움 가상 머신(EVM)을 만들고 이를 이용해 다양한 정보를 기록하는 시스템 창안
  • 블록체인 기술을 기반으로 스마트 컨트랙트 기능을 구현하기 위한 분산 컴퓨팅 플랫폼이자 플랫폼의 자체 통화명
  • 결제 뿐만 아니라 계약서, SNS, 이메일, 전자투표 등 다양한 애플리케이션을 투명하게 운영할 수 있게 확장성을 제공한다
  • 공개된 소스 코드를 활용해 dApp(Decentralized Application)을 누구나 만들고 사용할 수 있게끔 하는 플랫폼
    • 이더리움의 목적은 dApp 제작을 위한 대체 프로토콜을 만드는 것
    • 빠른 개발 시간, 작고 드물게 사용되는 애플리케이션을 위한 보안, 다른 애플리케이션과의 효율적인 상호작용이 중요한 상황에 주안점
  • 블록체인에서 프로그램을 구현하고 실현할 수 있다
    • Solidity와 Serpent 등 프로그램 구현 가능
  • C++, 자바, 파이썬, GO 등 주요 프로그래밍 언어 지원
    • 주류는 자바스크립트를 변형한 Solidity
  • 비트코인의 지갑과 동일한 개념인 계정(account)이 존재하는데 비트코인과는 다르게 EOA, Contract Account 두 가지 종류가 있다
  • 이더리움이 제공하는 이더(Ether)는 비트코인처럼 암호화폐의 일종으로 거래됨
  • 블록 크기에 제한을 두지 않고 블록 생성 주기를 약 12초까지 줄여 비트코인에 비해 훨씬 더 빠른 데이터 검증이 가능하다
  • 상당히 느린 트랜잭션 속도를 가지고 있다
  • 비트코인 이후 등장한 알트코인 중 시가 총액이 가장 높다
  • 이더리움의 화폐 단위는 ETH로 표시 (비트코인의 경우 BTC)
  • 블록체인 특성상 이더리움 상의 코드를 신용할 수 있고 한번 저장된 코드 및 데이터는 거의 영구적으로 남는다
  • 취약점을 활용한 DAO Attack, OPCODE DDOS 등의 공격이 있었다
  • BAT, GOLEM, AUGUR 등의 이더리움 기반 토큰들이 있다



스마트 컨트랙트

  • 이더리움 애플리케이션 레이어의 기본 구성요소
  • 한번 생성된 코드는 변경할 수 없다
  • 스마트 컨트랙트를 구현하기 위한 Contract Code는 EVM이라는 독립된 실행 환경에서 실행된다
  • 이더리움 블록체인 상에서 작동하는 컴퓨터 프로그램
  • 사용자의 트랜잭션으로 트리거될 때 실행됨
  • 탈중앙화된 앱 및 조직을 위한 블록의 역할
  • 대출 앱, 탈중앙화 거래소, 보험, 쿼드라틱 펀딩, SNS, NFT 등



EVM (Ethereum Virtual Machine)

  • 스마트 컨트랙트를 처리하기 위해 사용됨
  • 모든 형태의 알고리즘을 처리할 수 있는 튜링 기계로서, 먼저 들어온 데이터를 우선적으로 처리하는 큐 구조를 가짐
  • 저수준의 기계어에 가까운 바이트 코드만 실행 가능하기 때문에 고급 프로그래밍 언어를 실행하기 위해서는 바이트 코드로 컴파일 과정을 거쳐야 한다
  • 가상 머신을 이용하기 위해서 가스(Gas)라는 대가를 지불해야 한다



가스 (Gas)

  • 블록체인과 상호작용하면서 다양한 유형의 작업을 실행하기 위한 컴퓨팅 농력을 측정하는 단위
  • 이더리움의 모든 작업에는 가스가 사용됨
  • 가스 요금 형태로 사용자는 계산 작업에 대한 비용 지불해야 함
  • Gwei로 표시되는 가스 가격은 네트워크 정체에 따라 변동되어 거래 비용에 영향
  • 채굴자는 거래를 검증 및 처리하고 가스 요금을 보상으로 획득
  • 악의적인 행위자가 네트워크에 스팸을 보내는 것을 방지하는 데 도움
  • 가스비 = 작업 수행에 사용된 가스량 * 단위 가스당 비용
  • 가스비는 거래 성공 여부와 관계 없이 ETH를 사용하여 지불됨
  • 1 Gwei는 0.000000001 ETH와 같다 (10억 웨이 : giga-wei)



계정

EOA (Externally Owned Account)

  • 개인키를 가진 사람이 관리하는 계정

CA (Contract Account)

  • 코드로 제어되는 네트워크에 배포된 스마트 컨트랙트 계정



트랜잭션 생명 주기

  1. 트랜잭션 생성 (Creation)
    • 사용자가 지갑 또는 애플리케이션을 통해 트랜잭션 생성
    • 코인 전송, 스마트 계약 호출 등
    • 주요 내용
      • 보내는 주소, 받는 주소
      • 전송 금액
      • 수수료 (gas, fee)
      • 난스
  2. 서명 및 브로드캐스트 (Signing & Broadcasting)
    • 사용자가 개인 키로 트랜잭션에 디지털 서명
    • 네트워크에 P2P로 전파
    • 메모리 풀에 보관되어 블록에 아직 포함 안 됨
  3. 검증 대기
    • 노드들은 수신한 트랜잭션 유효성 검사
      • 서명 검증, 이중 지불 여부 확인, 수수료 확인 등
    • 유효한 트랜잭션은 메모리 풀에 저장되어 블록 생성자가 선택 가능
  4. 블록 포함
    • 블록 생성자가 메모리 풀에서 트랜잭션을 선택해 블록 구성
      • 수수료가 높은 트랜잭션이 우선
    • 트랜잭션이 블록에 포함되어 네트워크에 전파
  5. 블록체인 추가
    • 블록체인에 생성된 블록이 연결되면 트랜잭션은 확정 상태
    • 이후 새로운 블록이 그 위에 쌓이면서 확정 횟수가 증가
  6. 최종 확정
    • 일반적으로 비트코인은 6회, 이더리움은 12회 정도가 되면 안전하다고 간주됨
    • 이 시점에서 트랜잭션은 되돌릴 수 없고 불변
이 게시글은 저작권자의 CC BY 4.0 라이센스를 따릅니다.