본문 바로가기
Research/금융,블록체인

블록체인 개념

by raphael3 2018. 12. 17.
반응형

                                                                                                                                                         

                                                                                                                                                                                                                   

                                                                                                                                                         

                                                                                                                                                                                                             

                                                                                                                                                                                                          

블록체인
블록체인은 중앙서버 없이 'P2P로 구현되는 비가역적 공유 데이터베이스'라고 정의할 수 있다.
P2P방식으로 이루어진 네트워크에서 참여자(Node, Client)들은 데이터를 담은 블록을 생성하고 검증을 한다.
각 참여자들은 일정한 규칙에 따라 데이터를 담은 블록을 경쟁을 통해 생성하게 되며, 이러한 블록은 일정 컴퓨팅 파워가 투입된 이후에는 비가역적(Irreversibility)이 된다(=되돌릴 수 없다).
이전의 디지털 세계에서는 기존의 데이터를 조작, 삭제, 취소하는 것이 매우 쉬웠기 때문에 특정한 디지털 코드가 가치를 지니게 되기는 쉽지 않았으며, 디지털 코드를 심지어 화폐로 사용하는 것은 불가능하였다. 그렇게 때문에, 중앙에서 통제하는 디지털 화폐나 재화(은행전산망 안의 계좌잔고, 게임머니, 웹하드 포인트, 시리얼 키를 가진 소프트웨어 등)에 절대적 통제권을 행사하여 외부에서 조작할 수 없도록 보안을 유지해야 했다. 물론 그러한 보안이 완전할 수 없기 때문에 해킹사고는 빈번히 일어나 왔고, 중앙권력 자체가 해당 재화를 직접 조작하고 유용하여 부당학 이익을 취득하는 사기도 매일의 일상이다.
그러나 블록체인을 통해 중앙권력없이 순수하게 사용자들로만 이루어진, 그리고 조작이나 통제가 불가능한 시스템이 갖추어지게 되었다.
블록체인은 링크드 리스트다. 최초의 블록(Genesis Block)부터 시작해서 바로 앞의 블록에 대한 링크를 가지고 있는.
 
블록체인은 여러 노드에 분산되어 저장 및 관리된다.
 
블록에는 거래 정보가 포함되어 있으므로, 블록의 집합체인 블록체인은 모든 거래 정보를 포함하는 거대한 분산 장부라고 할 수 있다.
 
  • 블록
블록은 다수의 거래 정보의 묶음이다.
하나의 블록은 블록 헤더와 거래 정보, 기타 정보로 구성된다.
 
 
  • 블록 헤더
블록 헤더는 version, previousblockhash, merklehash, time, bits, nonce 이렇게 6개의 정보로 구성된다.
  1. version : 소프트웨어/프로토콜 버전
  2. previousblockhash : 블록 체인에서 바로 앞에 위치하는 블록의 블록 해쉬
  3. merklehash : 개별 거래 정보의 거래 해쉬를 2진 트리 형태로 구성할 때, 트리 루트에 위치하는 해쉬값(?)
  4. time : 블록이 생성된 시간
  5. bits : 난이도 조절용 수치
  6. nonce : 최초 0에서 시작하여 조건을 만족하는 해쉬값을 찾아낼때까지의 1씩 증가하는 계산 회수(?)
 
블록들의 체인
각 블록이 이전블록을 근거로 생성(아래에서 위방향)되고 있다.
 
 
녹색은 최초의 블록(탄생블록: Genesis block)이며, 이 녹색블록 없이 그 위의 블록을 만드는 것은 불가능하다. 따라서 각 블록이 이전 블록의 정보를 가지고 있고 그것이 모여 체인을 이룬다(블록체인).
 
검은색은 해시파워(CPU power)를 통한 경쟁에서 승리하여 블록생성에 성공하고, 실제 블록체인의 일부가 된 블록들이다. 따라서 해당 블록안의 데이터는 해당 네트워크에서 '공유지식'이 된다.
 
 
보라색은 경쟁에서 실패하여, 블록체인의 일부가 되지 못한, 즉 네트워크에 공유되지 못하며 인정받지 못하는 블록이다(따라서 해당 블록안의 데이터도 블록체인의 일부가 되지 못한다). 이러한 블록은 폐기된다.
 
탄생블록부터 경쟁에서 이긴 블록들어 이루어진 체인을 '주체인(Main chain)'이라 칭하며, 이곳에 들지 못한 블록을 '탈락블록(Orphan/ Stale/ Invalid Block)'이라 칭한다. 주체인 상의 블록에 포함되어 있는 데이터 내역만이 유효한 것으로 인정받게 된다.
 

블록체인은 효율성을 버리고 자율성을 얻는 시스템

 
새로운 블록이 블록체인에 추가되기 위해서는 모든 블록의 암호화 확인 절차가 요구된다. 이 때문에 빠른 거래가 필수인 비즈니스 분야에 적용되기에는 효율적이지 못하다
 
블록체인은 말 그대로 ‘체인’ 형태이기 때문에 블록 삽입이 직렬화되어야 한다. 때문에 업데이트 속도가 병렬적인 업데이트를 하는 전통적인 데이터베이스보다 느리다
 
블록체인 기술의 최대 장점은 한 번의 데이터 생성으로 많은 이들에게 이를 공유할 수 있다는 것이다. 웹 상의 각기 다른 노드들에 손쉽게 도입할 수 있으면서도 각 기록이 자체적인 해시를 간직하고 있기 때문에 조작이 불가능하다.
 
그렇다고 해서 거래 관련 데이터가 반드시 블록체인의 일부가 되어야 하는 것은 아니다.
예를 들어, 블록체인 사용자가 거래 기록의 일부로 이미지를 첨부할 경우, 데이터 용량은 급증하고, 시간이 흐르며 일방적인 추가만 가능한 상황에서 데이터 용량이 커짐에 따라, 이는 곧 네트워크 오버헤드로 이어지게 될 것이다. 이 경우 데이터를 분산하는 블록체인의 특성으로 인해 모든 데이터가 체인 상의 모든 노드에 복제되어야 한다.
따라서 일부 거래에 대해서는 통제가 어려운 블록체인보다는 별개의 네트워크 스토리지로 운영되는 관계형 데이터베이스를 사용하는 것이 더 낫다.
반드시 기억해야 할 것은 관계형 데이터베이스만으로도 충분한 상황에서 굳이 블록체인 기반 아키텍처를 도입할 이유는 절대 없다는 사실이다
 
블록체인에는 크게 2종류가 있다. 퍼블릭 블록체인과 프라이빗 블록체인이다. 퍼블릭 블록체인은 누구나 가담할 수 있다. 화폐 구입을 원하는 누구나 체인에 가담할 수 있게 열어 놓은 비트코인이 바로 퍼블릭 블록체인의 대표적인 예다. 퍼블릭 블록체인은 개방되어 있고 투명하기 때문에, 체인 상의 모든 사용자가 모든 거래 내역을 투명하게 볼 수 있다.
 
반면, 프라이빗 플록체인은 중앙권위체에서 단독으로 관리하며 가입을 위해서는 승인이 필요하다. 단일 기업이나 파트너 기업들 간에 주로 사용되는 형태로, 승인된 사용자들만이 체인에 가담할 수 있다.
 
퍼블릭이건 프라이빗이건, 블록체인은 기본적으로는 조작이 불가능하다. 각 거래 기록 또는 ‘블록’을 임의로 변경할 수 없고, 다른 모든 블록들과 연결되어 있기 때문이다. 따라서 보안을 보장받는다. 이러한 블록체인에 새로운 블록을 추가하려면 다른 사용자들의 동의가 있어야 한다. 얼마만큼의 사용자 동의가 필요한가는 사용되는 블록체인에 따라 다르다. 일부 블록체인의 경우 50%의 동의를, 또 어떤 블록체인은 그보다 더 많은 사용자들의 동의가 필요하다. 이처럼 약간의 차이는 있지만, 기본적으로 블록체인은 거래 장부 변경이 불가능하고, 사용자들의 동의를 기반으로 거래가 이루어지기 때문에 그 어떤 네트워킹 기술보다 더 안전하다.
 
그렇지만 블록체인 기술이 애플리케이션 소프트웨어 및 암호화 기술에 의존하고 있는 것도 사실이며, 오늘날 블록체인 기술을 개발, 제공하는 수백 개의 스타트업들 중에는 아직 검증되지 않은 알고리즘을 사용하는 곳들이 적지 않다.
예를 들어, 비트코인의 경우 이미 검증된 알고리즘인 SHA-256을 해시에 사용한다. 그러나 여러 연구 결과에 의하면, 양자 컴퓨팅으로 인해 궁극적으로 이러한 알고리즘이 깨질 것이다. 그나마 다른 블록체인들은 그저 개발자가 안전을 ‘보장’했기 때문에 믿을 수밖에 없는 알고리즘을 사용하기도 한다.
 
그 어떤 암호화 전문가에게 물어 보더라도, 새로운 암호화 알고리즘이 안전한 것으로 수용되기 위해서는 수년의 시간이 걸린다는 점에 동의할 것이다. 이런 상황에서, 어느 스타트업 기업이 보지도 듣지도 못한 알고리즘을 가지고 나타난다면, 그런 블록체인 시스템에 도박을 해서야 되겠는가? 실제로 많은 스타트업들이 새로운 해시 알고리즘을 도입하려 했지만, 이런 시도들은 모두 처참한 실패로 돌아갔다
 
블록체인 같은 기술은 해킹으로 깨지지 않는다. 그보다는 소프트웨어상의 취약점으로 인해 깨질 확률이 더 높다
 
예를 들어, 2016년 분권화된 블록체인 기술을 도입한 벤처 캐피털 다오(The Dao)는 코드 문제로 6,000달러가량의 디지털 화폐 이더를 도둑맞았다.
 
홍콩 기반 암호화 화폐 거래소인 비트피넥스(Bitfinex) 역시 6,800만 달러에 달하는 12만 비트코인을 도둑맞았다. 조사 결과에 따르면, 비트피넥스의 비트코인 월렛 업체인 비트고(BitGo)가 지닌 소프트웨어상의 취약성으로 인해 생긴 문제였다.
 
블록체인 기술은 기본적으로 두 개인, 기업, 단체 간의 신뢰를 수학적 원리로 대체하려는 시도다. 이는 바꿔 말해 블록체인 기술의 수학적 원리에 대한 의존성이 커질수록 더 많은 노드(서버)가 필요하게 되며, 운영 환경에 더욱 연산 집약적이 되고, 그에 따라 비용도 증가하게 됨을 뜻한다
 
블록체인은 ‘체인’ 형태이기 때문에 블록 삽입이 직렬화되어야 한다. 때문에 업데이트 속도가 병렬적인 업데이트를 하는 전통적인 데이터베이스보다 느리다. 검증되지 않은 불특정 다수의 사람이 참가할 수 있는 글로벌 규모의 네트워크에서는 이처럼 비싼 비용과 느린 속도가 용납이 될 수 있다. 그렇지만 참가자가 엄격히 통제되는 기업 환경에서 딱히 부가적인 이득이라고 할 것도 없는 블록체인 기술에 그토록 많은 에너지와 시간을 쏟을 필요는 없어 보인다
 
상업적 환경에서 이 기술을 사용할 때는 이와 같은 투명성이 반드시 좋은 것이라고 보기 어렵다. 예를 들어, 만약 블록체인 기술이 주식 거래 플랫폼상에서 즉각 합의(instant settlement) 메커니즘으로 사용된다면 어떨까? 각 참여자가 다른 참여자의 모든 의도와 행동을 읽을 수 있게 되므로 결국 메커니즘 자체가 제대로 기능하지 못할 것이다.
 
기업은 이러한 거래 데이터를 어떻게 하면 비공개로 유지할 수 있을지에 대해 고민하지 않을 수 없다
 
블록체인에서도 일부 사용자들만이 중요 데이터나 기밀 데이터를 볼 수 있도록 베타성을 도입하는 방법이 없지 않다. 예를 들어, 리눅스 재단의 오픈소스 블록체인 프로젝트인 하이퍼레저의 경우, ‘채널’이라 불리는 서브 체인을 이용해 승인된 일부 사용자들만 중요 정보에 접근할 수 있도록 하고 있다.
 
스마트 계약, 또는 자체 이행 계약은 별도의 이행 강제 권위체가 필요 없다는 점에서 블록체인이 가진 가장 매력적인 기능 중 하나라고 할 수 있다. 기본적으로 이는 계약 당사자들이 동의한 거래 조건이 달성될 때 그 대가로 약속된 돈이나 물건이 자동으로 상대방 당사자에게 전달되는 시스템이다.
 
개념적으로만 보면 정말 멋진 아이디어다. 이는 일종의 비즈니스 프로세스 자동화라고 할 수 있다. 비즈니스 프로세스 자동화를 위해서는 일단 자동화의 대상이 되는 프로세스가 무엇인가에 동의할 수 있어야 한다. 이 프로세스에 어떤 룰을 적용할 것인지를 합의하고 나서 이를 코드로 옮겨야 한다. 때문에 이러한 프로세스 자동화는 사람들이 생각하는 것보다 훨씬 복잡하고 어렵다
 
그런데 블록체인 스크립팅 언어는 아직까지 이 정도의 자동화가 가능할 만큼 성숙하지 못했으며 프로그래머들 역시 아직까지 이 언어에 대해 배워가는 단계이다. 이러한 이유로 버그나 취약성도 발생할 수 있다.
 
스마트 거래 당사자들은 또한 거래 운용 방식을 어떻게 준수할 것인가에 대해, 그리고 거래 이행 여부에 대한 분쟁 발생시 이를 어떻게 해결할 것인가에 대해서도 합의를 해야 한다.
 
코딩에 실수가 있었다든가 하는 식으로 예기치 못한 상황이 발생할 경우에 대비해, 외부 경로를 통해 코딩을 수정할 수 있어야 한다. 아니면 최소한 양 당사자 모두 원하지 않았던 비상 상황에 대비해 최종 ‘오프 스위치(계약 파기 방법)’이 마련되어야 한다
 
스마트 계약과 조작 불가능성의 개념이 양립 불가능한 경우도 있음을 알 수 있다. 왜냐하면 스마트 계약에서 ‘조작 불가능’을 인정한다면, 최악의 보안 버그가 존재해도 이를 고칠 수 없게 됨을 뜻하기 때문이다
 
블록체인은 2할이 기술이고 8할은 비즈니스

블록체인은 데이터베이스인데, 중앙형이 아닌 P2P형이다. 정확하게는 데이터베이스이면서 서버로서 기능하는 컴퓨터다.
즉 인터넷 네트워크로 연결된 하나의 거대한 분산 데이터베이스이다.(public blockchain이라는 가정 하에.)
블록체인 상의 각 노드들은 블록을 생성하거나 검증한다.(질문: 블록의 생성은 거래 기록을 생성하는 건가?, 검증은 마이닝을 통해 이루어지는건가?) 생성과 검증은 뗄 수 없다. 생성된 블록이 검증되지 않으면 폐기되기 때문이다.
참여자=노드=client
노드들은 규칙에 따라 블록을 생성하고 검증하며, 이렇게 해서 체인에 연결된 블록은 되돌릴 수 없는 비가역성의 특징을 갖게 된다.
기존의 중앙형 데이터베이스는 비가역성의 특징이 없어서 데이터의 추가, 삭제, 수정이 쉽다. 따라서 해킹을 통해 장부를 조작할 수 있다. 이를 막기 위한 보안 기술을 중앙이 갖고 있기 때문에 은행 등은 필수적으로 중앙회될 수 밖에 없었다.


 

반응형

'Research > 금융,블록체인' 카테고리의 다른 글

이동평균법(EMA) 개념  (0) 2018.12.20
가상화폐의 본질  (0) 2018.12.20
51% 공격  (0) 2018.12.20