쉽게 설명하는 블록체인, Segregated Witness란 뭔가요? - 2 [거래 가변성(Transaction Malleability)]
Segwit으로 해결하려는 문제가 두가지 인데
그 중 하나가 이전 포스팅에 다뤘던 '확장성(scalability)'이고 다른 하나는 이번 포스팅에 다룰 '거래 가변성(transaction malleability)'이다.
모든 비트코인 거래에는 해당 거래를 식별할 수 있는 거래의 ID (transaction ID: txid)를 포함한다. 전자서명도 txid와 함께 따라다니는데 txid가 'ID'라면 전자서명은 '비밀번호'라고 할 수 있다.
거래가변성(Transaction Malleability)는 실질적인 거래 내용에는 변화가 없지만 거래 ID만 변경하여 새로운 거래를 만들어 낼 수 있는 일종의 버그이다.
거래 ID는 주민등록번호와 같이 한 사람에게 하나만 주어지는 것이 원칙이지만 두개 이상의 거래 ID (주민번호가 2개인 셈)로 거래내역은 동일한 서로다른 거래를 가질 수 있는것이 Transaction Malleability이다.
쉬운 예를 하나 들어보자
Bob은 Alice에게 1BTC(비트코인의 약자)를 보낸다. 이것이 거래 A라고 하자.
Bob이 보낸 거래 정보를 확인한 Alice는 해당거래에서 txid만 바꾼 거래 B를 네트워크에 전파.
Alice가 전파한 거래 B를 포함한 블록이 채굴됨.
Alice는 Bob에게 거래 A의 txid가 포함된 거래가 기록되지 않았다고 하자 Bob이 거래 A의 해당 txid를 블록에서 찾아보지만 거래내역이 없다... (이미 거래 B를 통해 1BTC는 지불된 상태ㅠㅠ)
Bob은 Alice에게 다시 1BTC를 전송하게 됨...
결과적으로 txid를 두개를 사용해 거래B의 존재를 알지못하는 Bob은 2BTC를 지불하게 되는 것이 거래 가변성(Transaction Malleability)이다.
사실 이 거래가변성(Transaction Malleability) 문제는 조금만 신중한다면 일어나지 않는 문제이다.
거래내역을 검증하는 것이 블록체인 네트워크에서 노드들의 역할이기 때문에 이것이 근본적인 문제라고는 할 수 없지만 발생했을때 비트코인의 가치는 하락하게 되겠지... 그러므로 무시할 수 없는 문제이다.
- 결론 : 이 txid를 따로 보관하고 관리함으로써 여러개의 ID를 가지고 장난을 치거나 동일한 거래내역 여러개를 만드는 것을 막는 것도 Segwit Update로 가능하다고 할 수 있다.
최대한 쉽게 설명하려고 하지만 모르시는 분들을 위해 언제든지 어떤 내용이든 댓글로 질문을 받습니다.
질문의 내용이 길 경우는 [email protected]으로 보내주시면 감사하겠습니다.
멋지네요 많이 배웁니다.
감사합니다~
궁금한 점이 있어 질문드립니다. 노드가 거래내역을 검증할 때, 어떤 기준으로 무엇이 옳은 거래내역이라고 판단하는지 궁금합니다. 위의 예를 들면, Txid-1 과 Txid-2 중 무엇이 옳은 거래내역인가를 어떻게 판단하는지 궁금합니다.
Hi! I am a robot. I just upvoted you! I found similar content that readers might be interested in:
https://steemit.com/bitcoin/@jsralph/segregated-witness-2-transaction-malleability
이전 계정 https://steemit.com/@jsralph 분실하여 새로 계정을 만들게 되었습니다.
블록체인 관련 포스팅들 이곳에 계속 올라옵니다~