비트코인과 이더리움의 트랜잭션 구조 비교
이더리움의 트랜잭션
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 과정
• 사용자 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 |
댓글