[블록체인] 5주차_블록체인과 소유권
이 내용은 K-MOOC 알기쉬운블록체인 강의를 듣고 정리한 내용입니다.
P2P 시스템과 블록체인
이중사용의 문제
1. 지폐 위조에 대한 안전장치
- 위조 불가능하도록 고유일련번호 사용
- 위조하기 어렵도록 형광섬유, 워터마크 등 사용
화폐나 물품이 디지털화되어 원장의 분산 P2P 시스템에 관리된다면?: 화폐의 이중사용 문제(Double Spending)
- 예시) 부동산의 소유권을 관리하는 P2P 시스템
- 부동산 소유권이 변경되면 시스템의 모든 노드들이 가진 개별 원장 전부를 최신 버전으로 갱신해야 한다.
- 하지만 굉장히 큰 시스템에서 모든 노드들의 정보를 네트워크 상에서 갱신하는 데에 많은 시간이 걸린다.
- 모든 노드 정보가 동시에 갱신되지 않고 시간차가 있음 = 시스템의 마지막 피어까지 최신 복사본 가질 때까지 시스템이 일관성 상실
- 이를 이용해 아직 소유권 변경이 전부 갱신되지 않았을 때 기존 데이터로 새로운 소유권 변경을 만듦 -> 부동산 하나를 B, C 둘에게 판매하는 효과
이중사용 문제의 세 가지 유형
- 디지털 재화를 복사해 발생하는 문제
- 디지털 재화를 복제하여 동일한 돈 반복해서 사용
- 복사기를 사용해 실물화폐를 복사하는 것과 유사
- 원장의 분산 P2P 시스템에서 발생하는 문제
- 시스템의 모든 피어가 정보를 전달받기까지 발생하는 시간차로 인해 일부 피어가 상이한 소유권을 가지는 현상
- 먼저 최신 정보를 획득한 피어가 소유권을 한 번 이상 이전할 가능성이 발생하고 결국 이중사용 문제 초래
- 분산 P2P 시스템 무결성 침해 사례
- P2P시스템의 데이터 일관성은 시스템 무결성의 한 측면
- 이중사용 문제는 시스템 무결성이 침해된 특정 사례
이중사용 문제 해결 방법
1. ‘디지털 재화 복사’하는 이중지불 문제 해결
- 소유권의 본질과 연관된 문제
- 어떤 형태로 구현되어 있는지와 상관없이 디지털 재화를 나타내는 데이터와 소유자를 매핑(mapping)할 수 있는 수단만 있으면 해결 가능
- 매핑 결과를 증명해주는 시스템: 중앙 통제된 실물 책자 혹은 P2P 등의 구조와 상관없는 원장의 올바른 동작
2. 원장 분산 P2P 시스템에서 발생하는 이중사용 문제 해결 방법
원광관리
: 특수 응용 분야 존재- 블록체인 기술 묶음 활용
- 어떤 정보를 분산 시스템 내의 모든 사람에게 한정되서 보내는 것이 아니라 정보를 뿌려주는 브로드캐스팅 네트워크 기법
- 트랜잭션 검증할 수 있는 규칙 등
- 원장의 분산 P2P 시스템 = 블록체인 구조: 따라서 블록체인 기술묶음을 사용하면 자연스럽게 문제 해결됨
3. P2P 시스템의 무결성이 침해된 이중사용 문제 해결
- 응용 분야가 특정되어 있지 않음 (블록체인만이 아니라)
- 시스템의 구체적 용도와 관계 없이 시스템의 무결성을 확보하면 문제 해결
- 해당 시스템의 응용 분야에 따라 블록체인이 아닌 더 적합한 데이터구조나 알고리즘을 통해 무결성 확보, 유지 가능
‘이중사용’ 문제의 정의
- 원장의 순수 분산 P2P 시스템에서 발생할 수 있는 취약성
- 원장의 순수 분산 P2P 시스템의 무결성을 침해하는 중요한 예시
- 이를 해결하기 위한 도구 = 블록체인 기술묶음
블록체인에서의 소유권
소유권을 관리하는 블록체인 개발하기
1. 블록체인을 처음 만들 때의 고민: 블록체인 구성 과정 이해
-
목표: 완전히 개방된 환경에서 잘 동작하는 원장의 순수 분산 P2P 시스템에서 소유권을 관리하는 소프트웨어의 디자인 / 특히 디지털화폐의 소유권 관리
-
블록체인 개발을 위한 시스템 주요 고려사항
- 시스템은 순수 분산 P2P 시스템이고, 각각의 사용자가 기여한 계산 자원으로 이루어진다.
- 시스템의 각 피어, 즉 개별 노드들은
인터넷
을 통해 서로 연결되어있다. - 전체 시스템의 노드 개수 및 각 노드의 안전성, 신뢰성을 알 수 없다.
- 순수 분산 P2P 시스템 특징: 노드들이 참여를 해도 이 시스템에 참여하고 있는 다른 노드들의 정보를 아무것도 얻을 수 없다.
블록체인 개발을 위한 일곱 가지 과제
- 소유권 기술(Description)
- 소유권 보호
- 트랜잭션 데이터 저장
- 신뢰할 수 없는 환경에 배분할 원장 준비
- 원장 배분
- 원장에 새 트랜잭션 추가
- 어느 원장이 진실인지 판단하는 것
1. 소유권 기술(Description)
- 블록체인 개발의 목적은? 소유권을 관리하는 소프트웨어 시스템 디자인
- 따라서 소유권을 어떻게 기술(descript)할 것인지 먼저 결정해야 한다.
- transaction(트랜잭션): 거래 (내역, 기록)
- 트랜잭션의 전체 이력을 통해 현 소유자 및 과거 소유자까지 확인 가능
2. 소유권 보호
- 타인이 다른 사람의 자산에 함부러 접근하지 못하도록 보호하는 장치: 암호화기술 등 보안 알고리즘 사용
- 소유권 보호과정 3단계
- 소유주 식별
- 소유주 인증
- 소유주 승인: 본인만 자산에 접근 가능
해시함수
:일방향성
의 특징이 있는 특별한 형태의 함수- x가 있을 때 그 x에 대응되는 f(x)를 만들어낸다. 그런데 x를 알고 있으면 f(x)를 쉽게 계산할 수 잉ㅆ지만, f(x)만 알고있는데 그거로부터 x를 알아내는 건 매우 어려운 일방향적 특징
- x가 있을 때 그 x에 대응되는 f(x)를 만들어낸다. 그런데 x를 알고 있으면 f(x)를 쉽게 계산할 수 잉ㅆ지만, f(x)만 알고있는데 그거로부터 x를 알아내는 건 매우 어려운 일방향적 특징
3. 트랜잭션 데이터의 저장
- 트랜잭션 이력은 소유권을 명확히 하는 핵심요소이기 때문에 안전하게 저장해야 한다.
- 데이터 저장에 영향을 주는 요소는 보통 데이터구조: 블록체인에서는 블록체인 데이터구조가 디지털 원장으로 사용됨
4.신뢰할 수 없는 환경에 배분할 원장 준비
- 개발 목표:
신뢰할 수 없는
,분산 환경
에서 동작하는 원장의 P2P 시스템 디자인 - 전체 원장을 조정, 통제하는 중앙 통제 노드 없음 -> 신뢰할 수 없는 각 노드들에 원장의 제어를 맡겨야 한다.
- 따라서 각 노드들이 악의적인 목적을 가지고 원장 위조하는 행위에 대한 방지책 필요
- 블록체인 데이터구조는 바꿀 수 없게 + 동시에 새 트랜잭션은 기존 원장에 쉽게 추가할 수 있도록 승인할 수 있어야 한다.
5. 원장 배분
- 그냥 추가전용 원장 하나 만들고 누구에게나 그 복사본을 주면? ( 안됨)
- 안 됨: 시스템 내 각 노드 간 상호작용이 어떻게, 어떤 정보를 어떠한 방식으로 주고 받는지, 네트워크 프로토콜, 알고리즘과 관련된 합의 내용 먼저 정해야 함.
6. 원장에 새 트랜잭션 추가
- 블록체인 데이터구조: 개별적으로 추가만 할 수 있는 추가 전용 데이터구조
- 각 피어가 새로운 트랜잭션을 추가할 때 유효하고 승인된 트랜잭션만 추가 가능하도록 보장해야 함
- 해결: 구성원 모두가 새 데이터 추가 가능 + 각 구성원이 각 피어 감독하기
- 서로 감시, 감독하는 일하면 인센티브 제로
7. 어느 원장이 진실인지 판단하기
- P2P 시스템에서 각 구성원이 개별 원장에 새 트랜잭션 추가하면,
네트워크
속도 차이로 인해 어쩔 수 없이 각 피어들이 서로 다른 트랜잭션을 서로 다른 시간에 받을 가능성이 생긴다. - 예시) A는 이미 물건 ‘집’의 소유권이 B에서 C로 넘어갔다는 사실을 아직 모르는데, B가 A에게 아직 집이 자기 것인 척 집을 팔았다. 이런 식으로 악용하는 것이
이중지불
문제이다. - 어떤 이력을 선택할지 결정해 줄 중앙 통제장치가 없음 -> 모든 노드들이 독립적인 다수 의견을 따라 개별적으로 결정해서 해결해야 한다.
- 즉 각 노드들이 서로 다른 노드와 이야기 나누고 결정하는 것이 아니라, 독립적, 개별적 결정 필요.
블록체인 트랜잭션
소유권 기록과 기술 방식
1. 이어달리기와 비슷한 소유권 관리
- 블록체인에서 소유권 관리 = 바통을 전달하는 이어달리기와 비슷
- 특정 팀의 어떤 멤버가 바통을 쥐고 있는지 확인하려면? 직전에 누구에게 바통이 건네졌는지 확인한다
- 특정 시간에 누가 바통을 쥐고 있었는가 확인하려면? 바통을 건넨 시각과 각 선수의 이름을 기록해둔다.
2. 소유권 기록의 목표
- 명확하게 소유권을 기록함
- 소유권을 투명하고 모든 사람이 이해 가능하도록 기록
- 누구나 자신이 가지고 있었던 자산과 소유권에 대한 명확한 판단을 할 수 있다.
3. 소유권 기록을 위해 해결해야 할 과제
- 소유권에 대한 주장 자체를 기록하는 것
- 소유권에 대한 주장을 뒷받침할 증거 제공
- 특히 분산 P2P 시스템에서 어떻게 소유권에 대한 주장과 그 증거들을 증명 가능한 방식으로 기록할 수 있을까?
- 특히 분산 P2P 시스템에서 어떻게 소유권에 대한 주장과 그 증거들을 증명 가능한 방식으로 기록할 수 있을까?
4. 과제 해결을 위한 아이디어
- 소유권의 현 상태를 재산 목록 데이터 형태로 기록한다.
- 재산 목록 데이터란? 모든 소유자의 전 재산 리스트
- 소유권이 이전된 모든 과거 이력(
트랜잭션
)까지 원장에 모두 기록한다.트랜잭션(transaction)
데이터: 소유권 이전이 일어날 때마다 누가 누구에게 어떤 아이템을 언제 이전했는지 기록한 데이터- 트랜잭션 이력이 곧 소유권을 어떻게 획득했는지 보여주는 증거가 된다.
5. 소유권 기술(description) 방식
- 소유권 목록 작성
- 소유권의 현 상태 설명
- 은행 계좌의 현 잔고를 보여주는
잔고증명서
와 비슷 - 단순히 소유권을 주장함
- 트랜잭션 데이터 작성
- 소유권의 이전 이력을 기술함
- 출금, 입금, 자금이체 내역을 모두 표시해주는
거래내역 조회서
와 비슷 - 소유권을 설명하고, 소유권 주장을 뒷받침하는 증거가 됨
블록체인 작동 원리
1. 블록체인으로 소유권을 기록하기 위해 필요한 두 가지 기능
소유권 이전 기술(Description)
+트랜잭션 이력의 유지(Maintenance)
- 트랜잭션 데이터: 소유권을 이전하려는 계정에 대한 모든 정보 가지고 있음 (누가, 누구에게, 무엇을, 얼마나, 언제 이전했는지 등)
- 두 기능이 제대로 작동하면 트랜잭션 전체 이력 확보 가능-> 각 계정에 대한 소유권을 이전 받은 계정, 이전 받은 아이템, 이전된 총액에 대한 소유권 정보 재구성 가능
- 소유권 이전의 기술(Description)
- 트랜잭션? 현 소유자의 소유권을 다른 사람에게 이전하는 행위
- 소유권 이전: 소유권 이전을 위해 필요한 모든 정보를 데이터에 기록함으로써 이루어짐
- 예시) 은행의 계좌이체 서식: 보내는 사람, 받는 사람의 계좌정보, 송금 금액 등 계좌이체에 필요한 정보 들어있음
- 예시) 은행의 계좌이체 서식: 보내는 사람, 받는 사람의 계좌정보, 송금 금액 등 계좌이체에 필요한 정보 들어있음
- 블록체인에서 트랜잭션을 기술하기 위해 필요한 정보
- 누가 보내는가? 소유권을 이전해주려는 계정의 식별자
- 누구에게 보내는가? 소유권을 이전받는 계정의 식별자
- 얼마를 보내는가? 이전하려는 재화의 총액
- 언제 보내는가? 이전이 완료되는 시간 (예약이체 기능의 경우)
- 이체 수수료는? 이전하기 위해 시스템에 지불해야 하는 수수료
- 이전에 동의한다는 원 소유자의 증명
- 대부분 은행거래와 비슷하지만 블록체인은 분산 시스템: 통일된 수수료 체계가 없다는 차이점
- 트랜잭션 이력의 유지(Maintenance)
- 트랜잭션을 수행한다는 것은?
- 트랜잭션 데이터에 기록된대로 소유권의 이전이 일어남
- 원장에 트랜잭션 데이터를 추가함
- 새로 추가된 트랜잭션은 전체 트랜잭션의 한 부분으로써 이후 소유권 명확히하는 증거로 사용됨
- 블록체인은 모든 트랜잭션을 순서대로
블록체인-데이터구조
에 저장하여 전체 이력을 유지한다. - 먼저 저장되는 트랜잭션이 먼저 일어난 것으로 간주된다. 즉 기록된 순서가 반드시 트랜잭션이 실제 일어난 순서와 정확하게 일치하는 것은 아니다.
- 이력에 없는 트랜잭션은 일어난 적이 없다고 간주한다.
- 따라서 트랜잭션을 추가하면 해당 트랜잭션을 실제로 발생시키고 그 이력을 통해 현재 소유권을 식별하는 데 영향을 미친다.
내 생각: 그럼 소유권 이전 시도가 있을 때마다 시간 순서대로 빠짐없이 트랜잭션 데이터에 잘 기록해야 실제 이전 및 소유권 증명이 올바르게 일어날 수 있을 것이다. 만약 이런 데이터가 실제와 다르다면 거래는 되었는데 잘못 기록된 수준이 아닌 아예 그 거래 자체가 없었던 일이 될 수도 있겠다.
- 트랜잭션을 수행한다는 것은?
트랜잭션 순서와 이력의 무결성
1. 트랜잭션 데이터 합치기
블록체인-데이터구조
: 모든 이용자의 모든 트랜잭션을 저장하기 위한 자료구조- 트랜잭션은 분산 시스템의 개별 노드들이 독립적으로 언제라도 발생시킬 수 있음->즉 모든 트랜잭션들이 하나의 통합된 원장에 저장될 필요가 있다.
- 트랜잭션 데이터 합치는 이유 = 소유권 명확히 하기: 소유권의 이전 내역을 재구성해서 현재 소유권을 가진 사람을 찾아내고, 그 소유권이 맞는지, 그 소유자가 맞는지를 명확히 하기 위함
- 따라서 트랜잭션 데이터 합칠 때 실질적으로 발생한 시간 순서대로 동일하게 재현하는 것이 굉장히 중요함
- 예시) 은행 계좌에 잔고가 있는 경우와 없는 경우
- 잔고 있는 경우: 어떤 물건을 구매하기 위해 돈을 먼저 인출하고 구매한다.
- 잔고 없는 경우: 물건을 먼저 받고 나중에 돈을 인출해서 지불하려고 한다?? 구매 불가
2. 트랜잭션 데이터 이력의 무결성의 중요성
- 트랜잭션 데이터 이력: 소유권을 명확히 하는 기준, 증거
- 현재 소유자 및 미래의 소유자의 소유권을 명확히 하는데도 이용됨
- 전체 블록체인 시스템 무결성을 위한 이력 데이터 요구사항:
안전성
,완전성
,정확성
,일관성
- 오직 유효한(valid) 트랜잭션 데이터만
블록체인-데이터구조
에 추가되도록 보장하는 보안 수단 제공해야 함최근 블록체인 관련 기사에서 일부 비트코인 내역에는 비트코인 거래와 완전히 상관없는 내용이 적혀있다고 했다. 주로 아동포르노, 회사 기밀 등 불볍적인 정보가 많은 것 같았다. 한 번 작성된 후 삭제 및 위, 변조가 불가능한 블록체인 특성 상 개인의 사생활을 심각하게 침해하거나 타인에게 피해를 줄 만한 내용이 적히면 피해가 클 듯 하다.
3. 트랜잭션 데이터 유효성의 세 가지 측면
- 형식적 정확성(formal accuracy)
- 트랜잭션 데이터가 필요한 모든 정보를 정확한 형식에 맞춰서 기술
- 개별적, 독립적 다수로 이루어진 분산 시스템에서 합의된 내용을 얻기 위한 합의된 구조, 형식을 따른다.
- 의미상 정확성(semantic accuracy)
- 트랜잭션 데이터의 의미와 의도한 결과와 연관
- 예시)
- 계정에 있는 잔고 이상의 금액이 이전되지 않도록 보장
- 이중사용 방지
- 한 번의 트랜잭션으로 이전 가능한 최대 금액 제한
- 사용자 한 명 당 가능한 트랜잭션 횟수 ㅈ한
- 일정 기간 내 사용가능한 총 금액 제한
- 아이템 소유권 이전을 위한 최소 보유기간 선정 등
- 승인 (approval, authorization)
- 소유권을 이전하는 본인만 트랜잭션을 실행해달라고 블록체인에 요청할 수 있어야 함
- 블록체인의 모든 트랜잭션 데이터는 계좌 소유자가 소유권 이전에 동의함을 증명할 수 있는 정보 가지고 있어야 함
댓글남기기