
Part I에서는 비트코인이 어떻게 작동하는지에 대한 대중의 이해를 방해하는 몇 가지 도전 과제를 소개하고, 오픈 소스 소프트웨어 모델, 피어 투 피어 네트워킹, 디지털 서명의 전략적 역할을 요약했습니다. Part II에서는 해싱과 그것이 비트코인의 기술 구조에서 수행하는 필수적인 역할, 그리고 시스템이 처음부터 무기한 미래까지 자가 자금 조달이 가능하도록 설계된 방법에 대해 논의합니다.
해시 만들기
해싱은 디지털 서명과는 매우 다른 역할을 합니다. 이는 메시지가 변경되지 않았음을 증명합니다. 동일한 메시지의 해시를 실행하면 항상 동일한 결과가 생성됩니다. 해시가 이전 것과 일치하지 않으면 현재 버전의 메시지가 원본과 일치하지 않음을 경고하는 것입니다.
예를 들어, 머리 로스바르드의 메시지를 소개합니다. 그는 인간, 경제 및 국가에서 다음과 같이 썼습니다:
“가치 척도는 행동의 구체적인 선택과는 별도의 공허 속에 존재하지 않는다는 점을 여기서 다시 강조해야 한다.” —머리 로스바르드, 1962
그리고 이 메시지와 출처의 SHA256 다이제스트는 다음과 같습니다(비트코인이 사용하는 동일한 알고리즘): 68ea16d5ddbbd5c9129710e4c816bebe83c8cf7d52647416302d590290ce2ba8
모든 크기의 메시지는 해시 함수에 입력될 수 있습니다. 알고리즘은 이를 분해하고, 부분을 혼합하며, 다른 방식으로 “소화”하여 고정 길이의 결과인 “다이제스트”를 생성합니다. SHA256의 경우 위와 같은 형태를 취하지만, 각 경우의 내용은 다릅니다.
좋은 해시 알고리즘의 몇 가지 중요한 속성이 있습니다. 첫째, 동일한 메시지는 항상 동일한 다이제스트를 생성합니다. 둘째, 이는 단방향으로만 작동합니다. 입력된 메시지에 대한 어떤 정보도 출력된 다이제스트로부터 재구성할 수 없습니다. 가장 미세한 변화도 완전히 다른 다이제스트를 생성하며, 입력의 변화와 출력의 변화 사이에는 아무런 관계가 없습니다. 이를 “눈사태 효과”라고 합니다. 셋째, 변경된 메시지에서 동일한 다이제스트를 생성할 확률은 극히 미미합니다. 이를 “충돌 저항성”이라고 합니다. 변경된 메시지가 원본 변경되지 않은 메시지와 동일한 다이제스트를 생성하는 것은 불가능합니다.
증명하기 위해, 다음은 두 개의 인용 부호가 없는 동일한 인용문입니다.
가치 척도는 행동의 구체적인 선택과는 별도의 공허 속에 존재하지 않는다는 점을 여기서 다시 강조해야 한다. —머리 로스바르드, 1962
이는 다음과 같은 다이제스트를 생성합니다: 0a7a163d989cf1987e1025d859ce797e060f939e2c9505b54b33fe25a9e860ff
이것을 이전 다이제스트와 비교해 보십시오: 68ea16d5ddbbd5c9129710e4c816bebe83c8cf7d52647416302d590290ce2ba8
메시지의 가장 미세한 변화인 두 개의 인용 부호를 제거하는 것만으로도 이전 다이제스트와는 전혀 관계가 없는 완전히 다른 다이제스트가 생성되었습니다. 요약하자면, 다이제스트는 단일 질문에 대한 빠른 예 또는 아니오 답변을 제공합니다: 메시지가 여전히 이전과 정확히 동일한가? 메시지가 다르면 다이제스트는 어떻게 또는 얼마나 다르게 되었는지를 나타낼 수 없으며, 단지 변경되었는지 여부만을 나타냅니다.
이렇게 보이는 무딘 도구가 어떻게 유용할 수 있을까요? 비트코인은 해싱이 매우 유용하다는 것을 입증한 한 가지 응용 프로그램입니다. 비트코인에서 해싱은 거래와 기록이 기록된 후 변경할 수 없도록 하는 핵심 역할을 합니다. 해시가 블록체인 내에서 함께 해시되면, 어디에서든 기록 위조가 불가능합니다.
거래 및 채굴자가 블록을 발견하기 위해 경쟁하는 방법
지갑 소프트웨어는 거래를 생성하는 데 사용됩니다. 여기에는 전송할 금액, 송신 및 수신 주소, 기타 정보가 포함되며, 이 모든 것이 함께 해시됩니다. 이 해시는 필요한 서명 키로 서명되어 이 거래에만 유효한 고유한 디지털 서명을 생성합니다. 이 모든 것은 암호화되지 않은 공개 정보로 네트워크에 방송됩니다. 이것이 가능한 이유는 서명과 검증 키가 서명 키를 노출하지 않기 때문입니다.
누군가 동일한 단위를 두 번 사용하여 이중 지출이라는 일종의 사기를 저지르는 것을 방지하기 위해, 노드는 새로운 거래를 블록체인과 다른 새로운 거래에 대해 확인하여 동일한 단위가 두 번 이상 참조되지 않도록 합니다.
각 채굴자는 유효한 새로운 거래를 수집하고 이를 다음 인식된 블록을 체인에 게시하기 위한 후보로 통합합니다. 각 채굴자는 모든 새로운 거래를 함께 해시합니다. 이는 블록 내의 모든 다른 거래 기록을 상호 의존적으로 만드는 단일 해시(“mrkl_root”)를 생성합니다.
모든 후보 블록의 해시는 서로 다르며, 채굴자가 자신의 고유한 채굴 주소를 포함하기 때문에 그 후보 블록이 체인에서 다음으로 인식될 경우 보상을 수집할 수 있습니다.
어떤 후보 블록이 승자가 될까요?
경쟁하는 채굴자가 블록을 다음 유효한 블록으로 인식하기 위해서는, 승리한 채굴자가 자신의 후보 블록 헤더의 특정 해시를 생성해야 하며, 이는 엄격한 조건을 충족해야 합니다. 다른 모든 채굴자는 즉시 이 답변을 확인하고 올바른지 아닌지 인식할 수 있습니다.
그러나 올바른 솔루션이더라도, 이는 자신의 블록을 위해 발견한 채굴자에게만 작동합니다. 다른 사람은 단순히 다른 사람의 올바른 답변을 가져와 자신의 후보 블록을 실제 승자로 홍보할 수 없습니다. 이것이 올바른 답변이 다른 사람에 의해 부정하게 사용되지 않고 자유롭게 게시될 수 있는 이유입니다. 이 고유한 자격 해시는 “작업 증명”이라고 불립니다.
메시지 다이제스트의 본질과 용도는 처음에는 직관에 반하지만, 비트코인을 가능하게 하는 필수 요소입니다.
채굴된 블록의 예
다음은 실제 블록의 일부 주요 데이터 예입니다.
“hash”:”0000000000000000163440df04bc24eccb48a9d46c64dce3be979e2e6a35aa13″,
“prev_block”:”00000000000000001b84f85fca41040c558f26f5c225b430eaad05b7cc72668d”,
“mrkl_root”:”83d3359adae0a0e7d211d983ab3805dd05883353a1d84957823389f0cbbba1ad”,
“nonce”:3013750715,
상단 행(“hash”)은 이 블록의 실제 성공적인 블록 헤더 해시입니다. 이는 많은 수의 0으로 시작하는데, 이는 승리한 해시가 현재 난이도 수준에서 설정된 값보다 낮아야 하기 때문입니다. 승자를 찾는 유일한 방법은 계속해서 반복적으로 시도하는 것입니다.
이 과정은 대중 언론에서 종종 “복잡한 수학 문제를 해결하는 것”으로 설명되지만, 이는 다소 오해의 소지가 있습니다. 이는 매우 단순하고 잔인하게 어리석은 작업으로, 오직 컴퓨터만이 견딜 수 있습니다. 해시 함수는 단순히 수백만, 수십억 번 반복 실행되어 자격 있는 답변이 네트워크 어딘가에서 마침내 발견될 때까지 실행되어야 합니다. 특정 채굴자가 자신의 후보 블록에 대해 주어진 시도에서 그러한 해시를 찾을 확률은 극히 미미하지만, 네트워크 어딘가에서 평균 약 10분마다 하나가 발견됩니다. 승자는 블록 보상—현재 25개의 새로운 비트코인—과 포함된 거래에 대한 수수료를 수집합니다.
보상은 어떻게 수집되나요?
후보 블록은 이미 사전에 설정되어 있어 보상이 승리한 채굴자의 고유한 채굴 주소에 의해 제어됩니다. 이는 채굴자가 자신의 고유한 후보 블록에 이 주소를 포함시켰기 때문에 가능합니다. 보상 주소는 처음부터 블록 데이터에 통합되어 있었습니다. 보상 주소를 어떤 방식으로든 변경하면 승리한 해시가 무효화되고 그 후보 블록 전체가 무효화됩니다.
또한, 채굴자는 실제로 주요 체인의 일부가 되는 블록에서만 보상을 사용할 수 있습니다. 왜냐하면 오직 그 블록만이 미래 거래에서 참조될 수 있기 때문입니다. 이 설계는 새로운 비트코인의 모든 최초 수취에 대한 초기 통제를 완전히 지정합니다. 각 다음 블록의 승자는 무작위입니다. 승리 확률을 높이기 위해, 채굴자는 다른 모든 사람들과 경쟁하여 현재 총 네트워크 해싱 용량의 더 큰 비율을 기여하려고 시도할 수 있습니다.
위의 로스바르드 인용문에서 보여준 것처럼, 메시지에 가장 미세한 변화가 있어도 완전히 다른 해시가 생성됩니다. 이것이 프로토콜에 0에서 시작하여 각 새로운 해시 시도마다 1씩 변경되는 숫자를 위한 공간이 포함된 이유입니다(“nonce”). 나머지 후보 블록 데이터가 변경되지 않더라도 이 작은 변경만으로 매번 완전히 다른 해시가 생성되어 승자를 찾습니다. 위의 예에서 이 채굴자는 세 번째 십억 번째 시도 후에 이 블록에 대한 승리 해시를 찾은 것으로 보이며(“nonce”:3013750715), 이는 단지 그 한 채굴자 또는 채굴 풀에 해당하며, 모든 다른 채굴자의 유사한 평행하지만 실패한 시도를 포함하지 않습니다. 그리고 이 모든 것은 이 한 블록을 위한 경쟁을 위한 것입니다.
이해해야 할 핵심 포인트는 난이도 수준 이하의 해시를 찾는 것이 극도로 경쟁적이고 어렵지만, 이후에 그것이 발견되었는지 확인하는 것은 사소하다는 것입니다. 나머지 채굴자들은 그렇게 하고 바로 진행합니다. 그들은 이전 블록 헤더의 새로 발견된 해시(“prev_block”)를 다음 후보 블록의 입력 중 하나로 사용하여(단일 블록 체인의 수직적 무결성을 보장) 경쟁을 계속합니다.
강력하고 자가 자금 조달되는 검증 네트워크
비트코인 채굴 네트워크는 2014년 9월 말 현재 초당 약 250 페타해시로 운영되고 있으며, 이는 곧 이 수치가 작아 보이게 할 로그 속도로 증가하고 있습니다(여기에서 추적됨). 이는 현재 네트워크 전역에서 매초 약 250 조 해시가 시도되고 있음을 의미합니다. 이는 세계에서 가장 강력한 분산 컴퓨팅 네트워크이며, 이미 상당한 시간 동안 이 우위를 지속적으로 확장해 왔습니다.
블록 보상과 거래 수수료는 이 전체 네트워크의 생산 및 유지 관리를 분산된 방식으로 촉진하는 데 도움을 줍니다. 블록 생성은 무작위이며 평균적으로 해싱 파워 기여도에 비례하여 분산되므로, 모든 기여자에게 지속적으로 인센티브를 제공합니다. 많은 채굴자들이 협력 채굴 풀에 참여하여 최소한 일부 보상이 비교적 정기적으로 도착하도록 합니다.
네트워크는 처음부터 무기한 미래까지 참가자들에 의해 완전히 자가 자금 조달되도록 설계되었습니다. 초기에는 새로운 동전 보상이 더 크고 거래 수수료 수익이 더 작습니다. 마지막으로, 거래 수수료 수익만 남게 되며, 긴 전환 단계가 내장되어 있습니다.
비트코인이 장기적으로 성공한다면, 거래 수수료 수익이 주를 이루게 될 때 블록당 거래 수가 많아져 평균 경쟁 수수료를 곱할 수 있을 것입니다.
이것은 비트코인의 몇 가지 주요 기술 요소에 대한 요약입니다. 해싱 알고리즘과 디지털 서명은 특히 직관에 반하고 상대적으로 새로운 발명품이지만, 이들이 가능하게 하는 것을 아는 것은 비트코인이 어떻게 작동하는지를 이해하는 데 필수적입니다. 비트코인의 주요 요소 각각은 검증, 위조 불가능한 기록 유지 및 사기 방지의 중심 기능에 기여합니다. 이러한 기술적 기반과 그들이 지원하는 기능은 폰지 사기와 같은 사기의 체계적 기만과는 거리가 멉니다.