Bitcoin은 중앙 관리자를 반드시 거치지 않고 금전적 가치를 이전하는 개방형 시스템입니다. 같은 이름이 프로토콜, 참여자 네트워크, 그 통화 단위를 가리킵니다. 단위 기호는 BTC이며 1 BTC는 100 000 000 satoshi로 나뉩니다. Bitcoin을 이해하려면 하나의 결제를 따라가면 좋습니다. 누가 가치를 통제하고, 그 권한을 수취인에게 어떻게 넘기며, 다른 참여자는 공동 기록에 포함되었음을 어떻게 확인할까요?
은행 잔액은 은행이 고객에게 진 채무를 나타냅니다. bitcoin을 직접 보관할 때 갖는 것은 네트워크의 특정 기록에 설정된 지출 조건을 충족하는 수단입니다. 프로토콜은 금액과 조건을 기록하며 소유자의 법적 이름은 기록하지 않습니다. 지갑은 이 기록들을 합쳐 잔액을 표시합니다. 코인 자체가 휴대전화의 파일로 저장되는 것은 아닙니다. 수탁업체나 거래소 잔액은 보통 키를 통제하는 서비스에 대한 청구권이라는 다른 의미를 가집니다. 기술적으로 결제에 서명할 수 있다는 사실만으로 법적 소유권이 결정되지는 않습니다. [Bitcoin Developer Guide — Transactions] [Bitcoin.org — Securing your wallet]
수취인은 지갑이 만든 주소를 제공합니다. 주소는 특정 지출 조건을 갖춘 출력을 만드는 방법을 나타내며 코인 우편함이나 비밀 암호가 아닙니다. 일반적으로 개인 키로 만든 디지털 서명이 다음 지출을 승인하며, 서명을 검증할 때 키를 공개할 필요는 없습니다. 조건은 여러 서명이나 대기를 요구할 수도 있습니다. 주소만 알아서는 지출할 수 없습니다. 그러나 필요한 비밀을 얻은 사람은 유효한 지출을 만들 수 있습니다. 네트워크는 키 도난과 보유자의 동의를 구별하지 못합니다. [Bitcoin Developer Guide — Transactions]
이전 거래의 미사용 출력을 UTXO라고 합니다. 일반 거래는 입력으로 선택한 UTXO를 참조하고 전부 소비한 뒤 새 출력을 만듭니다. 적절한 100 000 sat 출력이 있다면 송신자는 수취인에게 60 000 sat, 자신의 통제로 돌아오는 잔돈에 39 000 sat를 배정할 수 있습니다. 나머지 1 000 sat는 수수료이며 권장 요율이 아닙니다. 원래 출력은 같은 기록에서 다시 사용할 수 없습니다. 잔돈 주소가 원래 주소와 같을 필요는 없습니다. 서명하기 전에 수취인, 금액, 수수료를 확인합니다. [Bitcoin Developer Guide — Transactions]
지갑은 결제를 준비하고 서명하며 Full Node는 합의 규칙에 따라 데이터를 검증합니다. 예를 들어 입력이 존재하고 미사용인지, 지출 조건이 충족되는지, 일반 거래가 추가 가치를 만들어내지 않는지 확인합니다. 유효한 미확인 거래를 로컬 대기 공간인 Mempool에 수용하고 이웃 노드에 전달할 수 있습니다. 노드마다 대기 공간과 전달 정책이 다르므로 전달 거부가 항상 블록 안에서의 무효를 뜻하지는 않습니다. 지갑은 자기 노드나 정보를 공급하는 외부 서버를 사용할 수 있습니다. 자기 노드도 도난당한 서명 키를 보호하지는 못합니다. [Bitcoin Developer Guide — Transactions] [Bitcoin Developer Guide — Operating Modes]
정당한 키 보유자는 같은 UTXO를 사용하는 두 개의 다른 거래에 서명할 수 있습니다. 두 서명 모두 올바를 수 있고, 참여자마다 처음 보는 결제가 다를 수 있습니다. 따라서 권한 외에도 공통 순서가 필요합니다. 이중 지출은 코인 파일을 복사하는 것이 아니라 같은 출력의 충돌하는 두 사용을 모두 성립시키려는 시도입니다. 하나의 유효한 기록에는 최대 하나만 포함될 수 있습니다. 메시지 수신 시간, 연결된 노드 수, 지갑의 주장만으로는 이 충돌을 전역적으로 해결할 수 없습니다. [Bitcoin: A Peer-to-Peer Electronic Cash System]
채굴자는 후보 블록을 구성하고 해시를 반복 계산해 난이도 목표를 충족하는 Proof of Work를 찾습니다. 블록은 이전 블록을 참조하므로 오래된 기록을 바꾸려면 그 뒤의 작업을 다시 해야 합니다. 노드는 먼저 규칙을 검증한 다음 유효한 분기 중 누적 작업량이 가장 큰 것을 고릅니다. 반드시 블록 수가 가장 많은 것은 아닙니다. 채굴은 순서 결정을 돕지만 타인의 출력을 사용할 권한을 주지는 않습니다. 연산 능력의 과반수도 변경되지 않은 노드에 무효 블록을 강요하지 못하지만, 순서와 확인을 얻을 수 있는 가용성을 방해할 수는 있습니다. [Bitcoin Developer Guide — Block Chain]
수용된 블록에 거래가 포함되면 첫 확인을 얻습니다. 뒤따르는 블록은 보통 그 기록을 대체하는 비용을 높입니다. 블록 간격은 시간표가 아닙니다. 10분은 장기 목표이지 약속된 결제 시간이 아닙니다. 재구성은 이전에 수용한 블록을 제외해 거래를 미확인 상태로 돌리거나 충돌하는 지출로 대체할 수 있습니다. 필요한 확인 수는 결제 가치와 위험에 따라 달라지며 절대적 확실성을 주지 않습니다. 프로토콜에는 취소 담당 관리자가 없습니다. 자발적 환불은 새 결제이므로 수수료를 다시 고려해야 합니다. [Bitcoin: A Peer-to-Peer Electronic Cash System] [Bitcoin Developer Guide — Block Chain]
블록의 첫 거래인 Coinbase Transaction은 블록 보조금과 포함된 거래의 수수료를 채굴자에게 배정할 수 있습니다. 새 단위를 만드는 것은 보조금뿐이며 수수료는 기존 가치를 이전합니다. 최대 보조금은 50 BTC로 시작해 210 000블록마다 절반으로 줄어듭니다. 이 Halving은 수수료에는 적용되지 않습니다. 정수 satoshi로 절삭하므로 허용된 보조금 합계는 2,100만 BTC 미만입니다. 노드는 허용치를 넘는 보상을 거부합니다. 키 분실은 미래 발행량을 늘리지 않으며 한정된 단위 수만으로 구매력이 결정되지 않습니다. [Bitcoin Developer Guide — Block Chain]
소스 코드는 검토할 수 있고 변경은 공개적으로 제안할 수 있습니다. 개발자는 소프트웨어를 배포하고 노드 운영자는 검증할 규칙을 선택하며 채굴자는 후보 블록 내용을 고릅니다. 어느 역할도 혼자 모두를 대신해 결정하지 못하며 호환되지 않는 변경은 네트워크를 나눌 수 있습니다. 참여자의 경제적 영향력은 여전히 같지 않습니다. 제한된 블록 공간은 데이터 검증과 전파의 부담을 제한하지만 수요가 높으면 포함 경쟁을 일으킵니다. 따라서 수수료는 단순한 송금액이 아니라 거래 크기와 포함 수요에 관련됩니다. [Bitcoin Developer Guide — Block Chain] [Bitcoin Developer Guide — Transactions]
공개 기록은 검증을 가능하게 하지만 거래소 자료 등을 통한 결제와 신원 연결도 가능하게 합니다. 가명성은 익명성이 아닙니다. 직접 보관하면 수탁자에게 서명을 요청할 필요가 없어지는 대신 백업, 기기 보안, 수취인 확인의 책임이 보유자에게 넘어갑니다. 백업은 필요한 키와 설정을 복구해야 합니다. 지갑만 복구한다고 노출된 비밀이 다시 비밀이 되지는 않습니다. 자기 노드는 기록 검증을 돕지만 가격, 사생활, 안전한 서명을 보장하지 않습니다. 독립 검증에서는 이 중 어떤 질문을 확인하고 있는지 아는 것이 중요합니다. [Bitcoin.org — Protect your privacy] [Bitcoin.org — Securing your wallet]
더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 Satoshi Nakamoto, Bitcoin Whitepaper, Genesis Block, Proof of Work, Full Node, 2,100만 BTC 한도. 다음 항목에서도 이 글을 참조합니다 Satoshi Nakamoto, Bitcoin Whitepaper, Genesis Block, Full Node.