코어 이더리움 프로그래밍
책의 2.3.1절에 대한 용어 정리입니다.
- 외부 소유 어카운트(EOA, Externally Owned Account): 일반적으로 말하는 이더리움 사용자 어카운트
- 컨트랙트 어카운트(CA, Contract Account): 스마트 컨트랙트
- 넌스(nonce): 해당 어카운트로부터 보내진 트랙잭션 수
- 잔액(balance): 해당 어카운트의 이더 잔고
- 루트(root): 해당 어카운트가 저장될 머클 패트리시아 루트 노드
- 코드해시(CodeHash): 해당 어카운트의 스마트 컨트랙트 바이트 코드
- 머클 크리(Merkle Tree): 이진트리
- 트랜잭션: 다른 어카운트나 컨트랙트에 보낼 데이터 구조체(struct)로서, 전자서명으로 암호화
- 리시트(Receipt): 모든 트랙잭션의 로그를 저장하는 곳
- 블룸 필터(Bloom Filter): 트랜잭션 목록이나 해당 트랜잭션들에서 생성된 로그들이 중복 저장되는 것을 막고, 이들 정보에서 쉽게 찾기 위해서 사용하는 것
- 제네시스 블록(Genesis Block): 블록체인에서 첫 번째에 위치한 최초 블록
- 엉클 블록(Uncle Block): 블록의 유효성은 통과되어 다른 노드에 브로드캐스팅되었으나 난이도가 낮아(= 블록 생성이 빠르면) 최종 블록으로 인정받지 못한 블록
- 채굴의 효율성 + 네트워크의 안정성 + 신규 이더리움 발행빈도의 부정조작을 방지
- 문제점: 트랙잭션 처리 지연 + 컴퓨팅 파워 낭비 + 보안 문제
- 고스트 프로토콜(Ghost Protocol): 고스트 알고리즘(Ghost, Greedy Heavist Observed Subtree) 알고리즘을 이용해 엉클 블록의 문제를 해결
- 동기화
- 전체 동기화(Full Sync): 전체 블록 동기화
- 빠른 동기화(Fast Sync): 최근 블록 헤더만 동기화
- 경량 동기화(Light Sync): 현재 상태 정보만 동기화
- 머클 패트리시아 트리: 머클 트리 + 트리의 깊이를 한정 + 트리의 각 노드에 숫자값을 지정하여 경로 표시
- 이더: 이더리움에서 사용하는 암호화폐
- 가스: 이더리움 시스템의 운영 토큰
= 이더리움 리소스 사용에 대한 대가 + 트랙잭션의 남용 방지 - 비밀 키 암호화: 암호화와 복호화 시에 하나의 공통 비밀 키만 사용(=대칭키 암호화)
- 공개 키 암호화: 암호화와 복호화 시에 서로 다른 2개의 키 이용(=비대칭 키 암호화)
- 공개 키 암호화 방식: 공개 키로 암호화 -> 개인 키로 복호화
- 전자서명: 개인 키로 암호화 -> 공개 키로 복호화
- 이더리움에서는 전자 서명 암호화 방식 사용
- 트랜잭션 처리
- 트랜잭션 전자서명(개인키로 전자서명)
- 트랜잭션 브로드캐스트(전체 데이터를 모든 노드에게 전달)
- 트랜잭션의 유효성 검증(문법, 전자서명, 넌스, 거래 비용 등)
- 공개 키로 검증
- 트랜잭션 실행
출처
'블록체인' 카테고리의 다른 글
[블록체인] 공부1 (0) | 2023.07.28 |
---|---|
[Solidity] Solidity 문법정리 (2) (2) | 2022.06.12 |
Metamask와 Remix IDE로 Smart Contract 배포하기 (0) | 2022.06.12 |
[Solidity] Solidity 문법 정리 (1) (0) | 2022.06.11 |
이더리움 플랫폼 데이터 용어 정리 2 (0) | 2022.05.28 |