Change Splitting and Consolidation on UTXO

Dahun Yoo·2021년 6월 7일
0

BlockChain and QA

목록 보기
2/5

이번 포스트에서는 UTXO 계열의 Crypto를 사용하면서 겪을 수 있는 문제에 대해 알아봅니다.


저번 포스트로부터 이어집니다.
UTXO, Unspent Transaction Output


저번 포스트에서 UTXO를 설명하면서, 적절한 크기와 양의 UTXO 덩어리가 없다면 제일 큰 UTXO를 찾아 쪼개어 작은 양의 많은 UTXO들이 생겨나, 이것이 쌓이면 추후에 Output을 생성할 때에 Network fee가 많이 소비되게 된다고 말씀드렸습니다. 혹은 적절한 UTXO가 없다면, 출고에 실패할 수 있다고도 말씀드렸습니다.

이와 같은 문제를 해결하려면 어떻게해야할까요??


Change Split

Change 는 자잘한 잔돈을 의미하는데요, UTXO에서의 change도 마찬가지로, 자잘한 크기의 많은 UTXO를 change 라고도 합니다.
Split 은 말그대로 쪼개다 입니다.
잔돈을 쪼개다 뭐 이런 것 인데, UTXO에서는 Tx의 output을 위해 일부러 커다란 크기의 UTXO를 잘게 쪼갠다는 것입니다.

예를 들어, 1 BTC의 UTXO에서 0.1를 소비하고, 0.9 BTC가 UTXO가 된다고 가정해봅시다.

이후, 다음 출고에서 0.2 BTC를 출고한다고 가정했을 경우, 적절한 UTXO를 찾을 때까지 출고 실행에 오래 걸릴 수도 있습니다.

때문에 Change split이라는 개념으로, 미리 적절한 수량 단위로 쪼개놓는 것입니다.

이렇게 쪼갠다면, 다음 출력의 수량에 따라서 적절한 UTXO를 빠르게 찾아낼 수 있을 것 입니다.


Consolidate

물론, 계속 쪼개지기만 해서는, 자잘한 UTXO가 많이 생겨버려서 반대로 Network fee의 상승을 초래할 수 있습니다. 혹은 너무 작은 UTXO의 출고는 network fee가 너무 작아 network상의 confirmation 경쟁에서 밀릴 수도 있습니다.
따라서 Split처리를 할때에는, Wallet내의 UTXO개수를 파악해서 특정 갯수 이상은 분할되지 않도록 처리하는 등의 방법이 강구되어야 합니다.

그러나, 그 외에 자잘한 UTXO를 하나로 합쳐줘야할 수도 있을 것입니다. 이것을 consolidation 이라고 합니다.
자잘한 UTXO들을 주기적으로 합쳐주어 적절한 크기의 UTXO가 되도록 합니다. 물론 하나로 합치는 행위는, 다시 Transaction이 발생하고, 이는 곳 network fee의 발생을 의미하긴 합니다만, 적절한 수의 UTXO를 유지하도록 해주어, 출금이 잦은 유저에게는 빠른 Send tx의 생성과 함께 적절한 network fee를 생성할 수 있게됩니다.

Change split과 마찬가지로 무한히 합쳐져선 안되므로, Wallet 상의 UTXO 개수를 확인하거나 주기적으로 적절하게 실행되면 좋을 것 입니다.


Ref

profile
QA Engineer

0개의 댓글