제로하우스

[TIL] 04 블록체인 거래 본문

Blockchain

[TIL] 04 블록체인 거래

송제로투 2022. 9. 22. 11:53

블록체인 구조

블록체인에서 블록은 Header와 Body로 이루어져 있고, header는 메타데이터, body는 트랜잭션들의 리스트로 구성되어 있다.

헤더(header) 안의 메타데이터에는 논스(nonce) 값이 있는데, 이 논스는 트랜잭션의 논스와는 다른 역할을 한다.

 

Transaction

트랜잭션(Transaction)이란, 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위라고 하며, 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약여 ACID를 통해 트랜잭션의 특성을 알 수 있다.

블록체인에서의 트랜잭션은 상호작용 및 작업 수행의 논리적 단위이다. 블록체인 상의 모든 활동은 트랜잭션을 통해 이루어지고, 추상적인 관점에서 트랜잭션은 블록체인의 상태(state)를 변화시키는 일련의 작업을 내포하고 있다.

 

Transaction 구조

비트코인과 이더리움의 트랜잭션 데이터 구조는 각각 다음과 같고, 논스(nonce)의 유무가 가장 큰 차이이다.

비트코인

필드설명

버전 번호 채굴자와 노드가 트랜잭션 처리에 사용할 규칙을 지정하는데 사용
입력 카운터 트랜잭션에 포함된 입력의 개수
입력 리스트 블록의 첫 트랜잭션은 Coinbase Transaction.
입력 리스트에는 하나 이상의 트랜잭션 입력이 포함
출력 카운터 출력의 개수를 나타내는 양의 정수
출력 리스트 트랜잭션에 포함된 출력
Lock 시간 트랜잭션이 유효해지는 가장 빠른 시간을 정의하는 필드

이더리움

필드설명

논스(Nonce) 발신 EOA에 의해 발행되어 메시지 재사용을 방지하는데 사용되는 일련번호
가스 가격(Gas Price) 발신자가 지급하는 가스 가격
가스 한도(Gas Limit) 이 트랜잭션을 위해 구입할 가스의 최대량
수신자(Recipient) 목적지 이더리움의 주소
값(Value) 목적지에 보낼 이더의 양
데이터(Data) 가변 길이 binary data payload
v, r, s EOA의 ECDSA 디지털 서명의 세가지 구성 요소

 

Nonce

이더리움 트랜잭션 논스(nonce)의 특징은 2가지가 있다.

  • 거래 전송(Transaction) 시 논스는 1씩 증가한다.
  • 논스는 계정에서 유일하며, 동일한 논스는 존재하지 않는다.

논스는 발신 주소의 속성인데, 명시적으로 블록체인 계정 상태에 저장되지 않고, 해당 주소에서 발생한 확인된 트랜잭션 건수를 세어서 동적으로 계산된다. 논스는 중복되지 않고 순차적이기 때문에, 같은 논스에 여러 트랜잭션 전송이 발생하는 경우, 해당 논스 중 제일 높은 가시브를 지불한 트랜잭션이 처리된다. 이더리움에서는 이러한 방법으로 이중 지불 문제를 방지하며, 누락된 논스가 나타날 때까지 기다리는 동안 두 번째 논스를 멤풀(mempool)에 저장시킨다.

  • 이중지불(Double Spending): 원본 파일에 저장된 가치를 지불한 뒤, 해당 파일을 복사하여 다른 사람에게 또 지불하는 것
  • 멤풀(Mempool): 아직 블록에 들어가지 않은 상태의 트랜잭션들이 어떤 공간이 있는 것을 의미

만약, 논스가 0인 트랙잭션 전송 후 논스가 2인 트랜잭션을 전송하면, 두 번째 트랜잭션은 어떤 블록에도 포함되지 않고 멤풀에 저장된다. 그리고 그 다음으로 논스가 1인, 누락된 트랜잭션을 전송하면, 두 트랜잭션이 처리가 되고 블록에 포함된다.

모든 트랜잭션은 일회성이며, 하나의 트랜잭션은 하나의 상태만 변화시킬 수 있다.

이 문제를 해결하기 위해 비트코인와 이더리움은 각각 다음의 방법을 사용한다.

  • 비트코인: UTXO(Unspent Transaction Outputs)를 통해 해결
  • 이더리움: Account 기반 시스템으로 논스 값을 각 트랜잭션이 오직 한 번만 처리되게하는 카운터 사용

즉, UTXO와 account 기반의 프로토콜 차이 때문에 이더리움 트랜잭션의 논스가 있고, 이 논스는 트랜잭션을 발신한 사람이 트랜잭션에 필요한 메시지(이더리움 트랜잭션에 필요한 데이터) 재사용을 방지하기 위함이다.

 

Copyright © 2022 Song_Artish

'Blockchain' 카테고리의 다른 글

[TIL] 06 블록체인 유형  (1) 2022.09.26
[TIL] 05 노드  (1) 2022.09.23
[TIL] 03 분산원장기술(DLT)  (1) 2022.09.21
[TIL] 02 분산데이터베이스(DDBMS)  (0) 2022.09.20
[TIL] 01 블록체인 Intro  (1) 2022.09.19
Comments