블록 체인-퀵 가이드
최근 몇 년 동안 Blockchain에 대한 많은 소문이 있습니다. 많은 사람들이 이것을 10 년 동안 가장 파괴적인 기술로 묘사했습니다. 특히 금융 시장이 가장 큰 영향을받을 수 있습니다.
이 기술은 의료, 의약품, 보험, 스마트 자산, 자동차, 심지어 정부와 같은 많은 업종에 적용되고 있습니다.
그러나 지금까지 블록 체인의 가장 성공적인 구현은 비트 코인 (Peer-to-Peer Electronic Cash System)이며, 이는 부수적으로 블록 체인 기술의 첫 번째 구현이기도합니다. 따라서 블록 체인 기술을 이해하려면 비트 코인 시스템이 어떻게 설계되고 구현되는지 이해하는 것이 가장 좋습니다.
이 기사에서는 블록 체인이 무엇인지, 아키텍처, 구현 방법 및 다양한 기능에 대해 알아 봅니다. 블록 체인의 복잡성을 설명하면서 비트 코인 구현을 사이트에 올릴 것입니다.
블록 체인 아키텍처는 그다지 사소한 것이 아니며 많은 사람들이 여러 비디오를 포함한 좋은 기사, 튜토리얼을 작성했습니다. 이들은 초보자부터 전문가까지 다양한 대상입니다. 이 튜토리얼에서는 초보자와 전문가 모두를 염두에두고 블록 체인 아키텍처의 개념적 이해에 초점을 맞출 것입니다. 블록 체인을 탐구하기 전에이 새로운 기술이 왜 필요했는지 아는 것이 중요합니까? 이 질문에 대한 답은Double − Spending.
이미지에 표시된 상황을 고려하십시오-
여기에서 분명히 볼 수 있듯이 Bob은 책 대신 Lisa에게 $ 10 지폐를 입찰하고 있습니다. Lisa가이 실제 $ 10 청구서를 받으면 실제 통화가 이제 Lisa가 소유하고 있기 때문에 Bob이이 돈을 다른 거래에 재사용 할 방법이 없습니다.
이제 돈이 디지털 형태로 지불되는 상황을 고려하십시오. 이것은 이미지에 설명되어 있습니다-
환전 형식은 디지털 형식이므로 본질적으로 Bob의 장치에 저장된 바이너리 물리적 파일입니다. Bob은이 파일 (디지털 화폐)을 Lisa에게주고 나면 파일 사본을 Alice에게도 줄 수 있습니다. 이제 두 사람 모두 디지털 코인을 인증 할 수단없이 돈을 받았으며 따라서 각자의 상품을 Bob에게 전달할 것이라고 생각합니다. 이것은 ... 불리운다double-spending 송금인이 여러 공급 업체로부터 서비스 또는 상품을 얻기 위해 여러 장소에서 동일한 돈을 지출하는 경우.
이중 지출 문제를 해결하기 위해 중앙 집중식 권한을 사용하여 모든 거래를 모니터링합니다. 이것은 이미지에 설명되어 있습니다-
일반적인 용어로 은행 인 중앙 집중식 기관은 모든 거래를 기록하는 원장 장부를 유지합니다. 이제 Bob은 자신의 디지털 머니를 은행에 보내야 은행에서 Bob의 계좌를 인출하는 원장에 입력 할 수 있습니다. Bob이 자신이 보내고 자하는 디지털 돈을 지불 할 충분한 잔액이 있는지 확인한 후 Lisa에게 돈을 보내서 원장에 그녀의 계정을 입금합니다.
이제 Bob은 돈을 두 배로 쓸 수 없습니다. 모든 디지털 거래가 이와 같은 중앙 집중식 기관을 통해 라우팅되면 이중 지출 문제가 해결 될 것입니다. 이것은 또한 거래에서받는 각 코인 (디지털 머니)의 진위를 검증하는 또 다른 이점을 제공합니다. 따라서 가짜 돈 (Bob이 복사본을 사용하여 Alice에게 지불하는 경우와 같이 중복 된 돈)은 쉽게 감지되어 유통되는 것을 방지 할 수 있습니다.
중앙 집중식 권한의 도입은 이중 지출 문제를 해결하고 또 다른 주요 문제인 중앙 집중식 권한 자체를 만들고 유지하는 데 드는 비용을 야기합니다.
은행은 운영에 돈이 필요하기 때문에 고객을 위해 수행하는 각 통화 거래에 대한 수수료를 줄이기 시작합니다. 특히 여러 에이전트 (은행)가 전체 거래에 관여 할 수있는 해외 송금의 경우 이는 때때로 매우 비쌀 수 있습니다.
위의 모든 문제는 비트 코인이라는 디지털 통화의 도입으로 해결됩니다. 이제 비트 코인의 디자인과 아키텍처를 탐구하기 전에 비트 코인이 무엇인지에 대한 간단한 배경을 알려 드리겠습니다.
비트 코인은 2008 년에 Bitcoin : A Peer-to-Peer Electronic Cash System 이라는 연구 스타일의 백서를 통해 Satoshi Nakamoto가이 세상에 소개했습니다 .
비트 코인은 이중 지출 문제를 해결할뿐만 아니라 더 많은 이점도 제공했습니다. 여기서 언급 할 가치가있는 이점 중 하나는 거래의 익명 성입니다. 시스템을 만들고이 시스템에서 몇 개의 코인을 거래 한 사토시는 전 세계에 완전히 익명입니다.
이 소셜 미디어 세계에서 각 개인의 프라이버시가 위태로울 때 지금까지 세계가 사토시가 누구인지 추적 할 수 없다고 상상해보십시오. 사실, 우리는 사토시가 개인인지 집단인지는 모릅니다. 인터넷 검색을 통해 Satoshi Nakamoto가 보유하고있는 비트 코인의 가치가 약 194 억 달러라는 사실이 밝혀졌습니다.이 돈은 현재 비트 코인 시스템에서 청구되지 않은 상태로 남아 있습니다. 그래서 비트 코인이란 무엇입니까?
비트 코인이란?
앞서 보셨 듯이 은행은 각 거래를 기록하는 원장을 유지합니다. 이 원장은 은행에서 비공개로 유지하고 관리합니다. Satoshi는이 원장을 공개하고 커뮤니티에서 관리 할 것을 제안했습니다.
그러한 원장을 공개하는 순간 몇 가지 고려 사항이 떠오를 것입니다. 이 원장은 누구도 항목을 수정할 수 없도록 변조를 방지해야합니다. 원장의 각 항목이 공개적으로 표시되므로 익명 성을 유지하는 방법을 알아 내야합니다. 분명히 전 세계의 모든 사람이 내가 100 만 달러를 지불 한 사실을 알기를 원하지는 않습니다.
또한 전 세계의 모든 거래를 추적하는 단 하나의 원장이 있기 때문에 원장의 크기는 또 다른 큰 관심사가 될 것입니다. 이러한 복잡한 문제에 대한 해결책을 제공하는 것은 사소한 일이 아니 었습니다. 이것이 제가 여기서 비트 코인의 기본 아키텍처를 간단한 말로 이해하도록 시도하고있는 것입니다.
이 기본 아키텍처는 Blockchain이것이이 튜토리얼의 내용입니다. 블록 체인 아키텍처를 이해하려면 기반이되는 몇 가지 주요 기능을 이해해야합니다. 이제 PKI (공개 키 암호화)를 시작하겠습니다.
공개 키 암호화 또는 간단히 PKI는 비대칭 암호화라고도합니다. 공개 및 비공개의 두 쌍의 키를 사용합니다. 키는 긴 이진수입니다. 공개 키는 전 세계에 배포되며 이름에서 알 수 있듯이 진정으로 공개됩니다. 개인 키는 엄격하게 비공개로 유지되어야하며 절대 잃어 버려서는 안됩니다.
비트 코인의 경우, 비트 코인 지갑의 개인 키를 잃어 버리면 지갑의 전체 내용이 즉시 도난에 취약 해지며,이를 알기도 전에 모든 돈 (지갑의 내용)이 없어집니다. 누가 그것을 훔쳤는 지 추적하는 시스템의 메커니즘입니다. 이것이 제가 앞에서 언급 한 시스템의 익명 성입니다.
PKI는 암호화 / 복호화 메커니즘을 통한 인증 및 메시지 프라이버시의 두 가지 기능을 수행합니다. 이제이 두 기능을 설명하겠습니다.
입증
두 당사자가 메시지를 교환 할 때 보낸 사람과받는 사람간에 신뢰를 설정하는 것이 중요합니다. 특히 수신자는 메시지의 출처를 신뢰해야합니다. Bob이 Lisa로부터 상품을 구매하기 위해 Lisa에게 돈을 보내는 이전 시나리오 (그림 1에 설명 됨)로 이동하여 PKI가 Bob과 Lisa 사이에 이러한 신뢰를 구축하는 방법을 살펴 보겠습니다. 아래 이미지를보세요-
우선 Bob이 Lisa에게 돈을 보내려면 자신의 개인 / 공개 키를 만들어야합니다. 두 키는 항상 함께 쌍을 이루며 다른 개인 또는 다른 인스턴스의 개인 및 공개 키를 혼합 할 수 없습니다.
이제 Bob은 Lisa에게 10 달러를 보내고 있다고 말합니다. 그래서 그는 Bob의 (발신자) 공개 키, Lisa (수신자) 공개 키 및 금액 ($ 10)을 포함하는 메시지 (일반 텍스트 메시지)를 만듭니다.
"당신에게서 호박을 사고 싶어요"와 같은이 송금의 목적도 메시지에 추가됩니다. 이제 전체 메시지가 Bob의 개인 키를 사용하여 서명됩니다. Lisa는이 메시지를 수신 할 때 PKI의 서명 확인 알고리즘과 Bob의 공개 키를 사용하여 메시지가 실제로 Bob이 보낸 것인지 확인합니다. PKI의 작동 방식은이 자습서의 범위를 벗어납니다. 관심있는 독자는 PKI에 대한 자세한 논의 를 위해이 사이트 를 참조합니다 . 이것은 메시지 발신자의 신뢰성을 설정합니다. 이제 메시지 개인 정보 보호를 살펴 보겠습니다.
메시지 개인 정보 보호
이제 Lisa는 지불을 받았으므로 Bob이 구매하려는 eBook에 대한 링크를 보내려고합니다. 따라서 Lisa는 이미지와 같이 메시지를 작성하여 Bob에게 보냅니다.
Lisa는 "당신이 요청한 내 eBook에 대한 링크입니다"와 같은 메시지를 생성하고 Bob의 요청 메시지에서받은 Bob의 공개 키로 서명하고 두 사람간에 공유되는 일부 비밀 키를 사용하여 메시지를 암호화합니다. HTTPS 핸드 셰이크 중.
이제 Lisa는 Bob 만 보유한 개인 키를 사용하여 Bob 만 메시지를 디코딩 할 수 있다고 확신합니다. 또한 메시지를 가로채는 사람은 내용이 Bob과 Alice만이 보유한 비밀 키로 암호화되어 있기 때문에 내용을 복구 할 수 없습니다. 이를 통해 Lisa는 자신의 eBook에 대한 액세스 권한이 Bob에게만 부여됩니다.
PKI가 암시하는 인증 및 메시지 프라이버시 기능을 모두 살펴본 후 비트 코인이 PKI를 사용하여 "비트 코인이란?"장에서 언급 한 공개 원장을 보호하는 방법을 살펴 보겠습니다.
당신의 지식으로-가장 인기있는 PKI 알고리즘은 RSA 와 ECDSA 이고 비트 코인은 후자를 사용합니다.
PKI에서 가장 중요한 기능 중 하나는 해싱 기능입니다. 해시 함수는 임의의 크기의 데이터를 고정 된 크기의 데이터에 매핑합니다. 비트 코인은 256 비트 (32 바이트) 크기의 해시 (출력)를 생성하는 SHA-256 해시 함수를 사용합니다. 이것은 이미지에 설명되어 있습니다-
Bob은 Lisa에게 주문하는 동안 위에 표시된 것과 유사한 메시지를 작성합니다. 이 메시지는 32 바이트 해시를 생성하는 해시 함수를 통해 해시됩니다. 이 해시의 장점은 모든 실용적인 목적에서 해시 (256 비트 번호)가 메시지 내용에 대해 고유 한 것으로 간주된다는 것입니다. 메시지가 수정되면 해시 값이 변경됩니다. 해시 값이 주어 졌을뿐만 아니라 원본 메시지를 재구성하는 것도 불가능합니다.
해싱의 중요성을 확인한 후 채굴이라는 비트 코인의 또 다른 개념으로 넘어가 보겠습니다.
Bob은 Lisa에 대한 구매 요청을 생성 할 때 Lisa에게만 요청을 보내지 않습니다. 오히려 요청 메시지는 그가 연결된 전체 네트워크에서 브로드 캐스트됩니다. Bob의 네트워크는 이미지로 묘사됩니다.
메시지는 연결된 모든 노드 (시스템)로 이동합니다. 다이어그램의 일부 노드는 마이너로 표시됩니다. 비트 코인 메시지를 채굴하기위한 소프트웨어를 실행하는 기계입니다. 이제이 채굴이 무엇을 의미하는지 설명하겠습니다.
채굴 과정
전체 네트워크가 널리 분산되어 있기 때문에 네트워크의 모든 채굴자는 주어진 시간에 여러 공급 업체로부터 여러 메시지를 수신 할 것으로 예상됩니다. 광부가하는 일은 이러한 메시지를 단일 블록에 결합하는 것입니다. 이것은 이미지에 설명되어 있습니다-
메시지 블록이 생성 된 후 채굴자는 앞서 설명한 해싱 기능을 사용하여 블록에 해시를 생성합니다. 이제 제 3자가이 블록의 내용을 수정하면 해당 해시가 무효화됩니다. 덧붙여서, 각 메시지에는 타임 스탬프가 찍혀 있으므로 아무도 블록의 해시 값에 영향을주지 않고 시간순으로 수정할 수 없습니다. 따라서 블록의 메시지는 변조로부터 완벽하게 보호됩니다. 이 사실이 네트워크의 모든 트랜잭션 보안에 어떻게 사용되는지 자세히 설명합니다.
다양한 채굴 자들이 생성 한 블록은 서로 연결되어 진정한 분산 된 공개 원장을 형성합니다.
체인의 각 블록은 그림 8의 앞부분에서 볼 수 있듯이 여러 메시지 (트랜잭션)를 포함합니다. 체인의 블록은 모든 채굴 자로부터 올 수 있습니다. 블록 체인을 생성하는 동안 이전 블록의 해시가 현재 블록에 추가되는 규칙을 관찰합니다.
따라서 채굴자는 블록을 생성하는 동안 체인의 마지막 블록의 해시를 선택하고이를 자체 메시지 세트와 결합하고 새로 생성 된 블록에 대한 해시를 생성합니다. 이 새로 생성 된 블록은 이제 체인의 새로운 끝이되며, 채굴 자들이 점점 더 많은 블록을 추가함에 따라 체인은 계속 성장합니다.
모든 트랜잭션에는 타임 스탬프가 찍혀 있으므로 P2P 네트워크에서 분산 타임 스탬프 서버를 구현해야합니다. 이것은 몇 가지 추가 구현이 필요하며 지금 설명 할 작업 증명입니다. 이제 각 블록에 다음 항목을 하나 더 추가합니다.Nonce 아래 그림과 같이-
Nonce는 블록의 해시가 특정 기준을 충족하는 숫자입니다. 이 기준은 생성 된 해시의 선행 4 자리 숫자가 0이어야한다는 것입니다.
따라서 생성 된 해시는 000010101010xxx와 같습니다. 일반적으로 광부는 Nonce 값 0으로 시작하여 생성 된 해시가 지정된 기준을 충족 할 때까지 계속 증가시킵니다.
해시 생성은 무작위로 작동하며 제어 할 수 없습니다. 즉, 해시 함수가 특정 해시를 생성하도록 강제 할 수 없습니다. 따라서 선행 0이 4 개인 원하는 해시가 생성 될 때까지 여러 번 반복해야 할 수 있습니다. 비트 코인 시스템에서 블록을 생성하는 데 예상되는 시간은 10 분입니다. 광부가 성공적으로 블록을 채굴하면 시스템에서이를 해제하여 이제 체인의 마지막 블록이됩니다.
합법적 인 블록을 생성하기 위해 경쟁하는 여러 채굴자가 있습니다. 비트 코인 시스템은 그에게 특정 비트 코인을 제공함으로써 최초의 성공적인 채굴 자에게 수여합니다. 일반적으로 더 많은 컴퓨팅 파워를 가진 채굴자가 초기 승자가 될 수 있습니다. 이것은 엄청난 처리 능력을 가진 사람들에 의해 전체 시스템에 대한 공격을 일으킬 수 있습니다. 이 튜토리얼의 끝에서 공격과 이러한 공격을 완화하는 방법에 대해 설명합니다.
이제 위에서 설명한 단계를 요약하겠습니다. 이것은 네트워크에서 일어나는 일입니다-
네트워크에 광고 한 제 3 자로부터 서비스를 받고자하는 사람은 먼저 거래 (원하는 수신자에게 보내는 메시지)를 생성합니다.
일정 기간 동안 이러한 거래를 생성하는 많은 발신자 (구매자)와 수신자 (판매자)가있을 수 있습니다.
모든 트랜잭션은 네트워크에서 모든 노드로 브로드 캐스트됩니다. 주어진 트랜잭션이 네트워크의 모든 다른 노드에 도달해야하는 것은 아닙니다.
각 노드는 새로운 트랜잭션을 블록으로 어셈블합니다. 각 블록의 트랜잭션 집합은 다른 사람이 만든 블록 집합과 독립적이며 자연스럽게 다른 블록과 다릅니다. 이것은 중요하지 않습니다. 시스템은 네트워크상의 모든 트랜잭션 브로드 캐스트가 적절한 시간 동안 일부 블록에 포함되도록합니다. 일반적으로 발신자는 노력에 대해 일정량의 비트 코인을 채굴 자에게 제공하여 노드에 인센티브를 제공합니다. 광부는 더 높은 인센티브를 가진 사람들에게 블록에 포함되도록 우선 순위를 부여 할 수 있습니다.
이제 노드는 조립 된 블록에 대한 작업 증명을 찾는 작업을합니다.
노드가 작업 증명을 찾으면 네트워크에서 조립 된 블록을 브로드 캐스트합니다.
새 블록을 수신하는 노드는 블록의 모든 트랜잭션이 유효하고 이미 사용되지 않았 음을 확인한 후에 만이를 수락합니다.
블록이 유효한 것으로 승인되면 자체 새 블록에서 작업중인 노드는 트랜잭션이 중복되지 않도록 블록에서 트랜잭션을 다시 조립해야합니다. 노드는 이제 새로 생성 된 블록에서 작업 증명을 찾는 작업을 수행합니다. 그렇게하는 동안 허용 된 블록의 해시를 이전 해시로 가져옵니다.
마찬가지로 블록 체인은 영원히 계속 성장합니다.
이제 전체 시스템이 어떻게 작동하는지 살펴 보았으므로 몇 가지 부작용과 해결 방법을 설명하겠습니다.
비트 코인-채굴 장에서 보았 듯이, 채굴자는 주어진 기간에 많은 거래로 넘쳐날 수 있습니다. 블록의 최대 크기는 시스템에 미리 정의되어있어 특정 수의 트랜잭션 만 블록에 포함되어야합니다.
블록의 트랜잭션 수는 미리 정의 된 블록 크기와 각 블록의 평균 길이에 의해 결정됩니다. 여기서 중요한 팁은 발신자가 메시지에 너무 많은 정보를 포함하여 짧게 만들어 다른 긴 메시지보다 먼저 채굴자가이를 수락하도록 유도해서는 안된다는 것입니다.
발신자는 일반적으로 채굴자가 자신의 블록에 조기 포함되도록 인센티브를 제공하기 위해 특정 수의 비트 코인과 관련하여 거래 수수료를 추가합니다.
블록 체인 구축의 다른 결과는 단순한 크기입니다. 일정 시간이 지나면 전체 블록 체인이 노드가 디스크에 저장하기에 너무 커질 수 있습니다. 이것은 다음에 설명하는 Merkle Tree를 사용하여 해결됩니다.
노드의 디스크 공간 문제는 그림과 같이 블록의 모든 트랜잭션이 머클 트리에서 해시되기 때문에 쉽게 극복됩니다.
이제 블록 헤더에는 이전 블록의 해시, Nonce 및 Root Hash머클 트리의 현재 블록에있는 모든 트랜잭션의. 이것으로Root Hash블록 내 모든 트랜잭션의 해시를 포함하며 이러한 트랜잭션은 디스크 공간을 절약하기 위해 정리 될 수 있습니다. 이제 블록 체인은 아래 이미지와 같습니다.
이로 인해 디스크 공간이 많이 절약 될 수 있습니다. 이 전략은 다른 사람으로부터 지불금을받는 데 관심이있는 일반 고객이 사용합니다. 그러나 채굴자는 전체 블록 체인을 저장해야합니다. 이제 수취인이 수령 한 코인을 출처까지 추적 할 수있는 능력없이 결제를 확인하는 방법에 대한 의문이 생깁니다. 이것은 다음에 설명됩니다.
공급 업체로서 과거에 지불 한 특정 지불을 확인하려는 경우를 고려하십시오. 컴퓨터에 보유하고있는 블록 체인에는 이전 그림과 같이 블록 헤더 만 포함되어 있으므로 검색중인 트랜잭션이 블록 체인 사본에서 누락되었습니다.
이제 원하는 트랜잭션이 타임 스탬프가 찍힌 블록을 찾을 때까지 블록 체인 사본에서 거꾸로 검색 할 수 있습니다. 이제 선택한 블록의 머클 트리를 요청하면 찾고있는 트랜잭션을 갖게됩니다. 이것은 아래 그림에 설명되어 있습니다-
여기에서는 Tx103을 찾고 있다고 가정합니다. Tx103의 내용을 볼 수는 없지만 그것이 속한 블록과 체인의 모든 후속 블록에서이를 수락했음을 알고 있습니다. 따라서이 거래를 안전하게 신뢰하고 비즈니스를 진행할 수 있습니다.
우리가 보았 듯이 비트 코인 네트워크에는 여러 채굴자가 포함되어 있습니다. 두 명의 다른 채굴자가 동시에 작업 증명을 해결하여 체인에서 마지막으로 알려진 블록에 블록을 추가 할 수 있습니다. 이것은 아래 이미지에 설명되어 있습니다-
이제 블록 3 뒤에 두 개의 분기가 있습니다. 두 분기가 모두 유효합니다. 따라서 다음 채굴 된 블록이 두 가지 중 하나에 추가 될 수 있습니다. 채굴자가 새로 채굴 된 블록을 블록 104-A에 추가한다고 가정하면, 블록 104-A를 포함하는 분기는 블록 104-B를 포함하는 분기보다 길 것입니다. 이것은 아래 이미지에 설명되어 있습니다-
비트 코인 아키텍처에서 가장 긴 분기가 항상 승리하고 짧은 분기가 제거됩니다. 따라서 블록 104-B를 제거해야합니다. 이 블록을 제거하기 전에이 블록의 모든 트랜잭션은 트랜잭션 풀로 반환되어 채굴되어 향후 블록에 추가됩니다. 이것이 충돌이 해결되는 방법이며 시스템은 하나의 블록 체인 만 유지합니다.
모든 비트 코인 거래를 기록하는 원장이 진정으로 공개됨에 따라 프라이버시가 위태 롭습니다. 누구에게 누가 돈을 지불했는지 알 수있는 사람은 누구입니까? 전통적인 은행 시스템은 기록을 기밀로 유지함으로써 이러한 종류의 개인 정보를 유지할 수 있습니다.
비트 코인 시스템의 개인 정보 보호는 다른 전략으로 달성됩니다. 비트 코인 발신자는 누구를 지불해야하는지 알아야합니다. 그래서 그는 지불하고자하는 공급 업체의 공개 키를 요청합니다. 이 공개 키는 익명 일 수 있습니다.
어떤 의미에서 어떤 서비스의 공급 업체로서 누군가가 당신에게 지불금을 보낼 곳을 물을 때, 당신은 그에게 당신의 공개 키를 단순히 보낼 것입니다. 이 공개 키와 귀하와의 연관성은 원장 어디에도 기록되지 않습니다. 이렇게하면이 거래 외부의 사람은 얼마나 많은 돈이 거래되고 어떤 공개 키로 돈이 지급되는지 알 수 있습니다.
더 높은 수준의 개인 정보 보호를 위해 모든 거래에 대해 각 거래에 대해 새로운 개인 / 공개 키를 생성하여 귀하가 수행 한 여러 거래를 제 3자가 함께 그룹화 할 수 없도록 할 수 있습니다. 외부인에게 이것은 단순히 더 작은 가치의 여러 거래가 이루어졌고 결코 공통 소스에 연결되지 않을 것임을 의미합니다.
마지막으로 모든 온라인 인터넷 기반 시스템은 남용에 취약합니다. 이제 비트 코인 시스템에 대한 몇 가지 가능한 공격 유형과 이러한 공격이 완화되는 방법에 대해 설명하겠습니다.
비트 코인 시스템에서 가능한 세 가지 유형의 공격에 대해 논의하겠습니다.
레이스 공격
공격자는 두 대의 다른 컴퓨터를 사용하여 동일한 코인을 다른 공급 업체에 빠르게 연속적으로 보낼 수 있습니다. 벤더가 상품을 배송하기 전에 블록 확인을 기다리지 않으면 채굴 과정에서 거래가 거부되었음을 곧 알게 될 것입니다. 이러한 종류의 공격에 대한 해결책은 공급 업체가 상품을 발송하기 전에 적어도 한 번의 블록 확인을 기다려야한다는 것입니다.
피니 공격
이 경우 공격자는 광부입니다. 채굴자는 자신의 거래로 블록을 채굴하고 시스템에서 해제하지 않습니다. 그는 이제 두 번째 트랜잭션에서 동일한 코인을 사용한 다음 미리 채굴 된 블록을 해제합니다. 분명히 두 번째 거래는 결국 다른 채굴 자들에 의해 거부 될 것이지만 이는 시간이 좀 걸릴 것입니다. 이 위험을 완화하려면 판매자는 상품을 출시하기 전에 최소 6 개의 블록 확인을 기다려야합니다.
51 % 공격
이런 종류의 공격에서 우리는 누군가가 네트워크 컴퓨팅 파워의 51 %를 소유하고 있다는 비현실적인 가정을 내 놓습니다. 이런 종류의 공격에서 공격자는 개인 블록 체인을 채굴하여 코인을 두 배로 소비합니다.
그는 대부분의 컴퓨팅 파워를 소유하고 있기 때문에 어느 시점에서 그의 프라이빗 블록 체인이“정직한”네트워크 체인보다 더 길다는 것을 보장합니다. 그런 다음 시스템에서 개인 블록 체인을 해제하여 이전에 정직한 블록 체인에 기록 된 모든 거래를 무효화합니다.
이러한 종류의 공격은 전체 네트워크 컴퓨팅 성능의 51 % 이상인 컴퓨팅 성능을 얻는 데 매우 비용이 많이 들기 때문에 가상의 공격입니다.
이 짧은 튜토리얼에서는 비트 코인을 사례 연구로 삼아 블록 체인의 몇 가지 개념을 소개했습니다. 비트 코인은 블록 체인의 첫 번째 성공적인 구현입니다. 오늘날 세계는 중앙 집중식 기관의 개입없이 신뢰가 요구되는 여러 산업에서 블록 체인 기술의 응용을 발견했습니다. 그러니 블록 체인의 세계에 오신 것을 환영합니다.
추가 자료-
Satoshi의 원본 문서 − Bitcoin : P2P 전자 현금 시스템
공식 사이트 -Bitcoin.org