나만보는 Blockchain 개념 (1) 이더리움
오늘의 주제
1. 이더리움의 구조
2. 트랜잭션 처리과정
3. 블록 헤더
4. 이더리움이란?

1. 이더리움의 구조
State | 블록체인의 계정 정보들을 담고 바뀐 정보를 업데이트 |
Account | 외부 소유 어카운트(EOA)와 컨트랙트 어카운트(Contract Account)로 구분되는 오브젝트 |
Tx | 어카운트가 보낼 메시지를 담고있는 서명된 데이터 패키지 |
Block | 트랜잭션이 담긴 후 노드들의 합의에 의해 생성되어 트랜잭션을 처리 |
2. 트랜잭션 처리 과정
이더리움 트랜잭션은 3가지 기능이 있다.
이더리움 전송/ Smart Contract 배포/ Smart Contract 실행
동작하기 위한 조건은 개인키 서명, Gas 수수료가 필요하다.
=> 생성, 서명, 전송
Tx {
to: 메시지 수신처
Signature: 발신처를 확인할 수 있는 서명
Value: 발신처가 수신처로 보내는 이더 전송량
Gas: 발신처가 지불하는 수수료
Data: 컨트랙 메시지를 담을 수 있는 데이터 필
}
- Tx가 생성, 서명, 전송된 후에 Tx pool에 담긴다.
- 누군가가 마이닝을 하면 트랜잭션을 처리하게 되고, State가 바뀐다.
*마이너 입장에서 트랜잭션의 내용은 중요치 않는다.
- 새로운 블록이 만들어 졌을 때 State의 Account의 상태가 바뀐다.
*논스는 순차적으로 증가하고 처리되어 각 트랜잭션이 한번만 처리되게 하고, 처리 순서를 결정하게 도와준다.
블록 사이즈가 커지기 어려운 이유?
- 탈중앙성을 지키려면 접근이 쉬워야 하는데, 블록사이즈가 커지면 채굴하기 위해서 고가의 장비가 필요해진다. 진입 장벽이 높아지고, 노드 수가 줄어들어 보안성이 낮아진다.
3. 블록 헤더

- ParentHash: 부모 블록의 해시값
- UncleHash: 엉클 블록의 해시값, 실제로 메인넷을 형성하지 않는 블록
- Coinbase: 마이닝이 끝나고 이더를 지급받는 어카운트 주소
- TxHash: 블록내의 모든 트랜잭션들의 머클트리의 루트 노드 해시값
엉클 블록 - 트랜잭션을 갖고 있지 않음. 엉클 블록이 메인체인에 붙어 불필요한 해시파워를 효율적으로 관리하여 채굴 난이도를 낮추고, 네트워크의 안정성을 높인다. 비율 조작을 통해 신규 이더리움 발행 빈도의 부정조작을 방지한다.
4. 이더리움이란?
- 전역적으로 접근 가능한 싱글톤 상태와 그 상태를 변화시킬 수 있는 가상머신으로 구성
- 전 세계에 걸친 탈중앙화된 컴퓨팅 인프라스트럭쳐
- 블록체인을 사용하여 시스템의 상태변화를 동기화하고, 이더(eher)라고 하는 암호화폐를 이용하여 실행 자원 비용을 측정하고 제한
개발 단계는 4단계로 현재 세레니티 페이즈까지 진행되었다.
구성요소 : P2P네트워크, 합의규칙, 트랜잭션, 상태머신
경제적 보안성: 현재 이대시(Ethash)라는 PoW를 사용하나, 향후 PoS로 바뀔 예정
클라이언트: 대표적으로 Geth와 Parity 이더리움 클라이언트 소프트웨어 사용
이더리움 주소: 16진수이며, Keccak-256 해시 함수를 사용하여 만든다. 타원 곡선 곱셈을 이용하여 개인키에서 공개키를 생성한다.

