데이터베이스

허정·2022년 3월 3일
0

블록체인

목록 보기
3/38

블록체인이란 P2P네트워크를 통해서 관리되는 분산 데이터베이스의 한 형태입니다. 거래 정보를 담은 장부(원장)를 중앙 서버에 저장하는 것이 아닌, 블록체인 네트워크에 연결된 컴퓨터들에 저장 및 보관하는 기술입니다.

1. 공개 범위

활용되는 목적 또는 공개 범위에 따라 다양한 방법으로 블록체인 네트워크를 구축할 수 있습니다. 퍼블릭, 프라이빗, 컨소시엄 블록체인에 대해서 알아보자.

(1) 퍼블릭 블록체인

개방형 블록체인으로 누구나 트랜잭션을 생성할 수 있는 블록체인입니다. 트랜잭션 내역이 모두 공개되기 때문에, 네트워크에 참여한 모든 노드들은 이를 상호검증하고 거래를 승인합니다. 따라서 신뢰도가 높습니다. 하지만 모든 노드들이 거래를 검증하고 기록을 남기기 때문에, 처리 속도가 느리다는 단점이 있습니다.

(2) 프라이빗 블록체인

폐쇄형 블록체인으로 퍼블릭 블록체인의 상대적 개념입니다. 서비스 제공자의 승인을 받아야만 참여할 수 있으며, 주로 기업에서 활용하여 Enterprise Blockchain이라고도 합니다. 중앙화된 플랫폼이라는 특징이 있습니다.

(3) 컨소시엄 블록체인

동일한 목적이나 가치를 가지고 있는 다수의 기업이나 단체들이 하나의 컨소시엄을 구성하여 작동하는 블록체인입니다. 퍼블릭과 프라이빗의 중간 형태의 블록체인으로, 중앙 관리자에 의해 승인 받은 참여자만이 블록 생성에 참여할 수 있는 프라이빗 블록체인과 유사한 개념입니다. 여러 기관이 하나의 컨소시엄을 구성하여 공정성과 확장성을 보완하였습니다. 다수의 참여자의 협의가 필요한 분야에서는 컨소시엄 블록체인이 프라이빗 블록체인보다 효과적입니다.

2. 분산원장기술(DLT)

분산원장은 거래 정보를 기록한 원장을 특정 기관의 중앙화된 서버가 아닌 분산화된 네트워크에서 참여자들이 공동으로 기록 및 관리하는 기술로 분산원장기술로 불리기도 합니다.
분산: 광범위하게 널리 분포되어 있음
원장: 거래내역이 기록된 장부

(1) 중앙집중원장의 취약점

  • 비용 문제
    제 3자인 중앙집중형 관리시스템은 거래자들 사이에서 과도한 관리, 중개수수료를 청구합니다. 금융권의 경우 매년 천문학적인 돈을 보안인프라에 투자하기도 합니다. 그 비용은 모두 우리에게 부담되는 것과 마찬가지입니다.
  • 시간 문제
    중앙집중형 관리시스템은 상호 거래의 프로세스 전반에 많은 중간 다리가 포함되어 있기에, 시간과 비용 측면의 효율성이 떨어집니다.

(ex) 해외물류
화주부터 트럭회사, 해운사, 보험사까지 많은 중간 이해관계자가 존재합니다. 이렇게 많은 미들맨들이 존재할 경우, 프로세스 전반에 걸쳐 시간과 비용이 증가하여 효율성이 떨어집니다.

(ex) 주식대금 결제가 3일 걸리는 사례
우리나라의 증권예탁결제제도는 3일 거래 방식(D+2)을 채택하고 있습니다.

  • 보안 문제
    중앙집중형 데이터베이스에서 해커들의 공격 대상은 중앙집중형 데이터베이스 뿐이빈다. 공격에 성공한다면 중앙에 있는 모든 데이터 보안이 뚫리게 됩니다. 이를 Single Point of Failure(단일 실패점)이라고 합니다.

(2) 중앙집중원장의 장점

  • 인증과 증명의 효율성, 시스템 안정성, 보안성, 투명성
    기존 시스템의 경우 인증과 데이터 거래 증명을 위해 여러 중간 매개체 또는 인증기관이 필요했지만 분산원장은 사용자가 거래 내역을 직접 공유할 수 있는 시스템이라는 차별성을 가지게 됩니다. 중앙화된 시스템을 관리시 사용되는 비용이 줄어들고, 거래 정보가 분산되어 저장되기 때문에 해킹 및 위조의 위험성도 낮아집니다.

3. 트랜잭션

블록은 거래의 기록 단위로 다수의 트랜잭션을 포함할 수 있습니다.

  • 이 블록은 체인 중 몇 번째 블록인지
  • 이 블록에 몇 개의 트랜잭션이 있는지
  • 이 블록 생성은 누가 했는지
  • 이 블록의 크기, 총 전송량 등은 얼마인지

이런 정보들을 메타데이터라고 합니다. 블록이라는 데이터를 설명하는 데이터이기 때문입니다. 헤더 안의 메타데이터에는 Nonce값이 있는데, 이 논스는 트랜잭션의 논스와는 다른 역할을 합니다.

(1) 트랜잭션이란
데이터베이스의 상태를 변화시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위입니다. 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 ACID라고 합니다.

(2) 비트코인과 이더리움의 트랜잭션 데이터 구조 차이
논스의 유무가 가장 큰 차이입니다. 이더리움 트랜잭션 논스의 특징은 2가지입니다.

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

논스는 발신 주소의 속성이며, 발신 주소의 컨텍스트 안에서만 의미를 갖습니다. 그러나 블록체인 계정 상태에 저장되지 않고, 해당 주소에서 발생한 확인된 트랜잭션 건수를 세어서 동적으로 계산되는 값이 논스입니다.
논스는 중복되지 않고 순차적이기 때문에, 같은 논스에 여러 트랜잭션 전송이 발생하였다면 해당 논스 중 제일 높은 가스비를 지불한 트랜잭션이 처리됩니다. 이더리움은 이런 방법으로 이중 지불 문제를 방지합니다.

(cf) Mempool
이더리움 네트워크에서는 논스가 0인 트랜잭션 전송 후 논스가 2인 트랜잭션을 전송되는 경우를 생각해보자. 두 번째 트랜잭션은 어떤 블록에도 포함되지 않고, 누락된 논스가 나타날 때까지 기다리는 동안 두 번째 논스를 멤풀에 저장합니다.

모든 트랜잭션은 일회성입니다. 하나의 트랜잭션은 하나의 상태만 변화시킬 수 있습니다. 이 문제를 해결하기 위해 비트코인의 경우, UTXO를 통해 해결하고, 이더리움은 어카운트 기반 시스템으로 논스값을 각 트랜잭션이 오직 한번만 처리되게 하는 카운터로 사용합니다. 즉, UTXO와 어카운트 기반의 프로토콜 차이 때문에 이더리움 트랜잭션의 논스가 있고, 이 논스는 트랜잭션을 발신한 사람이 트랜잭션에 필요한 메시지 (이더리움 트랜잭션에 필요한 데이터) 재사용을 방지하기 위함입니다.

0개의 댓글