วิธีสร้าง Bitcoin Transaction ด้วยมือเปล่า

Bitcoin Transaction คืออะไร? วิธีสร้างด้วยมือเปล่าใน 8 ขั้นตอน

เคยสงสัยไหมว่า ตอนที่เรากด Send Bitcoin ใน Wallet จริง ๆ แล้วเบื้องหลังมันกำลังทำอะไรอยู่?

ถ้าวันหนึ่งไม่มี Wallet ให้ใช้
ไม่มีปุ่ม Send ให้กด
ไม่มีหน้าจอสวย ๆ มาคอยจัดการทุกอย่างให้เรา…

เรายังสามารถสร้าง Bitcoin Transaction ขึ้นมาเองได้ไหม?

คำตอบคือ ได้

บทความนี้เราจะลองถอด Wallet ออกทีละชั้น แล้วสร้าง Bitcoin Transaction “ด้วยมือเปล่า” ตั้งแต่การเลือก Tools ที่เราจะใช้, กำหนดว่าจะส่งมันไปที่ไหน, สร้าง Transaction ขึ้นมา ไปจนถึงการเซ็น Transaction ก่อนส่งออกไปยัง Bitcoin Network

เป้าหมายไม่ใช่การทรมานตัวเองด้วยการทำสิ่งที่ Wallet ทำให้เราได้ภายในไม่กี่วินาที 😆

แต่คือการเปิดฝากระโปรงดูว่า Bitcoin ทำงานอย่างไรจริง ๆ

เพราะเมื่อคุณสร้าง Transaction เองได้สักครั้ง คำว่า UTXO, Input, Output, Fee, Signature, Private Key และ Broadcast จะไม่ใช่ศัพท์ลึกลับอีกต่อไป

และที่สำคัญ คุณจะเริ่มเข้าใจประโยคหนึ่งที่คน Bitcoin ชอบพูดกันว่า

“Don’t trust. Verify.”

เอาล่ะ…

เก็บ Wallet ของคุณไว้ก่อน

วันนี้เราจะลองสร้าง Bitcoin Transaction ด้วยมือของเราเอง


จริงๆแล้ว Transaction ของ Bitcoin โดยเนื้อแท้แล้วมันมีเพียง 2 ฟาก

1.ก็คือฝั่งของ Input

2.ก็คือฝั่งของ Output

จากนั้นผมจะพาทุกคนไปดูทีละข้าง

สิ่งที่ต้องไปเป็น Input ก็คือ

1.TxID อันที่จะใช้งาน (ใส่เป็น Little Endian นะ)
2.Script Pubkey ของ TxID นั้นๆ (ไป Copy ใน Mempool.space มาได้เลย)

สิ่งที่จำเป็นสำหรับ Output ก็คือ

1.จำนวนที่ต้องการโอน (ใส่เป็น Hex แล้วเติมศูนย์ข้างหน้าให้เต็ม 64 bits หรือ 8 Bytes แล้วก็ทำการ Little Endian ก่อนที่จะนำไปใส่)
2.ใส่ Address ที่ไม่ติด Encode Base 58 (ให้ลบ Prefix 1 byte แรกทิ้งไป แล้วก็ลบ Checksum 4 byte หลังทิ้งไปด้วย)

หลังจากนั้นก็เอามาใส่ที่ Template นี้ได้เลย


ด้านบนนั้นเป็นภาพ Bitcoin Transaction Template แต่ถ้าหากคุณอยาก Copy แล้ว Paste คุณสามารถทำได้โดยการ Copy ตัวอักษรที่อยู่ด้านล่างนี้ (มันอาจจะดูแตกๆหน่อยนะ หากคุณเปิดด้วยมือถือ) หากคุณต้องการที่จะศึกษาอย่าง Deep Deep จาก Bitcoin Developer Wiki ก็สามารถมาตำได้ ที่นี่ เลยนะครับ

01000000 ......................................... Version

01 ............................................... Number of inputs
|
| 7b1eabe0209b1fe794124575ef807057
| c77ada2138ae4fa8d6c4de0398a14f3f ............... Outpoint TXID
| 00000000 ....................................... Outpoint index number
|
| xx ............................................. Bytes in sig script: xx
| | xxxxxxxxxx ................................... Script Pubkey

ffffffff ......................................... Sequence number

01 ............................................... Number of outputs
| f0ca052a01000000 ............................... Satoshi
|
| 17 ............................................. Bytes in pubkey script
| | a9 ........................................... OP_HASH160
| | 14 ........................................... Push 20 bytes as data
| | | cbc20a7664f2f69e5355aa427045bc15e7c6c772 ... PubKey hash
| | 87 ........................................... OP_EQUAL

00000000 ......................................... locktime: 0

จากนั้นก็ให้ลบขยะทิ้งทั้งหมดแล้วก็ทำเป็น Serialize ให้ติดกันเป็นสายยาว จากนั้นก็เอาไป Sign ด้วย Private Key ที่นี่ได้เลย

https://nubits.com/cointoolkit

เมื่อเราตรวจสอบ Raw Transaction ของเราแล้วและหลังจากนี้ก็เอาไปประกาศใน Server ของ Bitcoin ได้เลย

https://mempool.space/tx/push

นี่คือเครื่องมือที่ใช้ในการช่วยสร้าง Transaction

1.Web สำหรับ Encode ต่างๆ
https://privatekeys.pw/calc

2.Web สำหรับการสร้าง Sign Transaction
https://nubits.com/cointoolkit/
https://coinb.in/

3.Web สำหรับสร้าง Private Key
https://www.walletgenerator.net

4.Web สำหรับจัดเรียง Big Endian ไปสู่ Little Endian
https://blockchain-academy.hs-mittweida.de/litte-big-endian-converter/

5.Web สำหรับนับ Byte (ต้องนำยอดมาหาร 2 ด้วยนะ)
https://mothereff.in/byte-counter

6.Web สำหรับ Bitcoin Developer ไว้ดูตัวอย่าง Transaction
https://developer.bitcoin.org/reference/transactions.html

7.Web สำหรับดู Script
https://en.bitcoin.it/wiki/Script


ถ้าอยากอ่านแบบละเอียดๆ มาตรงนี้ได้เลย

Bitcoin Wallet กำลังซ่อนอะไรจากเรา?

Hardware Wallet นั้นทำให้การรับส่ง Bitcoin ดูง่ายดายมากๆ

ใส่ Address → ใส่จำนวน → กด Send

แต่เบื้องหลังปุ่ม Send นั้น มีหลายๆอย่างเกิดขึ้น อาทิเช่น

อันดับแรกเลยก็คือ เราต้องมี Bitcoin ที่สามารถนำมาใช้ได้

อันดับที่ 2 ก็คือเราต้องบอกว่า Bitcoin เหล่านั้นมาจาก Transaction ไหน ? เนื่องจากระบบของ Bitcoin นั้นมัน Refer Transaction ต่อๆกันไป

อันดับที่ 3 คือเราต้องระบุเจ้าของคนใหม่ว่าใครจะเป็นเจ้าของ Bitcoin อันนี้ต่อไป

อันดับที่ 4 คือเราต้องคำนวณเงินทอน

อันดับที่ 5 คือเราต้องกำหนด Transaction Fee ให้กับคนที่ทำเหมืองขุด Bitcoin หรือสิ่งที่เราเรียกว่า Miner

และสุดท้าย…

เราต้องพิสูจน์ว่า เรามีสิทธิใช้ Bitcoin ก้อนนี้จริงๆใช่หรือไม่ ?

ด้วย Private Key ของเรา

Bitcoin ไม่ได้เก็บ “ยอดเงินในบัญชี” แบบที่ธนาคารพาณิชย์ทำ สิ่งที่ Bitcoin Wallet ทำนั้นเป็นเพียงการแสดง balance ของคุณที่เกิดจากการนั่งนับ UTXO ที่สามารถใช้เป็น input ของ transaction ใหม่ได้


วันนี้เราจะขว้าง Bitcoin Wallet ทิ้งไป

เป้าหมายของบทความนี้ไม่ใช่การหาวิธีส่ง Bitcoin ที่ง่ายที่สุด

เพราะถ้าเป้าหมายคือความง่าย…

เปิด Bitcoin Wallet แล้วกด Send ง่ายกว่าเยอะ 😂

เป้าหมายของเราคือการเปิดฝากระโปรงของระบบ Bitcoin

แล้วดูว่าเครื่องยนต์ข้างในทำงานอย่างไร ?

เราจะสร้าง Transaction ตั้งแต่ :

UTXO → Input → Output → Fee → Raw Transaction → Signature → Broadcast

ทันทีที่คุณอ่านบทความนี้จบลง คำเหล่านี้จะไม่ใช่ศัพท์ลึกลับอีกต่อไป เริ่ม!!!


1. ก่อนสร้าง Transaction เราต้องเข้าใจ UTXO

ระบบ Bitcoin ไม่มีสมุดบัญชีที่เขียนว่า

Martin : 0.005 BTC

มันไม่เหมือนกับระบบบัญชีธนาคารที่คุณคุ้นเคย

มันแตกต่าง

Bitcoin มองสิ่งที่ยังใช้ได้ในรูปของ Unspent Transaction Outputs — UTXOs

Transaction ใหม่จะอ้างอิง output จาก transaction ก่อนหน้า และจะนำมันมาเป็น input ให้กับ transaction ถัดไป

ส่วน output ใหม่ที่ยังไม่ถูกใช้ก็จะกลายเป็น UTXO ที่สามารถถูกใช้ต่อไปในอนาคต

นี่คือจุดแรกที่ Mental Model ของ Bitcoin เริ่มแตกต่างจากธนาคาร

[→ อ่านต่อ: UTXO คืออะไร?]


2. ภาค Input — Bitcoin ของเรามาจากไหน?

ถ้าเราจะใช้ Bitcoin เราต้องระบุว่า

“ผมกำลังจะใช้ Bitcoin ก้อนไหน ?”

ซึ่งระบบของ Bitcoin นั้นมันจะแบ่งออกเป็นก้อนๆ 

ไม่ได้รวมยอดเหมือน Book Bank ของธนาคารพานิชย์

Input จึงอ้างอิงไปยัง Output เก่าด้วย Transaction ID

พูดง่าย ๆ คือ :

Input = สิ่งที่เรากำลังนำมาใช้


3. ภาค Output — Bitcoin จะไปอยู่กับใคร?

ต่อมาเราต้องกำหนดว่า Bitcoin ที่กำลังใช้นั้นมันจะเดินทางไปที่ไหน ?

นี่คือ Output

สมมุติเรามี UTXO ก้อนแรกซึ่งเป็นจำนวน:

100,000 sats

แล้วต้องการจ่ายให้ Bob เป็นจำนวน:

70,000 sats

เราอาจสร้าง :

Output #1 → Bob: 70,000 sats

แต่เดี๋ยวก่อน…

แล้วอีก 30,000 sats หายไปไหน?


4. ภาคเงินทอน — Bitcoin ไม่มีการ “ตัดบางส่วน” จาก UTXO

UTXO ที่ถูกใช้จะถูกใช้ทั้งก้อน เหมือนกับเวลาที่เราเอาแคชเชียร์เช็ค (Cashier’s Cheque) ไปขึ้นเงินกับธนาคาร คือมันต้องไปทั้งดุ้น ไม่มีการดึงยอดไปแบบครึ่งๆกลางๆ

ดังนั้นถ้ามูลค่าของ Input จะต้องมากกว่าจำนวนที่เราต้องการส่งจริง เรามักสร้าง Output อีกตัวเพื่อส่งส่วนที่เหลือ วกวนกลับมาให้ตัวเอง

นี่เรียกว่า

Change Output

ตัวอย่างเช่น :

Input : 100,000 sats

Bob : 70,000 sats
Change : 29,500 sats
ค่า Mining Fee ของเหมืองขุด : 500 sats

เพราะค่าธรรมเนียมของ transaction คือส่วนต่างระหว่างมูลค่ารวมของ inputs และ outputs

ตอนนี้ Transaction ของเราเริ่มเป็นรูปเป็นร่างแล้ว


5. แต่ใครก็สร้าง Transaction แบบนี้ได้ไม่ใช่เหรอ?

นี่คือคำถามสำคัญ

ใครก็สามารถเขียนข้อมูลว่า

เอา Bitcoin ก้อนนี้ไปส่งให้ Bob

ได้

แล้ว Bitcoin Network รู้ได้อย่างไรว่า คนที่สร้าง Transaction มีสิทธิใช้ UTXO นั้นจริง ?

ตรงนี้เองที่เราจะเจอกับ…

Private Key และ Digital Signature

เราจะใช้ Private Key เพื่อสร้างหลักฐานทาง cryptography สำหรับการ authorize การใช้ Bitcoin โดยที่เครื่อง node server สามารถตรวจสอบเงื่อนไขของ input กับ output เดิมได้โดยไม่จำเป็นต้องรู้ Private Key ของเรา

นี่คือจุดที่ Bitcoin เริ่มน่าสนใจมาก

เพราะเราไม่ได้ส่ง Password สำหรับการโอน Bitcoin ให้ Network Node Server

เราไม่ได้โทรหาธนาคารพานิชย์

เราไม่ได้ขออนุญาตบริษัท Bitcoin Inc.

เราแค่ต้องแสดง หลักฐานทางคณิตศาสตร์ ก็เท่านั้น!!!

หากต้องการศึกษารายละเอียดในระดับ Protocol เพิ่มเติม หรืออยากทราบวิธีการทำงานของ Node Server สามารถอ่านได้จาก Bitcoin Core Documentation


6. จากข้อมูลทั้งหมดจึงนำไปสู่ → Raw Bitcoin Transaction

ตอนนี้เรามีส่วนประกอบต่าง ๆ แล้ว

เราจะนำมันมาประกอบกันเป็น Bitcoin Transaction จริง

คุณจะเริ่มเห็นข้อมูลที่หน้าตาประมาณ:

0200000001...

ตัวอักษรเลขฐาน 16 หรือ Hex ยาว ๆ ที่ดูเหมือนไม่มีความหมาย

แต่หลังจากบทความนี้…

คุณจะสามารถมองข้อมูลก้อนนั้นแล้วเริ่มแยกออกว่า

ตรงไหนคือ Version Number ?

ตรงไหนคือ Input ?

ตรงไหนคือ Output ?

ตรงไหนคือ Amount หรือจำนวนที่ต้องการจะโอน ?

ตรงไหนคือ Script ?

และ Transaction กำลังพยายามทำอะไร ?


7. ขั้นตอนการ Sign Transaction

จากนั้นเราจะทำสิ่งสำคัญที่สุดอย่างหนึ่ง

ขั้นตอนการ Sign

การทำ Signer คือการใช้ key ที่เกี่ยวข้องเพื่อสร้าง signature สำหรับ input ที่เจ้าของคนนั้นมีสิทธิใช้ยอดเงินนั้นๆ และ Bitcoin สามารถตรวจสอบ authorization นั้นตามกฎของ transaction/script ได้

นี่คือเหตุผลที่ Private Key สำคัญมาก

เพราะ Bitcoin ไม่ได้ถามว่า

“คุณชื่ออะไร?”

Bitcoin ถามว่า

“คุณสามารถสร้างหลักฐานที่ตรงกับเงื่อนไขในการใช้ Bitcoin ก้อนนี้ได้หรือไม่ ?” มันก็แค่นั้นเอง


8. ขั้นตอนการ Broadcast

เมื่อ Transaction พร้อมแล้ว…

เราจะส่งข้อมูล Transaction ออกไปยัง Bitcoin Network Node Server

Node Server ที่ได้รับ transaction แล้วก็จะสามารถตรวจสอบข้อมูลตามกฎของ Bitcoin ก่อนที่จะส่งต่อ และ transaction ที่ valid ก็สามารถเข้าสู่กระบวนการนั่งรอ เพื่อให้ Transaction นั้นๆถูกนำไปใส่ใน block chain โดยมี Miner หรือเหมืองขุด Bitcoin เป็นคนทำสิ่งนี้

และตรงนี้เองที่สิ่งที่เราเขียนขึ้นมาด้วยมือ…

ก็จะกลายเป็น Bitcoin Transaction จริงๆ !!!

แต่ทั้งหมดที่ผมพูดมานั้นเป็นเรื่องราวของ Bitcoin Onchain Layer 1 เท่านั้นนะครับ เพราะถ้าหากว่าเราพูดถึง Bitcoin Lightning Network ที่เป็น Layer 2 นั้น จะมีการทำงานของ Transaction และการ Boardcast อีกรูปแบบนึง


แล้วเราทำทั้งหมดนี้ไปทำไม?

คุณอาจถามว่า

ในเมื่อเรามี Bitcoin Wallet ทำทั้งหมดนี้ให้เราได้ภายในไม่กี่วินาที แล้วเราจะมานั่งสร้าง Transaction เองทำไม ?

เพราะหลังจากทำมันเองสักครั้งนึงเท่านั้นแหละ

แล้วคำว่า

“Bitcoin is permissionless”

จะมีความหมายไม่เหมือนเดิมอีกต่อไป !!!

คุณไม่ได้เชื่อเพราะ Influencer บอก

คุณไม่ได้เชื่อเพราะ Exchange โฆษณา

และคุณไม่ได้เชื่อเพราะ DJ Tar บอก

คุณเห็นด้วยตาตัวเองว่า Protocol ทำงานอย่างไร !!!

นี่อาจเป็นหนึ่งในบทเรียนที่สำคัญที่สุดของ Bitcoin:

Don’t trust. Verify.

Bitcoin ไม่ได้ขอให้คุณเชื่อมัน

มันเปิดเผยกฎเกณฑ์ทั้งหมดไว้ให้คุณตรวจสอบแล้ว

และวันนี้…

เราจะเริ่มตรวจสอบมันด้วยมือของเราเอง ^_^

⚠️ คำเตือน: ห้ามนำ Private Key หรือ Seed Phrase ที่ใช้กับ Bitcoin จริง (Mainnet) ไปกรอกในเว็บไซต์ใด ๆ เด็ดขาด ตัวอย่างในบทความนี้ควรทดลองด้วย Testnet, Regtest หรือ Private Key แบบทดสอบที่ไม่มีเงินจริงเท่านั้น


คำถามที่พบบ่อยเกี่ยวกับ Bitcoin Transaction

Bitcoin Transaction คืออะไร ?

Bitcoin Transaction คือข้อมูลที่ระบุการใช้ UTXO เดิมเป็น Input และสร้าง Output ใหม่ โดยทุกอย่างต้องเป็นไปตามเงื่อนไขของ Bitcoin Protocol

UTXO คืออะไร?

UTXO ย่อมาจาก Unspent Transaction Output คือ Output ที่มาจาก Transaction ก่อนหน้าที่ยังไม่ถูกใช้งาน และสามารถนำมาเป็น Input ของ Transaction ใหม่ได้อย่างง่ายดาย

สามารถสร้าง Bitcoin Transaction โดยไม่ใช้ Wallet ได้หรือไม่ ?

แน่นอนว่า ได้!!! เพราะ Bitcoin Wallet นั้นเป็นแค่เครื่องมือที่ช่วยสร้างและจัดการ Transaction ให้สะดวกขึ้นก็เท่านั้น แต่ตัว Bitcoin Protocol ไม่ได้กำหนดว่าคุณต้องใช้ Wallet GUI เพื่อสร้าง Transaction

ค่าธรรมเนียมหรือ Bitcoin Transaction Fee นั้นไปไหน?

Transaction Fee เป็นส่วนต่างระหว่างมูลค่ารวมของ Input และ Output และเป็นค่าธรรมเนียมที่ทุกๆ transaction จะต้องจ่ายให้ miner หรือคนทำเหมืองขุด Bitcoin ซึ่งเป็นผู้รวบรวม transaction ทั้งหลายเข้าไปบรรจุอยู่ใน block chain


แล้วถ้าวันหนึ่งไม่มีปุ่ม Send ล่ะ?

ตอนเริ่มบทความนี้ ผมตั้งคำถามเล่น ๆ เอาไว้ว่า

ถ้าวันหนึ่งไม่มี Bitcoin Wallet ให้ใช้

ไม่มีปุ่ม Send

ไม่มี QR Code

ไม่มีหน้าจอสวย ๆ คอยถามว่า

Send 70,000 sats to Bob?

เรายังส่ง Bitcoin ได้อยู่ไหม?

ตอนนี้เราน่าจะรู้คำตอบแล้ว

ได้

แค่แม่งลำบากนิดหน่อย

เราต้องหา UTXO เอง

ต้องรู้ว่า Input กำลังอ้างอิง Output ตัวไหน

ต้องกำหนด Output ใหม่

ต้องคิด Change

ต้องคิด Fee

ต้อง Serialize ข้อมูล

ต้อง Sign Transaction

แล้วสุดท้ายก็ต้อง Broadcast ข้อมูลก้อนนั้นออกไปให้ Bitcoin Network

สิ่งที่ Wallet ทำภายในไม่กี่วินาที

เรานั่งแกะมันออกมาทีละชิ้นจนเห็นหมดแล้วว่า

พอทำมาถึงตรงนี้ ผมกลับรู้สึกว่าของที่เราเพิ่งสร้างขึ้นมาด้วยมือไม่ใช่สิ่งที่น่าสนใจที่สุดแล้ว

สิ่งที่น่าสนใจกว่าคือ…

เราไม่ได้ขออนุญาตใครเลย

เราไม่ได้ Login เข้า Bitcoin

ไม่ได้เปิด Account กับ Bitcoin Inc.

ไม่มีเจ้าหน้าที่ตรวจเอกสาร

ไม่มี Server กลางมานั่งแก้ Balance ของผมแล้วเพิ่ม Balance ให้ Bob

สิ่งที่เราทำมีแค่

เอา Output เก่าที่เรามีสิทธิ์ Spend มาเป็น Input

กำหนด Output ใหม่

สร้างหลักฐานที่ตรงกับเงื่อนไขของมัน

แล้วโยนข้อมูลออกไปใน Network

จากตรงนั้น Bitcoin Node แต่ละเครื่องที่ได้รับ Transaction ไม่จำเป็นต้องรู้จักผม

มันไม่ต้องรู้ว่าผมเป็นคนดีหรือเปล่า

ไม่ต้องรู้ว่าผมมีเงินเดือนเท่าไร

ไม่ต้องรู้ด้วยซ้ำว่าผมชื่ออะไร

มันมีคำถามง่ายกว่านั้นเยอะ

Transaction นี้ถูกต้องตามกฎหรือเปล่า?

ถ้าถูก

Accept

ถ้าไม่ถูก

ก็เอาขว้างทิ้งไป

ตอนแรกผมเคยคิดว่า Bitcoin Wallet คือสิ่งที่ทำให้ผมสามารถส่ง Bitcoin ได้

แต่หลังจากลองสร้าง Bitcoin Transaction ด้วยมือ

ผมเริ่มรู้สึกว่าความจริงมันกลับกัน

Wallet ไม่ได้ให้ความสามารถนั้นกับเรา

มันแค่ซ่อนความยุ่งยากของ Protocol เอาไว้

ปุ่ม Send เป็น Interface

Wallet เป็น Tool

แต่ข้างใต้ทั้งหมดนั้นยังมีกฎชุดเดิมทำงานอยู่

และนั่นทำให้คำว่า

Permissionless

สำหรับผมมันไม่ได้หมายถึงแค่

ไม่มีใครห้ามคุณใช้ Bitcoin

แต่มันมีความหมายที่จับต้องได้กว่านั้น

เพราะวันนี้เราเพิ่งถอด Software ที่ปกติทำทุกอย่างแทนเราออก

แล้วประกอบ Transaction ขึ้นมาใหม่ทีละ Byte

จนสุดท้ายเหลือคำถามหนึ่งที่ผมว่าน่าสนใจกว่าคำถามว่า

“Bitcoin Wallet ตัวไหนดี?”

เสียอีก

ถ้าเราสามารถสร้างหลักฐาน ตรวจสอบกฎ และส่ง Transaction ได้ด้วยตัวเองตั้งแต่ต้นจนจบ…แล้วเราจะต้องขออนุญาตใคร ?

Similar Posts

  • Bitcoin Lightning Network ทำงานอย่างไร? จากการเปิด Channel ไปจนถึงการจ่ายค่ากาแฟภายในไม่กี่วินาที

    มีความจริงอยู่หนึ่งประการที่ใครๆก็รู้กันนั่นก็คือ Bitcoin มี Block ใหม่เกิดขึ้นโดยเฉลี่ยประมาณทุก ๆ 10 นาที และบางช่วงเราก็อาจต้องรอนานกว่านั้นเพราะ Block Time ของ Bitcoin มันเกิดจากการประมาณการซึ่งมันไม่แน่ไม่นอน ยิ่งถ้าหากว่าเราจะรอให้มันเกิดหลาย Confirmation ก็จะยิ่งนานเข้าไปใหญ่ คุณลองคิดดูนะ ถ้าวันหนึ่งผมเดินเข้าไปในร้านกาแฟเพื่อซื้อกาแฟ จากนั้นผมก็หยิบโทรศัพท์ขึ้นมา แล้วผมก็เปิด Lightning Wallet จากนั้นผมก็ Scan QR Code ละก็กดปุ่ม PAY … ติ๊ง! ⚡ แล้วพนักงานของร้านก็บอกว่าได้รับ Bitcoin แล้ว ทั้งหมดนี่ใช้เวลาเพียงไม่กี่วินาที เอ๊ะ… แต่เดี๋ยวนะ… Block ใหม่แม่งยังไม่เกิดเลยนี่หว่า 😂 แล้ว Transaction ของผมอยู่ใน Block ไหน? แล้ว Miner คนไหนขุดมัน? แล้ว Transaction ของผมที่จ่ายค่ากาแฟนี่ได้กี่ Confirmation แล้ว? เมื่อผมเปิด…

  • Blockchain คืออะไร? ลองสร้าง Blockchain ของ Bitcoin ขึ้นมาด้วยมือกัน

    ตอนผมรู้จักคำว่า Blockchain ใหม่ ๆ ผมจำได้ว่ามันมักจะมาพร้อมกับ Diagram หน้าตาประมาณนี้ แล้วก็มีคำอธิบายประมาณว่า Blockchain คือเทคโนโลยีบัญชีแบบกระจายศูนย์ ที่จัดเก็บข้อมูลเป็น Block และเชื่อมต่อกันด้วย Cryptography อืม…ก็นะ อ่านแล้วดูฉลาดขึ้นมาทันที แต่กูก็ไม่ได้เข้าใจอะไรเลย 😂 และคำถามก็ยังคงวนเวียนอยู่ในหัวของผมว่า Blockchain คืออะไร? ข้างใน Blockchain มันมีอะไร? แล้วมันเอา Block มาต่อกันได้ยังไง? ใครเป็นคนต่อ? ใครเป็นคนเก็บ เก็บไว้ที่ไหน? แล้วทำไมคนชอบพูดว่า Blockchain นั้นไม่สามารถแก้ไขข้อมูลย้อนหลังได้? แล้วถ้ากูเปิด Notepad ขึ้นมาแล้วเขียน Block #1 Block #2 Block #3 แล้ววาดลูกศรต่อกัน… นี่คือ….กูสร้าง Blockchain แล้วหรือยังวะ? ตอนผมเริ่มศึกษา Bitcoin จริง ๆ ผมถึงเริ่มรู้สึกว่า บางทีเราอาจเรียนเรื่อง Blockchain ผิดทางกันมาตั้งแต่แรก ซึ่งเวลาที่มีใครสักคนจะสอนวิธีการทำงานของ…

  • UTXO คืออะไร? ทำไม Bitcoin ถึงไม่มี Balance อยู่จริง

    UTXO คืออะไร? ถ้าคุณเพิ่งเริ่มศึกษา Bitcoin คำนี้อาจฟังดูเหมือนศัพท์เทคนิคที่เข้าใจยาก แต่จริง ๆ แล้ว UTXO คือหนึ่งในแนวคิดพื้นฐานที่สุดของ Bitcoin และถ้าคุณเข้าใจมัน คุณจะเริ่มเห็นทันทีว่า Bitcoin ทำงานแตกต่างจากบัญชีธนาคารที่เราใช้กันทุกวันอย่างไร ถ้าผมถามคุณว่า… “ตอนนี้คุณมีเงินอยู่ในบัญชีธนาคารเท่าไหร่?” คุณอาจเปิด Mobile Banking ขึ้นมา แล้วตอบว่า ฉันมีเงินอยู่ 50,000 บาท ก็โอเค๊ นั่นมันง่ายมาก เพราะระบบธนาคารทำให้เราคุ้นเคยกับสิ่งที่เรียกว่า Account Base Balance แน่นอนว่าธนาคารมีบัญชีของคุณที่เป็นระบบฐานข้อมูล Databaseและในบัญชีนั้นมีตัวเลขเขียนเอาไว้ว่า นาย A มีเงิน = 50,000 บาท ถ้าคุณโอนให้ Bob 10,000 บาท ระบบก็ทำหน้าที่หักลบตัวเลขออกประมาณว่า: นาย A เหลือยอดเงินในบัญชีคือ : 50,000 → 40,000 บาท และนาย Bob ก็จะมียอดเงินเพิ่มขึ้นเป็น…

  • Private Key คืออะไร? ทำไมคนที่ถือ Key ถึงควบคุม Bitcoin ได้?

    “แล้วใครมีสิทธิ Spend UTXO ก้อนนั้น?” นี่คือคำถามที่เรียกได้ว่าเด็ดดวงที่สุดในปฐพี Private Key คืออะไร? ถ้าผมตอบแบบสั้นที่สุด… มันคือ ความลับ ที่ทำให้คุณสามารถสร้างหลักฐานทางคณิตศาสตร์ เพื่ออนุญาตให้ Bitcoin ของคุณเอาไป Spend ได้ แต่เดี๋ยวก่อน… ประโยคนี้มีอะไรแปลก ๆ อยู่หนึ่งอย่าง ผมไม่ได้พูดว่า : Private Key คือรหัสผ่านของ Bitcoin และผมก็ไม่ได้พูดว่า : Private Key คือที่เก็บ Bitcoin เพราะจริง ๆ แล้ว… Bitcoin ไม่ได้สิงอยู่ใน Private Key ของคุณ มันไม่ได้อยู่ใน Hardware Wallet ด้วยนะ ไม่ได้อยู่ในมือถือด้วยนะ ไม่ได้อยู่ใน Trezor ด้วยนะ และไม่ได้อยู่ในกระดาษที่คุณเขียน Seed Phrase เก็บเอาไว้นะ Bitcoin อยู่บน…

  • Bitcoin Mining คืออะไร? Miner กำลังคำนวณหาอะไรกันแน่?

    จากบทความที่แล้วเราคุยกันเรื่อง Bitcoin Full Node ซึ่งมีประโยคนึงที่ผมเขียนเอาไว้ว่า Miner มีหน้าที่เสนอ Block เข้ามา ส่วน Node มีหน้าที่ตรวจการบ้าน ฟังดูง่ายดี… แต่คำถามก็คือ แล้วพวก Miner มันไปเอา Block มาจากไหนกันวะ? เวลาเราเห็นภาพของ Bitcoin Mining ที่เจอกันบ่อย ๆ ก็คงจะเป็นโกดังใหญ่ ๆ ที่มีเครื่อง ASIC วางเรียงกันเป็นร้อยเป็นพันเครื่อง พัดลมหมุนติ้วๆๆเสียงดังชิบหายยังกับเครื่องบิน Jet มิหนำซ้ำยังแดกไฟยังกับเป็นโรงงานอุตสาหกรรม แล้วไอ้เครื่องพวกนี้มันกำลังทำอะไรกันอยู่กันแน่? มันกำลังแก้สมการคณิตศาสตร์รึเปล่านะ? มันกำลังถอดรหัส Bitcoin รึเปล่านะ? มันกำลังตรวจ Transaction รึเปล่านะ? หรือมันกำลัง “ขุด” Bitcoin เหรียญใหม่ๆให้มันกระเด้งออกมาจาก Blockchain เหมือนคนขุดทอง? ตอนผมเริ่มศึกษา Bitcoin ใหม่ ๆ ผมก็เคยเข้าใจประมาณนั้นเหมือนกัน ผมคิดว่าคงมีโจทย์คณิตศาสตร์ยาก ๆ สักข้อ แล้ว…

  • Bitcoin Address คืออะไร? มันถูกสร้างมาจาก Private Key ได้อย่างไร?

    ครั้นนึกถึงตอนผมเป็นมือใหม่แล้วเพิ่งเริ่มได้สัมผัสกับ Bitcoin ซึ่งในช่วงเวลานั้นผมเข้าใจเรื่อง Address ง่ายมากครับ 1.เปิด Wallet 2.กด Receive Application ของ Exchange มันก็โยนตัวหนังสือยาว ๆ มาให้ชุดหนึ่ง ซึ่งจะมีหน้าตาประมาณนี้ bc1q… พร้อม QR Code ยึก ๆ ยือ ๆ อันนึง จากนั้นผมก็ทำการ Copy แล้วส่งให้คนที่จะโอน Bitcoin มาให้ จบข่าวในพระราชสำนัก… Bitcoin Address ก็คงเหมือนเลขบัญชีธนาคารนั่นแหละ ง่ายชิบหาย 😂 จนวันหนึ่งผมเริ่มสังเกตว่า… ทำไม Address ของบางคนขึ้นต้นด้วย 1 บางอันขึ้นต้นด้วย 3 แต่ของผมแม่งเสือกเป็น bc1q แล้วหลัง ๆ ดันมี bc1p โผล่มาอีก อ้าว…อี่ยังวะ ? แบบใด๋ ? ตกลงแล้ว…