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

"BIP141"의 두 판 사이의 차이

해시넷
이동: 둘러보기, 검색
(배경)
잔글
 
(다른 사용자 한 명의 중간 판 7개는 보이지 않습니다)
7번째 줄: 7번째 줄:
 
BIP141 (Bitcoin Improvement Proposal)에서 제한된 기존 트랜잭션의 포맷을 바꾸는 소프트 포크이다.
 
BIP141 (Bitcoin Improvement Proposal)에서 제한된 기존 트랜잭션의 포맷을 바꾸는 소프트 포크이다.
 
  기존 방법 : [nVersion][txins][txout][nLockTime]
 
  기존 방법 : [nVersion][txins][txout][nLockTime]
  시그윗 : [nVersion][marker][flag][txins][txout][witness][nLockTime]
+
  세그윗 : [nVersion][marker][flag][txins][txout][witness][nLockTime]
 
nVersion :  버전, txins : 입력, txouts : 출력, nLockTime : 잠금시간(블럭에 기록될 수 있는 시간)<ref> loum, 〈[https://brunch.co.kr/@loum/7 암호화폐에서 세그윗(segwit)에 대한 설명]〉, 《beta brunch》, 2017-10-20</ref>
 
nVersion :  버전, txins : 입력, txouts : 출력, nLockTime : 잠금시간(블럭에 기록될 수 있는 시간)<ref> loum, 〈[https://brunch.co.kr/@loum/7 암호화폐에서 세그윗(segwit)에 대한 설명]〉, 《beta brunch》, 2017-10-20</ref>
  
 
== 세그윗 ==
 
== 세그윗 ==
 
'분리된 증인'의 줄임말인 [[세그윗]](SegWit; Segregated Witness)은 거래 처리 용량이 늘어나는 일종의 기술적 업그레이드를 의미한다. 비트코인 커뮤니티가 확장되면서 처리 속도가 늦어지는 등의 문제가 발생하게 되는데, 기존 블록에 서명을 분리해 처리 용량을 늘리는 것을 세그윗이라 한다. <ref> 명전선 기자, 〈[https://www.blockmedia.co.kr/archives/33180 비트코인 용어 세그윗]〉, 《block media》, 2018-02-21</ref>
 
'분리된 증인'의 줄임말인 [[세그윗]](SegWit; Segregated Witness)은 거래 처리 용량이 늘어나는 일종의 기술적 업그레이드를 의미한다. 비트코인 커뮤니티가 확장되면서 처리 속도가 늦어지는 등의 문제가 발생하게 되는데, 기존 블록에 서명을 분리해 처리 용량을 늘리는 것을 세그윗이라 한다. <ref> 명전선 기자, 〈[https://www.blockmedia.co.kr/archives/33180 비트코인 용어 세그윗]〉, 《block media》, 2018-02-21</ref>
 
=== 배경 ===
 
비트코인은 2008년 처음 사토시 나카모토의 "peer to peer electronic cash system"에서 등장했고, 사토시는 블록의 크기를 제한했던 적은 없었다. 비트코인 개발에 큰 공헌을 한 할 피니(Hal Finney)는 사토시에게 블록의 크기를 제한하지 않으면, DDoS 같은 공격에 취약하다고 말하며 그에게 1MB의 블록 크기를 제안한다. 사토시는 이를 받아들여서 현재의 비트코인 블록 크기가 되었다. 비트코인의 관심이 없던 때에는 큰 문제가 발생하지 않았으나,  시간이 점차 흐르면서 사람들은 비트코인에 관해서 관심을 가지고 어느샌가 비트코인의 가격이 생각지도 못하게 큰 폭으로 오르게 된다. 2013년에는 비트코인의 거래량이 한 블록에 담지 못할 정도로 많아지게 되었고, 비트코인은 10분당 하나의 블록을 생성하며 하나의 블록에는 약 2,100개의 거래만 입력할 수 있게 되었기 때문에 거래가 빠르게 진행이 안 된다는 문제가 생기기 시작했다. 예를 들어, 10분 거래량이 1만 번 이상 생기게 되면, 최소 5번째 블록부터 확인을 받아서 거래를 처리하게 되고 1시간 이상을 기다려야 하는 문제가 생긴다. 시간이 흐르면서 이 부분에 대한 큰 개선이 없자 비트코인은 캐시 시스템 즉, 전자화폐의 개념보다는 가치를 저장하는 금(Gold)과 같은 모습으로 변질한다. <ref> 스틸스타크, 〈[https://needjarvis.tistory.com/267 블록체인 강의 - 세그윗(SEGWIT) 이란?]〉, 《flatinum》, 2018-09-04</ref>
 
  
 
=== 특징 ===
 
=== 특징 ===
==== 거래 속도의 확장성(scalability) ====
+
* 거래 속도의 확장성(scalability) : 블록의 크기를 1MB 내외로 유지하면서 거래를 처리할 수 있는 속도를 더 빨리할 수 있는 방법이 세그윗이다. 세그윗은 서명 부분을 따로 Witness라는 데이터 영역으로 분리해 더 많은 거래를 처리할 수 있도록 업데이트하는 것이다. 단순히 블록의 크기를 키우는 것도 방법이 될 수 있지만 그것을 감당할 수 있는 해시파워가 전 세계적으로 많지 않아 탈중앙화라는 블록체인의 특성에 맞지 않게 된다. 따라서 블록 크기를 유지하면서 블록 내부의 내용을 업데이트하는 것이다. <ref name = "easyblockchain"> easyblockchain, 〈[https://banksalad.com/contents/%EC%89%BD%EA%B2%8C-%EC%84%A4%EB%AA%85%ED%95%98%EB%8A%94-%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8-%EC%84%B8%EA%B7%B8%EC%9C%97-Segwit-%EC%9D%B4%EB%9E%80-9gjVA 쉽게 설명하는 블록체인:세그윗이란?]〉, 《bank salad》, 2018-06-01</ref>
비트코인은 현재 기술력으로 1초에 7개의 거래를 성사시킨다. 이는 master card와 같은 금융기관이 1초에 수백만 건의 거래를 처리할 수 있는 것에 비해 현저히 속도가 떨어지는 것이다. 이를 거래 속도의 확장성 문제라고 하는데, 이이 확장성 문제를 해결하지 못해 초당 7개의 거래를 처리한다면 전 세계 사람들이 이용하는 경우 하나의 거래를 처리하는데 몇 년이 걸릴 수 있기 때문에 이를 반드시 해결하지 않고선 비트코인의 대중화는 어렵다. 이 확장성 문제를 해결하기 위해 세그윗을 사용한다. 거래하기 위해서는 거래를 하는 당사자의 서명이 필요하다. 서명은 신원을 증명하는 것인데, 디지털 서명은 서명을 컴퓨터상에서 숫자 등으로 암호화하여 만드는 것이다. 디지털 서명이란 돈을 보내는 사람의 개인 키로 암호화한 메세지들 돈을 받는 사람이 돈을 보내는 사람의 공개키로 해석하여 돈을 보내는 사람이 맞는지 신원을 확인하고 증명하는 것이다. 블록의 구조를 보면 디지털 서명란과 거래 내역이 하나로 뭉쳐 있다. 서명란에 서명이 실제로 차지하는 크기는 크지 않지만, 서명란 자체가 차지하는 부피가 크다. 이런 문제를 확장성 문제라고 하고 블록의 크기를 1MB 내외로 유지하면서 거래를 처리할 수 있는 속도를 더 빨리 할 수 있는 방법이 세그윗이다. 세그윗은 서명 부분을 따로 Witness라는 데이터 영역으로 분리해 더 많은 거래를 처리할 수 있도록 업데이트 하는 것이다. 단순히 블록의 크기를 키우는 것도 방법이 될 수 있지만 그것을 감당할 수 있는 해시파워가 전세계적으로 많지 않아 탈중앙화라는 블록체인의 특성에 맞지 않게 된다. 따라서 블록 크기를 유지하면서 블록 내부의 내용을 업데이트하는 것이다. <ref name = "easyblockchain"> easyblockchain, 〈[https://banksalad.com/contents/%EC%89%BD%EA%B2%8C-%EC%84%A4%EB%AA%85%ED%95%98%EB%8A%94-%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8-%EC%84%B8%EA%B7%B8%EC%9C%97-Segwit-%EC%9D%B4%EB%9E%80-9gjVA 쉽게 설명하는 블록체인:세그윗이란?]〉, 《bank salad》, 2018-06-01</ref>
+
* 거래 가변성(Transaction Malleability) : 가변성의 문제를 세그윗이 이 txid를 따로 보관하고 관리함으로써 여러 개의 ID를 가지고 장난을 치거나 동일한 거래 내역 여러 개를 만드는 것을 막을 수 있다.<ref name = "easyblockchain"></ref>
 
+
* 버전 호환 : 세그윗은 하드 포크가 아닌 소프트포크이므로 비트코인 소프트웨어의 업그레이드를 하지 않아도 세그윗 이전과 세그윗 적용 버전을 모든 노드에서 사용할 수 있다.<ref> misskiwi, 〈[https://cryptokiwi.kr/currency?id=btc&category=2&content_id=217 세그윗(Segwit)이란 무엇인가?]〉, 《CRYPTOHIWI》, 2018-07</ref>
==== 거래 가변성(Transaction Malleability) ====
 
모든 비트코인 거래에는 해당 거래를 식별할 수 있는 거래의 ID(transaction ID : txid)를 포함한다. txid가 'ID'라면 txid를 따라다니는 전자서명은 '비밀번호'라고 할 수 있다. 거래 가변성은 실질적인 거래 내용에는 변화가 없지만, 거래 ID(txid)만 변경하여 새로운 거래를 만들어 낼 수 있는 일종의 버그를 말한다. 즉, 거래 ID는 한 사람에게 하나만 주어지는 것이 원칙이지만, 두 개 이상의 거래 ID로 서로 다른 거래처럼 보이지만 실제 거래 내역은 동일한 거래를 가질 수 있는 것이 가변성의 문제이다. 이런 거래 가변성 문제는 거래 내역을 검증하는 것이 노드들의 역할이어서 근본적 문제라고 할 수 없고, 신중하다면 일어나지 않는 문제이다. 하지만 발생했을 때 비트코인의 가치는 하락된다. 가변성의 문제를 세그윗이 이 txid를 따로 보관하고 관리함으로써 여러 개의 ID를 가지고 장난을 치거나 동일한 거래 내역 여러 개를 만드는 것을 막을 수 있다.<ref name = "easyblockchain"></ref>
 
 
 
==== 버전 호환 ====
 
세그윗은 하드 포크가 아닌 소프트포크이므로 비트코인 소프트웨어의 업그레이드를 하지 않아도 식,윗 이전과 세그윗 적용 버전을 모든 노드에서 사용할 수 있다. 세그윗 미적용 노드 비트코인 코어 기준 0.13.1 이전은 1MB 이상의 블록은 읽을 수 없다. 하지만 거래의 중요한 입출력 내용은 1MB 이내에 들어 있기 때문에 호환이 가능하다. 서명 부분이 빠져있기 때문에 구버전의 노드는 이를 검증하지 않고 그냥 받아들이지만, 세그윗이 가능한 버전의 노드들이 이를 증명해주기 때문에 문제가 되지 않는다.<ref> misskiwi, 〈[https://cryptokiwi.kr/currency?id=btc&category=2&content_id=217 세그윗(Segwit)이란 무엇인가?]〉, 《CRYPTOHIWI》, 2018-07</ref>
 
 
 
== 관련 BIP ==
 
* [[BIP32]] : [[HD 지갑]]의 일반적인 형식과 HD 지갑을 구축하는 방법을 설명한 문서
 
* [[BIP39]] : 결정성 열쇠를 파생하기 위한 니모닉 코드(복원 규칙)의 유형 및 BIP32 시드로 전환하는 프로세스
 
* [[BIP43]] : 트리 구조의 목적을 나타내는 특별한 식별자로써 첫 강화된 자식 인텍스의 자용을 제안
 
* [[BIP44]] : BIP32 지갑의 특정 형식, 목적을 44로 설정해서 나타나는 다중화폐 다계정 주고를 제안
 
* [[BIP47]] : 비트코인 개선 제안 및 결제 코드 작성 방법
 
* [[BIP49]] : P2WPKH가 중첩 된 P2SH 기반 계정의 유도 스키마
 
* [[BIP63]] : 스텔스 주소
 
* [[BIP70]] : SSL/TLS 통신을 이용하여 비트코인의 결제를 안전하게 함(지불 요청 프로토콜)
 
* [[BIP84]] : P2WPKH 기반 계정의 유도 스키마
 
* [[BIP141]] : 분리된 증인(Consensus layer)
 
  
 
{{각주}}
 
{{각주}}
48번째 줄: 28번째 줄:
 
* easyblockchain, 〈[https://banksalad.com/contents/%EC%89%BD%EA%B2%8C-%EC%84%A4%EB%AA%85%ED%95%98%EB%8A%94-%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8-%EC%84%B8%EA%B7%B8%EC%9C%97-Segwit-%EC%9D%B4%EB%9E%80-9gjVA 쉽게 설명하는 블록체인:세그윗이란?]〉, 《bank salad》, 2018-06-01
 
* easyblockchain, 〈[https://banksalad.com/contents/%EC%89%BD%EA%B2%8C-%EC%84%A4%EB%AA%85%ED%95%98%EB%8A%94-%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8-%EC%84%B8%EA%B7%B8%EC%9C%97-Segwit-%EC%9D%B4%EB%9E%80-9gjVA 쉽게 설명하는 블록체인:세그윗이란?]〉, 《bank salad》, 2018-06-01
 
* misskiwi, 〈[https://cryptokiwi.kr/currency?id=btc&category=2&content_id=217 세그윗(Segwit)이란 무엇인가?]〉, 《CRYPTOHIWI》, 2018-07
 
* misskiwi, 〈[https://cryptokiwi.kr/currency?id=btc&category=2&content_id=217 세그윗(Segwit)이란 무엇인가?]〉, 《CRYPTOHIWI》, 2018-07
* 스틸스타크, 〈[https://needjarvis.tistory.com/267 블록체인 강의 - 세그윗(SEGWIT) 이란?]〉, 《flatinum》, 2018-09-04
 
  
 
== 같이 보기 ==
 
== 같이 보기 ==
 
* [[세그윗]]
 
* [[세그윗]]
 +
* [[BIP]]
  
 
{{블록체인 기술|검토 필요}}
 
{{블록체인 기술|검토 필요}}

2019년 7월 28일 (일) 21:56 기준 최신판

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]

트랜잭션 구조[편집]

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

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

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

세그윗[편집]

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

특징[편집]

  • 거래 속도의 확장성(scalability) : 블록의 크기를 1MB 내외로 유지하면서 거래를 처리할 수 있는 속도를 더 빨리할 수 있는 방법이 세그윗이다. 세그윗은 서명 부분을 따로 Witness라는 데이터 영역으로 분리해 더 많은 거래를 처리할 수 있도록 업데이트하는 것이다. 단순히 블록의 크기를 키우는 것도 방법이 될 수 있지만 그것을 감당할 수 있는 해시파워가 전 세계적으로 많지 않아 탈중앙화라는 블록체인의 특성에 맞지 않게 된다. 따라서 블록 크기를 유지하면서 블록 내부의 내용을 업데이트하는 것이다. [7]
  • 거래 가변성(Transaction Malleability) : 가변성의 문제를 세그윗이 이 txid를 따로 보관하고 관리함으로써 여러 개의 ID를 가지고 장난을 치거나 동일한 거래 내역 여러 개를 만드는 것을 막을 수 있다.[7]
  • 버전 호환 : 세그윗은 하드 포크가 아닌 소프트포크이므로 비트코인 소프트웨어의 업그레이드를 하지 않아도 세그윗 이전과 세그윗 적용 버전을 모든 노드에서 사용할 수 있다.[8]

각주[편집]

  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
  8. misskiwi, 〈세그윗(Segwit)이란 무엇인가?〉, 《CRYPTOHIWI》, 2018-07

참고자료[편집]

같이 보기[편집]


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