본문 바로가기
2023-2학기/블록체인

Ethereum (transaction, smart contract)

by 킹버거 2023. 11. 28.

안녕! 이번에는 내가 Ethereum에서 가장 헷갈렸던 transaction에 대해 정리해볼 거야. 다들 잘 따라와 파롤팔로미~!~!

 

 

* 본 게시글은 일개 학부생이 복습 목적으로 작성하는 것이므로 잘못된 내용이 포함되어 있을 수 있음을 알립니다. 참고용으로만 이용하시길 바랍니다. 

* Consensus Algorithm이 PoW인 Ethereum 1.0 기준입니다. 


우선, 트랜잭션은 전자서명된 일종의 지시문으로 EOA에 의해서만 발생해. 즉, CA는 트랜잭션을 스스로 만들 수 없어. 

반드시 EOA를 통해 input으로 transaction을 받아야 그에 대한 결과로 새로운 transaction을 생성할 수 있어. 그리고 CA들은 내부 트랜잭션을 통해서 다른 컨트랙트들과 소통할 수 있어.


가장 기본적인 Transaction: value(wei) transfer (EOA ↔ EOA)

- 두 개의 EOA 사이에서 발생하는 트랜잭션은 ETH만 송금


Contract Account를 생성하는 Transaction: Contract creation (EOA → CA)

- 해당 Transaction 설명

nonce: CA를 생성하려는 EOA에서 생성한 트랜잭션의 수 (즉, 해당 트랜잭션의 일련번호)

- 만약 nonce가 3이면, EOA가 이전에 생성한 트랜잭션의 수는 2개이며 세 번째로 생성한 해당 트랜잭션의 일련번호는 3

gasPrice: 송신자가 Gas당 지불하고자 하는 비용

gasLimit: 송신자가 트랜잭션 실행을 위해 지불할 용의가 있는 Gas 비용(수수료)의 최대치

To: 트랜잭션 수신자의 주소

Data(init): CA에만 존재, 새로운 CA를 생성하는데 사용되는 EVM 코드 조각

v,r,s : 서명 알고리즘인 ECDSA의 구성 요소

이로부터 발신자의 공개키를 계산할 수 있고 공개키를 해시한 값이 발신자의 address이다.


CA의 code를 활성화시키는 Transaction: Message call (EOA → CA)

- EOA에서 Contract Account(CA)로 보내는 transaction은 CA에 저장된 스마트계약 코드의 기능을 활성화시킴

- 해당 Transaction 설명

Data(data): Message call의 입력 인자

* 해당 트랜잭션은 기존에 존재하는 CA에게 전송하는 것이므로 초기화(init) 데이터는 필요하지 않다. 

 

Message call 트랜잭션으로 인한 Code execution

 

Transaction 내용

nonce: 해당 transaction의 일련번호

gasPrice: 해당 transaction을 수행하는데 필요한 gas의 가격

gasLimit: sender가 transaction 처리를 위해 지불할 수 있는 수수료의 최대치

To: 활성화하려는 스마트 컨트랙트의 주소

Value: 해당 트랜잭션에서는 일반적으로 0으로 설정

Data(init or data): 스마트 컨트랙트에 전달되는 데이터   

v,r,s: 송신자의 공개키를 계산할 수 있는 정보 (ECDSA 서명의 구성 요소) 

 

* EVM: Ethereum Virtual Machine, smart contract 내의 code가 실행되는 가상의 machine

* Every node contains an EVM. 

(EVM과 EVM space, gas 등은 다음 게시글에서 다룰 예정)


CA 간의 Transaction: CA ↔ CA

Smart  contract 간에 상호작용이 필요한 경우 발생

 

CA가 EOA에게 보내는 Transaction: CA → EOA

Smart contract가 EOA에게 트랜잭션을 보내는 경우, 일반적으로 이는 어떤 조건이나 이벤트에 응답하여 자동화된 스마트 컨트랙트 동작을 수행하기 위한 것일 수 있다.


Transaction 처리 순서

Transaction은 동시에 처리할 수 없다. sequential하게 처리되어야 한다.

Transaction은 생성 순서와 처리 순서가 무관하다.

Transaction의 처리 순서는 전적으로 Miner에게 달렸다.

Miner가 Transaction 순서를 자신의 임의로 결정한다.

하지만 합의 방식이 PoW이기 때문에 사실상 어떤 Miner의 Block이 채굴될지 모르므로 random하게 처리되는 것과 같다.

 

'2023-2학기 > 블록체인' 카테고리의 다른 글

Ethereum (account, address, block structure)  (0) 2023.11.28