Transaction Mealibility는 무엇인가요?
안녕하세요.
아하의 블록체인 전문가님들로부터 많은 도움을 받아 감사드립니다.
블록체인 거래 가운데 이중 지불을 초래할 수 있는 Transaction Mealibility는 무엇인지 알고 싶습니다.
감사합니다.
트렌젝션 가변성(Transaction Mealibility)은 비트코인의 전송시에 트랜젝션의 내용은 그대로 인데 Txhash 값이 수정될 수 있는 문제라고 할 수 있습니다.
Txhash 또는 TxID는 트랜젝션의 모든 데이터 필드에 대한 해시 값이므로 데이터 필드의 값이 변하지 않으면 Txhash의 값 역시 변하지 않아야 합니다. 하지만 데이터 필드에 송, 수신자, 전송 금액 등에 영향을 주지 않는 opcode를 추가함으로써 트랜젝션의 내용은 같은데 TxID만 변경하는 것이 가능해집니다. 이때 중요한 것은 Txhash 값만 바뀐 것이지 거래 내용은 같으므로 이것이 블록체인 상에서 처리될 경우 정상적으로 비트코인이 전송된다는 것입니다.
예를 들어 A와 B라는 사람이 있고 a트랜젝션이 있다고 가정해 보겠습니다. A가 B에게 1BTC를 전송하게 되면 a트랜젝션이 발생될 것입니다.
이때 B가 a트랜젝션이 비트코인 블록체인 상에서 처리되어 확정되기 전에 a트랜젝션의 Txhash를 바꿔 b트랜젝션을 다시 발생시킵니다. 이렇게 되면 동일한 거래 내용을 가진 Txhash만 다른 두 거래가 블록체인 상에 존재하게 됩니다.
그리고 만약에 b트랜젝션을 발생시킬 때 수수료를 더 많이 지불하거나 확률적으로 블록체인 상에서 b트랜젝션이 먼저 처리가 될 경우 a트랜젝션은 취소가 되고 b가 처리되므로 A가 B로 1BTC를 보낸 것은 정상적인 거래로 인정됩니다.
이렇게 되면 블록체인 상에서 A가 확인할 수 있는 트랜젝션은 a트랜젝션 뿐인데, 결과적으로 B에게 1BTC를 주지 않은 것이 되므로 A는 B에게 다시 1BTC를 보내야 합니다.
따라서 이러한 트랜젝션 가변성의 결과로 B는 A에게서 2BTC를 받게 되는 문제가 생긴다고 할 수 있습니다.
끝으로 이러한 트랜젝션 가변성의 문제는 세그윗을 통해 해결되었습니다. 세그윗을 통해 가변성이 있는 데이터들을 분리하여 Witness Data로 따로 관리하게 되므로 Txhash의 연산에 반영되지 않게 됩니다. 그러므로 Txhash가 변경되지 않게 되고 트랜젝션 가변성 문제도 해결이 된 것이죠.
답변이 도움이 되길 바랍니다.