본문 바로가기
블록체인/이더리움

이더리움 Transaction

by 후닝훈 2021. 6. 11.
반응형

비트코인과 이더리움의 트랜잭션 구조 비교

 

이더리움의 트랜잭션

 

Signed MSG

- 은행 계좌에서 돈을 전송하는 것과 비슷한 과정.

- 지갑에서 상대의 주소를 입력하고 Eth의 수량을 정해 보내는 과정

- Private Key로 서명하는 것.

- 스마트 컨트랙트에 있는 함수를 사용하는것

- 스마트 컨트랙트를 만드는것

 

Unsigned MSG 

- 서명하지 않고 바로 TXN을 보내는 것이 Internal Txn (문제가 많이 발생해 최근엔 Signed로 바뀜.)

 

Transaction 구성요소

- AccountNonce : 발신자에 의해 보내진 트랜잭션의 개수로 0부터 시작

- gasPrice : 각 실행단계에서 지급되는 Gas 비용

- gasLimit : 트랜잭션 수행시 지급가능한 최대가스범위

- to : 메세지 수신처의 주소, 수신자가 null로 비어있는 경우는 해당 수신자가 컨트랙트 어카운드를 의미(스마트 컨트랙트를 만드는것)

- value : 수신처로 전송할 이더의 양으로 Wei 단위

- Payload(Data) : 옵션필드로 메세지 호출시 매개변수등이 전달, 함수를 사용하기 위한 파라미터, 변수 등 전달

- V,R,S : ECDSA 전자서명을 만드는데 사용되는 값(V는 1바이트로 ECDSA가 복원한                                                                        공개키 4개중 어떤공개키를 사용할지 지정한 값이고, R, S는 32바이트 서명데이타)

 

작업에 따른 트랜잭션 변화

 

이더리움 Transaction 과정

 

트렌잭션 풀은 로컬 DB이다.

사용자 A는 전자서명 후 사용자 B에게 트랜잭션을 실행

해당 트랜잭션은 마이너를 포함 모든 노드들에게 브로드 캐스팅됨

마이너는 채널을 통해 트랜잭션을 전달받은 후, 해당 트랜잭션이 문법에 맞게 구성되어 있는지, 전자서명은 유효한지, 사용자A의 계정에 있는 NONCE 와 맞는지를 점검하고, 트랜잭션 처리 비용을 계산하고, 전자서명 수신처인 사용자B의 주소를 확인.

사용자A의 계정 잔액에서 처리 비용을 빼고 AccountNonce +1 증가시킴. 잔액이 충분하지 않을 경우 에러를 반환하고 오류가 없다면 가스 총량에 가스 가격을 곱해 가스 비용을 계산하고 최종 실행을 위해 트랜잭션 풀에 등록함.

마이너는 트랜잭션 풀에서 트랜잭션 처리 비용이 높은 순으로 트랜잭션의 송금값을 A계정에서 B계정으로 전송함.
B
계정이 컨트랙트 어카운트 일 경우, 해당 컨트랙트 코드를 동작시킴.
코드는 컨트랙트가 완료되거나 실행비용(가스)가 모두 소진될 때까지 계속 실행.

만약 사용자 A 에게 충분한 돈이 없거나 가스가 소비되어 코드 실행을 할 수 없을 경우 등의 이유로 송금이 실패한다면 트랜잭션 처리 비용을 제외하고 모든 상태를 원복하고 트랜잭션 처리 대가를 마이너 계정에 추가함.

트랜잭션이 성공하면 처리 결과를 상태 DB 에 반영하고 남은 모든 가스를 이더로 환산한 후 A 에게 반환하고, 트랜잭션 처리 비용을 마이너에게 전송한다.

처리한 트렌잭션을 블록에 담아 브로드 케스트 한후 블록체인에 이어붙임.

 

 

반응형

'블록체인 > 이더리움' 카테고리의 다른 글

이더리움 블록헤더  (0) 2021.06.19
이더리움 Transaction 2  (2) 2021.06.11
이더리움의 Account  (0) 2021.06.11
이더리움 가스  (0) 2021.06.10
State machine  (0) 2021.06.10

댓글