UTXO là gì? Tách UTXO trong Bitcoin như thế nào?
![Avatar](/_next/image?url=https%3A%2F%2Ffiles.amberblocks.com%2Fuserdata%2Fusr9580exg5m50m04fo1iskezbg3s5nt%2Fprofile-pictures%2Ffk49yv2ifvrm1tgz9wtzk9c0fe8cktvf%2Fava.jpeg&w=3840&q=20)
![utxo là gì](https://files.amberblocks.com/thumbnail/chnbzaa92ook5tnj/posts/psmc4bn3gvx2q2be/f0uhpfflkvz4pladd13kqs6j1uo49vvg/utxo.png)
UTXO là gì?
UTXO (Unspent Transaction Output) là thuật ngữ đại diện cho số tiền còn lại từ một giao dịch trước đó và được tiếp tục sử dụng trong giao dịch tiếp theo. Nó đóng vai trò nền tảng cho mô hình hoạt động của nhiều blockchain, phổ biến nhất là Bitcoin.
Một số blockchain khác cũng sử dụng UTXO, tuy nhiên chúng được tùy chỉnh cho phù hợp với các ưu thế riêng: Sui sử dụng OwnedObject gần như tương tự với UTXO, Cardano sử dụng mô hình UTXO mở rộng - extended UTXO (eUTXO), Fuel sử dụng UTXO được tối ưu hóa với các thành phần bổ sung tùy chỉnh như witness…
UTXO được dịch là “Đầu ra giao dịch chưa chi tiêu” hoặc “Đầu ra giao dịch chưa sử dụng".
![utxo là gì](https://files.amberblocks.com/media/chnbzaa92ook5tnj/posts/psmc4bn3gvx2q2be/fjtxl87sfq80u4y2d425lx06qsw4y6do/tach-utxo.png)
Mô hình hoạt động của UTXO
Để có cái nhìn trực quan và dễ hiểu nhất, dưới đây là ví dụ về cách hoạt động của UTXO với tài khoản ngân hàng và heo đất tiết kiệm:
- Tài khoản ngân hàng: Khi bạn gửi tiền vào ngân hàng, tiền của bạn sẽ bị trộn lẫn với tiền của tất cả các khách hàng khác. Việc rút tiền có thể không trả lại cho bạn chính xác các tờ tiền bạn đã gửi vào.
- Gửi heo đất tiết kiệm: Bạn bỏ tiền vào heo đất, khi rút tiền, bạn sẽ nhận lại chính xác những đồng tiền đã bỏ vào heo đất.
UTXO trong thực tế: Giả sử, Alice gửi 2 BTC từ sàn CEX về ví của mình, sau đó cô ấy gửi 1 BTC lần lượt vào ví A và ví B. Tuy nhiên, số lần giao dịch và giá trị mỗi lần gửi như sau:
- Địa chỉ ví A: Gửi 1 BTC trong 1 lần -> ví A có 1 UTXO
- Địa chỉ ví B: Gửi 2 lần, 1 lần 0.6 BTC và 1 lần 0.4 BTC -> ví B có 2 UTXO
Vậy, đối với mô hình gửi tiền của ngân hàng, heo đất và UTXO, chúng đều tồn tại với mục đích cho phép người dùng sử dụng và giao dịch. Tuy nhiên, cách lưu trữ và trả tiền sẽ khác nhau.
Mô hình tài khoản ngân hàng tương tự với cách tiếp cận của nền tảng Ethereum - account base, thống kê tài sản dựa trên số dư cuối. Còn mô hình heo đất sẽ tương tự như cách UTXO hoạt động.
Cụ thể hơn, trong mô hình UTXO, sẽ có 2 yếu tố chính là INPUT và OUTPUT. Trong đó:
- INPUT đại diện cho giá trị tài sản đang nắm giữ.
- OUTPUT là đoạn mã lệnh máy tính (script) thực hiện logic của giao dịch mà người dùng muốn thực thi.
Một ví dụ cụ thể:
Input:
Previous tx: f5d8ee39a430901c91a5917b9f2dc19d6d1a0e9cea205b009ca73dd04470b9a6
Index: 0
scriptSig: 304502206e21798a42fae0e854281abd38bacd1aeed3ee3738d9e1446618c4571d1090db022100e2ac980643b0b82c0e88ffdfec6b64e3e6ba35e7ba5fdd7d5d6cc8d25c6b241501
Output:
Value: 5000000000
scriptPubKey: OP_DUP OP_HASH160 404371705fa9bd789a2fcd52d2c580b65d35549d
OP_EQUALVERIFY OP_CHECKSIG
![mô hình hoạt động của utxo](https://files.amberblocks.com/media/chnbzaa92ook5tnj/posts/psmc4bn3gvx2q2be/f1spbk0nkfxfz7fesoqlg86qyp5upsem/mo-hinh-hoat-dong-utxo.png)
Cùng xem xét ví dụ trên, dữ liệu sẽ được hiển thị đại diện như sau:
Đối với 2 BTC được Alice chuyển từ sàn về ví:
INPUT(Tx1) = NULL
OUTPUT(Tx1) = Alice receive 2 BTC from CEX
Thao tác 1: Gửi 1 BTC cho ví A
Alice có 2 BTC: INPUT(Tx2) = OUTPUT(Tx1)
Alice gửi 1 BTC đến ví A: OUTPUT(Tx2) = Alice transfer 1 BTC to address A
Alice nhận lại 1 BTC: OUTPUT(Tx2)’= Alice receive 1 BTC back
Thao tác 2: Gửi 0.6 BTC cho ví B
Alice có 1 BTC: INPUT(Tx3)= OUTPUT(Tx2)’
Alice gửi 0.6 BTC đến ví B: OUTPUT(Tx3)= Alice transfer 0.6 BTC to address B
Alice nhận về 0.4 BTC: OUTPUT(Tx3)’= Alice receive 0.4 BTC back
Thao tác 3: Gửi 0.4 BTC cho ví B
Alice có 0.4 BTC: INPUT(Tx4) = OUTPUT(Tx3)’
Alice gửi 0.4 BTC cho ví C: OUTPUT(Tx4) = Alice transfer 0.4 BTC to address B
Có thể thấy, tổng giá trị của mỗi ví A và ví B đều là 1 BTC. Tuy nhiên, cách gửi và số tiền mỗi gửi khác nhau sẽ trả về kết quả hiển thị và cách lưu trữ dữ liệu trên blockchain khác nhau.
Đó cũng chính là cách mà mô hình UTXO hoạt động.
Tách UTXO - split UTXO
Tuy nhiên, không phải lúc nào chúng ta cũng có đủ số dư hoặc có UTXO có trị giá đúng với nhu cầu gửi. Giả sử bạn muốn gửi 0.8 BTC:
Trong trường hợp (1) ví A nắm giữ 1 UTXO trị giá 1 BTC
Trong trường hợp (2) ví B nắm giữ 2 UTXO trị giá lần lượt là 0.6 BTC và 0.4 BTC
Vậy lúc này bạn cần làm như thế nào? Câu trả lời là bạn cần tách UTXO (split UTXO) và thực hiện như sau:
Trường hợp (1) ví A, bạn cần phải đổi 1 UTXO 1 BTC thành 2 UTXO có giá trị lần lượt là 0.8 BTC và 0.2 BTC, sau đó mới gửi UTXO 0.8 BTC đi.
Trường hợp (2) ví B, bạn cần gửi 0.6 BTC hoặc 0.4 BTC trước, sau đó phần còn lại sẽ tiếp tục đổi BTC về giá trị còn thiếu và gửi phần này đi.
Tuy nhiên, đối với mạng Bitcoin có chi phí giao dịch đắt đỏ, việc tách và gửi nhiều giao dịch không phải là giải pháp tối ưu. Điều này tạo ra nhược điểm cho mô hình UTXO.
Để tách UTXO, người dùng có thể tham khảo nền tảng Luminex. Dự án cho phép người dùng chia sats, tạo và tách UTXO một cách dễ dàng.
![chia sats và tách utxo trên luminex](https://files.amberblocks.com/media/chnbzaa92ook5tnj/posts/psmc4bn3gvx2q2be/f9gj6rynfmyoy5eigiopeqozdi5adx6a/split-utxo-luminex.jpeg)
So sánh mô hình UTXO của Bitcoin với blockchain khác
Thay vì UTXO, Ethereum và một số blockchain phổ biến khác sử dụng mô hình account base. Chúng quản lý giá trị tài sản thông qua sổ cái blockchain.
Điều này giúp cho các hệ thống này có thể thực hiện các tác vụ trên hợp đồng thông minh (smart contract) được tối ưu hơn về mặt thực thi và chi phí. Đổi lại, chúng cũng có những nhược điểm riêng như tạo ra lỗ hổng trong bảo mật smart contract, thao túng sổ cái…
![so sánh mô hình utxo và account base](https://files.amberblocks.com/media/chnbzaa92ook5tnj/posts/psmc4bn3gvx2q2be/fwbwdgm8ys6chmugkfjl8q5rf61bfw7s/so-sanh-utxo-account-base.jpeg)
Đó cũng chính là khác biệt lớn nhất tạo ra ưu điểm và nhược điểm riêng cho từng mô hình.
UTXO mô phỏng cách sử dụng tiền với heo đất, trả về phương thức giao dịch và chuyển đổi tài sản an toàn. Tuy nhiên, đánh đổi với phí giao dịch cao và bất tiện khi sử dụng.
Account base mặc dù tiện lợi và nhanh chóng, nhưng đánh đổi với rủi ro bảo mật đi kèm phụ thuộc vào smart contract.
Ưu điểm và nhược điểm của mô hình UTXO
Ưu điểm
- Bảo mật cao: Mô hình UTXO được đánh giá cao về tính bảo mật nhờ vào việc sử dụng chữ ký số và mã hóa trong các giao dịch. Sử dụng UTXO đòi hỏi phải có khóa private key hợp lệ. Khó khăn hơn cho kẻ gian mạo danh hoặc thực hiện các hành vi gian lận so với mô hình sổ cái kế toán truyền thống.
- Khả năng kiểm soát: Người dùng có quyền kiểm soát hoàn toàn đối với UTXO của họ và có thể chọn cách sử dụng chúng. Điều này mang lại sự linh hoạt cao trong việc quản lý tài sản tiền điện tử.
- Tính minh bạch: Tất cả UTXO đều được ghi trên blockchain, cho phép bất kỳ ai kiểm tra số dư và lịch sử giao dịch của họ. Điều này thúc đẩy sự minh bạch và an toàn trong hệ sinh thái tiền điện tử.
Nhược điểm
- Độ phức tạp: Mô hình UTXO có thể khó hiểu hơn đối với người dùng. Việc quản lý nhiều UTXO có thể trở nên rắc rối và đòi hỏi kiến thức kỹ thuật nhất định.
- Kích thước giao dịch: Giao dịch UTXO có thể có kích thước lớn hơn so với giao dịch trong các mô hình khác, dẫn đến phí giao dịch cao hơn. Điều này có thể ảnh hưởng đến hiệu quả sử dụng tiền điện tử cho các khoản thanh toán nhỏ.
- Khả năng sử dụng: Việc sử dụng UTXO có thể đòi hỏi nhiều bước hơn so với các mô hình khác, khiến nó trở nên kém tiện dụng cho người dùng mới.
Mô hình UTXO mang lại nhiều lợi ích về bảo mật, khả năng kiểm soát và tính minh bạch, nhưng cũng đi kèm với một số nhược điểm như độ phức tạp, kích thước giao dịch lớn và khả năng sử dụng hạn chế.
Việc lựa chọn mô hình nào phù hợp phụ thuộc vào nhu cầu và mục đích sử dụng tiền điện tử của mỗi người.