개요
이더리움 블록체인 네트워크에서는 데이터 읽기(Reading)
와 수정(Writing)
이 구분된다. 블록체인에서 데이터를 읽어오는 것은 네트워크를 참조하는 것이기 때문에 가스비(Gas)가 소모되지 않지만, 블록 데이터를 업데이트하는 것은 가스비가 발생하기 때문이다. 이러한 관점에서 데이터를 단순히 읽어오는 작업을 콜(Call)이라고 하며, 블록 수정이 필요한 작업을 트렌젝션(Transaction)이라고 한다.
트렌젝션 (Transaction)
트렉젝션이 발생한다는 것은 블록체인 네트워크 상태(State)가 변경된다는 것과 같다(Writing). 이러한 상태 변경은 어카운트(Acount)들 사이의 이더(Ether) 교환, 블록체인 네트워크에 스마트 컨트렉트의 배포(Deploy), 배포된 컨트렉트의 함수에서 블록체인에 저장된 상태 변수(State Variable) 값의 변경 등에서 발생할 수 있다.
트렌젝션에서는 가스(Gas)라는 비용이 발생하며, 그 요청 반영되기까지 시간이 소요된다. 가스비의 경우 발생한 트렌젝션이 블록체인 운영자(혹은 채굴자)로 부터 해당 트렌젝션을 블록화(채굴)하는데 지불하는 일종의 수고비와 같으며, 그렇게 생성된 블록이 블록체인 네트워크에 반영되고 다른 블록체인 운영자들에게 검증받기까지 시간이 소요된다.
트렌젝션이 성공적으로 반영되면 블록체인 네트워크에 올라간 트렌젝션의 아이디(Transaction Id)를 반환받게 된다.
정리하면 트렌젝션의 특징은 다음과 같다.
- 블록체인 네트워크 상태를 변경
- 가스비 발생 (이더로 지불)
- 시간이 소요됨 (즉시 반영되지 않음)
- 트렌젝션 반영 시, 해당 트렌젝션 아이디를 반환함 (Transaction ID)
콜 (Call)
콜은 트렌젝션과 비슷한 듯 하지만 조금 다르다. 콜은 블록체인 상에서 단순히 데이터를 읽어오는 개념이다(Reading). 블록체인 상태를 변경시키지 않는다. 콜 요청은 이미 네트워크에 배포되어 공개된 데이터를 그대로 읽어오는 작업이다. 그렇기 때문에 트렌젝션처럼 가스비를 지불하지 않아도 되며, 요청에 대한 응답 역시 즉시 이루어진다.
콜의 특징을 정리하면 다음과 같다.
- 블록체인 네트워크 상태를 변경하지 않음
- 비용이 들지 않음 (가스비 X)
- 요청에 대한 응답이 즉각 이루어짐
- 데이터를 읽어오는 것이기 때문에 반환 데이터가 존재함
정리
블록체인 네트워크에 어떠한 요청이 발생할 때, 두 가지 개념으로 정리된다. 트렌젝션(Transaction)과 콜(Call)이다. 이 둘의 차이는 블록체인 상태(State)를 수정(Writing)하는지, 아니면 단순히 데이터를 읽기만(Writing)하는지에 있다. 블록의 상태를 변경하면 네트워크 구조에 영향을 주는 것이기 때문에 가스(Gas)라는 비용이 발생하고, 반영되기까지 시간이 걸린다. 이러한 요청을 트렌젝션(Transaction)이라고 한다. 반대로, 단순히 네트워크에 공개된 데이터를 읽어오는 작업은 블록체인에 별다른 영향을 주지 않는다. 가스가 청구되지 않으며, 응답은 즉각 이루어진다. 이러한 요청을 콜(Call)이라고 한다.
스마트 컨트렉트 개발자라면 코드를 작성할 때, 이 코드가 네트워크 상태를 변경시키는지 그렇지 않는지를 생각하면 된다. 해당 코드가 블록체인을 수정(Writing)하는 코드인지, 읽어오는(Reading) 코드인지 생각하면 자연스럽게 트렌젝션과 콜을 구별할 수 있게 될 것이다.
'Blockchain > Ethereum' 카테고리의 다른 글
[Ethereum] ERC-20 (0) | 2022.03.23 |
---|---|
[Ethereum] ERC란? (0) | 2022.03.22 |
[Ethereum] Web3.js 라이브러리 (0) | 2022.03.17 |
[Ethereum] DApp과 이더리움 프로그래밍 (0) | 2022.03.06 |
[Ethereum] 이더리움 프로그래밍 참고 사이트 (0) | 2022.03.06 |
댓글