Dekkapok.Engineering

● 2026-10-11

มารู้จักสิ่งที่เรียกว่า UTXO ใน Bitcoin: ทำไมเงินในกระเป๋าถึงไม่เหมือนบัญชีธนาคาร?

#bitcoin #utxo #blockchain #bitcoin-wallet #privacy #transaction-fees

มารู้จักสิ่งที่เรียกว่า UTXO ใน Bitcoin: ทำไมเงินในกระเป๋าถึงไม่เหมือนบัญชีธนาคาร?
FILE: bitcoin-utxo-explained.md
SIZE: 21.6 KB
SHA256: 0xaf3e73b0
CHARS: 10175
WORDS: 956
READ TIME: 26 min

สรุปสั้น: Bitcoin ไม่ได้เก็บยอดเงินในบัญชีแบบธนาคาร แต่ติดตาม UTXO (Unspent Transaction Output) หรือผลลัพธ์ธุรกรรมที่ยังไม่ถูกใช้จ่าย กระเป๋า Bitcoin ของเราอาจมียอด 0.1 BTC จาก UTXO หลายก้อนรวมกัน เมื่อจะโอนเงิน ระบบจะเลือก UTXO มาเป็น Input และสร้าง Output ใหม่ให้ผู้รับ รวมถึงเงินทอนกลับมาหาเรา แนวคิดนี้สำคัญต่อค่าธรรมเนียม ความเป็นส่วนตัว และการใช้งาน Bitcoin อย่างมีประสิทธิภาพ


สารบัญ

  1. UTXO คืออะไร?
  2. เปรียบเทียบ Bitcoin กับบัญชีธนาคาร
  3. การทำธุรกรรม: Input, Output และเงินทอน
  4. UTXO ทำงานอย่างไรในระดับโปรโตคอล
  5. ทำไมจำนวน UTXO จึงกระทบค่าธรรมเนียม?
  6. Coin Selection และ UTXO Consolidation
  7. UTXO กับความเป็นส่วนตัว
  8. ดู UTXO ของตัวเองได้อย่างไร?
  9. ความเข้าใจผิดที่พบบ่อย
  10. บทสรุป
  11. อ้างอิง

UTXO คืออะไร?

UTXO ย่อมาจาก Unspent Transaction Output หมายถึง Output ของธุรกรรม Bitcoin ที่ยังไม่ถูกนำไปใช้จ่ายในธุรกรรมถัดไป

ลองนึกภาพว่าคุณมีกระเป๋าสตางค์ที่ใส่ธนบัตร 100 บาท 200 บาท และ 500 บาท กระเป๋าของคุณมียอดรวม 800 บาท แต่ไม่ได้มีตัวเลข “800” เป็นเงินก้อนเดียว ธนบัตรแต่ละใบยังคงเป็นหน่วยแยกกัน

Bitcoin ก็คล้ายกัน: กระเป๋าอาจแสดงยอด 0.10 BTC แต่เบื้องหลังประกอบด้วย UTXO เช่น

UTXOจำนวน
UTXO A0.050 BTC
UTXO B0.030 BTC
UTXO C0.020 BTC
รวม0.100 BTC

ในเชิงเทคนิค UTXO ไม่ใช่ธนบัตรจริง ๆ แต่เป็นรายการจำนวน satoshi ที่ผูกกับเงื่อนไขการใช้จ่ายใน scriptPubKey ผู้ที่สามารถทำตามเงื่อนไขดังกล่าวได้จึงสามารถใช้ Output นั้นเป็น Input ของธุรกรรมใหม่ได้

1 BTC = 100,000,000 satoshis (sats)

เปรียบเทียบ Bitcoin กับบัญชีธนาคาร

ประเด็นบัญชีธนาคาร (Account Model)Bitcoin (UTXO Model)
วิธีคิดยอดเงินยอดคงเหลือในบัญชีผลรวมของ UTXO ที่กระเป๋าใช้จ่ายได้
การโอนเงินหักยอดบัญชีผู้ส่ง เพิ่มยอดผู้รับใช้ Output เก่า สร้าง Output ใหม่
เงินทอนโดยทั่วไปไม่มีแนวคิดนี้อาจมี Change Output ส่งกลับผู้ส่ง
การตรวจสอบระบบบัญชีของผู้ให้บริการโหนดตรวจสอบธุรกรรมและ UTXO set
ความเป็นส่วนตัวขึ้นกับผู้ให้บริการและระบบธุรกรรมบนเชนเป็นสาธารณะและวิเคราะห์ความเชื่อมโยงได้

ข้อควรระวัง: Address ไม่เท่ากับ UTXO ที่อยู่หนึ่งรายการอาจรับเงินหลายครั้งและมีหลาย UTXO ส่วนกระเป๋าเดียวก็สามารถควบคุมหลาย Address ได้

การทำธุรกรรม: Input, Output และเงินทอน

สมมุติว่าคุณมี UTXO มูลค่า 0.10 BTC ต้องการส่ง 0.04 BTC ให้เพื่อน และจ่ายค่าธรรมเนียม 0.0001 BTC

คุณไม่สามารถ “ตัด” UTXO เดิมให้เหลือ 0.06 BTC ได้โดยตรง แต่ต้อง ใช้ UTXO 0.10 BTC ทั้งก้อน แล้วสร้าง Output ใหม่ดังนี้

  • 0.0400 BTC ไปยังผู้รับ
  • 0.0599 BTC กลับมายังกระเป๋าของคุณเป็นเงินทอน (Change)
  • 0.0001 BTC เป็นค่าธรรมเนียมของธุรกรรม (ส่วนต่างระหว่าง Input และ Output ไม่ใช่ Output ที่ส่งให้ผู้ขุดโดยตรง)
graph TD
    A["UTXO เดิม: 0.1000 BTC"] --> T["ธุรกรรม Bitcoin"]
    T --> B["ผู้รับ: 0.0400 BTC"]
    T --> C["เงินทอน: 0.0599 BTC"]
    T -.-> F["ค่าธรรมเนียม: 0.0001 BTC"]

สมการสำคัญ:

Transaction Fee = Sum(Inputs) - Sum(Outputs)
0.0001 BTC = 0.1000 - (0.0400 + 0.0599)

หลังจากธุรกรรมได้รับการยืนยัน UTXO เดิม 0.10 BTC จะถือว่าถูกใช้จ่ายแล้ว และ Output ใหม่ที่ยังไม่ถูกใช้จ่ายจะกลายเป็น UTXO ใหม่แทน

แล้วถ้ามี UTXO หลายก้อนล่ะ?

สมมุติคุณมี UTXO A = 0.03 BTC และ B = 0.02 BTC แต่ต้องการส่ง 0.04 BTC กระเป๋าอาจเลือกทั้งสองก้อนเป็น Input รวม 0.05 BTC แล้วสร้าง Output สำหรับผู้รับและเงินทอนโดยหักค่าธรรมเนียมออก

graph LR
    A["UTXO A: 0.03 BTC"] --> T["Transaction"]
    B["UTXO B: 0.02 BTC"] --> T
    T --> R["Recipient: 0.04 BTC"]
    T --> C["Change: 0.0099 BTC"]
    T -.-> F["Fee: 0.0001 BTC"]

จำนวนเงินทั้งหมดเป็นตัวอย่างเพื่ออธิบายแนวคิด ไม่ใช่ค่าธรรมเนียมที่แนะนำสำหรับเครือข่ายจริง

UTXO ทำงานอย่างไรในระดับโปรโตคอล

แต่ละ UTXO อ้างอิงได้ด้วย Outpoint ซึ่งประกอบด้วย:

  • txid: รหัสธุรกรรมที่สร้าง Output นั้น
  • vout: หมายเลขลำดับ Output ภายในธุรกรรม เริ่มต้นที่ 0

ตัวอย่างโครงสร้างเชิงแนวคิด:

{
  "txid": "<64-character-transaction-id>",
  "vout": 1,
  "value_sats": 5000000,
  "scriptPubKey": "<locking-script>"
}

Input ของธุรกรรมใหม่จะอ้างอิง txid:vout ที่ต้องการใช้จ่าย และให้ข้อมูลปลดล็อกที่สอดคล้องกับรูปแบบ Script เช่น ลายเซ็นและข้อมูล Witness ตามชนิดของ Output

UTXO Set คือชุดของ Output ที่ยังใช้จ่ายได้ตามสถานะเชนที่โหนดยอมรับ โหนดเต็มรูปแบบใช้ข้อมูลนี้ตรวจสอบว่า Input อ้างอิงเหรียญที่ยังไม่ถูกใช้ และป้องกันการใช้ Output เดิมซ้ำ (double spending) ภายใต้กฎฉันทามติของ Bitcoin

มีข้อยกเว้นสำคัญคือ Coinbase Transaction ที่ผู้ขุดใช้รับรางวัลบล็อก: ไม่ได้ใช้ UTXO ปกติเป็น Input และ Output จาก Coinbase ต้องรอครบเงื่อนไข 100-block maturity ก่อนนำไปใช้จ่ายได้

ทำไมจำนวน UTXO จึงกระทบค่าธรรมเนียม?

ค่าธรรมเนียม Bitcoin ไม่ได้คำนวณเป็นเปอร์เซ็นต์ของจำนวน BTC ที่โอน แต่ขึ้นอยู่กับ ขนาดธุรกรรมในหน่วย virtual bytes (vB) และอัตราค่าธรรมเนียม sats/vB เป็นหลัก

Transaction Fee (sats) ≈ Virtual Size (vB) × Fee Rate (sats/vB)

สมมุติอัตรา 10 sats/vB:

ธุรกรรมสมมุติขนาดค่าธรรมเนียม
1 Input, 2 Outputs140 vB1,400 sats
5 Inputs, 2 Outputs400 vB4,000 sats
20 Inputs, 2 Outputs1,300 vB13,000 sats

ขนาดข้างต้นเป็นตัวเลขสมมุติเพื่อเปรียบเทียบเท่านั้น ขนาดจริงขึ้นอยู่กับชนิด Script, Witness และโครงสร้างธุรกรรม

จึงเป็นเหตุผลว่าทำไมผู้ที่รับ Bitcoin จำนวนเล็กน้อยบ่อยครั้ง เช่น ร้านค้าหรือผู้รับบริจาค อาจสะสม UTXO จำนวนมาก และเสียค่าธรรมเนียมสูงขึ้นเมื่อต้องนำหลายก้อนมารวมใช้จ่าย

Coin Selection และ UTXO Consolidation

Coin Selection คือกระบวนการที่ Wallet เลือก UTXO ใดมาเป็น Input เพื่อจ่ายเงินตามจำนวนที่ต้องการ โดยพิจารณาค่าธรรมเนียม เงินทอน และบางครั้งรวมถึงความเป็นส่วนตัวด้วย

UTXO Consolidation คือการนำ UTXO เล็กหลายก้อนมารวมเป็น UTXO ที่ใหญ่ขึ้น โดยสร้างธุรกรรมส่งเงินกลับไปยัง Output ใหม่ที่ตนเองควบคุม

ตัวอย่าง:

graph LR
    A["10 × 0.001 BTC"] --> T["Consolidation Transaction"]
    T --> B["UTXO ใหม่ 1 ก้อน"]
    T -.-> F["หัก Network Fee"]

ข้อดี: ลดจำนวน Input ที่อาจต้องใช้ในอนาคต ทำให้ธุรกรรมครั้งต่อไปมีโอกาสเล็กลง

ข้อเสีย: ต้องจ่ายค่าธรรมเนียมเพื่อรวมเหรียญ และการรวม UTXO จากแหล่งต่าง ๆ อาจเปิดเผยความเชื่อมโยงระหว่างเหรียญหรือ Address มากขึ้น

การ Consolidate จึงไม่ใช่สิ่งที่ควรทำทุกครั้ง: ควรพิจารณาอัตราค่าธรรมเนียม ณ เวลานั้น ขนาด UTXO และความเป็นส่วนตัวของตนเองก่อน

UTXO กับความเป็นส่วนตัว

ธุรกรรม Bitcoin มีข้อมูล Input และ Output บนบล็อกเชนสาธารณะ นักวิเคราะห์สามารถใช้รูปแบบการใช้จ่ายเพื่อประเมินความเชื่อมโยงระหว่าง Address ได้

ตัวอย่าง: ถ้าธุรกรรมหนึ่งใช้ UTXO จาก Address A และ B พร้อมกัน ผู้สังเกตการณ์อาจตั้งสมมุติฐานว่า Input ทั้งสองอยู่ภายใต้การควบคุมเดียวกัน เรียกว่า Common-Input-Ownership Heuristic แต่ไม่ใช่ข้อพิสูจน์เด็ดขาด โดยเฉพาะในธุรกรรมแบบหลายฝ่าย เช่น CoinJoin

สิ่งที่ควรพิจารณา:

  1. Address Reuse: การใช้ Address เดิมซ้ำทำให้เชื่อมโยงการรับเงินได้ง่ายขึ้น
  2. Change Detection: รูปแบบเงินทอนอาจทำให้นักวิเคราะห์คาดเดาได้ว่า Output ใดกลับไปยังผู้ส่ง
  3. UTXO Labeling: ติดป้ายแหล่งที่มาของ UTXO เพื่อช่วยตัดสินใจว่าจะนำก้อนไหนมาใช้ร่วมกัน
  4. Coin Control: เลือก Input ด้วยตนเองใน Wallet ที่รองรับ แทนการปล่อยให้ระบบเลือกทั้งหมด

ความเป็นส่วนตัวไม่ได้เพิ่มขึ้นโดยอัตโนมัติเมื่อมี UTXO มากขึ้น สิ่งสำคัญคือวิธีเลือกใช้และการไม่เชื่อมโยงเหรียญจากบริบทที่ไม่ต้องการเปิดเผยร่วมกัน

ดู UTXO ของตัวเองได้อย่างไร?

สำหรับผู้ใช้งานทั่วไป Wallet ที่รองรับ Coin Control หรือรายการ Coins/UTXOs สามารถแสดง UTXO แต่ละก้อน จำนวนเงิน และสถานะการยืนยันได้ เช่น Sparrow Wallet หรือฟีเจอร์ Coin Control ใน Wallet อื่น ๆ

หากคุณรัน Bitcoin Core และเปิดใช้งาน Wallet สามารถดูรายการ UTXO ที่ Wallet รู้จักได้ด้วยคำสั่ง:

bitcoin-cli listunspent

ตัวอย่างผลลัพธ์แบบย่อ (ข้อมูลสมมุติ):

[
  {
    "txid": "<transaction-id>",
    "vout": 0,
    "amount": 0.025,
    "confirmations": 12,
    "spendable": true
  }
]

คำสั่งนี้แสดง UTXO ของ Wallet ที่เลือก ไม่ใช่ UTXO ทุกก้อนบนเครือข่ายทั้งหมด และไม่ควรนำ Seed Phrase หรือ Private Key ไปกรอกใน Block Explorer เพื่อดูยอดเงิน

ความเข้าใจผิดที่พบบ่อย

ความเข้าใจผิดข้อเท็จจริง
“มี 0.1 BTC แปลว่ามี UTXO ก้อนเดียว”ยอดอาจรวมจาก UTXO หลายก้อน
“ใช้ UTXO แค่บางส่วนได้โดยไม่สร้าง Output ใหม่”UTXO เดิมถูกใช้ทั้งก้อน และสร้าง Output ใหม่ตามต้องการ
“เงินทอนเป็นค่าธรรมเนียม”เงินทอนเป็น Output ใหม่ที่กลับไปยังผู้ส่ง ส่วนค่าธรรมเนียมคือ Input ลบ Output
“ค่าธรรมเนียมขึ้นกับมูลค่า BTC ที่ส่ง”ขึ้นกับขนาดธุรกรรมและ fee rate เป็นหลัก
“UTXO จำนวนมากปลอดภัยหรือเป็นส่วนตัวกว่าเสมอ”อาจเพิ่มต้นทุนการใช้จ่าย และการรวมเหรียญอาจลดความเป็นส่วนตัว
“Address หนึ่งอันเท่ากับ UTXO หนึ่งก้อน”Address หนึ่งอันอาจได้รับหลาย UTXO

บทสรุป

ถ้าจำได้เพียงเรื่องเดียว ขอให้จำว่า Bitcoin ไม่ได้โอนยอดคงเหลือจากบัญชี A ไปบัญชี B แต่ใช้ Output เก่าที่มีอยู่เป็น Input และสร้าง Output ใหม่

การเข้าใจ UTXO จะทำให้คุณอ่านธุรกรรมบน Block Explorer ได้ดีขึ้น เข้าใจว่าทำไมมี Change Address ทำไมบางครั้งค่าธรรมเนียมสูงทั้งที่ส่ง BTC ไม่มาก และทำไม Coin Control จึงสำคัญสำหรับผู้ใช้ที่ต้องการบริหารค่าธรรมเนียมและความเป็นส่วนตัว

หากคุณใช้ Bitcoin ระยะยาว โดยเฉพาะกับ Hardware Wallet การรู้ว่าแต่ละ UTXO มาจากไหนและควรใช้ร่วมกันหรือไม่ ถือเป็นทักษะพื้นฐานที่มีประโยชน์มาก


อ้างอิง

  1. Bitcoin Developer Guide — Transactions
  2. Bitcoin Developer Guide — Block Chain
  3. Bitcoin Developer Reference — Transactions
  4. Bitcoin Developer Examples — Transaction Tutorial
  5. Andreas M. Antonopoulos & David A. Harding — Mastering Bitcoin: Programming the Open Blockchain (3rd Edition)
  6. Bitcoin Core Documentation — Coin / UTXO entry

บทความนี้จัดทำเพื่อการศึกษาเทคโนโลยี Bitcoin และการบริหารธุรกรรม ไม่ใช่คำแนะนำด้านการลงทุนหรือการเงิน

SYSTEM LOG: TERMINAL CURL ACCESS ONLINE

Retrieve the raw markdown file or structured JSON of this post directly in your command line:

curl -sL https://dekkapok.engineering/blogs/bitcoin-utxo-explained.txt
curl -sL https://dekkapok.engineering/blogs/bitcoin-utxo-explained.json

← blogs ทั้งหมด