avatar of 发明者量化-小小梦 发明者量化-小小梦
집중하다 사신
4
집중하다
1271
수행원

비트코인 프로토콜의 작동 방식(1부)

만든 날짜: 2017-01-19 18:04:02, 업데이트 날짜: 2017-01-19 18:11:24
comments   0
hits   1625

비트코인 프로토콜의 작동 방식(1부)

작년에 여기서는 비트코인에 대한 5가지 생각을 썼는데, 아마도 이것이 비트코인에 대한 첫 번째 글인 것 같지만, 오늘 여기서는 비트코인의 협정에 대해 소개합니다.

이 글은 마이클 닐슨의 Bitcoin 프로토콜에 관한 글을 번역한 것입니다. 이 글은 번역자가 쓴 Bitcoin에 관한 가장 명확한 글이라고 생각합니다. 마이클 닐슨은 양자 컴퓨팅을 연구하는 선구자 과학자, 작가 및 프로그래머입니다. 자세한 내용은 그의 자신의 소개를 참조하십시오. 이 글은 번역자가 Bitcoin에 관한 글과 토론을 생각하기 때문에 번역되었습니다. 많은, 많은 지지와 많은 반대가 있습니다. 그러나 대부분은 개념, 가격 및 주관적 사고에 머물러 있습니다.

마카노토는 다른 사람을 설득하는 것을 결코 시도하지 않고, 글을 인터넷에 게시하여 다른 사람들이 스스로 판단하도록 한다. 그는 이렇게 말했다. “그것이 기사를 압축하고 가능한 한 빨리 홍보를 덜하는 데 도움이 될 것입니다.

  • ### 본문입니다.

수천 개의 기사가 비트코인, 온라인, 피어-투-피어 (Peer-to-Peer) 의 화폐를 설명하려고 시도했다. 대부분의 기사는 그 기반의 협약에 대해 한 마디만 썼고, 많은 세부사항을 생략했다. 심지어는 매우 깊이 있는 기사가 중요한 부분에서 꽉 막혔다. 이 기사의 목적은 가능한 한 명확하고 이해하기 쉬운 방법으로 비트코인 협약의 배후에 있는 요점을 설명하는 것이다.

이 프로토콜을 깊이 이해하는 것은 매우 어렵습니다. 왜냐하면 비트코인을 당연하게 여기고, 다른 투기들을 이용해서 어떻게 돈을 벌 수 있는지, 그것이 버블인지, 비트코인이 세금의 종말을 의미하는지 등등에 대해 생각하기 쉽기 때문입니다. 이런 생각을 하는 것은 재미있지만, 이런 생각들은 여러분의 이해를 심각하게 제한합니다. 그리고 비트코인의 프로토콜을 이해하는 것은 그 자체로 다른 경로로 접근할 수 없는 관점을 열어줍니다. 예를 들어, 이 프로토콜은 비트코인에 내장된 스크립트 언어의 기초가 됩니다. 이 스크립트 언어는 비트코인을 사용하여 새로운 금융 도구를 만들 수 있습니다. 예를 들어, 지능형 계약 (smart contracts). 새로운 금융 도구는 새로운 시장과 새로운 사람과 사람 간의 협업을 만들 수 있습니다.

나중에 비트코인 스크립트와 스마트 컨트랙트를 설명하겠습니다. 이 글에서는 비트코인 프로토콜의 구체적인 세부 사항에 집중할 것입니다. 이 글을 이해하려면 공개 키 암호와 관련된 디지털 서명에 대해 익숙해져야 합니다.

비트코인은 암호학에 기반을 두고 있습니다. 이것이 여러분을 놀라게 할 수도 있습니다. 비트코인은 화폐가 아닌가요? 아니면 비밀 정보를 전송하는 방법일까요? 사실 비트코인이 해결하고자 하는 문제는 대부분 거래의 보안에 관한 것입니다. 사람들이 다른 사람의 물건을 훔치거나 다른 사람을 위장할 수 없도록 보장하는 것입니다.

이 글의 전략은 Bitcoin을 층층으로 구축하는 것입니다. 우리는 매우 간단한 디지털 화폐로 시작할 것입니다. 우리는 잠시 동안 Bitcoin과 구별하기 위해 그것을 Infocoin 이라고 부릅니다. 물론 우리의 첫 번째 버전 인포코인은 많은 단점이 있습니다.

이 방법은 처음부터 직접적으로 비트코인을 설명하는 것보다 더 느립니다. 하지만 비트코인의 원리를 한눈에 알 수 있더라도, 왜 비트코인이 이런 식으로 설계되었는지 이해하기가 어렵습니다. 느린 단계적 대수학적 해석은 비트코인의 각 요소에 대해 더 명확한 이해를 할 수 있다는 점에 장점을 가지고 있습니다.

마지막으로 제가 말해야 할 것은 제가 비트코인 세계에 비교적 새로운 사람이라는 것입니다. 저는 2011년에 간접적인 관심을 가졌지만, 그 세부사항에 대해 정말로 진지하게 연구한 것은 2013년 초였습니다.

  • 첫 번째 단계: 서명된 의사표시

    • #### 어떻게 화폐를 디자인할 수 있을까요?

    겉으로 보기에는 디지털 화폐가 불가능한 것처럼 들리죠. 예를 들어, 앨리스라고 부르는 한 사람이 돈을 쓰고 싶어하는 디지털 화폐를 가지고 있다고 가정해 봅시다. 앨리스가 문자열을 돈으로 사용할 수 있다면, 어떻게 우리가 같은 문자열을 반복적으로 사용하는 것을 막을 수 있을까요?

    이것은 정보로 화폐를 만드는 많은 문제들 중 두 가지일 뿐입니다. 첫 번째 Infocoin에서는, 우리는 앨리스가 문자열을 돈으로 제공하도록 하고, 그것을 위조되지 않도록 보호할 수 있는 방법을 생각해 보았습니다. 앨리스가 인포코인을 다른 사람에게 주고 싶다고 가정해보세요. 앨리스가 메시지를 써야 합니다.

    이 방법은 그다지 유명하지 않지만, 몇 가지 장점이 있습니다. 세계의 모든 사람이 앨리스의 공개 키를 사용하여 앨리스가 실제로 서명 한 사람이라는 것을 확인할 수 있습니다. 다른 사람은 그 서명의 결과를 생성 할 수 없습니다. (이 서명은 앨리스가 소유한 개인 키에서만 생성 될 수 있습니다.

    이 협약의 돈이 무엇인지에 대해서는 아직 언급하지 않았습니다. 분명히 말씀드리면, 이 돈은 메시지가 그 자체입니다. 즉, 그 세대가 서명한 것은 , 나, 앨리스가 밥에게 infocoin을 주고자 하는 문자입니다.

  • 일련 번호를 사용하여 화폐를 고유하게 표시합니다.

우리의 첫 번째 인포코인의 문제는 앨리스가 같은 서명된 메시지를 반복적으로 밥에게 보낼 수 있다는 것입니다. 밥이 10개의 같은 메시지를 받았다고 가정해 봅시다. 앨리스, 밥에게 하나의 인포코인을 줘야 합니다. 앨리스가 밥에게 10개의 다른 인포코인을 줬다는 뜻일까요? 아니면 앨리스가 밥에게 하나의 인포코인을 줬다는 뜻일까요? 아니면 그녀가 밥에게 10개의 인포코인을 줬다고 믿게 만들려고 했는가?

우리는 infocoin이 고유한 아이덴티티를 가지기를 원합니다. 그것은 하나의 레이블 또는 일련의 번호가 필요합니다. 앨리스가 메시지를 보내면 앨리스가 밥에게 8740348이라는 일련의 번호를 가진 infocoin에 서명할 수 있습니다. 앨리스가 다른 메시지를 보내면 앨리스가 밥에게 8770431이라는 일련의 번호를 가진 infocoin에 서명할 수 있습니다. 그래서 밥과 다른 사람들은 이 두 개의 정보가 서로 다르다는 것을 알 수 있습니다.

이 계획을 실행하기 위해서는 신뢰할 수 있는 시리얼 번호의 출처가 필요합니다. 시리얼 번호를 생성하는 방법 중 하나는 은행과 같은 기관을 설립하는 것입니다. 은행은 인포코인을 위해 시리얼 번호를 생성하고, 누가 어떤 인포코인을 소유하고 있는지 기록하고, 거래의 진위를 확인합니다.

좀 더 자세히 설명하자면, 앨리스는 은행에 가서, “내 계좌에서 인포코인을 하나 가져갈게요”.라고 말합니다. 은행은 그녀의 계좌에서 인포코인을 하나 빼고, 그녀에게 새로운, 사용되지 않은 일련 번호를 줍니다. 예를 들어, 1234567입니다. 앨리스는 밥에게 인포코인을 보내려고 할 때, 그녀는 이 새로운 메시지에 서명합니다. 앨리스는 밥에게 1234567로 된 일련 번호의 인포코인을 주려고 합니다.

  • ### 모든 사람이 은행이 될 수 있도록

위와 같은 해결책은 매우 잠재적인 것 같습니다. 하지만, 우리는 더 야심찬 것을 할 수 있습니다. 우리는 이 협정에서 은행을 제거 할 수 있습니다. 이것은 화폐의 특성을 크게 변화시킵니다. 이것은 화폐를 담당하는 단 하나의 조직이 없다는 것을 의미합니다.

모든 사람들이 함께 은행이 될 수 있도록 하는 방법입니다. 특히, 우리는 모든 인포코인을 사용하는 사람들이 어떤 인포코인이 누구에게 속하는지에 대한 완전한 기록을 유지한다고 가정합니다.

이제, 앨리스가 밥에게 인포코인을 주고 싶다고 가정해 봅시다. 그녀는 메신저에 나와서 앨리스가 밥에게 1234567이라는 일련 번호의 인포코인에 서명하고 서명된 메신저를 밥에게 내보냅니다. 밥은 자신의 블록 체인을 사용해 확인하고, 알겠습니다.

우리는 여전히 의 시리얼 번호가 어디에서 왔는지에 대한 문제가 있지만, 이것은 실제로 해결하기 쉽기 때문에 나중에 설명하겠습니다. 더 어려운 문제는 이 프로토콜이 앨리스가 반복적으로 그녀의 인포코인을 소비하도록 허용한다는 것입니다. 그녀는 서명 된 메시지를 게시 할 수 있습니다. 앨리스가 밥에게 1234567의 인포코인 을 줄 것입니다. 동시에 그녀는 서명 된 메시지를 게시 할 수 있습니다. 앨리스가 찰리에게 1234567의 인포코인을 줄 것입니다. 밥과 찰리 모두 자신의 블록체인을 사용하여 그 인포코인이 실제로 앨리스가 왔는지 확인합니다.

우리는 이 문제를 double spending (후문: double spending ) 라고 부르는데, 이 같은 쌍둥이는 성공하기 어렵다고 보인다. 결국, 만약 앨리스가 먼저 밥에게 메시지를 보내고, 그 다음에 밥이 다른 모든 사람들에게 메시지를 보낸다면 (찰리를 포함해서), 다른 사람들은 그들의 블록체인을 업데이트한다. 이 때, 찰리는 앨리스에게 속지 않을 것이다. 그래서 이 같은 쌍둥이는 짧은 시간 동안만 가능해 보인다. 그러나, 이 시간이 짧더라도, 이 문제는 있을 수 없다. 더 나쁜 것은, 앨리스가 이 시간을 연장하기 위해 몇 가지 기술을 사용할 수 있다는 것이다. 예를 들어, 그녀는 네트워크 분석 소프트웨어를 사용하여 밥과 찰리 사이의 대화의 지연 시간을 찾아낼 수 있다.

그럼 어떻게 해결해야 할까요? 가장 간단한 방법은, 앨리스가 밥에게 인포코인을 보낼 때, 밥은 그 거래를 혼자 확인해서는 안 됩니다. 대신, 그는 이 거래가 합리적인지 판단하는 데 도움이 될 수 있도록 인포코인 네트워크 전체에 해당되는 거래를 공개해야 합니다. 만약 거래가 합리적인 것으로 공동으로 결정된다면, 밥은 이 인포코인을 받아서 모든 사람들이 자신의 블록체인을 업데이트 할 수 있습니다. 이 종류의 프로토콜은 쌍둥이를 방지할 수 있습니다. 왜냐하면 앨리스가 동시에 밥과 찰리에게 동일한 인포코인을 보내고 싶다면, 네트워크의 다른 사람들이 알아차리고, 밥과 찰리가 거래에 문제가 있다고 말해주면 거래가 통과되지 않기 때문입니다.

좀 더 구체적으로 말하자면, 앨리스가 밥에게 인포코인을 주고 싶다고 가정해 봅시다. 이전과 마찬가지로, 그녀는 메시지에 서명하고, 앨리스는 밥에게 1234567이라는 인포코인 을 주고, 이름있는 메시지를 밥에게 서명할 것입니다. 또한 이전과 마찬가지로, 밥은 자신의 블록체인을 사용하여 이 코인이 실제로 앨리스에게 속한다는 것을 확인합니다. 하지만, 계약은 다르기 때문에, 밥은 직접 이것을 받아들이지 않고, 앨리스의 메시지를 네트워크 전체에 공개합니다. 네트워크의 다른 구성원들은 앨리스가 이 인포코인을 가지고 있는지 확인하고, 만약 그렇다면, 그들은 메시지를 공개하고, 앨리스가 인포코인 1234567을 가지고 있다고 말했고, 이제 그것을 밥에게 전달할 수 있습니다.

이 프로토콜에는 아직 많은 불확실한 요소들이 있다. 예를 들어, 충분한 사람들이 이 뉴스를 발표했을 때 얼마나 많은 사람이 충분하다고 할 것인가? infocoin 네트워크 전체는 아닐 수 있다, 왜냐하면 우리는 누가 infocoin 네트워크에 있는지 미리 알지 못하기 때문이다. 마찬가지로, 고정된 일부 사용자도 아닐 수 있다. 우리는 지금부터 이러한 문제를 명확히 하기 위해 서두르지 않는다. 여기, 이 거래 프로그램의 심각한 문제를 지적하려고 하는데, 그 문제를 해결하는 것은 위의 문제를 명확히 하는 데 도움이 될 것이다.

  • ### 작업 증명서 Proof-of-work

앞서 언급한 계약에서 앨리스가 이중화하기를 원한다고 가정하면, 그는 infocoin 네트워크 전체를 관리해야 한다. 그녀는 자동화된 시스템을 사용하여 infocoin 네트워크에 많은 다른 신분을 가진 계정을 만들고 있다고 가정하면, 10억이 있다고 가정한다. 이전과 마찬가지로, 그녀는 동일한 infocoin을 밥과 찰리에게 제공하려고 시도했지만, 밥과 찰리가 이 거래를 확인하기 위해 infocoin 네트워크에 문의했을 때, 앨리스는 네트워크를 침수하고 밥과 찰리가 이 거래를 통과 할 수 있다고 말하며, 그들 중 하나 또는 둘 다 이 거래를 받아 들일 수 있다고 속일 수 있습니다.

“Proof-of-work”이라는 을 사용해서 을 증명하는 똑똑한 방법이 있습니다. 이 방법은 직관적이지 않고, 두 가지 개념을 결합해야 합니다. 1) 인공적으로 거래를 검증하는 과정이 비용이 많이 드는 계산 비용; 2) 보상으로 그들이 거래를 검증하는 데 도움을 줍니다.

이것은 직업 증명서의 핵심입니다. 하지만 직업 증명서를 제대로 이해하기 위해서는 좀 더 구체적인 세부사항을 살펴볼 필요가 있습니다.

앨리스가 전체 네트워크에 메시지를 공개한다고 가정해 봅시다. 앨리스가 밥에게 1234567이라는 일련 번호의 인포코인을 주기로 했습니다. 네트워크의 다른 사람들이 이 소식을 들었을 때, 모든 사람들은 그것을 대기 거래의 열에 추가했습니다.

비트코인 프로토콜의 작동 방식(1부)

데이비드는 자신의 블록체인을 살펴보고 이러한 거래가 정당하다는 것을 보았다. 그는 이 확인 메시지를 네트워크 전체에 퍼뜨리는 데 도움을 주려고 했다. 그러나, 그 전에, 검증 거래 협약은 데이비드에게 계산 난해한 문제를 해결하는 것을 요구했다.

그래서 데이비드는 어떤 문제를 풀려고 했을까요? 이것을 설명하기 위해, 우리는 네트워크 상에서 모두가 알고 있는 고정된 해시 함수를 사용해서 해시 함수를 프로토콜 자체에 포함시켰습니다. 비트 코인은 잘 알려진 SHA-256 해시 함수를 사용하지만, 암호학적인 해시 함수는 여기에 사용할 수 있습니다. 우리는 데이비드의 이 대기 트랜잭션의 집합에 하나의 트랜잭션 마크를 부여합니다.

비트코인 프로토콜의 작동 방식(1부)

데이비드 (David) 가 풀려고 하는 문제는 (((작업 증명) 이 x를 L의 뒤에 더하고 hash을 조합하면 몇 개의 0으로 시작되는 결과를 얻을 수 있는 임의의 숫자를 찾아내는 것이다. 이 문제의 난이도는 0으로 시작되는 숫자를 조정함으로써 조절할 수 있다. 간단한 ?? 작업 증명 ?? 은 3개 또는 4개의 0으로 시작되는 해쉬를 필요로 하지만, 어려운 ?? 작업 증명 ?? 은 더 많은 0으로 시작되는 해쉬를 필요로 한다. 예를 들어 15개의 연속적인 0으로 시작된다.

x=1이 되겠죠

비트코인 프로토콜의 작동 방식(1부)

그리고 x=2, x=3, 4, 5를 해봅시다. 그리고 x=4350이 되면

비트코인 프로토콜의 작동 방식(1부)

이 임의의 x는 우리에게 0부터 시작되는 4개의 해시의 결과를 줍니다. 이것은 간단한 의 작업 증명 의 문제를 해결하기에 충분합니다.

이 난제를 해결하기 쉽지 않은 것은 암호 해시 함수의 결과가 항상 무작위적이기 때문에, 입력값에 대한 어떤 작은 변화도 전체 해시 함수의 출력 결과를 완전히 바꾸어 놓을 수 있기 때문에 예측하기가 매우 어렵습니다. 따라서 출력 결과가 10개의 0에서 시작되어야 한다면, 데이비드는 적절한 값을 찾기 위해 평균 1610 ≈ 1012개의 다른 x를 필요로 할 것입니다. 이것은 매우 도전적인 작업이며 많은 계산 능력을 필요로합니다.

명백히, 우리는 0이 얼마나 필요한지를 규정함으로써 작업 증명 문제의 난이도를 조절할 수 있다. 사실, 비트코인 프로토콜은 위의 작업 증명에 약간의 수정을 통해 난이도의 난이도를 더 잘 제어할 수 있다. 몇 개의 시작 0이 필요한지를 규정하는 것이 아니라, 블록의 해시 출력이 목표 값보다 작거나 같도록 규정하는 것이 목표 값이다. 이 목표 값은 자동으로 조정되어, 비트코인의 각 블록 (block) 은 평균적으로 10분이 걸리도록 보장한다.

자, 데이비드 (David) 가 운이 좋아서 적절한 x (nonce) 를 발견했다고 가정해 봅시다. 축하합니다! 그는 그 답을 발견한 것에 대한 보상을 받게 될 것입니다. 그는 그가 이 블록 안에 있는 거래가 합리적인 것임을 증명했다고 발표할 것이고, 그와 동시에 그녀가 발견한 x의 값을 공개할 것입니다.

이 프로그램의 작동을 증명하기 위해 네트워크의 참가자는 거래를 확인하는 데 도움이되는 인센티브가 필요합니다. 인센티브가 없으면 아무도 자신의 컴퓨터 계산력을 사용하여 거래를 확인하는 데 도움이되지 않을 것입니다. 네트워크 참가자가 계산력을 지출하지 않으면 전체 시스템이 작동하지 않을 것입니다. 따라서, 우리는 그들에게 약간의 infocoin을 제공함으로써 거래를 성공적으로 확인한 모든 사람을 보상 할 수 있습니다.

비트코인의 프로토콜에서, 이 검증 과정은 mining (광산) 이라고 불린다. 각 거래 블록의 검증 성공자에게는 비트코인이 보상으로 주어진다. 초기에는 50개의 비트코인이 보상으로 주어진다. 그러나 21만개의 검증된 블록마다 (즉, 약 4년마다) 상금은 반으로 감소한다. 현재까지는 한 번만 발생했다. 즉, 현재 한 블록을 검증하면 25개의 비트코인이 보상으로 주어진다. 반감은 대략 2140년까지 계속된다. 그때까지, 광산의 상금은 10-8개의 비트코인으로 줄어들 것이다. 10-8개의 비트코인은 비트코인의 가장 작은 단위인 Satoshi로 불리며, 따라서 2140년까지 총 비트코인의 성장은 멈추게 된다. 그러나, 이것은 검증 거래의 인센티브를 없애지 않으며, 검증 거래에 참여하는 사람이 25개의 비트코인을 사용할 수 있는 검증 메커니즘의 시험비용을 제외하고는, 25개의 비트코인을 상금으로 사용하게 된다. 그러나, 25개의 비트코인은 점차적으로 상금으로 사용되고, 상금이 거의 0이 되면서, 초기 거래의 인센티브가 점차적으로 증가하게 된다.

작업 증명 (proof-of-work) 을 경쟁력 있는 거래의 확인 과정으로 볼 수 있다. 각 참가자는 컴퓨터 계산력의 일부를 소비한다. 한 채굴자가 이길 확률은 그들이 통제하는 컴퓨팅 계산력의 크기와 전체 네트워크의 컴퓨팅 능력의 비율에 대략 같다. 예를 들어, 한 채굴자가 전체 네트워크 컴퓨팅력의 1%의 컴퓨팅 능력을 통제한다면, 그의 승리 확률도 대략 1%이다. 따라서 많은 컴퓨팅 능력을 제공하는 것은 경쟁력을 뒷받침하는 요소이며, 부정직한 채굴자는 엄청난 컴퓨터 자원을 소비하지 않는 한 검증 과정을 파괴할 기회가 거의 없다.

물론, 부정직한 채굴자가 블록체인을 파괴할 수 있는 기회는 아주 작지만, 우리는 블록체인을 통폐화할 수 있는 충분한 확신을 가지고 있지 않습니다. 특히, 우리는 쌍둥이 문제를 아직 완전히 해결하지 못했습니다.

저는 이 쌍둥이 문제를 곧바로 분석할 것이지만, 그 전에, 저는 Infocoin의 개념에 중요한 세부 사항을 추가하고 싶습니다. 이상적으로, 우리는 Infocoin 네트워크가 거래의 순서를 통일하기를 바랍니다. 만약 우리가 통일된 순서를 가지고 있지 않다면, 누가 어떤 특정 시간에 어떤 infocoin을 가지고 있는지는 분명하지 않습니다.

비트코인 프로토콜의 작동 방식(1부)

우연히, 하나의 블록체인 상에서 분자가 생성됩니다. 이것은 때때로 두 명의 채굴자가 거의 동시에 한 블록의 거래를 확인하기 때문입니다. 그들은 동시에 네트워크에 공개되며, 어떤 사람들은 한 방법으로 그들의 블록체인을 업데이트하고, 다른 사람들은 다른 방법으로 그들의 블록체인을 업데이트합니다.

비트코인 프로토콜의 작동 방식(1부)

이것은 우리가 피하고 싶은 상황을 만듭니다. 거래의 순서가 불분명하고 누가 어떤 인포코인을 가지고 있는지 알 수 없습니다. 다행히도, 분할을 제거하는 간단한 방법이 있습니다.

만약 우리가 분기점을 가지고 있고, 몇몇 광부들은 A 블록을 먼저 받고, 다른 광부들은 B 블록을 먼저 받고 있다고 가정해 봅시다. A 블록을 받은 광부들은 분기점을 따라 채굴을 계속할 것이고, 다른 사람들은 B 블록의 분기점을 따라 채굴을 계속할 것입니다.

비트코인 프로토콜의 작동 방식(1부)

이 메시지를 받은 후 A 지파의 사람들은 B 지파가 가장 길다는 것을 알아차리고 B 지파로 전환합니다. A 지파의 작업은 빠르게 중단되므로 모든 사람들이 동일한 순서의 블록 체인에 대해 작업합니다. 그리고 블록 A는 무시됩니다. 물론, 블록 A 내의 모든 대기 거래는 대기 상태로 유지되며 B 지파의 새로운 블록에 배치됩니다.

마찬가지로, A 지점의 채굴자가 다음 블록을 채굴하면 B 지점의 채굴자는 A 지점으로 이동합니다.

어떤 결과가 나오든, 이 과정은 블록체인에는 통일된 순서가 보장된다. 비트 코인에서는, 거래가 확인된 것으로 간주되지 않는 한 1) 가장 긴 분기 블록에 존재하며, 2) 적어도 5개의 검증된 블록이 그 뒤에 검증된다. 이 경우, 우리는 이 거래가 6개의 확인 을 가지고 있다고 말한다. 이것은 전체 네트워크에 블록의 순서를 통일하는 시간을 준다.

이제 우리는 그 시기를 이해하게 되었는데, 다시 생각해 봅시다. 만약 어떤 부정직한 사람이 이중 지출을 원했다면 어떻게 될까요? 앨리스가 동시에 밥과 찰리에게 동일한 거래를 주고 싶다고 가정해보자. 하나의 가능성은 그녀가 동시에 두 개의 거래를 가지고 있는 블록을 검증하는 것입니다. 그녀가 1 퍼센트의 계산 능력을 가지고 있다고 가정해보자. 그러면 그녀는 이 블록을 검증하는 데에 비교적 운이 좋을 가능성이 있습니다. 불행히도, 이 이중 지출은 다른 사람들이 즉시 발견하고 거부하게 될 것입니다. 비록 그녀가 내부의 작업 증명 문제를 해결했음에도 불구하고. 그래서 우리는 이 가능성에 대해 걱정할 필요가 없습니다.

하지만 또 다른 가능성은, 그녀가 두 개의 거래를 각각 발표하려고 했다는 것입니다. 그녀는 일부 채굴자에게 한 거래를 발표하고 다른 일부 채굴자에게 다른 거래를 발표할 수 있습니다. 그녀는 두 거래가 모두 검증되기를 바라고 있습니다. 다행히도, 이 경우, 우리가 방금 말했듯이, 네트워크는 거래 중 하나만을 최종적으로 확인합니다.

또 다른 가능성은, Alice = Bob, 즉, Alice는 Charlie에게 하나의 동전을 주려고 하지만, 그녀는 또한 자신에게 동전을 주려고 합니다, 왜냐하면 그녀는 자신이 여러 개의 계정을 가질 수 있기 때문입니다. 이 경우, Alice의 전략은 Charlie가 이 Infocoin을 받아들이기 전까지 기다립니다. 즉, 거래가 가장 긴 블록체인에서 6 번 확인된 후입니다.

비트코인 프로토콜의 작동 방식(1부)

안타깝게도, 이 시점에서 앨리스는 가장 긴 블록체인보다 6단계 늦은 상태입니다. 그녀는 가장 긴 브랜치를 따라잡는 데 어려움을 겪고 있습니다. 다른 채굴자는 보상을 받기 위해 가장 긴 브랜치에서 작업해야하기 때문에 그녀를 도와주지 않습니다.

물론 이것은 매우 엄격하지 않습니다. 앨리스는 확실히 두 번 번 을 수 없습니다. 이것은 단지 합리적인 추론입니다. 비트코인의 백서 원본은 엄격한 보안 분석을 수행하지 않았습니다. 단지 저와 비슷한 비공식적인 추론입니다. 보안 그룹은 비트코인의 보안성과 잠재적인 결함을 분석하고 있습니다. 구체적으로이 목록을 참조하십시오.

이 부분의 본문은 Michael입니다. 이 부분의 본문은 Infocoin의 개념에 대한 설명이 아니라, 비트코인 거래에 대한 보다 상세한 설명을 담고 있습니다.

이 글의 저자 마이클 닐슨 (Michael Nielsen) 에게 팁을 보내주세요. 그의 주소는 17ukkKt1bNLAqdJ1QQv8v9Askr6vy3MzTZ입니다. 트위터에서 그의 글을 팔로우하세요.

이 글은 이 쓴 글입니다.