본문 바로가기
블록체인 공부/블록체인 개념

[블록체인 개념-3] 트랜잭션이란? - What is transaction

by 으노으뇨 2023. 1. 23.
728x90
반응형
SMALL

트랜잭션

트랜잭션(Transaction) 은 이더를 전송하거나 스마트컨트랙트를 배포하거나 배포된 스마트 컨트랙트의 함수를 실행한다.

  • 이더전송
  • SC 배포
  • 릴리즈된 SC의 함수 실행

위 3개를 대표적인 트랜잭션이라고 한다.

즉 거래 발생 시 실행되어지는 것과 그의 기록을 트랜잭션(TC)라고 한다.

트랜잭션은 코드 작업의 복잡성과 네트워크 비용을 결정하는 이더리움의 측정 단위인 GAS (가스) 를 소모한다.

트랜잭션의 가스 비용은 트랜잭션 수수료를 계산하는 데 사용된다. 트랜잭션을 실행하는 주소는 블록을 채굴하는 채굴자에게 트랜잭션 수수료를 지불한다.

트랜잭션에는 데이터 필드가 선택적으로 포함될 수 있다.

컨트랙트 배포 트랜잭션의 경우, 그 데이터는 배포될 컨트랙트의 바이트코드가 된다.

스마트 컨트랙트를 호출하는 트랜잭션의 경우 그 데이터 필드에는 호출할 함수의 이름과 인수가 포함된다.

+추가적으로

트랜잭션의 내용에는

  • 공개 주소
  • 거래된 자산에 관한 내용
  • 수수로 정보 

등이 담겨져 있습니다.

작동원리

신용카드결제는 카드사의 DB를 확인하고, 거래되어지는 시점에 DB에 인서트와 업데이트를 통해서 진행되어지는 일련의 수행을 트랜잭션이라고 한다.

블록체인에서는 검증자(노드)들의 승인이 필요합니다.

검증자는 블록체인의 내용을 검증하는 주체로, 한 체인에 다수가 존재하는 것이 특징이다.

트랜잭션의 처리방법은 체인마다 조금씩 다르지만, 공통적으로 개별 검증자들이 트랜잭션의 내용을 검증하게 되고 , 과반수의 검증자가 그 내용에 동의해야합니다.

하나의 트랜잭션은 ID(트랜잭션 고유값)을 가지고 있으며, 이를 이용해서 암호화폐의 전달 여부, 그리고 거래 정보의 유효성을 검사합니다.

따라서 보내는 사람의 잔고와 받는 사람의 잔고의 값을 비교하고 문제가 없음이 확인 되면 트랜잭션은 성공적으로 처리됩니다. 

반면에 잔고부족 등의 오류가 발생되면 트랜잭션은 실패합니다.

트랜잭션 기록 보관하는 방법 : UTXO Model / 계좌잔고 모델

UTXO모델

우선은 제가 이전에 자바로 블록체인을 구현했던 글중 UTXO 모델을 채택한 경우가 있습니다.

https://uno-kim.tistory.com/260

 

[블록체인] 자바로 내 첫 번째 블록체인을 만들어보자 - Part 3. /Java Block Chain / 자바 블록체인

안녕하세요~~~!!! 이번에 포스팅을 할 주제는! 자바로 블록체인을 구현해보고 공부해보는 시간 제 3탄입니다!!! 본 포스팅은 블록체인을 만들어보는 포스팅의 마지막 (파트 3) 이며 지난 블록체인

uno-kim.tistory.com

UTXO 는 Unspent Transaction Output 의 약자로 "소비되지 않은 거래 출력값" 을 의미합니다. 

잔돈이 있는 실제 현금 지갑을 상상하면 이해가 쉽습니다.

우리가 오만원권 한장을 가지고 3만 5천원을 결제한다면, 만 원권 한장 과 오천원권 한 장을 받습니다.

UTXO 모델에서도 마찬가지로 3비트코인을 가지고 1비트코인을 결제하면 2비트코인이 찍힌 UTXO를 받는 것입니다.

예를 들어
A 지갑에 3 BTC가 있고 B 지갑에 2 BTC가 있다고 가정해 봅시다.

A가 B에게 1 BTC를 보낼 때, A의 잔고 3 BTC가 전부 UTXO에 입력됩니다.
UTXO에 잠시 들어간 모습

UTXO에 입력된 3 BTC는 분리되어 2 BTC는 A 지갑으로 돌아가고 1 BTC만 B 지갑으로 전송됩니다.

그럼 이때 B 지갑에는 총 3 BTC가 있다고 생각할 수 있지만,
실제로는 2 BTC가 입력된 UTXO(기존에 있던 UTXO)와 1 BTC가 입력된 UTXO(A가 보낸 UTXO)로 분리되어 존재합니다.
대충 요런식으로?
UTXO 모델은 자금 추적과 거래 검증이 용이합니다.
그러나 UTXO가 과하게 생성될 경우 스마트컨트랙트 연결이 어려워지는 문제점이 있습니다.
(증권사의 Book 거래느낌..?)

계좌 / 잔고 모델

이더리움의 계좌/잔고 모델은 각 지갑이 은행 계좌와 유사하다.

UTXO 모델과 달리 지갑은 총 잔액만 표시한다.

예를들어 
잔고가 1 ETH인 계좌 C에서 잔고가 0 ETH인 계좌 D로 0.5 ETH를 전송하는 트랜잭션이 발생.
이후 계좌 C와 D는 모두 0.5 ETH의 잔고가 나타나게 될 것입니다.

계좌/잔고 모델의 주요 특징은 컨트랙트 제어 지갑의 존재입니다.

지갑은 개인 소유 / 컨트랙트 제어 지갑 두 종류로 분류됩니다.

이 중 컨트랙트 제어 지갑은 스마트 컨트랙트 배포 시 생성되는 지갑으로,

컨트랙트 자체적으로 자금을 가질 수 있어 다양한 DApp(탈중앙화 애플리케이션)의 기반이 됩니다.

계좌/잔고 모델은 UTXO 모델에 비해 트랜잭션 크기가 작아 보관 측면에서 유리하지만,
스마트 컨트랙트의 실행으로 비용이 많이 발생하고 보안이 취약할 수 있다는 단점을 가진다.
728x90
반응형
LIST

댓글