2017년 12월 13일 수요일

블록 체인과 가상 화폐

블록 체인은 새로운 최신 기술로서 비트코인과 같은 가상화폐를 지원하는 기반 기술입니다. 전문가들은 블록 체인이 인터넷이 탄생했을때와 같은 유사한 혁명을 불러올거라고 말합니다. 이에 대해 기술적인 자세한 내용은 아래에 볼 수 있습니다.

블록 체인이란 무엇인가?

블록 체인은 비트코인을 지원하기 위해 만들어졌지만 비트코인 생태계에 관계없이 블록 체인 개념을 정의할 수 있습니다. 일반적으로 블록 체인을 다음과 같이 정의합니다.

블록 체인은 Peer-To-Peer 네트워크로 조립된 여러 대의 컴퓨터에서 복제된 팩트 (Fact)의 원장입니다. 사실은 화폐 거래에서부터 콘텐츠 서명에 이르기까지 다양합니다. 네트워크 구성원은 노드라고하는 익명의 개인입니다. 네트워크 내의 모든 통신은 암호화를 이용하여 발신자와 수신자를 안전하게 식별합니다. 노드가 장부에 팩트를 추가하기를 원할때 네트워크에서 합의가 이루어 지므로이 팩트가 장부에 표시되어야 하는 위치를 결정합니다. 이 합의는 블록이라고 불립니다.

팩트 순서

분산된 Peer-To-Peer 네트워크는 새로운 것이 아닙니다. Napster BitTorrent P2P 네트워크입니다. 블록 교환 네트워크의 구성원은 영화를 교환하는 대신 팩트를 교환합니다.

P2P 네트워크는 다른 분산 시스템과 마찬가지로 매우 어려운 컴퓨터 과학 문제, 즉 갈등 해소 또는 화해 문제를 해결해야합니다. 관계형 데이터베이스는 참조 무결성을 제공하지만 분산 시스템에는 그러한 요소가 없습니다. 2개의 양립할 수 없는 팩트가 동시에 도착하면, 시스템은 어떤 팩트가 유효한 것으로 간주되는지를 결정하는 규칙을 가져야합니다.

예를 들어 이중 지출 문제를 생각해 보면, Alice 10달러를 가지며 Bob Charlie에게 10달러를 2번 보냅니다. 누가 10달러를 결국 가질 것인가라는 이 질문에 대답하려면 가장 좋은 방법은 팩트를 주문하는 것입니다. 2개의 호환되지 않는 팩트가 네트워크에 도착하면 기록된 첫번째 것이 이깁니다.


P2P 네트워크에서 대략 동시에 전송된 2개의 팩트는 떨어진 노드에 다른 순서로 도착할 수 있습니다. 그렇다면 어떻게 전체 네트워크가 첫번째 팩트에 동의할 수 있습니까? P2P 네트워크에서 무결성을 보장하려면 모든 사용자가 팩트의 순서에 동의하도록 해야 합니다. 컨센서스 시스템이 필요합니다.

분산 시스템을 위한 컨센서스 알고리즘은 매우 활발한 연구 분야입니다. Paxos 또는 Raft 알고리즘 등이 그러한 연구 분야에 속합니다. 블록 체인은 블록을 사용하여 또다른 알고리즘인 작업 증명 합의 (Proof-of-Work Consensus)를 구현합니다.

블록

블록은 신뢰할 수없는 피어 네트워크에서 팩트를 순서매기는 현명한 트릭입니다. 아이디어는 간단합니다. 팩트는 블록 단위로 그룹화되며 전체 네트워크에 복제된 단일 블록 체인만 있습니다. 각 블록은 이전 블록을 참조합니다. 따라서, 팩트 F가 블록 21에 있고, 팩트 E가 블록 22에 있다면, 팩트 E는 전체 네트워크에 의해 팩트 F의 후방으로 간주됩니다. 블록에 추가되기 전에, 팩트가 보류중, 즉 미확인 상태입니다.


채굴

체인의 일부 노드는 보류중인 사실로 새로운 로컬 블록을 작성합니다. 그들은 자신의 로컬 블록이 주사위를 굴려서 전체 네트워크의 체인에서 다음 블록이 될것인지를 보기 위해 경쟁합니다. 노드가 6배가 되면 로컬 블록을 게시할 수 있게 되며 이 블록의 모든 팩트가 확인됩니다. 이 블록은 네트워크의 다른 모든 노드로 전송됩니다. 모든 노드는 블록이 올바른지 확인하고 체인의 복사본에 추가한후 새로운 보류중인 팩트로 새 블록을 작성합니다.


그러나 노드는 단지 몇 개의 주사위를 굴리는 것이 아닙니다. 블록 체인의 문제점은 엄청난 수의 주사위 굴림을 의미합니다. 의도적으로 블록을 검증하기 위해 무작위 키를 찾는 것은 거의 불가능합니다. 이렇게하면 사기를 방지하고 악의적인 사용자가 네트워크의 노드중 절반 이상을 소유하지 않는한 네트워크를 안전하게 만듭니다. 결과적으로 새로운 블록이 고정된 시간 간격으로 체인에 게시됩니다. 비트코인에서 블록은 평균 10분마다 게시됩니다.

Bitcoin에서 이 문제는 보류중인 팩트, 이전 블록의 식별자 및 임의의 문자열로 구성된 문자열의 이중 SHA-256 해시를 포함합니다. 해시가 적어도 n개의 0을 포함하면 노드가 승리합니다.

// Bitcoin의 잃어버린 해시
787308540121f4afd2ff5179898934291105772495275df35f00cc5e44db42dddd
// n 10인 경우 비트코인의 이기는 해시
00000000009f766c17c736169f79cb0c65dd6e07244e9468bc60cde9538b551e

노드 수의 변화에도 불구하고 블록 지속 시간을 유지하기 위해 숫자 n 1번씩 조정합니다. 이 번호를 난이도라고 합니다. 다른 블록 체인 구현은 ( : 대용량 메모리 전송을 요구함으로써) GPU의 사용을 방해하는 특수 해싱 기술을 사용합니다.

블록을 찾는 프로세스를 마이닝 (채굴)이라고합니다. 이것은 금 광산과 마찬가지로 블록 채광이 경제적인 보상 - 어떤 형태의 돈을 가져 오기 때문입니다. 이것이 블록 체인에서 노드를 실행하는 사람들을 광부라고 부르는 이유입니다.

참고 : 기본적으로 노드는 광산이 아닙니다. 다른 노드에서 채굴한 블록만 수신합니다. 노드를 광부 노드로 전환하는 것은 자발적 프로세스입니다.

돈과 크립토 통화

매초마다 블록 체인의 각 광산 노드는 수천 개의 임의 문자열을 테스트하여 새로운 블록을 만들려고 시도합니다. 따라서 블록 체인에서 광부를 실행하면 엄청난 양의 컴퓨터 리소스 (저장소 및 CPU)가 가동됩니다. 이것이 팩트를 블록 체인에 저장하기 위해 비용을 지불해야 하는 이유입니다. 반면에 팩트를 읽는 것은 무료입니다. 자신의 노드만 실행하면 다른 모든 노드에서 발행한 팩트의 전체 내역을 복구할 수 있습니다.

▲ 데이터 읽기는 무료입니다.
▲ 팩트를 추가하는데 약간의 수수료가 부과됩니다.
▲ 블록 채광은 블록에 포함된 모든 수수료의 돈을 가져옵니다.

우리는 여기서 진짜 돈을 말하는 것이 아닙니다. 사실, 각 블록 체인에는 고유한 (crypto-) 통화가 있습니다. 비트코인 네트워크에서 Bitcoin (BTC), 이더리윰 네트워크에서 Ether (ETH) 등으로 불립니다. 비트코인 네트워크에서 지불을 하려면 비트코인으로 약간의 수수료를 지불해야 합니다 - 마치 은행에 수수료를 지불하는 것처럼.

광부들은 네트워크를 안전하게 유지하기 위한 만족감을 얻습니다. 블록을 성공적으로 채굴할 때마다 고정된 양의 크립토 통화 (Cryptocurrency)를 받습니다. 비트코인에서 이 만족은 블록당 25 BTC이고, 이더리윰에서는 블록당 5 ETH입니다. 그런 식으로 블록 체인은 자체 돈을 벌어들입니다.

마지막으로, 크립토 통화는 급속하게 진짜 돈으로 바뀔 수 있게 됩니다. 그들의 가치는 제안과 수요에 의해서만 결정되므로 추측의 대상이 됩니다. 현재는 비트코인을 채굴하는 과정에서 발견한 동전을 판매함으로써 얻을 수 있는 것보다 에너지와 하드웨어가 점점 더 비용이 증가하고 있습니다. 그래서 사람들은 매일 전기를 돈으로 바꿔기를 희망하면서 새로운 광부를 추가합니다. 그러나 BTC 가치의 변동은 수익성을 떨어 뜨립니다.


계약서

지금까지 우리는 대부분 팩트 저장소를 언급했지만 블록 체인은 프로그램을 실행할 수도 있습니다. 일부 블록 체인은 각 팩트에 미니 프로그램을 포함할 수 있습니다. 이러한 프로그램은 팩트와 함께 복제되며 모든 노드는 팩트을 수신하면 이를 실행합니다. 비트코인에서는 거래를 조건부로 처리하는데 사용할 수 있습니다 (예를 들어, Bob은 오늘 2 29일 경우에만 Alice로부터 100 BTC를받습니다).

다른 블록 체인을 사용하면 보다 정교한 계약을 체결할 수 있습니다. 예를 들어, 이더리윰에서 각 계약은 미니 데이터베이스를 전달하고 데이터를 수정하는 메소드를 노출합니다. 계약은 모든 노드에서 복제되므로 데이터베이스도 복제됩니다. 사용자가 계약의 메소드를 호출하여 기본 데이터를 업데이트할 때마다 이 명령이 복제되어 전체 네트워크에서 재생됩니다. 이를 통해 약속 실행 (Execution of promise)에 대한 분산된 합의 (Distributed Consensus)가 가능합니다.

현실 세계와 인터페이스되고 모든 사람에게 방송되는 사전 프로그래밍된 조건에 대한 이 아이디어를 스마트 계약 (Smart Contract)이라고합니다. 계약은 서명 당사자들이 법적으로 집행할 수 있다는데 동의한다는 약속입니다. 스마트 계약은 "합법적" 대신 "기술적으로"라는 단어를 제외하고는 동일합니다. 이를 통해 판사나 양당사자가 인정한 권한이 필요하지 않습니다.

당신이 1주일 동안 집을 50% 선불로 1,000 달러에 렌트한다고 상상해 봅시다. 당신과 대부자는 아마도 변호사가 쓴 계약서에 서명할 것입니다. 또한 지불을 받으려면 은행이 필요합니다. 당신은 주초에 5,000 달러 보증금을 요청합니다. 대부자는 그에 대한 수표를 씁니다. 주말에, 대부자는 나머지 50%를 지불하기를 거절합니다. 그러면 당신은 배부자가 계약을 파기한 것과 보증금 수표는 빈 계좌인 것을 알았습니다. 법원에서 임대 계약을 시행할 수 있도록 하기 위해서는 변호사가 필요합니다.

블록 체인의 스마트 계약을 통해 은행, 변호사 및 법원이 필요하지 않을 수 있습니다. 특정 조건에 따라 얼마나 많은 돈을 이체해야 하는지 정의하는 프로그램을 작성하면 됩니다.

임대 시작 2주 전 : 대부자에서 소유자에게 500 달러 이체
소유자에 의한 취소 : 소유자로부터 대부자에게 500 달러 양도
임대 기간 종료 : 대부자에서 소유자에게 500 달러 양도
임대 기간 이후 물리적 증거 : 대부자로부터 소유자에게 5,000 달러 양도

이 스마트 계약을 블록 체인에 업로드하면 모든 설정이 완료됩니다. 계약서에 정의된 시점에 송금이 이루어집니다. 소유자가 미리 정의된 물리적인 증거를 가져올 수 있는 경우 자동으로 5,000 달러를 입금합니다 (보증금없이).

물리적 증거를 만드는 방법을 궁금해할 것입니다. 이것이 사물인터넷 (Internet of Things)이 접점되는 곳입니다. 실제 세계와 상호 작용하려면 블록 체인에 센서와 액추에이터가 필요합니다. IoT 혁명이 먼저 일어나지 않으면 블록 체인 혁명은 일어나지 않을 것입니다.

스마트 계약에 의존하는 이러한 애플리케이션을 분산 애플리케이션 (Distributed Apps, DApps)이라고 합니다.

스마트 계약은 자연적으로 스마트 재산 (Smart Property)과 많은 스마트 개체 (Smart Thing)로까지 확장됩니다. 기억해야 할 것은 "스마트"이란 "중개자 없음"또는 "기술적으로 시행된"을 의미합니다.

블록 체인을 이해하는 가장 좋은 방법은 다양한 각도에서 살펴보는 것입니다.

■ 수행 기능 : 블록 체인을 사용하면 신뢰할 수 없는 피어 네트워크를 통해 여러 당사자간에 데이터를 안전하게 공유 및/또는 처리할 수 있습니다. 데이터는 무엇이든 가능하지만 가장 흥미로운 용도는 현재 신뢰할 수 있는 제3자가 교환해야 하는 정보입니다. 예를 들면 돈 (은행 필요), 증명 또는 재산 (변호사가 필요함), 대출 증명서 등이 있습니다. 본질적으로 블록 체인은 신뢰할 수 있는 제3자의 필요성을 제거합니다.

■ 작동 원리 : 기술적인 관점에서 볼때, 블록 체인은 Peer-to-Peer 네트워크, 공개 키 암호화 및 임의의 수학적 해결 과제를 기반으로 하는 분산된 합의의 3가지 개념에 의존하는 혁신입니다. 그 중 개념이 새로운 것은 없습니다. 컴퓨팅에서 획기적인 발전을 가능하게 하는 것은 바로 그 조합입니다. 모든 것을 이해하지 못하더라도 걱정할 필요가 없으며, 블록 체인을 독자적으로 개발할 수 있는 사람은 거의 없습니다. 하지만 TCP 슬로우 스타트와 인증 기관에 대해 알지 못해도 웹 앱을 만들 수 있는 것처럼 블록 체인을 이해하지 못한다고 해서 사용하지 못하는 것은 아닙니다.

■ 비교 대상 : 노드가 있는 수만큼 복제되고 (느슨하게) 동기화된된 데이터베이스 또는 모든 노드의 CPU/GPU 조합으로 구성된 수퍼 컴퓨터로 블록 체인을 봅니다. 이 슈퍼 컴퓨터를 사용하여 원격 API에서와 마찬가지로 데이터를 저장하고 처리 할 수 있습니다. , 백엔드를 소유할 필요는 없으며 네트워크에서 데이터가 안전하고 올바르게 처리되었는지 확인할 수 있습니다.

실용적 함의

블록 체인에 저장된 사실은 사라지지 않습니다. 그들은 영원히 거기에 있어 노드가 있는 만큼 반복합니다. 블록 체인은 단순히 최종 상태를 저장하는 것이 아니라 모든 지나간 상태의 기록을 저장하므로 처음부터 사실을 재생하여 모든 사람이 최종 상태의 정확성을 검사할 수 있습니다.

블록 체인의 사실은 기술적으로 집행 가능한 합의에 의해 검증되기 때문에 신뢰할 수 있습니다. 네트워크에 오류가 포함되어 있어도 전체 판단을 신뢰할 수 있습니다.

블록 체인에 데이터를 저장하는 것은 분산된 합의가 필요하기 때문에 빠르지 않습니다.

댓글 없음:

댓글 쓰기