Search

10장 - 트랜잭션(Transaction)

대분류
블록체인
소분류
Blockchain - 그라운드X
유형
트랜젝션
가스
서명
최종 편집 일시
2024/10/29 07:58
생성 일시
2022/07/31 14:51
15 more properties

(Recall) Ethereum 어카운트의 종류

1.
External Account : 사용자(end user)가 사용하는 어카운트 (a.k.a. EOA)
트랜섹션을 실제로 만들고 기록하는 주 어카운트, 즉 사용자
2.
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 주소 확인 → 저장된 공개키 불러오기 → 서명 직접 검증
이더리움의 서명 → 공개키 도출 함수를 변경하여서 성능, 속도 향상

트랜잭션 이동경로

Alice와 Node 사이 통신

Alice → Node

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

Node → Alice

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