본문 바로가기

4차산업/블록체인

[블록체인 04-1] 블록체인은 어떻게 작동하는가?

[시나리오] 소유권을 관리하는 블록체인 구축 


1. 시스템은 순수 분산 P2P시스템이고, 각 사용자가 기여한 계산자원으로 이루어진다.

2. 인터넷을 사용해 개별노드의 네트워크를 연결한다.

3. 노드의 개수는 물론 노드의 안정성과 신뢰성도 전혀 알 수 없다.

4. 목표는 디지털재화( ex: 쇼핑몰 포인트, 디지털 화폐 등)의 소유권을 관리하는 것이다.



시스템 개발에 고려해야 하는 사항들.

1. 소유권 기술(설명)

2. 소유권 보호

3. 트랜잭션 데이터 저장

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

5. 원장 배분

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

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



소유권 기술(Describe)

트랜잭션은 소유권의 이전을 설명하는 좋은 방법이며, 트랜잭션 전체 이력은 현 소유자를 확인할 수 있는 핵심이다.


소유권 보호

타인이 다른 사람의 자산에 함부로 접근하지 못하도록 보호해 줄 장치가 필요하다. 암호화 기술을 이용하여 개별적인 트랜잭션을 보호할 수 있게 한다.


트랜잭션 데이터 저장

트랜잭션 이력은 소유권을 명확히 하는 핵심 요소이므로 안전한 방법으로 저장해야 한다.


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

원장의 복사본들이 신뢰할 수 없는 네트워크의 신뢰할 수 없는 노드들 사이에 흩어져 있고, 원장을 통제하거나 조정하는 중앙통제 노드는 존재하지 않으므로 각 노드에게 원장의 제어를 맡겨야 하는 상황에서 원장이 위조되거나 조작되지 않게 해야 한다.


원장과 트랜잭션이력 모두 한번 기록되면 바꿀 수 없게 하여 이러한 문제점을 해결할 수 있다.


블록체인데이터구조는 한편으로는 변경을 못하게 하면서 다른 한편으로는 새로운트랜잭션을 추가할 수 있도록 승인하여 해결한다.


원장배분

데이터구조에 새로운 트랜잭션을 추가할때 오직 유효하고 승인된 트랜잭션만 추가될 수 있도록 보장해야 한다. P2P시스템의 모든 구성원이 새 데이터를 추가할 수 있도록 허용하는 동시에 각 구성원이 P2P 시스템의 각 피어를 감독하게 해서 해결한다.


어느원장이 진실인지 판단

모든 구성원이 새로운 데이터를 추가할 수 있으므로, 각 피어들이 서로 다른 트랜잭션 데이터를 받을 가능성이 생긴다. 


순수 분산 P2P 시스템에는 어떤 트랜잭션 이력을 서택해야 할지 결정해 줄 중앙통제 장치가 없기 때문에 모든 노드가 독립적인 다수 의견을 따라 "진실된 트랜잭션 이력"을 개별적으로 결정해서 이 문제를 해결해야 한다.



블록체인으로 소유권을 기록하려면 다음 두가지가 필요하다.


1. 소유권 이전을 기술한다.

2. 트랜잭션 이력을 유지한다.



소유권 이전을 기술한다.


트랜잭션은 현 소유자의 소유권을 다른 사람에게 이전하는 행위를 의미하며, 예를 들어 계좌이체를 수행하는 경우 트랜잭션은 다음과 같은 정보를 관리해야 한다.


. 소유권을 이전하는 계정의 식별자

. 소유권을 이전받는 계정의 식별자

. 이전하려는 재화의 총액

. 이전이 완료되는 시각

. 이전을 위해 지불해야 하는 수수료 <= 블록체인은 분산시스템이기 때문에 통일된 

                                                    수수료 체계가 없다.

. 이전에 동의한다는 원소유자의 증명 



트랜잭션 이력을 유지한다.


트랜잭션을 수행하는것은 트랜잭션 데이터에 기록된 대로 소유권의 이전이 일어난다는 것을 의미한다. 또한 원장에 트랜잭션 데이터를 추가한다는 의미이기도 하다.


블록체인은 모든 트랜잭션을 일어난 순서대로 블록체인데이터구조에 저장하여 전체 이력을 유지한다.



트랜잭션 이력의 무결성을 유지하기 위한 필수 3가지 요소


1. 형식적 정확성

2. 의미상 정확성

3. 승인



형식적 정확성


트랜잭션 데이터가 필요한 모든 정보를 정확한 형식으로 기술해야 한다.



의미상 정확성


트랜잭션 데이터의 의미와 의도한 결과의 관련이 명확해야 한다. 예를 들면 계정에 있는 잔고이상의 금액이 이전되지 않도돌 보장해야 한다. 와 같이 업무에 대한 정확한 이해를 바탕으로 데이터가 정의되어야 한다.



승인


소유권을 이전하는 소유권자 본인만 트랜잭션을 실행해야 한다.