왜 블록체인(Blockchain) 이라는 이름일까?
앞서 올린 글 1편과 2편에서 살펴본 것처럼, 트랜잭션들은 개별적으로 추가되지 않으며, 함께 모아져서 블록 안에 추가됩니다. 각각의 새로운 블록은 이미 존재하고 있는 블록 위에 구축되므로, 파일은 겹겹이 쌓여있는 블록들의 체인(chain of blocks) 형태로 이루어집니다. 그래서 블록체인(blockchain) 이라고 합니다.
또한 네트워크의 모든 노드들은 항상 가장 긴 블록체인을 "공식" 버전의 블록 체인으로 받아들입니다. 즉, 채굴자들은 항상 가장 긴 블록 체인의 "끝(최상단)" 위에 블록을 구축하려고 시도합니다. 가장 긴 체인의 일부가 아닌 블록은 다른 노드에 의해 유효하지 않은 것으로 간주되기 때문입니다.
A라는 채굴자가 트랜잭션의 기록을 수정하여 다시 작성하려 한다고 가정해봅시다.
A는 더 긴 블록체인을 다시 만들어야 할 것입니다. 앞서 말했듯 네트워크의 모든 다른 노드가 유효한 블록체인이라고 받아들이기 위해서는 가장 긴 블록체인이어야 하기 때문입니다.
그런데 이 것을 성공하기 위해서는, A가 네트워크의 다른 모든 나머지 노드보다 더 많은 컴퓨터 프로세싱 파워를 가져야만 가능합니다.
2편에서 살펴본 채굴 절차를 나머지 네트워크 전체보다 더 빠르게 수행하여, 더 긴 블록체인을 구성해야하니까요.
즉, 공격자가 블록 체인을 다시 작성하기 위해서는 네트워크를 전체를 능가해야합니다. (매우 어렵겠죠?)
결과적으로, 네트워크의 연합된 노력으로 인해 A가 네트워크를 뛰어넘어서 블록체인을 다시 쓰는 것은 아주 어렵습니다.
트랜잭션은 어떻게 동작하는가?
블록체인은 아웃풋이라고 부르는 금고를 보유하고있는 저장 시설이라고 생각할 수 있습니다. 이 아웃풋은 다양한 양의 비트코인을 저장하는 컨테이너입니다.
당신이 하나의 트랜잭션을 생성할 때, 당신은 어떤 아웃풋을 선택하고 그것을 잠금 해제한다음, 새로운 아웃풋을 생성하고 그것에 대해 새로운 잠금을 설정합니다. 문장이 어렵죠? 아래의 예제에서 더 이해하기 쉽게 살펴보겠습니다.
예를 들어, 내가 10비트코인을 보유하고 있고, 당신에게 8비트코인을 전송하려 한다고 가정합시다.
이후에는 나에게 2비트코인이 남고, 당신에게 8비트코인이 남게 되겠네요. 그 때 아래의 절차를 수행합니다.
- 블록체인에서 오직 나만 잠금 해제할 수 있는 아웃풋을 선택합니다. 이 아웃풋에는 10 비트코인이 담겨있습니다.
- 하나의 새로운 아웃풋을 생성합니다.
- 그 아웃풋에 당신에게 보내고 싶은 수량인 8비트코인을 담고,
- 그 아웃풋을 오직 당신만 잠금 해제할 수 있도록 설정합니다.
그럼 처음 가져온 아웃풋에서 10비트코인에서 8비트코인만 빼서 새로운 아웃풋에 담았으니, 잔돈 2비트코인이 남네요? 위 절차를 다시 수행합니다.
- 하나의 새로운 아웃풋을 생성합니다.
- 그 아웃풋을 내게 남기고 싶은 수량인 2비트코인을 담고, (10BTC - 8BTC = 2BTC)
- 그 아웃풋을 오직 나만 잠금 해제할 수 있도록 설정합니다.
더 나아가서 이후에 또 비트코인을 다른 누군가에게 전송하고 싶다면, 당신은 위의 절차를 반복하기만 하면됩니다.
결과적으로, 비트코인 트랜잭션은 그래프(Graph)와 같은 구조를 형성하며, 여기서 비트코인의 움직임은 일련의 트랜잭션으로 연결됩니다.
끝으로 트랜잭션이 블록에 올라가고나면, 트랜잭션에서 소비된 아웃풋(Spent outputs)은 다른 트랜잭션에서 사용될 수 없으며, 새로 생성된 아웃풋(New outputs)은 앞으로 있을 미래의 트랜잭션에서 사용될 수 있습니다.
비트코인은 어떻게 작동하는가? (4)편에서 계속...
'블록체인 > 비트코인' 카테고리의 다른 글
노드 (Nodes) (0) | 2023.04.07 |
---|---|
비트코인 네트워크 (Bitcoin Network) (0) | 2023.04.07 |
비트코인은 어떻게 작동하는가? (4) (0) | 2023.04.06 |
비트코인은 어떻게 작동하는가? (2) (0) | 2023.04.06 |
비트코인은 어떻게 작동하는가? (1) (0) | 2023.04.06 |