(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 등이 기록