검수요청.png검수요청.png

BIP141

해시넷
Asadal (토론 | 기여)님의 2019년 7월 13일 (토) 16:02 판
이동: 둘러보기, 검색

BIP141(Bitcoin Improvement Proposal 141)에서 제한된 기존 트랜잭션의 포맷을 바꾸는 소프트포크(soft fork)이다. BIP141은 세그윗(SegWit)을 활성화하기 위한 원래 계획이며, 2016년 11월에 도입되었다.[1] 분리 된 증인 (Consensus layer)라고 하며 찬성률이 95%일 때 Segwit이 자동 업데이트 된다. [2]

개요

BIP141은 트랜잭션 병합 트리와 별도로 블록에 커밋되는 "감시(witness)"라는 새로운 구조를 정의한다. 이 구조에는 트랜잭션 유효성을 확인하는 데 필요한 데이터가 있지만 트랜잭션 영향을 결정하는 데 필요하지는 않다. 특히 스크립트와 서명이 새로운 구조로 옮겨진다. 목격자는이 SegWit을 Bitcoin의 소프트포크(soft-fork)를 호환 가능하게 만들기 위해 코인베이스 트랜잭션을 통해 블록의 기존 머클 루트(merkle root)에 중첩 된 트리에서 커밋된다. 선점 거래형태의 악성 문제를 해결하기 때문에 번개 네트워크의 전제조건이기도 하다. 미래의 하드 포크(hard fork)는 이 트리를 자체 분기에 배치 할 수 있다.[3]특히 BIP141은 다음과 같은 새로운 트랜잭션 유형을 정의합니다. P2WPKH , P2WPKH-in-P2SH , P2WSH , P2WSH-in-P2SH . 처음 두 가지 유형만 현재 Trezor 에서 지원한다.[4]

트랜잭션 구조

BIP 141 (Bitcoin Improvement Proposal)에서 제한된 기존 트랜잭션의 포멧을 바꾸는 소프트 포크이다.

기존 방법 : [nVersion][txins][txout][nLockTime]
시그윗 : [nVersion][marker][flag][txins][txout][witness][nLockTime]

nVersion : 버전, txins : 입력, txouts : 출력, nLockTime : 잠금시간(블럭에 기록될 수 있는 시간)[5]

SegWit(Segregated Witness)

'분리된 증인'의 줄임말인 세그윗은 거래 처리 용량이 늘어나는 일종의 기술적 업그레이드를 의미한다. 비트코인 커뮤니티가 확장되면서 처리 속도가 늦어지는 등의 문제가 발생하게 되는데, 기존 블록에 서명을 분리해 처리 용량을 늘리는 것을 세그윗이라 한다. [6]

거래 속도의 확장성(scalability)

비트코인은 현재 기술력으로 1초에 7개의 거래를 성사시킨다. 이는 master card와 같은 금융기관이 1초에 수백만 건의 거래를 처리할 수 있는 것에 비해 현저히 속도가 떨어지는 것이다. 이를 거래 속도의 확장성 문제라고 하는데, 이이 확장성 문제를 해결하지 못해 초당 7개의 거래를 처리한다면 전 세계 사람들이 이용하는 경우 하나의 거래를 처리하는데 몇 년이 걸릴 수 있기 때문에 이를 반드시 해결하지 않고선 비트코인의 대중화는 어렵다. 이 확장성 문제를 해결하기 위해 세그윗을 사용한다. 거래하기 위해서는 거래를 하는 당사자의 서명이 필요하다. 서명은 신원을 증명하는 것인데, 디지털 서명은 서명을 컴퓨터상에서 숫자 등으로 암호화하여 만드는 것이다. 디지털 서명이란 돈을 보내는 사람의 개인 키로 암호화한 메세지들 돈을 받는 사람이 돈을 보내는 사람의 공개키로 해석하여 돈을 보내는 사람이 맞는지 신원을 확인하고 증명하는 것이다. 블록의 구조를 보면 디지털 서명란과 거래 내역이 하나로 뭉쳐 있다. 서명란에 서명이 실제로 차지하는 크기는 크지 않지만, 서명란 자체가 차지하는 부피가 크다. 이런 문제를 확장성 문제라고 하고 블록의 크기를 1MB 내외로 유지하면서 거래를 처리할 수 있는 속도를 더 빨리 할 수 있는 방법이 세그윗이다. 세그윗은 서명 부분을 따로 Witness라는 데이터 영역으로 분리해 더 많은 거래를 처리할 수 있도록 업데이트 하는 것이다. 단순히 블록의 크기를 키우는 것도 방법이 될 수 있지만 그것을 감당할 수 있는 해시파워가 전세계적으로 많지 않아 탈중앙화라는 블록체인의 특성에 맞지 않게 된다. 따라서 블록 크기를 유지하면서 블록 내부의 내용을 업데이트하는 것이다. [7]

거래 가변성(Transaction Malleability)

모든 비트코인 거래에는 해당 거래를 식별할 수 있는 거래의 ID(transaction ID : txid)를 포함한다. txid가 'ID'라면 txid를 따라다니는 전자서명은 '비밀번호'라고 할 수 있다. 거래 가변성은 실질적인 거래 내용에는 변화가 없지만, 거래 ID(txid)만 변경하여 새로운 거래를 만들어 낼 수 있는 일종의 버그를 말한다. 즉, 거래 ID는 한 사람에게 하나만 주어지는 것이 원칙이지만, 두 개 이상의 거래 ID로 서로 다른 거래처럼 보이지만 실제 거래 내역은 동일한 거래를 가질 수 있는 것이 가변성의 문제이다. 이런 거래 가변성 문제는 거래 내역을 검증하는 것이 노드들의 역할이어서 근본적 문제라고 할 수 없고, 신중하다면 일어나지 않는 문제이다. 하지만 발생했을 때 비트코인의 가치는 하락된다. 가변성의 문제를 세그윗이 이 txid를 따로 보관하고 관리함으로써 여러 개의 ID를 가지고 장난을 치거나 동일한 거래 내역 여러 개를 만드는 것을 막을 수 있다.[7]

관련 BIP =

  • BIP32 : HD 지갑의 일반적인 형식과 HD 지갑을 구축하는 방법을 설명한 문서
  • BIP39 : 결정성 열쇠를 파생하기 위한 니모닉 코드(복원 규칙)의 유형 및 BIP32 시드로 전환하는 프로세스
  • BIP43 : 트리 구조의 목적을 나타내는 특별한 식별자로써 첫 강화된 자식 인텍스의 자용을 제안
  • BIP44 : BIP32 지갑의 특정 형식, 목적을 44로 설정해서 나타나는 다중화폐 다계정 주고를 제안
  • BIP47 : 비트코인 개선 제안 및 결제 코드 작성 방법
  • BIP49 : P2WPKH가 중첩 된 P2SH 기반 계정의 유도 스키마
  • BIP63 : 스텔스 주소
  • BIP70 : SSL/TLS 통신을 이용하여 비트코인의 결제를 안전하게 함(지불 요청 프로토콜)
  • BIP84 : P2WPKH 기반 계정의 유도 스키마
  • BIP141 : 분리된 증인(Consensus layer)

각주

  1. 에이미 캐스터, 〈CoinDesk Explainer : Bitcoin 분할을 피하면서 BIP 91이 SegWit을 실행하는 방법〉, 《coindesk》, 2017-07-18
  2. Eastinny, 〈[hhttps://www.clien.net/service/board/cm_vcoin/10984851]〉, 《clien》, 2017-07-18
  3. 깃허브〉, 《깃허브》
  4. Cryptocurrency 표준〉, 《trezor wiki》
  5. loum, 〈암호화폐에서 세그윗(segwit)에 대한 설명〉, 《beta brunch》, 2017-10-20
  6. 명전선 기자, 〈비트코인 용어 세그윗〉, 《block media》, 2018-02-21
  7. 7.0 7.1 easyblockchain, 〈쉽게 설명하는 블록체인:세그윗이란?〉, 《bank salad》, 2018-06-01

참고자료


  검수요청.png검수요청.png 이 BIP141 문서는 블록체인 기술에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.