A transaction-based state machine
- 이더리음은 State 라는 개념을 사용한다.
- 비트코인은 들어오는 input 들의 합이 지갑에서 존재하는 금액이었음 (UTXO)
- 이더리움은 은행계좌처럼 A 지갑에 10 Eth 가 있다로 존재.
- State 1 --> State 2 일때 (5Eth 을 전송한다고 가정) 말그대로 10Eth에서 5Eth를 뺀 과정을 거친다.
- 비트코인은 3, 3, 4 BTC에서 5가 전송되고 2, 3이 돌아왔을 것이다.
- TX를 통해 상태(State)가 바뀐다.
- 네트워크에 트랜잭션이 발생하기 전인 Genesis State로 시작하여 트랜잭션이 실행되면 Final State로 전환
- 어느 한시점에서 Final State는 이더리움 네트워킈 현재 상태 (Current State) 를 나타낸다.
- 하나의 블록이 State를 나타내는 것이 아니라 말 그대로 현재 상태. State를 말하는것.
- 값이 변경, 블록생성 변화가 있는 경우를 새로운 state로 업데이트 된다고 표현한다.
- 유효성 검증은 Miner들이 수행한다.
- State가 직접적으로 블록에 담기는 것이 아닌, State를 표현할 수 있는 내용을 bytecode 나 hash로 블록헤더에 담긴다.
- 이더리움의 state는 수백만의 트랜잭션들로 이루어져 있음. 이는 블록단위로 묶여있다.
- Final state 에서 다음 State 로 전환하기 위해서는 트랜잭션의 유효성 검사 (Mining) 를 거쳐야 함
- 유효성 검사(Mining) 이란 Miner 노드가 Compute resource 를 투입하여 서버대신 처리 -> 유효한 블록을 생성하는 경우
- Block header 에 부모블록의 Hash가 기록되므로 블록이 chain 처럼 연결 됨
- 블록은 단순한 데이터의 집합이 아닌, 상태 변화 함수의 결과이다.
- Mining : 검증 -> 처리 -> 랜덤변수 찾기
- 검증과 처리의 행동은 병렬적으로 똑같은 것을 동시에 독자적으로 검증처리 하며, 랜덤변수 nonce를 찾은 Miner만 그에 따른 보상을 받음
- 그 후 새로운 블록을 검증함
마이닝을 통한 검증
- 이더리움 네트워크에서는 누구나 채굴자 노드가 되어 블록을 생성하고 검증하는 시도를 할 수 있으며, 이 작업은 채굴을 시도하는 모든 노드에서 이루어짐
- 각각의 채굴자들은 블록 체인에 블록을 제출할 때 수학적인 증거를 제시하며, 이는 일종의 보증서(guarantee : 만약에 증거가 존재한다면 블록은 반드시 유효하다)로서 동작
- 블록을 메인 블록 체인에 올리기 위해서 채굴자는 반드시 다른 경쟁 채굴자보다 빨리 이를 증명해야 함
- 채굴자가 수학적 증거를 제공함으로써 각 각의 블록을 증명하는 과정을 PoW(작업 증명 방식)라고 부름
마이닝을 통한 보상
- 새로운 블록을 증명한 채굴자는 채굴 작업에 대해서 일정한 양의 보상을 받게됨 (이 보상은 Ether)
- 채굴자가 블록을 검증하고, 블록을 이어 붙일 때 새로운 이더를 함께 생성하고, 이를 보상으로 가져감
이더리움 상태 변화
- 블록을 만들기 전 상태 s[0] 에서 부터
- 거래 내용 ( Tx[0], ….Tx[n] )에 대한 변경 내용을 모두 apply 해서 업데이트를 하고 이에 따라서 변경된 각 계정의 balance 를 기록함.
- 최종적으로 마이닝이 성공하면 S_FINAL 상태의 Account 내용을 블록에 담고 이더리움 블록체인 에 broadcasting 함
이더리움에서 TX란?
- 송금 요청
- Function A 처리결과를 요청
- 송금에만 국한되지 않음.
'블록체인 > 이더리움' 카테고리의 다른 글
이더리움 Transaction (0) | 2021.06.11 |
---|---|
이더리움의 Account (0) | 2021.06.11 |
이더리움 가스 (0) | 2021.06.10 |
이더리움 구성 (0) | 2021.06.09 |
이더리움 (0) | 2021.06.09 |
댓글