블록체인/Klaytn
10장 - 트랜잭션(Transaction)
MellowHoney
2023. 5. 25. 10:12
728x90
반응형
(Recall) Ethereum 어카운트의 종류
- External Account : 사용자(end user)가 사용하는 어카운트 (a.k.a. EOA)
- 트랜섹션을 실제로 만들고 기록하는 주 어카운트, 즉 사용자
- 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 등이 기록
본 포스트는 GroundX 강의 학습내용을 바탕으로 작성되었습니다.
반응형