This article has been translated from English to Korean.
비트코인 거래는 어떻게 이루어지나요?
비트코인 거래는 블록체인에 기록된 한 주소에서 다른 주소로 일정량의 비트코인을 전송하는 것입니다.
그렇다면, 이 "전송" 과정은 실제로 어떻게 이루어지는 것일까요?
이번 강의에서는 비트코인 거래가 처음부터 끝까지 어떻게 이루어지는지 보여드리겠습니다.
먼저, 사용자의 관점에서 비트코인 거래가 어떻게 이루어지는지 살펴보겠습니다. 그리고 그 다음에는 비트코인 거래가 어떻게 이루어지는지 전체적인 관점에서 살펴보겠습니다.
이렇게 하면 이전 수업에서 배운 새로운 개념을 모두 기억하는 데 도움이 됩니다.
준비되셨습니까?!

아이언맨이 배트맨에게 보내고 싶은 비트코인이 1개 있다고 가정해 봅시다.

아이언맨의 관점에서
아이언맨이 가장 먼저 할 일은 비트코인 지갑을 여는 것입니다.
어떤 종류의 지갑이든 상관없지만, 이 예에서는 노트북에 설치한 소프트웨어 지갑을 사용하고 있습니다.

그 다음으로 그는 배트맨에게 비트코인 주소를 물어봅니다.
배트맨이 비트코인을 받고 싶은 곳입니다. 배트맨이 비트코인 주소를 이메일로 보내면, 아이언맨이 그것을 복사하여 붙여넣습니다.

아이언맨은 배트맨에게 보내려는 비트코인의 양을 입력합니다.

그의 거대한 금-티타늄 합금 손가락은 오타가 잘 나기 때문에, 그는 숫자를 정확하게 입력했는지 다시 한 번 확인합니다.
그리고 전송을 누릅니다.

지갑 소프트웨어는 거래를 확인하기 위해 비밀번호를 묻습니다.
비트코인을 보내려면, 아이언맨은 비트코인 네트워크에 실제로 돈을 보내는 사람이 자신 이고 비트코인의 소유권을 가지고 있다는 것을 증명해야 합니다.
그것이 바로 그의 개인 키 (지갑에 저장되어 있는)가 필요한 이유입니다.
아이언맨이 올바른 암호를 입력하면, 월렛 소프트웨어는 배트맨의 개인 키를 사용하여 거래에"서명"하고,"디지털 서명"이라고 알려진 별도의 데이터를 생성합니다. (이 모든 과정은 보이지 않는 곳에서 이루어집니다.)

비트코인 거래의 이면
이제부터 배트맨의 개입은 끝났습니다.
지갑 소프트웨어는 비트코인 노드에 연결하여 거래 메시지와 함께"디지털 서명"과 공개 키를 보냅니다.
노드는 거래가 유효한지 확인합니다.
- 송금인이 거래를 할 수 있을 만큼 충분한 BTC를 자신의 주소로 묶어 두었습니까?
- 발신자가 BTC를 보낼 권한이 있습니까?
예를 들어, 배트맨이 실제로 보낼 BTC가 1개 있는지 확인합니다. 모든 확인을 통과하면, 노드는 다른 노드에 거래를 전달합니다.
기본적으로 노드는 서로를 신뢰하지 않으므로, 스스로 거래를 다시 검증합니다.
그리고 거래가 유효하다고 판단되는 경우에만, 그들은 연결된 노드에 거래를 공유합니다.

거래가 유효하다고 판단되면, "메모리 풀" 또는"mempool"이라고 알려진 임시 저장 영역에 저장됩니다.
이 시점에서 거래는 "확인되지 않음" 또는"보류 중"으로 간주됩니다.

"채굴자"라고 알려진 특수 노드는 이 거래를 자신의 mempool에 있는 다른 유효한 거래와 함께"블록"으로묶습니다.

그런 다음 광부들은 자신의 블록을 "채굴"하는 데 있어서 누가 먼저 할 수 있을지 경쟁하게 됩니다. 여기에는 특정 0의 개수로 시작하는 숫자를 찾는 것이 포함됩니다.
이 번호를 찾는 유일한 방법은 시행착오를 겪는 것입니다. 다시 말해, 가능한 한 많이 추측해 보는 것입니다.

정확한 숫자를 맞힌 채굴자가 블록을 "채굴"한 첫 번째 사람이라는 의미입니다.
채굴자가 정답을 맞히면, 비트코인 네트워크의 다른 노드에 "당첨 번호"와 함께 블록을 공유합니다.

비트코인 네트워크의 노드는 채굴자가 올바른 숫자를 추측했는지 확인하고, 맞다면, 블록체인의 사본에 당첨된 채굴자의 블록을 추가합니다. 그리고 이 블록을 다른 노드에도 보냅니다.
거래를 담고 있는 블록이 이제 "공식적인" 버전의 블록체인에 추가되었으므로, 이 거래는 이제"확인된" 것으로 간주됩니다.
일단 블록이 생성되고 새로운 거래가 확인되어 해당 블록에 포함되면, 그 거래는"한 번의 확인"을 거친 것으로 간주됩니다.

배트맨의 관점에서
배트맨은 거래가 확인되었음을 확인 하고 비트코인이 전송되었는지 확인하기 위해 비트코인 지갑을 확인합니다.

아이언맨의 거래가 있는 블록 위에 더 많은 블록이 쌓일수록, 그 거래는 블록체인상에서 더 "확인된" 거래가 됩니다.
기본적으로 추가된 각 블록은"추가 확인"으로간주됩니다. 대부분의 거래가 안전하다고 간주되는 현재 표준은 6번의 확인을 기다리는 것입니다.
그리고 세 개를 얻었습니다!
아이언맨이 소유한 주소에서 배트맨이 소유한 새로운 주소로 비트코인 1개가 전송되었습니다.
그리고 아이언맨이나 배트맨이 비트코인 지갑 주소를 공개적으로 공유하지 않는 한, 아무도 두 명의 유명한 슈퍼히어로가 비트코인 거래에 관여했다는 사실을 알 수 없습니다.
누구나 볼 수 있는 것은 한 주소에서 다른 주소로 1 BTC가 전송되는 것뿐입니다. 그러나 그들은 그 주소 뒤에 누가 있는지 알 수 없습니다.
보시다시피, 비트코인 거래의 많은 단계가 보이지 않는 곳에서 이루어졌습니다.
배트맨이 아이언맨에게 자신의 주소를 알려주고, 아이언맨이 자신의 비트코인 지갑을 사용하여 거래를 시작하면, 나머지는 컴퓨터와 소프트웨어 코드가 처리합니다.
비트코인 거래의 조감도
이제 비트코인 거래가 어떻게 이루어지는지 개괄적으로 살펴보겠습니다.
아이언맨이 이미 배트맨의 주소와 송금할 비트코인 금액을 입력했다고 가정해 봅시다.

아이언맨의 지갑은 최신 데이터베이스("비트코인 블록체인")의 사본을 실행하는 모든 컴퓨터("비트코인 네트워크")에 메시지를 브로드캐스팅하는 노드에 연결됩니다. 이 메시지는"배트맨에게 비트코인 1개를 보내고 싶습니다"라는 내용을 담고 있습니다.
아이언맨은"개인 키"라고 불리는 독특한 문자열과 숫자를 가지고 있습니다. 이 개인 키를 통해 배트맨의 지갑 소프트웨어는 메시지가 다른 사람이 아닌 그로부터 온 것임을 보장하는"디지털 서명"을생성합니다.
비트코인 네트워크의 컴퓨터("풀 노드")는 아이언맨이 실제로 메시지를 보낸 사람인지 쉽게 확인할 수 있습니다. 아이언맨이 제공하는"공개 키"라고 불리는 다른 문자열과 숫자를 사용하여 이 "디지털 서명"을 검증할 수 있습니다.
또한 그들은 모두 현재 데이터베이스의 사본을 가지고 있기 때문에 Ironman이 보낼 비트코인이 1개 있다는 것을 쉽게 확인할 수 있습니다.
모든 노드는 비트코인 네트워크에 추가되는 최신 정보("거래")를 통해 서로 지속적으로 업데이트됩니다.
거래는 한 주소에서 다른 주소로 비트코인이 전송된 기록으로 존재합니다. 거래는 개별적으로 블록체인에 기록되지 않고, 먼저 블록으로 묶입니다.
중요한 것은, 이 시점에서 거래 는 제안된 상태일 뿐이라는 것입니다. 아직 어떤 컴퓨터도 장부의 사본("블록체인")을 업데이트하지 않았습니다.
거래는 처음에 대기실("mempool")에 배치되어 확인을 기다립니다.
메모리 풀(메모리 풀)은 모든 노드가 유지하는 미확인(보류) 트랜잭션의 작은 데이터베이스입니다. 메모리 풀의 모든 트랜잭션은 보류 상태이며, 블록에 포함될 때까지 신뢰할 수 없습니다.
거래가 제안된 상태일 뿐, 아직 확정되지 않았기 때문에, 시스템은 모든 참여자가 이를 인지할 수 있도록 메시지를 신속하게 전달할 수 있습니다.
아래 그림에서 아이언맨과 배트맨은 보라색 지갑으로 표시되어 있습니다.
회색 원 은 피어투피어(P2P) 비트코인 네트워크의 일부인 컴퓨터("풀 노드")를 나타냅니다.
검은색 사각형 은 아이언맨이 네트워크에 거래를 제안할 때, 순차적으로 업데이트되는 원장의 사본인 "블록체인"을 나타냅니다.
보시는 바와 같이, 비트코인 소프트웨어를 실행하는 전 세계의 컴퓨터("풀 노드")에 동일한 블록체인의 사본이 저장됩니다. 이 설계는 단일 주체가 원장을 통제할 수 없도록 보장하고, 비트코인이 정부나 중앙 기관에 의해 통제(또는 폐쇄)되는 것을 방지합니다.
블록체인의 완전한 사본을 유지하는 모든 노드("풀 노드"라고도 함)를 파괴해야만 원장을 지울 수 있습니다. 전체 원장이 적어도 하나의 풀 노드에 존재하는 한, 비트코인 거래 내역은 모두 기록으로 남게 됩니다.

물론 아이언맨만이 트랜잭션을 생성하는 것은 아닙니다. 어벤져스의 다른 멤버들도 비트코인을 다른 수신자에게 보낼 수 있습니다. 예를 들어, 캡틴 아메리카가 윈터 솔저에게 비트코인을 보낼 수 있습니다.
이것이 바로 네트워크의 특별한 참여자인"채굴자"가 등장하는 부분입니다.
채굴자는 전 세계에 흩어져 있는 컴퓨터로, 비트코인 네트워크의 중요한 부분을 구성합니다. 그들의 임무는 아이언맨과 같은 새로운 유효 거래를 묶거나 그룹화하고, 이를 정산에 제안하는 것입니다.
이러한 거래 그룹을"블록"이라고 하는데, 이것이 "블록체인"의 "블록"이 어디에서 왔는지를 알려줍니다.
블록은 거래의 집합입니다. 블록 은 시간 순서대로 연결되어 "블록 체인" 또는 블록체인을 형성합니다.
언제든 수천 대의 컴퓨터가 다음 블록을 생성할 권리를 얻기 위해 서로 경쟁합니다. 경쟁은 "퍼즐"을 푸는 것을 포함하며, 채굴자는 현재 퍼즐을 풀어야만 새로운 블록을 제안할 수 있습니다.
이 "퍼즐"은 기본적으로 정확한 숫자를 추측하는 것으로 귀결됩니다. 정확한 숫자를 추측할 확률은 약 6조분의 1입니다.
따라서 "당첨 번호"를 가장 먼저 찾는 비결은 가능한 한 많은 숫자를 추측하는 것입니다. 이 작업에는 엄청난 양의 에너지를 사용하는 많은 연산 능력이 필요합니다.
누구든지 먼저 해결책을 찾으면"블록 보상"이라는 보상을 받을 수 있습니다.
블록 보상은 노드가 채굴에 참여하도록 장려하기 위해 고안되었습니다. 그렇지 않으면 채굴자들이 컴퓨터의 높은 비용과 이를 작동하는 데 드는 전기 비용을 회수할 수 없기 때문에 채굴자가 없을 것입니다.
블록 보상은 두 가지 요소로 구성되어 있습니다.
- 새로 발행된 비트코인
- 거래 수수료(아이언맨처럼 거래를 시작한 사람이 지불하는 수수료)
채굴자가 새로 발행한 비트코인은"블록 보조금"으로알려져 있으며, 보상 중 가장 큰 부분을 차지합니다. 현재, 각각의 새로운 블록에는 6.25개의 새로 발행된 비트코인이 보상으로 제공됩니다.
각 블록에는 여러 거래가 포함되어 있으며, 모든 거래에는 채굴자가 징수하는 수수료가 포함되어 있습니다.
요약하면 다음과 같습니다.
블록 보상 = 블록 보조금 + 거래 수수료
블록 보상은 채굴자들이 거래를 검증하고 데이터베이스를 유지하는 데 필요한 작업을 수행하도록 장려하는 것입니다.
210,000 블록마다, 즉 대략 4년마다 블록 보조금이 반으로 줄어드는"반감기"라는이벤트가 발생합니다. 이 과정은 블록 보조금이 0이 될 때까지 계속됩니다. 그 시점에는 채굴자들이 거래 수수료만 받을 것입니다.
비트코인 네트워크에서는 대략 10분마다 새로운 블록이 생성되지만, 정확한 시간은 "퍼즐"이 얼마나 빨리 풀리느냐에 따라 달라집니다.
오늘날 대부분의 채굴은 "마이닝 풀(mining pool)"이라고 불리는 채굴자 집단에 의해 이루어집니다. 이들은 처리 능력을 결합하고 블록 보상을 서로 공유합니다.
이 과정은 아래 그림에 나와 있습니다.

광부들은 이제 주황색 원으로 표시됩니다.
파란색 사각형은 아이언맨의
현재로서는 네트워크 참여자 한 명(새로운 거래 블록을 제안한 채굴자)만이 완전히 업데이트된 원장을 볼 수 있습니다.
다른 모든 참가자들은 여전히 검은색으로 표시된 이전 블록만 볼 수 있습니다.
보상이 크기 때문에 많은 채굴자들이 각 거래 블록을 해결하기 위해 경쟁합니다.
설계상, "퍼즐"을 푸는 것은 상당한 컴퓨팅 능력과 많은 전력을 필요로 하기 때문에 비용이 많이 드는 작업입니다. 그리고 수천 명의 채굴자 중 누가 "퍼즐"을 먼저 풀지 알 수 없습니다.
광부가 "퍼즐"(정확한 숫자를 추측)을 풀면, 그 해결책을 게시하고 네트워크에 거래 블록을 제안할 수 있습니다.
이 접근 방식의 장점은 퍼즐을 푸는 데는 많은 시간과 노력이 필요하지만, 그 결과를 확인하는 것은 매우 쉽다는 것입니다. 그리고 채굴자가 해결책과 거래 블록을 게시하면 네트워크의 다른 구성원들이 작업을 확인합니다.
거래가 유효하고 "퍼즐"의 답이 맞다면, 네트워크 참여자들은 새로운 거래를 반영하기 위해 데이터베이스의 사본을 업데이트합니다.
이 시점에서 아이언맨의 거래는 완료 또는 "확인"된것으로 간주됩니다. 1 비트코인이 아이언맨의 주소에서 배트맨의 주소로 이동했고, 공식적으로 블록체인에 기록되었습니다.
어떤 거래가 영구적으로 기록되고 "확인"되는지를 결정하는이 "합의 메커니즘"은 비트코인 블록체인 설계의 핵심입니다.
이 과정은 아래와 같습니다.

모든 네트워크 참여자들이 제안된 새로운 거래 블록(파란색 사각형)을 수락했습니다. 그 결과, 그들의 장부가 업데이트되고 동기화됩니다.
중요한 것은, 다음 블록의 트랜잭션을 정산하기 위한 경쟁은 이전 블록의 정보를 포함하는지에 달려 있는데, 이로 인해 마이너들은 데이터베이스의 사본을 신속하게 업데이트하게 되고, 정산된 블록을 조작하는 것이 매우 어렵습니다.
이 "블록들의 연결"이 바로 이 데이터베이스 구조를"블록체인"이라고 부르는 이유입니다.
비트코인 블록체인은 처음 생성된 이후의 모든 블록을 포함하고 있으며,"제네시스 블록"으로 알려진 첫 번째 블록까지 거슬러 올라갑니다.
블록을 제출하는 미지의 비트코인 채굴자가 악의적인 행위자이고, 어떻게든 자신에게 이익이 되는 유효하지 않은 거래 블록을 제안한다면 어떻게 될까요?
아니면 아이언맨이 악의를 품고 스파이더맨과 원더우먼에게 동시에 아무도 모르게 같은 1비트코인을 보내려고 한다면 어떨까요?
네트워크 참여자들은 제안된 각 블록의 각 거래를 검토하고 유효하지 않은 거래가 있는 블록을 거부합니다. 오늘날 10만 개 이상의 노드가 모든 비트코인 거래를 독립적으로 검증하고 있습니다!
거래를 검증하고 유효한 거래만 처리되도록 하는 작업은 네트워크 참여자들에게는 매우 쉽지만, 거래를 처리하는 것은 비용이 많이 들기 때문에 시스템을 속이려고 시도하는 인센티브는 미미합니다.
요약
비트코인 네트워크에서의 모든 상호작용을 요약해 보겠습니다.
- 다른 사람에게 비트코인을 보내려면 수신자의 비트코인 주소를 입력하면, 여러분의 지갑이 노드에 연결되어 거래를 시작합니다.
- 노드는 거래를 검증하고, 유효성을 확인한 다음, 유효한 거래를 다른 노드와 채굴자에게 브로드캐스트하고 전달합니다. 거래가 비트코인의 규칙 중 하나를 위반하는 경우, 노드는 자동으로 거래를 거부합니다.
- 채굴자들은 이러한 거래를 "후보 블록"(임시 블록)으로 묶고, 수학 "퍼즐"의 해를 가장 먼저 맞춘 사람이 블록체인을 통해 자신의 블록을 게시할 수 있도록 경쟁합니다.
- "승리"한 채굴자는 이 임시 블록을 영구 블록으로 블록체인에 게시하여 거래(및 배치의 다른 거래)를 확인합니다.
- 노드는 이 블록을 수신하고 채굴자가 네트워크 규칙을 따르고 있는지 확인합니다. (블록이 비트코인 규칙 중 하나를 위반하는 경우, 노드는 자동으로 이를 거부합니다.)
- 노드가 새로운 블록을 받고 유효하다고 판단할 때마다, 다른 노드에 전달하여 모든 노드(채굴자 포함)가 동기화 상태를 유지하고 동일한 블록체인을 유지할 수 있도록 합니다.
- 다른 모든 광부들은 작업하던 임시 블록을 삭제하고 새로운 수학 "퍼즐"을 가진 새로운 "후보 블록"을 시작합니다.
- 수신인의 지갑이 연결된 노드가 새로운 블록을 수신하면, 수신인의 지갑에 새로 받은 비트코인의 잔액이 업데이트된 상태로 표시됩니다.