Bitcoin
-
마이닝 풀이란?Cryptography 2021. 10. 26. 21:23
마이닝 풀(mining pool)은 채굴자들이 모여서 그룹으로 채굴하는 것을 말합니다. 새로운 블록이 성공적으로 채굴되면 풀 매니저는 코인베이스 트랜잭션을 받고, 블록을 채굴하기 위해서 자원을 투입한 채굴자 그룹에서 그 보상을 분배주는 역할을 수행합니다. 이러한 마이닝 풀은 solo 마이닝보다 더욱 수익성이 있는데, 마이닝 풀에서는 개별 노드가 블록을 찾았는지와 상관 없이 보상을 분배해주기 때문입니다 (물론 이상적인 경우에). 마이닝 풀 매니저가 사용할 수 있는 모델은 pay-per-share, proportional 모델 등 다양하게 존재합니다. Pay-per-share 모델에서는 마이닝 풀 매니저는 적은 수수료를 채굴에 참여하는 모든 채굴자들에게 지불하는 반면, proportional 모델에서는 지분..
-
비트코인 채굴 시스템Cryptography 2021. 10. 26. 20:58
비트코인이 탄생한 2009년 이래로, 비트코인 채굴자들은 비트코인 채굴을 위해 다양한 방법을 사용해 왔습니다. 채굴이 기반한 핵심 원리가 double SHA256 알고리즘이기 때문에, 전문가들은 그러한 해시값 계산하는 시스템을 더욱 빠르게 발전시켜 왔습니다. 이번 글에서는 비트코인에 사용되는 다양한 종류의 채굴 방법을 알아보고 어떻게 진화해왔는지 살펴보겠습니다: CPU GPU FPGA ASICs CPU CPU 채굴은 오리지널 비트코인 클라이언트에서 사용가능했던 첫 번째 타이비의 방식입니다. 사용자는 심지어 노트북이나 데스크톱 컴퓨터를 사용해 비트코인을 채굴할 수 있었습니다. CPU 채굴은 더 이상 이익이 되지 않으며 ASIC 기반의 방식과 같은 더욱 발전된 방법이 사용됩니다. CPU 채굴은 비트코인이 탄..
-
비트코인 채굴(마이닝, mining)이란?Cryptography 2021. 10. 24. 21:16
비트코인 채굴(mining)은 새로운 블록이 블록체인에 추가되는 프로세스입니다. 트랜잭션들을 포함한 블록은 비트코인 네트워크 상의 '채굴 노드'의 채굴 프로세스를 통해서 인증(validated)됩니다. 채굴되고 검증된 블록은 블록체인에 추가되며 블록체인의 크기는 계속 커져갑니다. 이 프로세스는 PoW 요구사항으로 인해서 자원을 많이 사용하게 됩니다. PoW 요구사항으로 인해서 채굴자들은 네트워크 상의 타겟 난이도(difficulty target)보다 작은 숫자를 찾기 위해 서로 컴퓨팅 경쟁을 해야하기 때문입니다. 정확한 값을 찾아야 하는 이 난이도는 새롭게 추가되는 블록이 허용되기 전에 채굴자들이 요구되는 자원을 소비하도록 만듭니다. 그러한 채굴자들은 partial hash inversion 문제라고도 ..
-
비트코인 블록체인의 구조Cryptography 2021. 10. 16. 09:03
블록체인은 트랜잭션들에 대한 분산된 원장(distributed ledger)입니다. 특히, 비트코인의 관점에 있어서 블록체인은 공용이고, 분산형 원장으로 비트코인 네트워크 상에 모든 트랜잭션 기록들을 가지고 있는 것입니다. 이 안의 트랜잭션들은 일시(timestamp)가 적혀있고, 정렬되어 있으며, 변경이 불가능(immutable)한데요. 이후 트랜잭션은 채굴자에 의해 선택(pick up)되어 채굴을 위해 블록에 포함되게 됩니다. 각 블록은 하나의 해시값을 통해 식별되고 이전 블록의 해시값을 헤더에 포함하여 이전 블록을 참조하게 됩니다. 이번 글에서는 비트코인 블록체인의 구조를 살펴보겠습니다: 비트코인 블록체인의 구조 Genesis 블록 Stale 및 Orphan 블록 블록체인의 크기 네트워크 diffi..
-
비트코인 트랜잭션의 인증(Validation)Cryptography 2021. 10. 15. 22:18
트랜잭션 인증 비트코인 트랜잭션의 검증과정(verification process)은 비트코인 노드를 통해서 수행됩니다. 노드들은 하나의 트랜잭션을 검증할 때에 아래 3가지를 체크하게 됩니다: 먼저, 해당 트랜잭션 인풋이 이전에 지불된 적이 없는지 체크합니다. 이 검증 단계는 해당 트랜잭션 인풋이 중복 지불되지 않도록 합니다. 트랜잭션 아웃풋의 합계가 트랜잭션 인풋의 합계보다 크지 않은지 체크합니다. "인풋의 합계 >= 아웃풋의 합계"여야 하는데요. 이를 통해, 비트코인이 출처가 없이 생성되는 것을 막습니다. 디지털 서명이 유효한지 확인하여 script가 유효함을 확인합니다. 비록 트랜잭션 생성과 인증이 일반적으로 안전한 프로세스이긴하나, 비트코인에는 아래와 같은 몇 가지 취약점이 존재합니다. 트랜잭션 버..
-
비트코인 스크립트의 종류Cryptography 2021. 10. 15. 18:01
비트코인에는 검증과 코인 전송을 처리하기 위해서 다양한 스탠다드 스크립트가 존재합니다. 이러한 스크립트들은 트랜잭션에 대한 요구사항에 따라 간단한 것부터 매우 복잡한 것까지 존재하는데요. 스탠다드 트랜잭션들은 IsStandard()와 IsStandardTx() 테스트를 사용해서 평가되고, 그러한 테스트를 통과한 것들만이 비트코인 네트워크 상에서 브로드캐스트되거나 채굴될 수 있습니다. 그러나, non-스탠다드 트랜잭션들도 유효성 검사를 통과한다면 네트워크 상에서 허용됩니다. 이번 글에서는 그러한 스탠다드 스크립트를 다뤄볼 예정입니다: 종류 스크립트의 실행 흐름 종류 Pay-to-Public-Key Hash (P2PKH) P2PKH는 가장 일반적으로 사용되는 트랜잭션 타입으로 비트코인 주소로 트랜잭션을 송신..
-
비트코인 트랜잭션 데이터 구조Cryptography 2021. 10. 15. 17:09
트랜잭션은 비트코인 에코시스템의 핵심입니다. 트랜잭션은 요구사항에 따라 간단하게 비트코인을 특정 주소로 보내는 것일 수도 있고, 조금 더 복잡한 형태일 수도 있습니다. 각 트랜잭션은 최소한 한 개 이상의 인풋과 아웃풋으로 구성되어 있습니다. 인풋은 이전 트랜잭션에서 생성되어 '보내지는' 코인이고, 아웃풋 생성되는 코인이라고 볼 수 있습니다. 만약 한 트랜잭션이 새로운 코인을 만든다면, 인풋이 존재하지 않고, 서명(signature)도 필요 없습니다. 만약 트랜잭션이 코인을 다른 비트코인 주소로 보내려면, 송신자는 트랜잭션에 송신사의 비밀키(private key)로 서명을 하여야 합니다. 이러한 경우 코인의 기원을 보여주기 위해서 이전 트랜잭션에 대한 레퍼런스도 필요합니다. 그렇기에 코인은 '지불되지 않은..