블록체인에 대하여 궁금한게 생겨 질문합니다!
블록체인에 대해 궁금한게 생겨서 질문드립니다
블록체인이 p2p형식으로 같은 블록체인들을 노드들이 가지고 있다고 하는데요
모두가 같은 블록체인을 가지고 있기에 지금까지의 데이터를 누군가가 임의로 바꾸기 힘들다는 건 알겠습니다
그런데 새로운 데이터는 최초의 노드들 사이에서 만들어지고 이데이터가 p2p형식으로 모든 노드들에게 퍼지는것일텐데요
예를 들어 a와 b가 1비트코인을 거래했다 라는 데이터가 a노드와 b노드사이에서 만들어져서 모든 노드들에게 퍼지는 것처럼요
그럼 이 새로운 데이터를 다른 노드들에게 퍼트리기 전에 이 두 사람이 짜고쳐서 a와b가100비트코인을 거래했다 라고 바꿔버리고 버트리면 해결책이 없지않나요??
처음 퍼지기 전에 최초의 데이터가 정확하다라는 보장은 어떻게 할 수 있나요??
그냥 블록체인이 궁금해서 찾아보는 평범한 학생이라 터무니없는 질문일 수도 있습니다만 친절한 설명 부탁드립니다 ㅠㅠ
질문자께서 질문해주신 내용을 중심으로 답변을 드리도록 하겠습니다.
그럼 이 새로운 데이터를 다른 노드들에게 퍼트리기 전에 이 두 사람이 짜고쳐서 a와b가100비트코인을 거래했다 라고 바꿔버리고 버트리면 해결책이 없지않나요?처음 퍼지기 전에 최초의 데이터가 정확하다라는 보장은 어떻게 할 수 있나요??
1. 질문자께서 질문해주신 내용은 결국 51% 공격이 성공하느냐에 따라 다를 것이라고 생각합니다.일반적으로는 트랜젝션이 처리되는 도중에 블록 내부 정보를 조작하거나 정보를 탈취하여 수신자의 주소를 변경할 수는 없습니다. 왜냐하면 공개 키와 개인 키로 트랜젝션이 암호화되어 처리되기 때문입니다.
A와 B가 암호화폐를 전송하는 거래를 한다고 할 때 A가 자신의 개인 키로 트랜젝션의 내용을 암호화하여 자신의 공개 키 주소를 통해 B에게 전송하게 되고
B와 다른 노드들은 A의 공개 키를 통해 트랜젝션의 내용을 복호화하여 트랜젝션이 유효하다는 것을 확인하게 되는데, 이 암호화된 트렌젝션에는 B의 공개 키 주소로 전송했다는 것이 나와 있으므로 B의 공개 키에 대응되는 B의 개인 키가 없이는 A가 보낸 암호화폐를 탈취할 수 없게 되는 것입니다.
또한 말씀하신 것처럼 거래가 시작되기 전 가장 최신 정보에 따라 A의 잔고가 100BTC가 아니라는 것은 UTXO(일종의 잔고 개념) 정보에 기록되어 있으며 트랜젝션이 발생되기 이전에 생성된 블록에 A의 그동안의 거래 내역이 포함되어 있으므로 증명이 가능하고 이전 블록들은 확정된 상태이므로 100BTC를 가지고 있지 않은 것을 가지고 있는 것처럼 수정할 수가 없습니다.
하지만 51% 공격을 하게 되는 상황에서는 이야기가 달라질 수 있습니다. 전체 해시 파워의 51% 이상을 장악하고 위, 변조된 트랜젝션을 발생시켜 블록을 생성한 다음 그것을 유효한 거래로 처리하여 기록하고 메인 체인과 연결시켜 버릴 경우에는 블록의 정보를 조작하는 것이 가능할 수 있겠습니다.
답변이 도움이 되길 바랍니다.