안녕하세요 :)
거래는 spent transaction과 unspent transaction(UTXO)로 나눠지게 되는데 풀 노드(full node)를 돌리실 때에는 단지 UTXO set이 아닌 spent transaction까지 포함한 전체 블록체인을 다운받게 되고 각 거래의 유효성(validity)을 모두 검증합니다. 비트코인의 풀 노드들은 신규 블록을 받을 때마다 신규 블록에 포함되어 있는 거래들은 UTXO set에 포함시키고 기존 UTXO 중 신규 거래들에 의해 참조된 UTXO는 배제시키는 방식으로 UTXO set을 지속적으로 업데이트해나가게 됩니다.
두 번째 질문에 대해서는 사용자가 각 거래를 생성할 때 자신의 개인키와 해시함수(hash function)을 사용하여 해당 거래에 전자서명(signature)을 하게 됩니다. 따라서 거래의 내용이 위변조되는 경우에는 거래의 서명 자체가 변경되기 때문에 비트코인 프로토콜에 의해 유효하지 않다고 판단되어 받아들여지지 않습니다. 또한 거래들은 merkle tree라는 구조에 의해 merkle root에 최종 해시값이 저장되는데 merkle root값은 거래 중 하나만 변경되어도 완전히 달라지기 때문에 실질적으로 거래 내용 자체를 단순히 위변조하는 것은 불가능하다고 보시면 됩니다.
도움이 되셨으면 좋겠습니다 :) 참고자료로는 Mastering Bitcoin(2nd Ed): https://github.com/bitcoinbook/bitcoinbook이 가장 좋다고 생각합니다.
안녕하세요 유튜브에서 영상 잘보고 있습니다~
첫번째로 답변해주신 부분은 이해가 가는데 두번째로 답변해주신 부분에서는 제가 질문 드린바와 다른 부분이 있는 것 같아 다시 한번 이야기드립니다.
기존 비트코인 시스템(PKI, 합의알고리즘)에 의해서 위변조된 거래가 막아지는것은 알고 있습니다. 제가 궁금한 점은 이 부분이 아닌 사용자의 편의성? 등을 위해서 악의적인 사용자가 한 노드의 DB를 위조하여 정상적인 거래 생성이 불가능하게 할 시에 이를 방지하기 위한 코어에 기반 장치? 등이 있는가 하는 의문점 입니다. 이 부분이 없어도 정상적으로 비트코인 네트워크가 작동한다는 점은 이해하였지만, 혹시나 예방 차원의 방지 기술이 있는가 하는 점에 질문 드렸습니다.
빠르게 답변 해주셔서 감사드립니다!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
악의적인 공격자가 다른 노드에 침입하여 DB를 위조하는 경우를 말씀하시는 건가요?
비트코인에는 전체 블록체인을 모두 저장하는 풀 노드(full node)와 블록의 헤더만을 저장하는 SPV(Simplified Payment Verification) 노드 (일종의 light client)가 있습니다. 풀 노드 같은 경우 거래 데이터를 받은 경우 전체 블록체인과 대조하여 해당 거래의 유효성을 검증하기 때문에 위변조된 거래를 받아들일 가능성이 없구요, SPV 노드 같은 경우에는 블록헤더와 머클경로(merkle path)를 사용하여 해당 거래가 특정 블록에 포함되어있는지를 우선적으로 확인하고 이후 6개의 블록이 특정 블록 위에 쌓였는지를 주변에 연결되어 있는 노드들을 통해 확인하게 됩니다.
기본적으로 비트코인 클라이언트를 돌리게 되시면 주변의 8개의 노드들과 소통을 하게 됩니다. 따라서 이들 중 하나라도 악의적이지 않은 노드가 있다면 잘못된 정보를 받는 것을 방지할 수 있습니다.
제가 정확히 질문을 이해하지 못하였을 수도 있는데 아마 위에서 말씀드린 책을 보시면 좀 더 이해가 되실 수 있을 것 같습니다 :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
답변 주셔서 감사드립니다.
제가 질문 드린 부분과는 다른 부분이 있는 것 같네요
책도 한번 보았는데 제가 질문 드린내용에 대해서는 내용이 없더라구요
위에서 언급하신 전체 블록체인과의 대조 부분에서 이부분은 데이터베이스에 저장된 UTXO 를 통하여 거래 검증을 뜻하는 것으로 아는데, UTXO set 이라는 부분이 초기 블록체인 싱크시 생성된 풀이며 추후에는 이에 대한 관리를 하지 않는 것으로 아는데, 임의로 UTXO set에 대한 조작이 발생할시 거래 검증이 제대로 이루어지지 않을 수 있냐 하는 뜻에서 질문 드린것입니다. 그래서 UTXO set에 대한 관리가 필요하지 않을까하는 의문에 질문 드렸습니다.
답변 감사드립니다!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit