개발하기좋은날

블록체인 구조로 알아보는 비트코인과 이더리움의 차이 본문

BlockChain

블록체인 구조로 알아보는 비트코인과 이더리움의 차이

devbi 2022. 6. 28. 16:47
반응형

블록체인에서 블록은 헤더(Header) + 바디(Body)로 구성되어있다 

- 헤더(Header)는 메타데이터

- 바디(Body)는 트랜잭션의 리스트로 구성 

 

메타 데이터는

- 해당 블록은 체인에서 몇 번째 블록인지

- 해당 블록에서 몇 개의 트랜잭션이 있는지

- 해당 블록 생성은 누가 했는가 

- 해당 블록의 크기, 총 전송량은 얼마인가 

 

블록(Block)을 설명하기위해 필요한 데이터들이 들어있다

* 참고로 헤더에 Nonce 값은 Body Nonce랑은 다른 역할

 

그럼 Body에서 트랜잭션은 무엇인가? 

 

먼저 트랜잭션이란, 위키 설명에서는 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위

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

 

블록체인 구조

 

 

이러한 블록체인의 구조에서 트랜잭션은 체인마다 다른 특성을 지니는데 

대표적인 비트코인과 이더리움에 대해서 그 차이점을 알아보겠다 

 

비트코인과 이더리움의 트랜잭션 데이터 구조는 아래와 같고 논스(Nonce) 유무가 가장 큰 차이다

 

이더리움 트랜잭션 논스(Nonce) 특징은 2가지 

- 거래 전송(Transaction)시 논스는 1씩 증가

- 논스는 계정에서 유일, 동일한 논스는 존재하지 않는다. 

 

좀 더 얘기하자면 

논스는 발신 주소(계정)의 속성인데, 발신 주소의 컨텍스트 안에서만 의미를 갖는다  

더 풀어서 쉽게 얘기하자면 트랜잭션을 식별하기위한 데이터베이스 Auto Increment index라고 생각 하면된다

 

예를 들어 송진자(발신자)가 여러개의 트랜잭션을 전송하면 각각의 논스는 순차적으로 부여되서 보내지게되고 

이더리움 네트워크에서 해당 트랜잭션을 순차적으로 처리하게된다 

 

논스가 중복으로 온다면 어떻게 될까?

논스가 0인 트랜잭션을 먼저 보내고 같은 번호인 논스로 트랜잭션을 보내게되면 두개중 제일 높은 가스비를 지불한 트랜잭션이 처리가된다  

 

논스가 중간에 누락이 된다면 어떻게 될까?

논스가 0인 트랜잭션 전송 후 논스가 2인 트랜잭션을 전송하면 2인 트랜잭션은 맴풀(Mempool)에 대기 하게된다

이후 논스가1인 트랜잭션이 올때까지 기다렸다가 논스1 트랜잭션이 오게되면 맴풀에서 꺼내서 두개를 처리하게 된다 

 

멤풀 이란? 아직 블록에 들어가지 않은 상태의 트랜잭션들이 어떤 공간에 있는 것을 의미

 

결과적으로 비트코인과 이더리움 논스의 유무차이는, 이중지불 방지를 위함이다 

 

이중 지불이란? 원본 파일에 저장된 가치를 지불한뒤, 해당 파일을 복사하여 다른 사람에게 또 지불하는 것을 말함 

 

- 비트코인은 UTXO을 통해 이중 지불을 해결

- 이더리움은 어카운트 기반 시스템으로 논스 값을 각 트랜잭션이 오직 한번만 처리되게 하는 카운터로 사용하여 해결

 

각각의 방법에 대해 좀더 자세히 알아보자 

 

UTXO(Unspent Transaction Outputs)

- 미사용 트랜잭션 출력값(미지출 거래 출력)을 의미 

- 이더리움의 어카운트(Account) 모델과 달리 계정이나 잔고가 없고, 블록체인에 기록된 소비되지 않은 출력 값을 통해 거래의 유효성을 검사하여 코인 여부를 확인

- 코인이 지갑에 저장되는 것이 아니라 UTXO에 저장 

 

이더리움 - 어카운트(Account)

- 이더리움 주소 + 개인키(Private key)의 조합 

- 이더리움 계정은 이더 잔고를 보유하고 트랜잭션을 전송

 

이더리움은 2가지 유형의 계정이 존재한다

- 외부 소유 계정(EOA)

위에서 말한, 공개 주소 + 개인키 조합을 말한다

외부 소유 계정, 외부 계정을 사용하면 다른 계정과 이더를 송수신하고 스마트 컨트랙트에 트랜잭션을 보낼 수 있음 

- 컨트랜트 계정(CA)

해당 계정은 상응하는 개인키가 없다

이 계정은 스마트 계약을 블록체인에 배포할때 생성된다 

EOA 사용가능한 기능은 전부 사용가능하며 컨트랙트 관련 코드나 EOA 나 다른 컨트랙트의 호출을 받아 트랜잭션을 발생시키는 기능을 갖는다 

 

결과적으로 비트코인 UTXO, 이더리움의 어카운트는 특징별로 각각의 구현하고자하는 개발 주체에 따라 사용을 달리하면된다 

화폐의 역할에 충실해야한다면 비트코인의 UTXO가 한번 사용되고 사라져 익명성과 보안성이 강해서 유리하고 

dApp 같이 다양한 기능을 구현하고 싶다면 스마트 컨트랙트 활용이 가능한 이더리움의 어카운트가 타당하다

 

 

 

 

 

 

 

반응형
Comments