• UTXO
    • UTXO(Unspent Transaction Output)이란 아직 사용되지 않은 Output을 지칭한다.
    • Bitcoin은 UTXO 방식으로 운영되며, UTXO 사용 여부를 통해서 자산의 안정성을 확인
      • input : 상점에 지불하는 금액, output : 상점이 받은 금액
      • output이 사용됐는지 여부를 통해 이중지불을 예방.
  • Transaction 구조
    • Size - Field - 설명
    • 4bytes - Version - 현재 값 1
      • BIP-68에서만 2
    • 2byte array - Flag - Witness Tx 여부에 따라 달라짐
      • 소프트 포크로 추가됨, true이면 Witnesses 서명 데이터가 필요
    • 1-9bytes - Number of Inputs - Input의 개수
    • Variable - inputs - input 정보
    • 1-9bytes - Number of Outputs - Output의 개수
    • Variable - ouputs - Ouput 정보
    • Variable - Witnesses - Witness 서명 데이터
      • 소프트 포크로 추가됨
    • 4bytes - Locktime - Transaction 시간 제한
      • 트랜젝션을 일정 기간 동안 제한, 0xffffffff : 사용가능한 트랜잭선.
  • Input의 구조
    • Size - Field - 설명
    • 32bytes - Transaction Hash - 현재 Input이 포함된 Tx Id
    • 4bytes - Output Index - Tx 안에서 Seq
    • 1-9bytes - Unlocking-Script Size - Unlocking Script 크기
    • Variable - Unlocking-Script - Output을 Input으로 바꾸는 서명정보
    • 4bytes - Sequence Number - 기본값 0xffffffff
      • 사용자가 일정기간 동안 트랜젝션을 사용하지 못하게 제한.
  • Output의 구조
    • Size - Field - 설명
    • 8 bytes - Amount - 송금할 금액(Satoshi 단위)
      • 1억 Satoshi = 1BTC
    • 1-9 bytes - Locking-Script Size - Locking-Script Size
    • Variable - Locking-Script - 송금자의 정보가 담긴 데이터
      • Unlocking Script의 서명(보내는 사람)으로 정보확인
      • Input → output → input
  • Transaction Fee
    • Bitcoin 수수료는 전체 INPUT의 총합에서 전체 OUTPUT의 총합을 뺀 값이다.
      블록에서 설명하였듯이, 채굴자들이 거래를 더 빠르게 하기 위해서는 수수료를 높여야한다.
      (채굴자들이 선호하는 거래는 용량이 작고 수수료가 높은 거래이기 때문에 Fee per byte가 높아야한다.)
      - fee per byte, 블록에 포함되기 위한 수수료
  • Coinbase
    • PoW에서 채굴에 성공하게 되면, 채굴에 성공한 채굴자(Miner)에게 기본 수수료와 거래 수수료를 보상으로 제공한다. 이러한 보상금액은 Block의 가장 첫 번째 거래로 Block에 포함된다.
  • Bitcoin 거래 방식 - P2PK
    • ScriptPublicKey (Prev Output, 이전 output 공개키), Public Key , OP_CHECKSIG
    • ScriptSig(Stack) → ScriptPubKey를 넣고 OP_CHECKSIG와 Public Key로 transaction 검증
  • Bitcoin 거래 방식 - P2PKHK
    • ScriptPublicKey, OP_DUP, OP_HASH160, Public Key Hash, OP_EQUALVERIFY, OP_CHECKSIG
  • Bitcoin 거래 방식 - NULL_DATA
    • 블록체인 상에 데이터를 저장하는 방식
    • Input의 ScriptSig가 들어가지 않는 거래
    • OP_RETURN을 사용
    • ScriptPubKey, OP_RETURN, 블록체인상에 저장할 데이터
  • Bitcoin 거래 방식 - SEGWIT
    • 2017년 Bitcoin 업그레이드로 인해 지원하는 새로운 거래 형식
      • ScriptPublicKey, 0 , Public Key Hash
      • witness data에 signatur와 public key 데이터를 넣음.
      • 업데이트후 작동하지 않는 문제를 해결하기 위해 0을 넣어 검증 시도시 항상 true를 리턴
  • Bitcoin 거래 방식 - TapRoot
    • 2021 Bitcoin 업그레이드로 인해 지원하는 새로운 거래 형식
    • 슈노르 서명 방식 지원
      → 공동 공개 키를 생성하여 하나의 서명으로 공동 서명
      - 기존의 여러개의 서명이 input값에 들어가야 했음. 업데이트후 하나의 서명으로 multi sig를 지원
    • MAST(Merkelized Abstract Syntax Trees) 지원
      → Bitcoin Script 실행 사실을 숨길 수 있음
      → Bitcoin의 프라이버시를 향상 시키고 트랜잭션의 수수료를 감소
  • Lightning Network
    • Lightning Network란 Bitcoin Layer 2 기술로 블록체인 상에서 일정 금액을 생성하고 이를 네트워크 상에 배포(블록에 미포함) 시키지 않고 잠금된 금액을 기반으로 실시간 거래가 가능하도록 하는 기술이다.
    • 엘살바도르 국민들은 현재 이 기술로 Bitcoin을 법정화폐로 사용하고 있다.
      • 거래가 체결되는 데에 시간이 너무 오래걸리기 때문에.
      • 중앙에 서비스를 두고 Channel을 열어 사용자들이 거래를 실시하고 Channel을 닫으면서 블록체인에 기록하고 반영. 이때에 위에서 언급한 Locking Script를 사용.
profile
"프로그래밍은 저의 상상을 실현 시킬 수 있는 유일한 도구입니다."

0개의 댓글