비트코인 사용을 시작한 후에 다음과 같은 트랜잭션을 받았습니다.
Mark -> Me 0.1 BTC
Hadelin -> Me 0.3 BTC
Helen -> Me 0.6 BTC
Susan -> Me 0.7 BTC
이 모든 것은 블록체인에서 일어나는 각각의 트랜잭션입니다.
모든 트랜잭션으로 비트코인을 받는데 이런 것을 비트코인에서는 UTXO
라고 부릅니다.
즉, 미사용 트랜잭션 출력값이라는 뜻입니다.
여기서 비트코인과 은행 시스템의 차이점이 발생합니다.
은행 시스템에서는 한 번 트랜잭션을 보내고 트랜잭션이 완료되면 어딘가에 기록되는 방식입니다.
하지만, 비트코인에서는 트랜잭션이 실행된 후에도 해당 트랜잭션의 UTXO
가 다른 트랜잭션을 만들 때까지 지속됩니다.
우리는 블록체인과 트랜잭션을 가지고 있으며 모든 돈의 이동은 블록체인에서의 트랜잭션입니다.
즉, 모든 돈의 이동은 블록체인의 트랜잭션이며 트랜잭션으로 돌아와서 하나를 선택해야 합니다.
0.5 BTC가 필요하기 때문에 0.5와 가장 가까운 0.6을 선택합니다. 입력값에 들어간 모든 것은 남는 것이 없이 전체 금액으로 출력되어야 합니다. 즉, 0.6 BTC가 있으니 0.5 BTC만 보낼 수 없는 것입니다. 0.6 BTC를 전부 보내야 하고 0.1 BTC를 다시 받을 수 있습니다.
트랜잭션과 그 결과는 다음과 같습니다.
Input:
0.6 BTC from Helen
Output:
0.5 BTC to the bike shop
0.1 BTC back to myself
Mark -> Me 0.1 BTC
Hadelin -> Me 0.3 BTC
Susan -> Me 0.7 BTC
Me. -> Me. 0.1 BTC
또 다른 예시로 이번에는 1.1 BTC의 자전거를 사려고 합니다. 이때의 트랜잭션과 결과는 다음과 같습니다.
Input:
0.1 BTC from Mark
0.3 BTC from Hadelin
0.7 BTC from Susan
Output:
1.1 BTC to the bike shop
Me -> Me. 0.1 BTC
출력값은 모두 자전거 가게로 가게 되고 남은 것은 없습니다. 추가 출력값이 필요 없고 다시 보낼 것도 없습니다.
트랜잭션이 블록체인에 들어오게 되면 트랜잭션은 제거되는 것이 아니라 더 이상 UTXO
가 아닙니다.
이미 사용해서 더 이상 남은 것이 없죠.
현재 가지고 있는 UTXO
는 다음과 같습니다.
Mark -> Me 0.1 BTC
Sarah -> Me 0.1 BTC
Hadelin -> Me 0.4 BTC
Susan -> Me 0.3 BTC
Hadelin -> Me 0.3 BTC
예를 들어 0.9 BTC의 자전거와 0.02 BTC의 사과를 산다고 할 때 트랜잭션을 구성해 보겠습니다.
비트코인의 경우, 은행과 달리 한 트랜잭션으로 자전거와 사과를 살 수 있습니다.
Input:
0.4 BTC from Hadelin
0.3 BTC from Hadelin
0.3 BTC from Susan
Output:
0.9 BTC to the bike shop
0.02 BTC to the apple shop
0.06 BTC to myself
Mark -> Me 0.1 BTC
Sarah -> Me 0.1 BTC
Me -> Me 0.06 BTC
총 1 BTC로 0.9로 자전거를, 0.02로 사과를 얻을 수 있습니다. 0.02 BTC는 수수료로 사용하여 0.06 BTC를 받았습니다.
채굴자들이 블록을 추가하고 멤풀에는 많은 트랜잭션이 기다리고 있습니다. 그래서 트랜잭션이 수용되게 하려면 수수료를 내야합니다. 자진해서 수수료를 내거나 입찰을 하는 것과 같습니다.
수수료가 높을 수록 트랜잭션이 수용될 가능성이 높기 때문입니다.
수수료는 총 입력값에서 총 출력값을 빼서 계산합니다.