[블록체인] 5주차_블록체인과 소유권

8 분 소요

이 내용은 K-MOOC 알기쉬운블록체인 강의를 듣고 정리한 내용입니다.

P2P 시스템과 블록체인

이중사용의 문제

1. 지폐 위조에 대한 안전장치

  • 위조 불가능하도록 고유일련번호 사용
  • 위조하기 어렵도록 형광섬유, 워터마크 등 사용

화폐나 물품이 디지털화되어 원장의 분산 P2P 시스템에 관리된다면?: 화폐의 이중사용 문제(Double Spending)

  • 예시) 부동산의 소유권을 관리하는 P2P 시스템
  • 부동산 소유권이 변경되면 시스템의 모든 노드들이 가진 개별 원장 전부를 최신 버전으로 갱신해야 한다.
  • 하지만 굉장히 큰 시스템에서 모든 노드들의 정보를 네트워크 상에서 갱신하는 데에 많은 시간이 걸린다.
  • 모든 노드 정보가 동시에 갱신되지 않고 시간차가 있음 = 시스템의 마지막 피어까지 최신 복사본 가질 때까지 시스템이 일관성 상실
  • 이를 이용해 아직 소유권 변경이 전부 갱신되지 않았을 때 기존 데이터로 새로운 소유권 변경을 만듦 -> 부동산 하나를 B, C 둘에게 판매하는 효과

이중사용 문제의 세 가지 유형

  1. 디지털 재화를 복사해 발생하는 문제
    • 디지털 재화를 복제하여 동일한 돈 반복해서 사용
    • 복사기를 사용해 실물화폐를 복사하는 것과 유사
  2. 원장의 분산 P2P 시스템에서 발생하는 문제
    • 시스템의 모든 피어가 정보를 전달받기까지 발생하는 시간차로 인해 일부 피어가 상이한 소유권을 가지는 현상
    • 먼저 최신 정보를 획득한 피어가 소유권을 한 번 이상 이전할 가능성이 발생하고 결국 이중사용 문제 초래
  3. 분산 P2P 시스템 무결성 침해 사례
    • P2P시스템의 데이터 일관성은 시스템 무결성의 한 측면
    • 이중사용 문제는 시스템 무결성이 침해된 특정 사례

이중사용 문제 해결 방법

1. ‘디지털 재화 복사’하는 이중지불 문제 해결

  • 소유권의 본질과 연관된 문제
  • 어떤 형태로 구현되어 있는지와 상관없이 디지털 재화를 나타내는 데이터와 소유자를 매핑(mapping)할 수 있는 수단만 있으면 해결 가능
  • 매핑 결과를 증명해주는 시스템: 중앙 통제된 실물 책자 혹은 P2P 등의 구조와 상관없는 원장의 올바른 동작

2. 원장 분산 P2P 시스템에서 발생하는 이중사용 문제 해결 방법

  • 원광관리: 특수 응용 분야 존재
  • 블록체인 기술 묶음 활용
    • 어떤 정보를 분산 시스템 내의 모든 사람에게 한정되서 보내는 것이 아니라 정보를 뿌려주는 브로드캐스팅 네트워크 기법
    • 트랜잭션 검증할 수 있는 규칙 등
    • 원장의 분산 P2P 시스템 = 블록체인 구조: 따라서 블록체인 기술묶음을 사용하면 자연스럽게 문제 해결됨

3. P2P 시스템의 무결성이 침해된 이중사용 문제 해결

  • 응용 분야가 특정되어 있지 않음 (블록체인만이 아니라)
  • 시스템의 구체적 용도와 관계 없이 시스템의 무결성을 확보하면 문제 해결
  • 해당 시스템의 응용 분야에 따라 블록체인이 아닌 더 적합한 데이터구조나 알고리즘을 통해 무결성 확보, 유지 가능

‘이중사용’ 문제의 정의

  • 원장의 순수 분산 P2P 시스템에서 발생할 수 있는 취약성
  • 원장의 순수 분산 P2P 시스템의 무결성을 침해하는 중요한 예시
  • 이를 해결하기 위한 도구 = 블록체인 기술묶음

블록체인에서의 소유권

소유권을 관리하는 블록체인 개발하기

1. 블록체인을 처음 만들 때의 고민: 블록체인 구성 과정 이해

  1. 목표: 완전히 개방된 환경에서 잘 동작하는 원장의 순수 분산 P2P 시스템에서 소유권을 관리하는 소프트웨어의 디자인 / 특히 디지털화폐의 소유권 관리

  2. 블록체인 개발을 위한 시스템 주요 고려사항

    1. 시스템은 순수 분산 P2P 시스템이고, 각각의 사용자가 기여한 계산 자원으로 이루어진다.
    2. 시스템의 각 피어, 즉 개별 노드들은 인터넷을 통해 서로 연결되어있다.
    3. 전체 시스템의 노드 개수 및 각 노드의 안전성, 신뢰성을 알 수 없다.
    4. 순수 분산 P2P 시스템 특징: 노드들이 참여를 해도 이 시스템에 참여하고 있는 다른 노드들의 정보를 아무것도 얻을 수 없다.

블록체인 개발을 위한 일곱 가지 과제

  1. 소유권 기술(Description)
  2. 소유권 보호
  3. 트랜잭션 데이터 저장
  4. 신뢰할 수 없는 환경에 배분할 원장 준비
  5. 원장 배분
  6. 원장에 새 트랜잭션 추가
  7. 어느 원장이 진실인지 판단하는 것

1. 소유권 기술(Description)

  • 블록체인 개발의 목적은? 소유권을 관리하는 소프트웨어 시스템 디자인
  • 따라서 소유권을 어떻게 기술(descript)할 것인지 먼저 결정해야 한다.
  • transaction(트랜잭션): 거래 (내역, 기록)
  • 트랜잭션의 전체 이력을 통해 현 소유자 및 과거 소유자까지 확인 가능

2. 소유권 보호

  • 타인이 다른 사람의 자산에 함부러 접근하지 못하도록 보호하는 장치: 암호화기술 등 보안 알고리즘 사용
  • 소유권 보호과정 3단계
    1. 소유주 식별
    2. 소유주 인증
    3. 소유주 승인: 본인만 자산에 접근 가능
  • 해시함수: 일방향성의 특징이 있는 특별한 형태의 함수
    • x가 있을 때 그 x에 대응되는 f(x)를 만들어낸다. 그런데 x를 알고 있으면 f(x)를 쉽게 계산할 수 잉ㅆ지만, f(x)만 알고있는데 그거로부터 x를 알아내는 건 매우 어려운 일방향적 특징

3. 트랜잭션 데이터의 저장

  • 트랜잭션 이력은 소유권을 명확히 하는 핵심요소이기 때문에 안전하게 저장해야 한다.
  • 데이터 저장에 영향을 주는 요소는 보통 데이터구조: 블록체인에서는 블록체인 데이터구조가 디지털 원장으로 사용됨

4.신뢰할 수 없는 환경에 배분할 원장 준비

  • 개발 목표: 신뢰할 수 없는, 분산 환경에서 동작하는 원장의 P2P 시스템 디자인
  • 전체 원장을 조정, 통제하는 중앙 통제 노드 없음 -> 신뢰할 수 없는 각 노드들에 원장의 제어를 맡겨야 한다.
  • 따라서 각 노드들이 악의적인 목적을 가지고 원장 위조하는 행위에 대한 방지책 필요
  • 블록체인 데이터구조는 바꿀 수 없게 + 동시에 새 트랜잭션은 기존 원장에 쉽게 추가할 수 있도록 승인할 수 있어야 한다.

5. 원장 배분

  • 그냥 추가전용 원장 하나 만들고 누구에게나 그 복사본을 주면? ( 안됨)
  • 안 됨: 시스템 내 각 노드 간 상호작용이 어떻게, 어떤 정보를 어떠한 방식으로 주고 받는지, 네트워크 프로토콜, 알고리즘과 관련된 합의 내용 먼저 정해야 함.

6. 원장에 새 트랜잭션 추가

  • 블록체인 데이터구조: 개별적으로 추가만 할 수 있는 추가 전용 데이터구조
  • 각 피어가 새로운 트랜잭션을 추가할 때 유효하고 승인된 트랜잭션만 추가 가능하도록 보장해야 함
  • 해결: 구성원 모두가 새 데이터 추가 가능 + 각 구성원이 각 피어 감독하기
  • 서로 감시, 감독하는 일하면 인센티브 제로

7. 어느 원장이 진실인지 판단하기

  • P2P 시스템에서 각 구성원이 개별 원장에 새 트랜잭션 추가하면, 네트워크 속도 차이로 인해 어쩔 수 없이 각 피어들이 서로 다른 트랜잭션을 서로 다른 시간에 받을 가능성이 생긴다.
  • 예시) A는 이미 물건 ‘집’의 소유권이 B에서 C로 넘어갔다는 사실을 아직 모르는데, B가 A에게 아직 집이 자기 것인 척 집을 팔았다. 이런 식으로 악용하는 것이 이중지불 문제이다.
  • 어떤 이력을 선택할지 결정해 줄 중앙 통제장치가 없음 -> 모든 노드들이 독립적인 다수 의견을 따라 개별적으로 결정해서 해결해야 한다.
  • 즉 각 노드들이 서로 다른 노드와 이야기 나누고 결정하는 것이 아니라, 독립적, 개별적 결정 필요.

블록체인 트랜잭션

소유권 기록과 기술 방식

1. 이어달리기와 비슷한 소유권 관리

  • 블록체인에서 소유권 관리 = 바통을 전달하는 이어달리기와 비슷
  • 특정 팀의 어떤 멤버가 바통을 쥐고 있는지 확인하려면? 직전에 누구에게 바통이 건네졌는지 확인한다
  • 특정 시간에 누가 바통을 쥐고 있었는가 확인하려면? 바통을 건넨 시각과 각 선수의 이름을 기록해둔다.

2. 소유권 기록의 목표

  1. 명확하게 소유권을 기록함
  2. 소유권을 투명하고 모든 사람이 이해 가능하도록 기록
  3. 누구나 자신이 가지고 있었던 자산과 소유권에 대한 명확한 판단을 할 수 있다.

3. 소유권 기록을 위해 해결해야 할 과제

  1. 소유권에 대한 주장 자체를 기록하는 것
  2. 소유권에 대한 주장을 뒷받침할 증거 제공
    • 특히 분산 P2P 시스템에서 어떻게 소유권에 대한 주장과 그 증거들을 증명 가능한 방식으로 기록할 수 있을까?

4. 과제 해결을 위한 아이디어

  1. 소유권의 현 상태를 재산 목록 데이터 형태로 기록한다.
    • 재산 목록 데이터란? 모든 소유자의 전 재산 리스트
  2. 소유권이 이전된 모든 과거 이력(트랜잭션)까지 원장에 모두 기록한다.
    • 트랜잭션(transaction) 데이터: 소유권 이전이 일어날 때마다 누가 누구에게 어떤 아이템을 언제 이전했는지 기록한 데이터
    • 트랜잭션 이력이 곧 소유권을 어떻게 획득했는지 보여주는 증거가 된다.

5. 소유권 기술(description) 방식

  1. 소유권 목록 작성
    • 소유권의 현 상태 설명
    • 은행 계좌의 현 잔고를 보여주는 잔고증명서와 비슷
    • 단순히 소유권을 주장함
  2. 트랜잭션 데이터 작성
    • 소유권의 이전 이력을 기술함
    • 출금, 입금, 자금이체 내역을 모두 표시해주는 거래내역 조회서와 비슷
    • 소유권을 설명하고, 소유권 주장을 뒷받침하는 증거가 됨

블록체인 작동 원리

1. 블록체인으로 소유권을 기록하기 위해 필요한 두 가지 기능

  • 소유권 이전 기술(Description) + 트랜잭션 이력의 유지(Maintenance)
  • 트랜잭션 데이터: 소유권을 이전하려는 계정에 대한 모든 정보 가지고 있음 (누가, 누구에게, 무엇을, 얼마나, 언제 이전했는지 등)
  • 두 기능이 제대로 작동하면 트랜잭션 전체 이력 확보 가능-> 각 계정에 대한 소유권을 이전 받은 계정, 이전 받은 아이템, 이전된 총액에 대한 소유권 정보 재구성 가능
  1. 소유권 이전의 기술(Description)
    • 트랜잭션? 현 소유자의 소유권을 다른 사람에게 이전하는 행위
    • 소유권 이전: 소유권 이전을 위해 필요한 모든 정보를 데이터에 기록함으로써 이루어짐
      • 예시) 은행의 계좌이체 서식: 보내는 사람, 받는 사람의 계좌정보, 송금 금액 등 계좌이체에 필요한 정보 들어있음
    • 블록체인에서 트랜잭션을 기술하기 위해 필요한 정보
      1. 누가 보내는가? 소유권을 이전해주려는 계정의 식별자
      2. 누구에게 보내는가? 소유권을 이전받는 계정의 식별자
      3. 얼마를 보내는가? 이전하려는 재화의 총액
      4. 언제 보내는가? 이전이 완료되는 시간 (예약이체 기능의 경우)
      5. 이체 수수료는? 이전하기 위해 시스템에 지불해야 하는 수수료
      6. 이전에 동의한다는 원 소유자의 증명
    • 대부분 은행거래와 비슷하지만 블록체인은 분산 시스템: 통일된 수수료 체계가 없다는 차이점
  2. 트랜잭션 이력의 유지(Maintenance)
    • 트랜잭션을 수행한다는 것은?
      1. 트랜잭션 데이터에 기록된대로 소유권의 이전이 일어남
      2. 원장에 트랜잭션 데이터를 추가함
      3. 새로 추가된 트랜잭션은 전체 트랜잭션의 한 부분으로써 이후 소유권 명확히하는 증거로 사용됨
    • 블록체인은 모든 트랜잭션을 순서대로 블록체인-데이터구조에 저장하여 전체 이력을 유지한다.
    • 먼저 저장되는 트랜잭션이 먼저 일어난 것으로 간주된다. 즉 기록된 순서가 반드시 트랜잭션이 실제 일어난 순서와 정확하게 일치하는 것은 아니다.
    • 이력에 없는 트랜잭션은 일어난 적이 없다고 간주한다.
    • 따라서 트랜잭션을 추가하면 해당 트랜잭션을 실제로 발생시키고 그 이력을 통해 현재 소유권을 식별하는 데 영향을 미친다.

      내 생각: 그럼 소유권 이전 시도가 있을 때마다 시간 순서대로 빠짐없이 트랜잭션 데이터에 잘 기록해야 실제 이전 및 소유권 증명이 올바르게 일어날 수 있을 것이다. 만약 이런 데이터가 실제와 다르다면 거래는 되었는데 잘못 기록된 수준이 아닌 아예 그 거래 자체가 없었던 일이 될 수도 있겠다.

트랜잭션 순서와 이력의 무결성

1. 트랜잭션 데이터 합치기

  • 블록체인-데이터구조: 모든 이용자의 모든 트랜잭션을 저장하기 위한 자료구조
  • 트랜잭션은 분산 시스템의 개별 노드들이 독립적으로 언제라도 발생시킬 수 있음->즉 모든 트랜잭션들이 하나의 통합된 원장에 저장될 필요가 있다.
  • 트랜잭션 데이터 합치는 이유 = 소유권 명확히 하기: 소유권의 이전 내역을 재구성해서 현재 소유권을 가진 사람을 찾아내고, 그 소유권이 맞는지, 그 소유자가 맞는지를 명확히 하기 위함
  • 따라서 트랜잭션 데이터 합칠 때 실질적으로 발생한 시간 순서대로 동일하게 재현하는 것이 굉장히 중요함
  • 예시) 은행 계좌에 잔고가 있는 경우와 없는 경우
    • 잔고 있는 경우: 어떤 물건을 구매하기 위해 돈을 먼저 인출하고 구매한다.
    • 잔고 없는 경우: 물건을 먼저 받고 나중에 돈을 인출해서 지불하려고 한다?? 구매 불가

2. 트랜잭션 데이터 이력의 무결성의 중요성

  • 트랜잭션 데이터 이력: 소유권을 명확히 하는 기준, 증거
  • 현재 소유자 및 미래의 소유자의 소유권을 명확히 하는데도 이용됨
  • 전체 블록체인 시스템 무결성을 위한 이력 데이터 요구사항: 안전성, 완전성, 정확성, 일관성
  • 오직 유효한(valid) 트랜잭션 데이터만 블록체인-데이터구조에 추가되도록 보장하는 보안 수단 제공해야 함

    최근 블록체인 관련 기사에서 일부 비트코인 내역에는 비트코인 거래와 완전히 상관없는 내용이 적혀있다고 했다. 주로 아동포르노, 회사 기밀 등 불볍적인 정보가 많은 것 같았다. 한 번 작성된 후 삭제 및 위, 변조가 불가능한 블록체인 특성 상 개인의 사생활을 심각하게 침해하거나 타인에게 피해를 줄 만한 내용이 적히면 피해가 클 듯 하다.

3. 트랜잭션 데이터 유효성의 세 가지 측면

  1. 형식적 정확성(formal accuracy)
    • 트랜잭션 데이터가 필요한 모든 정보를 정확한 형식에 맞춰서 기술
    • 개별적, 독립적 다수로 이루어진 분산 시스템에서 합의된 내용을 얻기 위한 합의된 구조, 형식을 따른다.
  2. 의미상 정확성(semantic accuracy)
    • 트랜잭션 데이터의 의미와 의도한 결과와 연관
    • 예시)
      1. 계정에 있는 잔고 이상의 금액이 이전되지 않도록 보장
      2. 이중사용 방지
      3. 한 번의 트랜잭션으로 이전 가능한 최대 금액 제한
      4. 사용자 한 명 당 가능한 트랜잭션 횟수 ㅈ한
      5. 일정 기간 내 사용가능한 총 금액 제한
      6. 아이템 소유권 이전을 위한 최소 보유기간 선정 등
  3. 승인 (approval, authorization)
    • 소유권을 이전하는 본인만 트랜잭션을 실행해달라고 블록체인에 요청할 수 있어야 함
    • 블록체인의 모든 트랜잭션 데이터는 계좌 소유자가 소유권 이전에 동의함을 증명할 수 있는 정보 가지고 있어야 함

알기쉬운블록체인_마인드맵_5주차

댓글남기기