이더리움 백서

taeyeon·2023년 3월 26일
0

스크립토

목록 보기
2/2

역사

상태변환시스템으로서의 비트코인

  • 비트코인은 하나의 상태변환 시스템
    상태(state, 비트코인 소유권 현황으로 이루어짐) + 상태변환함수(state trasition function, 상태와 트랜잭션을 받아서 결과로 새로운 상태를 출력해줌)로 구성

    : 비트코인 장부에서의 상태변환

  • 비트코인에서의 '상태': 생성되었지만 아직 사용되지 않은 코인들의 집합, UTXO(아직 사용되지 않은 트랜잭션 출력)
    ex)1btc이 비트코인지갑 잔고에 있다면 비트코인 장부에는 잔고가 1btc으로 기록되어 있지 않고 현재까지 거래한 비트코인들의 내역을 추적해 아직 사용하지 않은 비트코인으로 기록되어 있음. 이를테면 UTXO 0.1, 0.2, 0.3, 0.5 이렇게 5개의 미사용 비트코인으로 기록되어 있다는 것. 지갑은 단지 이렇게 사용되지 않은 잔고를 합쳐 간략하게 보여주는 소프트웨어일뿐

채굴

  • 비트코인은 위의 상태변환 시스템을 트랜잭션 순서합의 시스템(분산 합의 과정)과 결합
  • 결국 분산 합의 과정을 통해 지속적으로 성장하는 블록체인이 생성되고 비트코인 장부는 최신의 상태(state)로 업데이트 되는 것
  • 블록은 유효성 검증 알고리즘에 의해 유효성 검증(작업증명)

머클트리

  • 비트코인은 블록을 여러 계층 구조(multi-layer data structure)에 저장
  • 머클트리: 잎노드(트리의 최하위에 위치, 기저 데이터 포함하는 수많은 노드들)+중간노드(자기 자신 바로 하위에 있는 두 자식 노드의 해시로 구성)+루트노드(자기 자신 바로 하위에 있는 두 자식 중간노드의 해시로 구성, 트리 최상위에 위치)로 구성
  • 머클트리의 매커니즘: 하위 노드들의 해시값이 상위 노드에 영향 주므로 하위의 트랜잭션 정보를 바꾸려 할 경우 상위 부모들의 해시값이 연쇄적으로 변해 결국 트리의 루트값이 바뀌고 이로 인해 블록의 해시값이 달라짐, 이를 통해 유효한 작업증명인지 여부 확인 가능

블록체인 기술을 이용한 다른 응용 사례

  • 네임코인: 탈중앙화된 명칭 등록 데이터베이스
  • 컬러드 코인: 비트코인 블록체인 위에서 자신만의 고유한 디지털 화폐(토큰)를 발행할 수 있는 프로토콜, 색을 부여하여 화폐를 발행
  • 메타코인: 비트코인과 상태변환 함수를 달리하여 비트코인 시스템 위에서 운영되는 프로토콜

스크립팅

  • 이더리움에 비해 기능구현은 미흡하나 비트코인도 스마트 컨트랙트가 가능, 이때 비트코인에서 스마트 컨트랙트 구현을 가능하게 하는 언어가 스크립팅
  • 비트코인에서 사용하는 거래의 기본 단위는 UTXO는 개인의 비트코인 잔고를 사용하지 않은 여러 개의 잔고로 기록, 이렇게 나누어진 데이터로 비트코인에서 스마트 컨트랙트 작성 가능
  • 이때 UTXO를 기반으로 스크립트를 짤 경우 근본적으로 탈중앙화된 상호-암호화폐 교환이 가능하나 스크립트 언어에는 한계가 존재
    -튜링불완전성: 비트코인 스크립트 언어는 반복문의 사용이 불가능
    -가치 무지: UTXO는 인출액 전부가 송금되거나/송금 되지 않음 만 선택 가능하므로 세부적인 작은 단위로 나눠질 가능성을 포함할 수 없음. 따라서 UTXO 스크립트로는 인출 액수를 세밀하게 통제 불가
    -상태표현제한: UTXO는 사용됨/사용되지 않음의 두 가지 상태만 표현 가능하므로 그 외의 다른 상태를 가지는 다중 단계 계약이나 스크립트는 만들 수 없음. 보다 복잡한 '상태'의 표현은 제한하는 것
    -블록체인 무지: UTXO는 블록체인 자료의 해독이 불가해 다른 분야의 어플리케이션 제작에 한계 존재

이더리움

  • 이더리움의 목적:제 3자의 신뢰기관 없이 통용 가능한 어플리케이션 플랫폼을 만드는 것(분산 어플리케이션 제작을 위한 대체 프로토콜 제작)
  • 이더리움은 튜링완전언어를 내장하여 비트코인과 달리 블록체인 응용 프로그램 개발과 배포, 이용이 자유로움
    -결과적으로 비트코인은 디지털자산의 탈중앙화를, 이더리움은 디지털 자산을 운용하는 기관,프로그램 등의 탈중앙화를 가져온 것

이더리움 어카운트

  • 이더리움 계정이 포함하는 정보
    - 논스:중앙화된 방식에서는 요청들에 대해 중앙에서 순차적 처리가 가능하나 탈중앙화 방식에서는 순차적 처리가 어려움. 이를 해결하기 위해 채굴자들이 사용자 요청을 처리할 때 논스 값을 확인하여 프로그램 처리의 순차적 규칙을 정함.
    - 이더잔고: 비트코인 UTXO와 달리 이더리움은 이더의 잔고를 직접적으로 확인 가능
    -계약코드: 스마트 컨트랙트의 실행코드가 저장되고 이 기록된 코드를 통해 스마트 컨트랙트 프로그램 실행
    -어카운트 저장 공간
  • 이더는 이더리움의 기본 내부 암호-연료(crypto fuel)이며 트랜잭션 수수료 지불에 사용, EOA와 CA의 두 가지 종류 계정이 존재
  • EOA(externally owned accounts, 비밀키에 의해 통제되는 외부 소유 계정, 지갑 주소): 개인이 자신의 이더를 관리하고 전송할 수 있는 핵심인 비밀키가 포함된 계정으로 사람에 의해 통제되는 계정, 입출금이 가능하며 스마크 컨트랙트에 트랜잭션을 보내는 것이 가능. 인터넷의 '사용자 ID'와 유사한 개념
  • CA(contract accounts, 컨트랙트 코드에 의해 통제되는 컨트랙트 계정): 비밀키 존재하지 않고 EOA를 통한 요청에 의해 자동으로 실행, 스마트 컨트랙트의 주소로, 프로그래밍 언어로 쓰인 코드와 저장공간을 가진 계정. 인터넷에서 서비스를 제공하는 '홈페이지 주소'와 유사한 개념
    :단계적으로 본다면 '사람-EOA-CA'의 순서로 요청 및 처리하는 것

메시지와 트랜잭션

  • EOA에서 트랜잭션은 이더리움 네크워크로 전송 시 포함되는 메세지로 EOA가 보낼 메시지를 가지고 있는 서명된 데이터 패키지
  • 트랜잭션이 포함하는 요소: 메시지 수신처/발신차가 수신처로 보내는 이더 양/선택적 데이터 필드/STARTGAS/GASPRICE
    -가스(GAS): 디도스를 포함, 다양한 악의적인 공격을 방지하기 위해 도입한 개념, 이더리움에서 운용되는 서비스를 이용시마다 가스를 수수료로 지불하도록 하여 악의적 공격자의 무차별적 공격을 방지하는 것. 이더리움에서 운용되는 서비스를 실행하는 비용에 대한 부분이 STARTGAS와 GASPRICE에 설정되어 있음

메시지

  • CA는 CA에게 메시지 전달 가능(=스마트 컨트랙트 프로그램은 서로 다른 스마트 컨트랙트 프로그램들과 다양한 정보를 주고 받거나 명령 요청 가능)
  • 결국 트랜잭션은 EOA가 메시지(다양한 요청)를 CA에게 보내는 행위이며 이때 가스비를 수수료로 요청

이더리움 상태 변환 함수

: 이더리움의 상태 전이 함수 APPLY(S,TX)->S'

  • 이더리움도 비트코인과 같이 하나의 상태변환함수로 동작, 어떠한 트랜잭션의 요청에 의해 이더리움의 현재상태(S)에서 다음상태(S')로 변하는 것
  • 채굴자는 상태변환함수를 실행하고 그 결과를 블록체인에 기록하는 과정에서 가스비를 수수료로 지급받는 것

코드 실행

  • 이더리움에는 스마트 컨트랙트를 작성하는 프로그램 언어가 존재하고 이를 통해 작성된 프로그램 코드는 컴파일(프로그래머가 볼 수 있는 언어를 컴퓨터가 이해할 수 있는 언어로 변환하는 과정) 과정을 거침
  • EVM(ethereum virtual machine, 이더리움 가상 머신)에서 컴파일된 스마트 컨트랙트 코드를 실행하고 블록체인에 기록, EVM은 스택, 메모리, 저장소로 구성
    -스택(stack): 컴파일한 스마트 컨트랙트 코드가 실행되는 곳
    -메모리(memory): 개발자가 작성한 스마트 컨트랙트 코드를 실행하기 위한 임시 공간으로 계산이 끝나면 리셋
    -저장소(storage): 스마트 컨트랙트의 실행 완료 후에 블록체인에 기록할 데이터 공간(영구)

결론

  • 기존의 비트코인은 디지털 자산으로 기능, 디지털 자산을 넘어 다양한 형태의 어플리케이션을 제작할 수 있는 플랫폼을 만들고자 이더리움이 등장
  • 이더리움은 다양한 어플리케이션을 만들 수 있도록 튜링완전언어를 지원, 금융과 비금융의 여러 분야에서 혁신적인 서비스 출시하는 플랫폼 역할을 함

0개의 댓글