Blockchain에서의 transaction에 대하여
Transaction
개념
일반적인 의미의 Transaction
개인 간의 거래
를 의미 합니다.
graph LR
account1(A 계좌) --->|돈| account2(B 계좌)
account2 --->|돈| account1
컴퓨터 과학에서의 Transaction
Transaction은 쪼개질 수 없는 작업 처리의 단위
를 뜻합니다.
이해를 돕기 위한 예시
A 은행에서 B 은행으로 송금하려 하는 상황입니다.
아래의 과정을 통해 송금 작업이 이루어질 것입니다.
- A 은행 계좌의 잔액을 송금하려는 금액만큼 뺀다.
- 송금하려는 금액을 B 은행 계좌의 잔액에 더한다.
graph LR
aBank((A 은행))
bBank((B 은행))
transfer[송금]
aBank-->transfer-->bBank
송금 작업에서 1, 2 과정은 순서대로 행해져야
하며, 둘 중 하나만 진행되어선 안됩니다
.
→ 쪼갤 수 없기 때문에 일부만 동작해서는 안된다는 것이 핵심
Blockchain에서의 Transaction
Blockchain
의 상태를 변환 시키는 하나의 기능을 수행하기 위한 작업의 단위
- Bitcoin
A wallet에서 B wallet으로의 bit 이동 (Transfer)
→ A / B wallet의 잔액 변경 - Ethereum
1. A wallet에서 B wallet으로의 ether 이동 (Transfer)
→ A / B wallet 의 잔액 변경
2. Smart contract 의 계약 내용 이행 (Invoke)
→ contract 관련 data 변경
→ Blockchain
의 내용을 변경하는 행위라고 할 수 있습니다.
Transaction 구조
Bitcoin
설명 | |
---|---|
Version 번호 | 채굴자와 node가 transaction 처리에 사용할 규칙을 지정하는 데 사용 |
입력 counter | Transaction 에 포함된 입력의 개수 |
입력 list | 하나 이상의 Transaction 입력이 포함됨 |
출력 counter | 출력의 개수 |
출력 list | transaction에 포함된 출력 목록 |
Lock 시간 | transaction이 유효해지는 가장 빠른 시간을 정의 |
Ethereum
설명 | |
---|---|
Nonce | Wallet의 Transaction Count |
Gas 가격(gasPrice) | Transaction 요청자가 지급하는 Gas 수수료의 가격 (단위: wei) |
Gas 한도(gasLimit) | 사용할 gas의 최대치, 한도가 넘는 gas 가 사용된다면 transaction은 실패한다. |
수신자(toAddress) | Transaction 요청을 받는 수신자(목적지 주소) |
값(Value) | 수신자에게 보내는 Coin의 양 |
Data | Smart contract 에 사용되는 data |
v, r, s | Digital 서명의 세 가지 구성 요소 |
→ nonce 값을 통해 동일 transaction을 동시에 2번 이상 일으키는 행위를 방지함.
Transaction 특징
- 이중 지불 (Double spending) 문제를 해결할 수 있음.
Bitcoin → UXTO / Ethereum → nonce - 투명성
누구나 내역을 확인할 수 있음.
Ethereum에서의 gas
Gas 란?
graph LR
user(사용자)
ether(((Ethereum Network)))
computing[(자원)]
result[[작업 결과]]
user-->|작업 요청|ether
computing-->|사용량 -> Gas|ether
ether-->result
Ethereum network 에서 특정 작업을 수행하는데 필요한 computing power의 양을 측정하는 단위
→어떠한 특정 작업이 network의 자원을 얼마나 사용하는 가를 수치화 한 것!
Gas 는 왜 필요한가요?
- Network 유지에 필요한 보상
Ethereum network 에서 transaction을 실행시키기 위해서는 network의 자원을 사용해야 합니다. ( Computing 작업)
→ Ethereum network를 사용하는 user들이 자원을 사용하고 그에 적절한 수수료를 부과하여 ethereum network를 유지하는 user[node]들에게 보상으로 제공하기 위해서 입니다.
graph TD
user(사용자)
transaction[Transaction]
ether(((Ether Network)))
node1([Node])
node2([Node])
node3([Node])
user-->|요청|transaction
transaction-->|수행 & Gas 수수료 수령|ether
ether-->|Gas fee|node1
ether-->|Gas fee|node2
ether-->|Gas fee|node3
node1-->|자원|ether
node2-->|자원|ether
node3-->|자원|ether
- 악의적인 행위자(Hacker)가 network에 스팸을 보내는 것(ex. DDOS)을 방지합니다.
→ Ether coin을 소지하고 있어야 한다는 것 만으로도 많은 제약이 생기기 때문입니다.