블록체인/Klaytn

10장 - 트랜잭션(Transaction)

MellowHoney 2023. 5. 25. 10:12
728x90
반응형

Untitled.png

(Recall) Ethereum 어카운트의 종류

  1. External Account : 사용자(end user)가 사용하는 어카운트 (a.k.a. EOA)
  2. 트랜섹션을 실제로 만들고 기록하는 주 어카운트, 즉 사용자
  3. Contract Account : 스마트 컨트랙트를 표현하는 어카운트
  • Ethereum은 EOA 와 스마트 컨트랙트의 상태를 기록 및 유지
    • 스마트 컨트랙트는 특정주소에 존재하는 실행 가능한 프로그램
    • 프로그램은 상태를 가지기 때문에 Ethereum/Klaytn은 스마트 컨트랙트를 어카운트로 표현
  • EOA는 블록에 기록되는 TX를 생성
    • 블록에 기록되는 TX들은 명시적인 변경을 일으킴
    • (e.g., 토큰 전송, 스마트 컨트랙트 배포/실행)

프로그램 - 데이터, 함수

스마트컨트랙트 = 프로그램

어카운트 = 함수

트랜잭션(TX)과 가스(Gas)

  • TX : 쪼갤 수 없는 업무 처리의 최소 단위, 데이터베이스의 상태를 변화시키는 작업 단위
  • TX의 목적은 블록체인의 상태를 변경하는 것
    • TX는 보내는 사람(sender, from)과 받는 사람(recipient, to)이 지정되어 있으며
    • to가 누구냐에 따라 TX의 목적이 세분화된다.
  • Gas : TX를 처리하는데 발생하는 비용
    • 가스(gas) : TX를 처리하는데 필요한 자원(computing power, storage)을 비용으로 전환한 것
    • Sender는 TX의 처리를 위해 필요한 가스의 총량과 같은 가치의 플랫폼 토큰을 제공해야 함
    • 이 때 지출되는 플랫폼 토큰을 **가스비(Gas Fee)**라 정의
    • 가스비는 블록을 생성한 노드가 수집
    • 연산비용 = 가

클레이튼 : 가스 프라이스 쓸수 없게 하자, 사용자들끼리 경쟁 x, 먼저 신청한 사람 부터 처리

이더리움 : 가스 프라이스 사용 가능, 가스를 많이 낸 사람부터 처리

트랜잭션과 서명

  • 플랫폼은 sender가 TX가 처리되는데 필요한 가스비를 가지고 있는지 확인
    • 가스비 확인은 구현에 따라 상이
    • Ethereum/Klaytn은 노드가 TX를 수신함과 동시에 가스비 이상의 balance가 있는지 확인
    • TX의 체결과 동시에 sender의 balance에서 가스비를 차감
  • TX는 sender의 서명(v, r, s)이 필요
    • 어카운트의 balance를 사용하기 때문
    • 서명의 증명은 구현마다 상이
      • Ethereum : 서명 → 공개키 도출 → 어카운트 주소 도출 → 어카운트 존재유무 확인
      • Klaytn : from 주소 확인 → 저장된 공개키 불러오기 → 서명 직접 검증
    • 이더리움의 서명 → 공개키 도출 함수를 변경하여서 성능, 속도 향상

트랜잭션 이동경로

Untitled.png

Alice와 Node 사이 통신

Alice → Node

  • Alice는 TX를 생성, 서명하여 Node에게 전달
  • 이때 데이터 구조를 온전하게 전달하고자 RLP 알고리즘으로 TX를 직렬화
  • Alice와 Node가 같은 프로토콜로 통신하는 것이 중요

Node → Alice

  • 올바른 TX 수신 시 TX 해시를 반환
  • TX 체결 시 Receipt를 반환; 소요된 Gas, TX 해시, input 등이 기록

 

본 포스트는 GroundX 강의 학습내용을 바탕으로 작성되었습니다.

반응형