66-1
Siraphop N.

Siraphop N.

UTXO ทำงานอย่างไร?

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

เมื่อวานมีสมาชิกท่านหนึ่งในดิสคอร์ด Local Bitcoin Thailand ถามคำถามในทำนองว่า…

ทำไมโอนบิตคอยน์ต้องมีเงินทอน ทำไมไม่โอนให้พอดีไปเลย

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

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


 

(1)

Photo by Kelly Sikkema on Unsplash

จินตนาการถึงห้องโล่งๆ ห้องหนึ่ง ห้องนี้มีขนาดใหญ่มาก มีกำแพงล้อมทุกด้าน และที่บนกำแพงมีกระดาษคูปองแปะอยู่เต็มไปหมด (อันที่จริงในภาพประกอบคือกระดาษโพสต์อิท แต่ผมจะขอเรียกสิ่งนี้ว่าคูปองละกัน)

— คูปองแต่ละใบ คือ 1 UTXO ในระบบของบิตคอยน์ —

บนคูปองมีข้อมูลสำคัญอยู่ 2 บรรทัด คือ

1.รหัสล็อคคูปอง
2.มูลค่าของคูปอง

ประโยชน์ของคูปองมีแค่อย่างเดียว คือ ถ้าคุณทำตามเงื่อนไขบนรหัสล็อคคูปองได้ คุณจะมีสิทธิ์ฉีกมัน และเมื่อฉีกมันแล้ว คุณจะมีสิทธิ์เขียนคูปองใหม่ได้ — โดยที่ในหนึ่งครั้ง คุณจะฉีกคูปองพร้อมกันกี่ใบก็ได้ และเขียนคูปองใหม่เพิ่มกี่ใบก็ได้ แต่มูลค่ารวมของคูปองที่คุณเขียนใหม่จะต้องไม่มากกว่ามูลค่ารวมของคูปองที่คุณฉีกไป

[รหัสล็อคคูปองในที่นี้คือ Bitcoin Address ถ้าอยากรู้รายละเอียดเพิ่ม ผมเคยเขียนไว้แล้ว ที่นี่ ]


 

(2)

Photo by Kelly Sikkema on Unsplash

สมมุติ ผมเป็นลูกค้าของกระดานเทรด FTX (อันที่จริงไม่ต้องสมมุติก็ได้) ผมมีบิตคอยน์อยู่ในบัญชี FTX 1 BTC (อันนี้สมมุติจริงๆ) แล้วผมอยากถอนออกมาเข้า hardware wallet

ผมก็เดินไปบอกนายแซมเพื่อนผมว่า…

“แซมๆ เราถอนบิตคอยน์จาก exchange ของนายหน่อย เอาบิตคอยน์นึง”

แซมก็จะหันขวับมาแล้วบอกว่า “เอา address มาสิ” แล้วผมก็ยื่นกระดาษใบหนึ่งที่เขียน Bitcoin address ของผมที่คัดลอกมาจาก hardware wallet ให้เขาไป

ทีนี้ แซมก็เดินเข้าไปในห้องที่เต็มไปด้วยคูปอง แล้วไปเด็ดคูปองใบนึงมาจากผนัง สมมุติว่าคูปองใบนี้มีมูลค่า 1,000 BTC แล้วแซมก็จัดแจงสำแดงหลักฐานว่าเขามี private key ที่เป็นคู่ของรหัสล็อคที่เขียนอยู่บนคูปองใบนั้น เพื่อให้เขามีสิทธิ์ฉีกคูปองใบนั้นได้

แล้วแซมก็ฉีกคูปองมูลค่า 1000 BTC นั้นทิ้ง

ทีนี้เขาก็เขียนคูปองใหม่ใบหนึ่งสำหรับผม ก็คือเขียนมูลค่าคูปอง 1 BTC แล้วในช่องรหัสล็อคคูปองแซมก็ลอกรหัสจากกระดาษที่ผมยื่นให้เมื่อสักครู่นี้ใส่ลงไป

แต่เนื่องจากเขายังเหลือสิทธิ์เขียนคูปองได้อีก 999 BTC ถ้าเขาไม่ทำอะไรอีก 999 BTC ที่เหลือนั้นก็จะหายไป ดังนั้น แซมจึงเขียนคูปองอีกใบให้ตัวเอง โดยเอารหัสของตัวเองล็อคคูปองใบนั้นไว้ แล้วก็ใส่มูลค่าคูปองเป็น 999 BTC

(ซึ่งในความเป็นจริงแล้ว มูลค่าของคูปองที่แซมเขียนทอนให้ตัวเองควรจะเป็น 998.9999xxxx BTC ส่วนต่างเล็กน้อยที่หายไปคือค่า fee สำหรับจ่ายให้นักขุดบิตคอยน์เพื่อให้พวกเขายืนยันธุรกรรมนี้ แต่อย่าเพิ่งพูดถึงเรื่องนี้ในตอนนี้จะดีกว่า)

แล้วเมื่อแซมแปะคูปองใหม่ทั้งสองใบขึ้นผนังไปแล้ว การโอนบิตคอยน์ก็เสร็จสิ้น อีกชั่วโมงหนึ่งอาจจะมีลูกค้าอีกคนมาขอถอนบิตคอยน์กับแซมอีก แล้วแซมก็อาจจะฉีกคูปอง 999 BTC ที่เพิ่งเขียนไปเมื่อกี้เพื่อโอนบิตคอยน์ให้ลูกค้าอีกคนนั้น… นั่นเป็นเรื่องของแซม

แต่สำหรับผม รู้ว่าคูปอง 1 BTC ที่แซมแปะไว้บนผนังเป็นของผม เพราะผมมีรหัสที่สามารถให้สิทธิ์ผมในการฉีกมันได้ นั่นคือในวันใดวันหนึ่งข้างหน้า ผมสามารถเข้ามาที่ห้องนี้พร้อมกับ hardware wallet ของผมเพื่อใช้งานคูปองใบนั้นเมื่อไรก็ได้


 

ข้อสังเกต

– คูปองเหล่านี้ไม่มีชื่อเขียนกำกับไว้เลยว่าใบไหนเป็นของใคร ขอแค่ทำตามเงื่อนไขในคูปองได้ ก็สามารถใช้งานมันได้ ใครๆ ก็สามารถเห็นคูปอง 1 BTC ของผมบนผนังได้ แต่ไม่มีใครรู้ว่าผมมีรหัสของคูปองนั้นนอกจากผม (แซมรู้ว่าผมเป็นคนที่สั่งถอนและทำให้เกิดคูปองใบนั้นขึ้นมา แต่เค้าไม่รู้อย่างแน่ชัดว่าผมเอา address ของใครมาให้เค้า อาจจะเป็น address ของแฟนผมก็ได้)

– เพราะอย่างนั้น ใครที่ขโมย private key ของผมไป ก็สามารถเดินไปฉีกคูปองบนผนังได้ เพราะได้ทำตามเงื่อนไขถูกต้อง หรือตัวผมเองหากทำ private key หายก็จะไม่สามารถใช้งานคูปองใบนั้นได้อีกเลย — อันที่จริงคูปอง “ไม่ได้เป็นของผม” แต่การมี private key ทำให้ผม “มีสิทธิ์ที่จะใช้งานมันได้”

– คุณไม่สามารถฉีกใช้คูปองทีละนิดได้ ในทำนองเดียวกันกับที่คุณไม่สามารถฉีก 1 ใน 4 ส่วนของธนบัตร 20 บาทจ่ายให้ร้านสะดวกซื้อแทนเหรียญ 5 บาทได้ — คูปอง 1 ใบ ต้องใช้ให้หมดในทีเดียว ถ้าใช้ไม่หมด วิธีแก้คือเขียนคูปองทอนให้ตัวเอง

– แซมฉีกคูปอง 1 ใบ มีสิทธิ์เขียนคูปอง 1000 BTC แต่ถ้าผมฉีกคูปอง 10 ใบ ใบละ 1 BTC ผมได้สิทธิ์เขียนคูปองแค่ 10 BTC เมื่อเปรียบเทียบกันแล้วแม้ว่ามูลค่าธุรกรรมของแซมจะสูงกว่าผมถึง 100 เท่า แต่กลับเป็นผมที่ยุ่งวุ่นวายกับคูปองจำนวนมากกว่า — สำหรับระบบของบิตคอยน์แล้วการกระทำของผมสิ้นเปลืองพื้นที่บันทึกข้อมูลในบล็อกมากกว่าแซม ดังนั้นผมจึงต้องจ่ายค่าธรรมเนียมแพงกว่าแซมสำหรับการทำธุรกรรมนี้


 

Disclaimer

ตัวอย่างเปรียบเทียบนี้ถูกตัดทอนให้ง่ายขึ้นเพื่อเน้นทำความเข้าใจเฉพาะเรื่องของ UTXO เท่านั้น หากจะสร้างตัวอย่างเพื่อการเปรียบเทียบสำหรับทุกกลไกที่เกี่ยวข้องเราอาจจะต้องมีเจ้าหน้าที่ประจำห้อง (node) มีแบบฟอร์มสำหรับยื่นให้เจ้าหน้าที่ (transaction) มีกล่องใส่แบบฟอร์มรอดำเนินการ (mempool) แล้วก็มีอะไรอีกสารพัด… พอก่อน เดี๋ยวบทความนี้มันจะยาวเกินไป


บทความนี้เผยแพร่ครั้งแรกเมื่อวันที่ 1 กันยายน 2022 ทางกลุ่มเฟซบุ๊ค Siamese Bitcoiner
ปรับปรุงแก้ไขครั้งที่ 1 วันที่ 4 พฤศจิกายน 2022 สำหรับเผยแพร่ทางเว็บไซต์ rightshift.to

Siraphop N.

** ทุกบาทหรือทุกซาโตชิที่ donate จะถูกส่งเข้ากระเป๋าของผู้เขียนโดยตรงครับ :) **

Share this post

2 Comments

  1. เอาเรื่องเข้าใจยากมาอธิบายให้เห็นภาพแบบนี้ได้ เก่งมาก ๆ เลยครับ คารวะ

  2. ตอนนี้นายยังเป็นเพื่อนกับแซมอยู่มั้ยครับ อิอิ

Leave a Reply

Connect with

Your email address will not be published. Required fields are marked *


Related Posts

Privacy & Security
Siraphop N.

Self-custody Checklist

คิดว่าซื้อ Metal Seed Backup แพง ๆ มาใช้แล้ววอลเล็ทจะอยู่ยงคงกระพันงั้นหรือ? อย่าเพิ่งมั่นใจไป มาลองเช็กจุดอ่อนของวิธีการเก็บรักษา Seed ที่คุณใช้อยู่ดูสักหน่อยไหม?

Read More »
Lightning Network
Siraphop N.

Lightning Network (ฉบับผู้ใช้งาน)

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

Read More »
Bitcoin
Siraphop N.

Bitcoin, The Matrix and The Rabbit Hole

ยาส้ม? หลุมกระต่าย? คำเหล่านี้มีความหมายแฝงอย่างไร และทำไมชาวบิตคอยน์จึงควรไปหาภาพยนตร์เรื่อง The Matrix มาดูสักครั้งในชีวิต

Read More »
Opinion
Siraphop N.

เลิกเถียงกันได้แล้วว่าบิตคอยน์เป็นเงินหรือเปล่า!

การมัวเถียงกันว่าบิตคอยน์เป็นเงินหรือไม่คือสิ่งที่ไร้สาระและสิ้นเปลืองเวลาที่สุดอย่างหนึ่ง และนี่คือเหตุผลว่าทำไม

Read More »