블록 구조 & 트랜잭션 구조

FeelSoo·2022년 6월 25일
0

블록체인은 블록 + 체인, 블록이 다른 블록들과 연결되어 있는 구조다.

블록은 Header + Body 구조이며

Header는 MetaData,

Body는 Transaction Lists

로 구성되어 있다.




MetaData는 해당 블록을 설명하는 데이터다. 다음과 같은 정보를 담고 있다.

  • 해당 블록이 체인 중 몇 번째 블록인지
  • 이 블록에 몇 개의 트랜잭션 존재하는지
  • 이 블록 생성자
  • 블록 크기, 총 전송량 등의 정보


    메타데이터에는 논스(Nonce)값이 있고 이 논스는 트랜잭션의 논스와는 다른 역할을 한다.

아래 사진은 블록과 트랜잭션의 구조를 보여주고 있다.



다음 사진은 비트코인과 이더리움 트랜잭션 데이터의 구조에 대한 것이다. 둘 간의 트랜잭션 데이터 구조 차이는 논스의 유무가 가장 중요하다. ( 비트코인 논스 X, 이더리움 논스 존재 )

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

  • 거래 전송시(Transaction) 논스는 1씩 증가한다

  • 논스는 계정에서 유일하며, 동일한 논스가 존재하지 않는다




논스는 발신 주소의 속성이며, 발신 주소의 컨텍스트 안에서만 의미를 갖는다.

논스는 중복되지 않고 순차적이기 때문에 같은 논스에 여러 트랜잭션 전송이 발생했다면 해당 논스 중 제일 높은 가스비를 지불한 트랜잭션이 처리된다.



이더리움은 이런 방법으로 이중 지불 문제를 방지한다.

만약 논스가 0인 트랜잭션 전송 후 논스가 2인 트랜잭션 전송하면, 두 번째 트랜잭션은 어떤 블록에도 포함되지 않는다. 이더리움 네트워크는 누락된 논스가 나타날 때까지 기다리는 동안 두 번째 논스를 멤풀(Mempool)에 저장한다.

논스가 1인 누락된 트랜잭션을 전송하면, 두 트랜잭션이 처리가 되고 블록에 포함된다.


비트코인과 이더리움 논스의 유무 차이는 결국, 이중지불의 방지를 위해서다.

이더리움 같은 경우 논스값으로 이중 지불을 방지하고

비트코인 같은 경우 UTXO ( Inspent Transaction Outputs, 미사용 트랜잭션 출력값 ) 을 통해 해결한다.

profile
세상은 넓고 배울건 많다

0개의 댓글