태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

Blockchain 이란?

블록체인 2018.01.02 17:22 posted by 무병장수권력자


작성 시작 : 2018.1.30

실제로는 2017년 가을쯤에 대부분 정리했던 내용이라 딱히 새로운 것이 많지않고, 최근에 워낙 한글로, 영어로 잘 정리된 글이 많아서 그냥 버릴까 하다가... 그래도 아주 약간 아쉬운 마음에 기왕 정리했으니 포스팅 해봅니다.


Blockchain 이란?


개요

  • 서로를 신뢰할 수 없는 구성원들 간에 모두가 신뢰할 수 있는 중앙 기관이나 단체없이 (통칭하여 매개자, middle man) '가치있는 정보'를 안전하게 저장하고 공유할 수 있는 기술
  • 가치 거래의 기록을 transaction(트랜잭션) 이라 부르고, 여러개의 transaction을 모아서 하나의 block 에 저장하고, block간에 전후 관계를 가지도록 체인처럼 연결한 것을 blockchain 이라 부름
  • 믿을맨 없이 가치를 저장하고 관리하기 위해서 구성원간의 consensus(합의)를 거치게되며, consensus 알고리즘으로 PoW, PoS, PBFT 등이 존재함
  • (중앙집중형 대비) 외부 해킹 위협에 대한 높은 저항성과 한번 기록된 정보의 불가역성이 가장 큰 특징
  • 대표적인 활용 사례는 전자화폐, 소유권 정보 기록, 공공 정보 기록 분야임. 실제 활용 가능성은 무궁무진!


동작 방식

간단 버전


복잡한 버전  




Block의 구조

  • Trasaction : 가치에 대한 기록. 비트코인 등 암호화폐 기술에서는 화폐의 이동에 대한 기록이 이에 해당한다.
  • Block : 여러개의 transaction을 묶어서 하나의 블록으로 저장한다. 비트코인의 경우 1MB 크기에 담아서 한번에 처리함
  • Merkle : transaction 목록으로 구성된 merkle tree의 hash 값
  • Proof of work hash : 정해진 프로토콜에 따라 block 내의 여러개의 고정값과 한개의 가변값(nonce)를 조합하여 hash 한 값
  • nonce : PoW hash가 네트워크가 정한 일정 개수의 0으로 시작하도록 하게 하는 값 (문제를 푸는 것이 아니라, 그냥 때려 맞추는 것임)      



특징

합의 (Consensus)

  • 신뢰하지 못하는 구성원들 간에 신뢰는 만들어내는 암호학 기반의 프로토콜
  • miner는 block을 정상적인 transaction들만으로 만들어냈음(유효성)을 증명하고, 나머지 참여자들은 유효성을 검증(validate)하는 것을 consensus라고 함
  • miner는 block 내부에 적절한 nonce값을 찾아서 삽입하고, 나머지 노드들은 nonce값이 유효한 것인지를 검증함
  • PoW를 기준으로 설명하면, nonce는 A(고정값) ★ nonce = B(고정값) 하는 수식을 만족하는 임의의 값을 말함. 문제는 ★ 연산은 방정식 같이 이리저리 넘겨서 답을 찾을 수 없기 때문에 그냥 랜덤하게 대입해가면서 찍어야 함. A는 block 내 다른 field 값들이고, B는 네트워크가 정한 임의의 숫자이다. B는 대부분 연속된 N개의 0의 개수로 표현되며, 정해진 시간, 비트코인의 경우 10분정도마다 답이 도출되도록 전체 네트워크의 연산 능력에 따라 동적으로 조정된다. 여기서 핵심은 nonce를 찾는 것은 리소스가 많이 소모되는 작업이지만, nonce가 유효한지를 확인하는 것은 아주 간단한 과정이라는 점임. 
  • miner가 열심히 nonce를 찾아서, block을 발행하면 네트워크에 참여한 다른 노드들은 transaction과 block의 유효성을 검토한 후, 이에 문제가 없는 경우 자신의 로컬에 동일한 블록을 연결하여 main blockchain과 동일한 사본을 유지함. 만약 문제가 있다면 해당 블록을 연결하지 않고 버림
  • 비 정상적인 transaction을 포함하여 어렵게 nonce를 만들어서 block을 발행해봤자 다른 참여자들이 채택하지 않을 것이기 때문에 miner들은 일반적으로 정상적인 transaction 만을 처리하려고 최선을 다하게 될 것임. 이에 따라 자발적으로 네트워크는 좋은 방향으로 안정되게 운영됨
  • PoW(Proof of Work), PoS(Proof of Stake), PBFT(Pratical Bizantium Falut Torerence) 등 다양한 합의 알고리즘이 존재함
  • 하지만, 각각의 알고리즘 모두 이론적으로는 공격지점이 존재함. 다만, 네트워크가 충분히 크다면 현실적으로 일어나기 어렵다는 것을 수학적으로 증명함


외부 위협에 강한 저항성

  • 네트워크에 참여한 노드들은 transaction과 block의 유효성을 검토한 후, 이에 문제가 없는 경우 자신의 로컬에 동일한 블록을 연결하여 main blockchain과 동일한 사본을 유지함
  • 참여 노드를 해킹하여 consensus 과정을 역행하려면 51% 이상의 노드를 정해진 시간내에 동시에 해킹해야 하기 때문에 현실적으로 불가능하다. Single point of failure가 없음


불가역성

  • 특정 block에 기록된 transaction을 삭제하거나 변경하려면 그 이후에 연결된 모든 block을 변경해야 함. block을 하나 만드는 것조차도 높은 연산 능력을 가진 경우에 한하여 확률적, 제한적으로 권한을 가지게 되는데 여러 개의 block을 짧은 시간내에 재생성하는 것은 현실적으로 거의 불가능함
  • 대표적인 외부 위협인 이중지불 공격의 예. 이중지불이란? 한번 지불한 비용 transaction이 처리되기 전에 새로운 tranaction을 다시 발생시켜서 여러번 사용하려는 것

  • 위와 같이 일시적으로 blockchain이 분기되는 경우에는 상대적으로 빠르게 길어지는 chain이 정상적인 것으로 추정하여 처리함
  • 이중지불 공격자가 전체 네트워크의 연산능력을 51%이상으로 압도하지 못한다면, 새로운 블럭을 만들어낼 확률은 공격자보다 공격자를 제외한 네트워크가 더 클 것이고, 네트워크가 생성하는 정상적인 블럭의 길이가 시간이 갈 수록 점점 길어지기 때문에 51% 공격이 아니라면 이중 지불 시도는 실패하게 된다. 이처럼 생성된 block이라 할 지라도 일정 시간동안은 이중 지불의 경우가 아닌지를 판단하기 어렵기 때문에 (비트코인에서는) 일반적으로 특정 block 뒤에 6개의 block이 추가로 연결되면 '정상 처리완료'라고 간주하며 이를 confimation이라고 부른다. ※ confimation의 depth는 crytocurrency 방식에 따라 상이함
  • 문제는 51% attack의 가능성이 있다는 것이다. 전체 네트워크 연산력보다 더 큰 51% 연산력을 특정 miner가 독점하였다면, 해당 miner가 block을 생성하는 속도가 가장 빠를 것이므로 원하는 transaction을 맘껏 조작할 수 있게 되며 이런 공격에는 취약한 것이 사실이다. 다만, 현재 비트코인의 상황을 볼때 51% attack을 하려면 엄청난 리소스가 요구되기 때문에 현실적으로 일어나기 어렵다고 가정함


탈중앙 (Decentralization)

  • 모든 노드가 장부 데이터를 가지고 있기 때문에 single point of failure 문제가 발생하지 않음


스마트계약 (Smart contract)

  •  Nick Szabo 가 1996년 제안한 것. 이더리움(ethereum)에 적용됨
  • 계약 조건이 만족되면 자동으로 이후 동작이 시스템에서 자동으로 수행되는 것
  • 계약 조건과 지불 조건 등이 프로그래밍 되는 것. 예를들면, 아들의 중간고사 평점이 90점이상이면 1만원을 지불한다. 라는 약속이 스마트 계약으로 작성될 수 있고, 아들 시험점수 블록이 장부에 등록되면, 자동으로 1만원이 아들의 wallet으로 이체됨


발전 중

Blockchain 1.0

  • PoW 기반의 consensus 알고리즘을 이용하여 middle man없이 신뢰할 수 있는 금전 거래를 가능하게 함
  • 단순하지만 middle man 개입없이 동작 가능한 시스템. 단순한만큼 성능과 확장성에 문제가 있음 
  • Bitcoin이 가장 대표적인 사례

Blockchain 2.0

  • Smart contract가 적용되는 programmable 한 blockchain이라는 점이 1.0과의 가장 큰 차이
  • 단순한 1차원적인 송금을 넘어 복잡한 수준의 계약 거래, 기계적인 보증이 가능해 짐
  • Ethereum 등 대다수의 platform이 smart contract 기술에 Turing complete 한 언어를 지원하기 때문에 real world에 존재하는 (거의) 모든 계약을 blockchain 위에 구현할 수 있게 됨 
  • The Economist described one implementation of this second-generation programmable blockchain as coming with "a programming language that allows users to write more sophisticated smart contracts, thus creating invoices that pay themselves when a shipment arrives or share certificates which automatically send their owners dividends if profits reach a certain level. 
  • Blockchain 2.0 technologies go beyond transactions and enable "exchange of value without powerful intermediaries acting as arbiters of money and information".
  • In early 2017, the Harvard Business Review suggested that blockchain is a foundational technology and thus "has the potential to create new foundations for our economic and social systems." It further observed that while foundational innovations can have enormous impact, "It will take decades for blockchain to seep into our economic and social infrastructure."

Blockchain 3.0

  • 1, 2세대 blockchain이 가지는 문제점 중 scalability, low TPS, High transaction fee 문제를 해결하려함
  • Tangle, Lightning network, Sidechain, DPoS 등 


Platform (already famous)

  • Bitcoin / Bitcoin Foundation
  • SIdechain
  • Lightning network
  • Ethereum / Ethereum foundation
  • Hyperledger / Linux foundation, IBM
  • Corda / R3 CEV (금융권 컨소시엄)
  • Coco framework / Microsoft
  • Ripple
  • EOS
  • IOTA


'블록체인' 카테고리의 다른 글

Blockchain 이란?  (0) 2018.01.02