본문 바로가기

분류 전체보기271

[Bitcoin] 채굴과 합의 채굴채굴은 새로운 비트코인이 통화 공급량에 추가되는 과정이다. 또한 채굴을 통해 사기거래나 이중지불 문제로부터 비트코인을 보호한다. 채굴자들은 비트코인 네트워크에 처리 능력을 제공하고 그에 대한 대가로 비트코인을 받는다. 채굴자들은 새로운 거래들을 승인한 후 전 세계에 존재하는 장부에 승인된 거래들을 기록한다. 새 블록에는 지난 블록 이후에 발생한 거래들이 들어 있으며 10분마다 채굴되어 블록체인에 추가된다. 블록의 일부가 되어 블록체인에 추가된 거래는 '승인' 되었다고 간주되며, 승인된 거래를 전송받은 새로운 소유주는 해당 비트코인을 소비할 수 있게 된다. 채굴자들은 채굴 작업에 대해 2가지 종류의 보상을 받는다. 하나는 새 블록 각각에서 새로운 코인을 생성하는 것이고, 나머지 하나는 해당 블록 내에.. 2025. 4. 30.
[Bitcoin] 블록체인 블록체인블록체인 데이터 구조는 거래가 담겨있는 블록이 그 이전 블록과 연결되어 있는 형태의 정돈된 목록이다. 블록체인 내에 있는 블록 각각은 해시를 이용해서 식별된다. 해시는 블록의 헤더에서 SHA256 해시 알고리즘을 이용해서 생성된다. 각 블록은 블록헤더에 있는 '이전 블록 해시' 필드를 통해 이전 블록(부모 블록)을 참조한다. 블록은 단 1개의 부모 블록을 가지지만 일시적으로 여러 개의 자식 블록을 보유할 수 있다. 여러 개의 자식 블록은 블록체인 분기가 발생하는 동안 생성된다. 블록체인 분기란 다른 채굴자들에 의해 거의 동시로 다른 블록들이 발견되는 경우 발생하는 일시적 상황이다. 결국 단 하나의 자식 블록만이 블록체인의 일부가 되며 블록체인 '분기' 현상은 해결된다. '이전 블록 해시' 필드는 .. 2025. 4. 29.
[Bitcoin] 거래 스크립트 2 P2PK(Pay to Public Key)P2PK는 P2PKH보다 더 단순한 비트코인 지불 방식이다. P2PK는 공개키가 잠금 스크립트 내에 자체적으로 저장되어 길이가 훨씬 짧아지게 된다. P2PK의 잠금 스크립트는 다음과 같다. OP_CHECKSIG 위와 같은 출력값을 해제하기 위해 필요한 해제 스크립트는 아래와 같이 단순한 서명의 형태다. 해당 거래의 복합 스크립트는 다음과 같다. 이 스크립트는 CHECKSIG라는 단순한 호출 연산자로, 서명이 정확한 키에 속해 있는 지를 입증한 후 스택으로 TRUE 결과값을 돌려보낸다. OP_CHECKSIG 다중서명다중서명은 N개의 공개키가 스크립트 내에 기록되어 있고, 예상지출 상태를 풀기 위해서는 이 중 적어도 M개 이상의 개인키가 서명을 제공해야 한다는.. 2025. 4. 28.
[Bitcoin] 거래 스크립트 1 거래 스크립트와 스크립트 언어비트코인 클라이언트는 스크립트를 실행해서 거래를 유효화한다. UTXO에 위치한 잠금 스크립트와 해제 스크립트는 스크립트 언어로 작성된다. 대부분의 거래는 'A가 B에게 지불'하는 형식으로 진행되며 P2PKH 스크립트와 동일한 스크립트를 기반으로 한다. 스크립트 구성(잠금과 해제)잠금 스크립트는 출력값에 위치한다. 출력값을 소비하기 위해 충족되어야 하는 요건을 명시하고 있다. 잠금 스크립트에는 보통 공개키 혹은 비트코인 주소가 담겨 있기 때문에 스크립트 펍키(scriptPubKey)라고 부르기도 한다. 대부분의 어플리케이션에서는 잠금 스크립트를 scriptPubKey로 표현한다. 해제 스크립트는 잠금 스크립트가 출력값에 놓아둔 조건을 해결하여 출력값이 소비될 수 있도록 하는.. 2025. 4. 27.
[Bitcoin] 거래 거래 구조거래는 입력값이라고 불리는 자금원에서부터 출력값으로 불리는 목적지까지의 가치의 전송을 인코딩하는 데이터 구조다. 4바이트: 버전1~9바이트: 입력값 개수가변적: 입력값1~9바이트: 출력값 개수가변적: 출력값4바이트: 잠금시간 거래 출력값과 입력값 비트코인 거래로 구성되어 있는 블록을 구성하는 기본 요소는 '소비되지 않은 거래 출력값(UTXO)'이다. UTXO는 특정 소유주에 의해 암호로 잠겨있고, 블록체인 상에 기록되어 있다. 비트코인 네트워크는 수백만 개에 달하는 UTXO중에서 이용 가능한 UTXO를 전부 추적한다. 따라서 수백 개의 거래와 수백 개의 블록들 중에서 사용자의 비트코인은 UTXO의 형태로 산재해 있을 수 있다. 비트코인 주소 혹은 계좌에 보관된 잔액은 있을 수 없다. 특정 소.. 2025. 4. 23.
[Bitcoin] Descriptor Descriptor는 월렛간 'import' 'export' 처리를 위한 형태를 제공한다. 백업과 derivationPath를 통한 주소를 생성하는 목적으로도 사용한다고 한다. function([derivationPath]key)checksum 형태로 되어있다. Descriptor에 들어갈 수 있는 정보는 Script, Key, MultiSig 정보가 있다. 개인적으로 다중서명지갑에서 주소가 결정된 형태로 들어가는 형태만 알고 있었는데, derivationPath로 파생되는 자식을 범위로 묶을 수 있다는 것이 신기했다. 다중서명지갑 1 of 2, 고정된 키를 사용하는 경우multi(1,022f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240ef.. 2025. 4. 22.
[Bitcoin] 지갑 2 확장키키 유도 함수는 세 가지 입력값(키, 체인코드, 색인번호)을 기반으로 자식키를 생성한다. 중요한 요소는 키와 체인코드이고, 이 둘을 결합한 것은 확장키라고 부른다. 확장키는 256비트 크기의 키와 256비트 크기의 체인코드를 512비트 크기의 열로 연결하여 단순하게 표현된다. 확장키에는 2가지 형태가 있다. 확장 개인키는 개인키와 체인코드의 결합으로, 자식 개인키(혹은 자식 공개키)를 얻는데 사용할 수 있다. 확장 공개키는 공개키와 체인코드의 결합으로 자식 공개키를 생성하는 데 사용될 수 있다. HD지갑의 트리구조에서 확장키를 브랜치의 근원으로 간주해보면, 브랜치의 근원을 가지고 해당 브랜치의 나머지를 구할 수 있다. 확장 개인키만 있으면 브랜치의 나머지 부분을 완성할 수 있는 반면, 확장 공개키.. 2025. 4. 21.
[Bitcoin] 지갑 1 지갑지갑은 개인키를 담는 곳으로 대게 구조화된 파일이나 데이터베이스 형태로 구현되어 있다. 결정적 키 생성법을 이용하여 이전 개인키로부터 새로운 개인키를 각각 생성하며, 개인키들을 차례대로 연결할 수 있다. 이러한 배열을 계속 만들어 내는 최초의 키(Seed)만 있으면 배열상의 모든 개인키를 생성해 낼 수 있다. 사용자들은 개인키를 이용하여 거래에 서명하여 거래출력값(비트코인)을 가지고 있음을 증명한다. 비결정적 지갑단순히 무작위로 생성된 개인키를 모아놓은 것이다. 유형-0 비결정적 지갑이라고 부른다. 무작위로 선택한 개인키 100개를 미리 생성한 후 필요한 만큼 추가로 생성하기 때문에 각 키들은 단 한번만 사용된다. 키가 생성된 후에는 복사본을 보관해야 하므로 자주 데이터를 백업해야 한다. 관리가 복.. 2025. 4. 20.
[Bitcoin] 개인키와 공개키 공개키의 암호법과 암호화폐비트코인은 사용하는 공개키 암호법으로 '타원곡선 곱셈 함수'를 기본 토대로 삼고 있다. 한 쌍의 키는 개인키와 개인키에서 파생된 공개키로 구성되어 있다. 공개키는 비트코인을 전송받을 때 사용되며, 개인키는 전송받은 비트코인을 소비할 때 사용된다(트랜잭션 서명) 대부분의 지갑에서는 개인키와 공개키를 함께 저장하지만, 공개키는 개인키를 통해 계산할 수 있으므로 개인키만 저장하는 것도 가능하다. 개인키와 공개키비트코인 지갑에는 쌍으로 구성된 키가 여러 개 들어있고, 각각의 쌍은 개인키와 공개키로 구성되어 있다. 개인키(k)는 숫자로 구성되어 있으며, 타원곡선 함수를 이용하여 공개키(K)를 구하는 것이 가능하다. 개인키개인키는 무작위로 추출한 단순한 숫자로 구성되어 있다. 개인키에.. 2025. 4. 19.
[디벨로퍼] 채용 사이트 프로젝트 17 이력서 정보에 사용하는 활동, 학력, 외국어, 링크에 대한 데이터를 구조화했다. id값은 일단 랜덤으로 주고 해당 id로 json 요소를 찾아와서 수정하는 식이다. 각 뷰마다 list를 들고 있기도 하는데, 자식 뷰에 해당하는 부분도 id값을 주고 수정하고 삭제하는 식으로 구성된다. 데이터를 뭉탱이로 처리하다보니 약간 버벅거리는 것 같은 느낌이... (현업에서는 더 효율적으로 사용할 듯 싶다)  최신 채용 트렌드 페이지를 작업했다. 헤더 부분, 그래프, 직군별 스킬, 커리어 인사이트, 회사뷰, scrollToView, scrollToTop 처리 등등 경력 리포트는 작업하고 있다. 2025. 3. 30.