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

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

ตอนผมรู้จักคำว่า Blockchain ใหม่ ๆ ผมจำได้ว่ามันมักจะมาพร้อมกับ Diagram หน้าตาประมาณนี้

แล้วก็มีคำอธิบายประมาณว่า

Blockchain คือเทคโนโลยีบัญชีแบบกระจายศูนย์ ที่จัดเก็บข้อมูลเป็น Block และเชื่อมต่อกันด้วย Cryptography

อืม…ก็นะ

อ่านแล้วดูฉลาดขึ้นมาทันที

แต่กูก็ไม่ได้เข้าใจอะไรเลย 😂

และคำถามก็ยังคงวนเวียนอยู่ในหัวของผมว่า Blockchain คืออะไร?

ข้างใน Blockchain มันมีอะไร?

แล้วมันเอา Block มาต่อกันได้ยังไง?

ใครเป็นคนต่อ?

ใครเป็นคนเก็บ เก็บไว้ที่ไหน?

แล้วทำไมคนชอบพูดว่า Blockchain นั้นไม่สามารถแก้ไขข้อมูลย้อนหลังได้?

แล้วถ้ากูเปิด Notepad ขึ้นมาแล้วเขียน

Block #1

Block #2

Block #3

แล้ววาดลูกศรต่อกัน…

นี่คือ….กูสร้าง Blockchain แล้วหรือยังวะ?

ตอนผมเริ่มศึกษา Bitcoin จริง ๆ ผมถึงเริ่มรู้สึกว่า บางทีเราอาจเรียนเรื่อง Blockchain ผิดทางกันมาตั้งแต่แรก

ซึ่งเวลาที่มีใครสักคนจะสอนวิธีการทำงานของ Bitcoin ก็มักจะเริ่มจากคำว่า Blockchain

แล้วพยายามให้คนที่นั่งเรียนจดจำ Definition ของมัน

แต่ถ้าหากว่าเราเริ่มจากของเล็ก ๆ ก่อนล่ะ…

อย่างเช่น Bitcoin Transaction แค่หนึ่งอัน

แล้วค่อย ๆ เอาของเพิ่มเข้ามาทีละชิ้น

สุดท้าย Blockchain จะโผล่ออกมาตรงหน้าเราเอง

เพราะงั้นวันนี้ผมไม่อยากเริ่มจากการท่องว่า Blockchain คืออะไร

เพราะว่ามันน่าเบื่อและเป็นงานหินสุดๆ

แต่วันนี้เราจะลอง…

สร้าง Blockchain ขึ้นมาด้วยมือของเราเอง

ไม่ต้องเขียน Code

ไม่ต้องรู้เรื่องราวของ Bitcoin Opcode

ไม่ต้องเปิด Bitcoin Core

ไม่ต้องมี ASIC Miner

มีกระดาษกับปากกาก็พอ

แล้วเดี๋ยวเรามาดูกันว่า…

ต้องเอาอะไรมาใส่บ้าง ถึงจะกลายเป็น Bitcoin Blockchain


1. ก่อนจะมี Blockchain เราต้องมี Bitcoin Transaction ก่อน

ลืม Blockchain ไปก่อนครับ เพราะใน Blockchain นั้นอุดมไปด้วย Transaction

แน่นอนว่าสิ่งที่เล็กที่สุดใน Blockchain ก็คือเหล่าบรรกา Transaction ที่ประกอบกันขึ้นมาซึ่งมันเป็นเหมือนดั่ง Cell เล็กๆในร่างกายของมนุษย์ หรือบางทีก็อาจะเหมือน Pixel เล็กๆประกอบกันขึ้นมาจนกลายเป็นภาพใหญ่ๆ 1 ภาพ

Transaction มันก็คือการที่บ่งบอกได้ว่า อีนั่นโอนให้อีนี่ อีนี่โอนให้อีโน่น อีจิ๋มโอนให้อีจอย ไอ้ปาล์มโอนให้อีมุก สิ่งนี้เรียกว่า Transaction

ยกตัวอย่างเช่น ตอนนี้เรามีแค่ Alice กับ Bob

Alice ต้องการส่ง Bitcoin จำนวน 1 BTC ให้ Bob

ถ้าเป็นธนาคาร เราอาจคิดว่าระบบทำประมาณนี้

Alice Balance = Alice Balance - 1 BTC

Bob Balance = Bob Balance + 1 BTC

แต่ Bitcoin ไม่ได้ทำงานด้วย Account Balance แบบนั้น

Bitcoin ใช้ Model ที่เรียกว่า UTXO — Unspent Transaction Output

สมมุติ Alice มี UTXO อยู่สองก้อน

Alice ต้องการส่ง Bob 1 BTC

Wallet Application อาจสร้าง Transaction ประมาณนี้

ตรงนี้เราเคยลงหลุมกระต่ายกันมาแล้วในบท Bitcoin Transaction และ UTXO คืออะไร

และสิ่งสำคัญสำหรับวันนี้คือ…

ตอนนี้เรามี Transaction แล้วหนึ่งอัน

แค่นั้นพอ

ยังไม่ต้องมี Blockchain

ยังไม่ต้องมี Block

ยังไม่ต้องมี Mining

ขอแค่มีแค่ Transaction ที่บอกว่า UTXO เก่าก้อนไหนกำลังถูก Spend และกำลังสร้าง Output ใหม่อะไรขึ้นมาแค่นั้นพอ

ทีนี้ลองนึกภาพว่าไม่ได้มีแค่ Alice เท่านั้นที่อยากจะโอน Bitcoin

แต่ให้จินตนาการว่ามีคนใช้ Bitcoin อยู่ทั่วโลก

คนนี้ส่งให้คนนั้น

คนนั้นส่งให้อีกคน

Transaction มันก็จะวิ่งเข้ามาเรื่อย ๆ

เอาล่ะ

ของเริ่มเยอะแล้ว

จะทำยังไงต่อ?


2. Transaction เยอะชิบหายขนาดนี้ เราจะเอาไปไว้ตรงไหน?

ตรงนี้ Miner จะเริ่มเข้ามาเกี่ยวข้องละ

ซึ่ง Miner ก็จะสร้างสิ่งที่เรียก ว่า Candidate Block หรือ Block Template ที่เหล่าบรรดา Miner ทั้งหลายกำลังพยายามจะขุด

ข้างในมันก็จะมี Transaction จำนวนหนึ่งที่ Miner เลือกเข้ามาใน Template

ซึ่งมันก็จะมีหน้าตาประมาณนี้

แน่นอนว่า Transaction แรกจะพิเศษกว่าเพื่อนหน่อย

มันเรียกว่า Coinbase Transaction

และอย่าไปสับสนกับบริษัท Exchange ที่ชื่อ Coinbase นะ เพราะมันคนละอย่างกัน

Coinbase Transaction ของ Bitcoin จะมีสิ่งที่เรียกว่า Coinbase Input แบบพิเศษ ซึ่งไม่ได้อ้างอิง UTXO อันก่อนหน้าเหมือนของ Transaction ทั่วไป

มันเป็น Transaction ที่ Miner ใช้ Claim Block Subsidy และรวบยอด Transaction Fees ภายใต้กฎ Consensus ที่ Bitcoin Node จะตรวจอีกที (เป็นไง? พิเศษมะ?)

ตรงนี้สำคัญนะครับ

Miner ไม่ได้พิมพ์ว่า

Reward = 1,000 BTC

แล้วบอกกับคนในระบบว่า

วันนี้กูเหนื่อย กูขอเยอะหน่อยนะ คนกันเอง

มันไม่ได้ อีดอก!!!

ถ้า Coinbase Transaction สร้าง Bitcoin เกินกว่าที่ Consensus Rules อนุญาต แน่นอนว่า Block นั้นก็ Invalid และ Node ที่ตรวจตามกฎจะไม่ยอมรับมัน

ซึ่งตอนนี้เราเลยมี

Transaction หลายอัน

ถูกเอามารวมกันอยู่ใน Candidate Block

แต่เรายังมีปัญหาอยู่อย่างนึงนั่นก็คือ

ใน Block อาจมี Transaction เป็นพัน ๆ รายการ

แล้วเราจะเอาข้อมูล Transaction ทั้งก้อนนี้ไปผูกเข้ากับ Block Header ยังไง?

เพราะอย่าลืมนะว่าใน Blockchain นั้นจะถูกแบ่งออกเป็น 2 ส่วนหลักๆ นั่นก็คือ Block Header กับ Transaction Detail

ทีนี้คำถามก็คือเราจะเอา Transaction ทุกอันยัดเข้า Header เลยเหรอ?

ซึ่งมันเป็นไปไม่ได้ เพราะถ้าหากมึงเอาทุกสิ่งทุกอย่างทุก Transaction ยัดเข้าไปใน Block Header แล้วล่ะก็ มึงลองนึกสภาพดูนะว่า Miner จะต้องเอาทั้งหมดนี่ไป Hash ทุกรอบ โอ้โหหหหหหห ผมบอกได้เลยว่า ชิบหายการช่าง แน่นอน เนื่องจากข้อมูลมหาศาล ระบบจะช้าชิบหายจนล่มได้เลยนะมึง

ตรงนี้เราต้องรู้จักต้นไม้ประหลาดต้นนึงก่อน


3. Merkle Tree คืออะไร? มันทำให้ Transaction เป็นพันย่อให้เหลือค่าเดียวได้ยังไง?

ผมสมมุติให้ Block ของเรามี Transaction แค่ 4 ตัวก่อน ดังนี้

จากนั้นเราเอา Transaction แต่ละตัวไปทำการ Hash

มันก็จะได้ประมาณนี้

จากนั้นเอา Hash มาจับคู่กัน

แล้วเอาสองตัวนั้นมารวมและ Hash ต่อ

ถ้าวาดเป็นต้นไม้จะประมาณนี้

ภาพด้านบนนี่คือ Merkle Tree

มันเป็นค่าที่อยู่บนสุดเรียกว่า

Merkle Root

มันทำหน้าที่เป็น Cryptographic Commitment ทั้งหมดของ Transaction ทั้งหมดใน Block นั้น

พูดแบบชาว Engineer หน่อยนึงก็คือ…

มันให้ความรู้สึกคล้ายๆกับ Checksum ของ Communication Protocol ที่เอาไว้สะท้อนข้อมูลทั้งก้อนว่า Data ทั้ง Set นี้มีความถูกต้องรึเปล่า

แต่ ได้โปรดอย่าเข้าใจว่า Merkle Root นั้นเป็น Checksum ธรรมดาๆนะ

เพราะโครงสร้าง Merkle Tree ทำอะไรได้มากกว่าการตรวจ Error ระหว่าง Communication

สิ่งที่เราต้องการสำหรับวันนี้ก็คือ :

เราต้องการตัว Check ตัวนึงที่จะสามารถบ่งบอกได้ว่า ถ้า Transaction ข้างในเปลี่ยน

Hash ของมันก็ต้องเปลี่ยนตามไปด้วย เรียกได้ว่าเปลี่ยนกันทั้งยวง กระทบกันทั้งพวง

↓

เมื่อข้อมูลใน Transaction มันเปลี่ยน ก็จะเป็นผลทำให้ Parent Hash เปลี่ยน

↓

และสุดท้าย…

Merkle Root ก็ต้องเปลี่ยน

สมมุติ TX2 เปลี่ยนแค่ข้อมูลบางส่วน

แน่นอนว่าค่า Root ข้างบนก็ต้องเปลี่ยนตาม

ตอนนี้เราเอา Transaction เป็นพัน ๆ รายการมาสรุปให้มีค่า Root ที่ Commit เข้ากับชุด Transaction ทั้งก้อนได้แล้ว

อีแมง Merkle Root เนี่ย พูดง่ายมันเหมือนกับแหที่เอาไว้คลุม Transaction ทั้งหมดไว้ไม่ให้กระดุกกระดิกนั่นเอง

และ Merkle Root ตัวนี้นี่แหละ…

กำลังจะถูกเอาไปใส่ในของสำคัญมากอีกชิ้น


4. Blockchain คืออะไรเริ่มเห็นแล้วใช่มั้ย? : จากนี้เรามาสร้าง Block Header กันเถอะ

ตอนนี้เรามี Transaction ละ

แล้วเราก็มี Merkle Tree ละ

และจาก Merkle Tree เราก็ได้มี Merkle Root ละ

ต่อไปเราจะสร้าง Block Header นะจ๊ะสาว

ใน Bitcoin Block Header นั้นมีขนาด 80 bytes แค่นั้นเอง

และมีข้อมูลหลัก 6 Field ด้วยกัน หรือบางคนอาจจะเรียกว่า 6 Variable ก็ได้ ดังนี้

ถ้าอ่าน Blog Bitcoin Mining คืออะไร? มาแล้ว ตรงนี้น่าจะเริ่มคุ้นๆนะ

มาดูทีละตัวแบบเร็ว ๆ กันเถอะ

ตัวแปรที่ชื่อ Version

อันนี้เป็นตัวแปรที่เอาไว้บอกข้อมูล Version Bits ที่เกี่ยวข้องกับการตีความหรือเอาไว้ส่งสัญญาณกฎบางอย่างของ Block

ตัวแปรที่ชื่อ Previous Block Hash

Hash ของ Block ก่อนหน้า อันนี้สำคัญมากๆเลยเพราะมันทำให้เกิดคำว่า “Chain” อย่างแท้จริง

จำตัวนี้ไว้

เดี๋ยวแม่งเป็นพระเอกของเรื่อง

ตัวแปรที่ชื่อ Merkle Root

ค่าที่ Commit เข้ากับชุด Transaction ใน Block ที่เราเพิ่งสร้างจาก Merkle Tree เพื่อควบคุมไม่ให้ Transaction ใน Block ดิ้นไปดิ้นมา

ตัวแปรที่ชื่อ Timestamp

เวลาที่ Miner ใส่ไว้ใน Header ภายใต้กฎที่ Bitcoin ใช้ตรวจ Timestamp

ตัวแปรที่ชื่อ nBits

อันนี้เป็นค่า Compact representation ของ Target ซึ่งตัวนี้สำคัญมากสำหรับพวก Miner หรือเหมืองขุด

ตัวแปรที่ชื่อ Nonce

ค่าขนาด 32-bit ที่ Miner จะเปลี่ยนไปเรื่อย ๆ เพื่อสร้าง Candidate Header Hash ใหม่ ๆ

ตอนนี้เราจึงได้ของหน้าตาประมาณนี้

แค่ 80 bytes เอง

ซึ่งไอ่ของชิ้นเล็ก ๆ ตรงนี้นี่แหละที่ Miner เอาไปกระหน่ำ Hash กันทั้งโลกอย่างเมามันส์


5. เอา Block Header ไป Hash

Bitcoin นั้นใช้ระบบ Proof of Work ที่เรียกว่า SHA-256d

หรือพูดง่าย ๆ ว่า

Double SHA-256

สมมุติว่าเราเอา Block Header ไปเข้า Double Hash แล้วได้ค่า 8fa27193…

ซึ่ง Miner ไม่ได้ถามว่า Hash เลขสวยไหม ?

ไม่ได้ถามว่ามีเลข 7 ซึ่งเป็นเลขมงคลหรือเปล่า ?

มันเอาค่า Hash ไปเทียบกับ Target

เงื่อนไขและ Concept ก็คือ

ถ้าผ่าน…

เจอ Candidate Proof of Work ที่เข้าเงื่อนไขแล้ว เย้ ไชโย Miner คนนั้นก็รับ Bitcoin ที่สร้างขึ้นใหม่ไปเลยเป็นจำนวน 50 BTC (ซึ่งเลข 50 BTC นั้นจะลดลงครึ่งนึงทุกๆ 4 ปี)

แล้วถ้าไม่ผ่านล่ะ…

ทำไง?


6. Hash ไม่ผ่าน? ก็ลองใหม่ดิ

นี่คือส่วนที่คนชอบบอกว่า

Miner กำลังแก้โจทย์คณิตศาสตร์ที่ซับซ้อน

ฟังดูเหมือนเครื่อง ASIC Miner กำลังนั่งแก้ Calculus อยู่

แต่จริง ๆ แล้วมันไม่ใช่แบบนั้น

Miner กำลังลอง Candidate Block Header จำนวนมหาศาล

เปลี่ยน Nonce

Hash

ไม่ผ่าน

เปลี่ยน Nonce

Hash อีกที

ไม่ผ่าน

เปลี่ยน Nonce

Hash อีกรอบ

ไม่ผ่าน

แน่นอนของจริงไม่ได้จำกัดอยู่แค่การไล่ Nonce อย่างเดียว

เนื่องจาก Nonce ใน Header มีเพียง 32-bit เท่านั้น ซึ่งมีความเป็นไปได้เพียง 4,294,967,295 ค่าเท่านั้น

Miner ก็มีวิธีการที่จะสามารถเปลี่ยนข้อมูลอื่นๆที่ทำให้ Candidate Header เปลี่ยนได้ เช่นข้อมูลใน Coinbase Transaction ซึ่งมักมี extra nonce อยู่ในนั้นเสมอ และเมื่อ Coinbase Transaction เปลี่ยน

TXID และ transaction data commitment ที่เกี่ยวข้องก็เปลี่ยน

↓

Merkle Root เปลี่ยน

↓

Block Header เปลี่ยน

↓

มีพื้นที่ให้ลอง Hash ชุดใหม่ต่อ

นี่คือสิ่งที่เรียกว่า Proof of Work !!!

นี่คือการสร้าง Proof ที่แพงมากๆ

แต่การตรวจสอบ Proof ถูกมากๆๆๆๆๆ

Miner อาจต้องลอง Hash จำนวนมหาศาลเพื่อหา Proof ให้เจอ

แต่ Node ที่ได้รับ Block มานั้น…

แค่คำนวณและตรวจตามสมการก็รู้ได้อย่างรวดเร็วว่า Proof of Work ผ่านหรือไม่ ?

นี่เป็นคุณสมบัติที่สวยงามมากของระบบ Bitcoin

Hard to produce.

Easy to verify.


7. เมื่อ Miner เจอ Hash แล้ว — มันจะสามารถควบคุม Bitcoin ทั้งโลกได้หรือยัง?

ไม่ครับ ไม่มีทาง ไม่มีวัน

นี่เป็นจุดที่ผมอยากเน้นมากๆ

เมื่อ Miner เจอ Block Header Hash ที่ผ่าน Target แล้ว

มันไม่ได้แปลว่า Miner จะทำอะไรก็ได้นะ

ซึ่งสิ่งที่ Miner ทำได้ก็เพียงแค่ต้องประกาศให้กับ Node ทั่วโลกได้รับรู้ว่า

กูขุดเจอแล้ว Block นี้ถูกต้องตามกฎหมายแห่ง Bitcoin ทุกประการ

ขั้นตอนนี้แหละคือขั้นตอนที่ Miner กำลัง เสนอ Block ให้ Network Bitcoin Node ที่ได้รับ Block จะต้องตรวจมันด้วยตัวเองอีกรอบหนึ่ง เพราะ Bitcoin Node ไม่ได้เชื่อ Miner เสมอไป (ก็ Code ของ Node มันเขียนไว้แบบนั้นอ่ะ)

เช่นตรวจว่า

Transaction Format ถูกต้องไหม ?

Inputs อ้างอิงในสิ่งที่ Spend ได้หรือไม่ ?

มี Double Spend หรือเปล่า ?

Scripts / Witness ผ่านไหม ?

Signature ของแต่ละ Transaction ถูกต้องไหม ?

Transaction สร้างมูลค่าเกินกว่า Input หรือเปล่า ?

Coinbase Claim เกิน Subsidy + Fees ที่อนุญาตไหม ?

Merkle Root ถูกต้องไหม ?

Block Structure ถูกต้องไหม ?

Proof of Work น้อยกว่าหรือเท่ากับ Target จริงๆไหม ?

Miner ได้กำหนดค่า Target เป็นไปตามกฏของ Difficulty Adjustment หรือเปล่า ?

และยังมีกฎ Consensus อื่น ๆ อีกเพียบ

และเมื่อ Miner บอกว่า

เชื่อกูเถอะ พวกกัน

Node จะตอบว่า

พี่ไม่เชื่อ 😂

นี่แหละแนวคิดเดียวกับที่เราเจอใน Blog Bitcoin Node คืออะไร

Don’t Trust. Verify.

เพราะงั้น Miner กับ Node มีหน้าที่คนละอย่าง

ถ้าพูดแบบง่าย ๆ เลยก็คือ :

Miner → เสนอ Block + Proof of Work

Node → ตรวจว่า Block นั้น Valid ตามกฎที่ตัวเองบังคับใช้หรือไม่ ?

ถ้า Block Invalid

Node ก็ Reject ทิ้งไป (Miner อุตส่าห์สุ่มจนเจอ Block แล้วแทนที่จะได้ 50 BTC แต่ดันเสือกเอาโยนทิ้งไปซะงั้น เปลืองค่าไปเปล่าๆไหมล่ะ)

Hashrate เยอะแค่ไหนก็ไม่ได้ทำให้ Signature ปลอมกลายเป็น Signature จริงขึ้นมาได้

ไม่ว่า Miner จะมีกันเยอะแค่ไหน จะล้นโลกมากเพียงใดก็ตาม พวกเขาก็ไม่สามารถเอาตังค์ของคุณออกไปได้


8. แล้ว Block มันต่อกันยังไงวะ?

เอาล่ะ

มาถึงของจริงแล้วนะ

คุณยังจำ Field นี้ใน Block Header ได้ไหม?

Previous Block Hash

สมมุติเรามี Block #100

Miner ที่กำลังสร้าง Block #101 จะเอา Hash ของ Block #100 ไปใส่ใน Header ของ Block #101

พอ Block #101 ถูกขุดสำเร็จ มันเองก็มี Hash เป็นของตัวเอง

จากนั้น Miner สร้าง Block #102

Header ของ #102 ก็อ้าง Hash ของ #101

แล้ว #103 ก็อ้าง #102

#104 ก็อ้าง #103

#105 ก็อ้าง #104

เดี๋ยวนะ…

Block ใหม่มันมี Hash ของ Block ก่อนหน้า

แล้ว Block ต่อไปก็ทำเหมือนกัน

Block…

ต่อ…

Block…

เชี่ย

นี่แม่ง Blockchain นี่หว่า !!!

นี่แหละครับจุดที่ผมอยากให้เราเข้าใจคำว่า Blockchain คืออะไร

มันไม่ได้เริ่มจากคำว่า Distributed Ledger

เราเริ่มจาก Transaction

เอา Transaction มารวมกัน

สร้าง Merkle Root

ใส่ลง Block Header

ทำ Proof of Work

แล้ว Header ของ Block ใหม่ก็อ้างถึง Hash ของ Block ก่อนหน้า

Block จึงถูกเชื่อมเข้าหากันทาง Cryptography

Block + Chain

ชื่อแม่งตรงกว่าที่คิดอีก 😂


9. ถ้า Blockchain เป็นแค่ Block ต่อกัน งั้นกูกลับไปแก้ Block เก่าได้ไหม?

ได้สิ

ก็ไฟล์ Transaction และข้อมูลของ Block ทั้งหมดอยู่ใน Computer มึงนี่ (หากคุณติดตั้ง Node Software)

แก้เลย เอาสิ เอาเล๊ย

สมมุติเรากลับไปเปลี่ยน Transaction ใน Block #100

จาก

เป็น

ปัญหาแรกที่มึงจะเจอก็คือ :

Transaction เปลี่ยน

↓

Transaction Hash / Merkle structure เปลี่ยน

↓

Merkle Root เปลี่ยน

↓

Block Header #100 เปลี่ยน

↓

Hash ของ Block #100 เปลี่ยน

สมมุติเดิม:

หลังแก้ข้อมูลบางอย่างใน Transaction แล้วคุณจะพบว่า :

โอ้โห

ทีนี้ Proof of Work อันเดิมก็ไม่ตรงแล้วสินะ

ที่นี้ต้องทำใหม่ นั่งหา Proof of work ใหม่อีกรอบ

แต่สมมุติมึงมีเครื่องขุดที่โคตรพ่อโคตรแม่แรงและเร็วทะลุนรก

ขุด Block #100 ใหม่สำเร็จ

จบไหม?

ยัง 😂

เพราะแม่ง Block #101 เดิมเสือกเขียนไว้ว่า

แต่ Block #100 เวอร์ชันใหม่ของคุณมี Hash คนละตัวแล้ว

ดังนั้น Link ระหว่าง #100 กับ #101 มันก็จะพัง

แต่ถ้าคุณอยากให้ Chain ดำเนินต่อเนื่อง ?

คุณจะต้องแก้ #101 ให้ชี้มาที่ Hash ใหม่

พอแก้ Header #101 เสร็จปุ๊บ…

ทีนี้ Hash #101 ก็จะเปลี่ยนไป

ทีนี้คุณก็ต้องมานั่งหา Proof of Work #101 ใหม่อีก

แล้วจากนั้น #102 ก็จะพัง

ละก็ #103 ก็จะพัง

ละก็ #104…

ละก็พังไปเรื่อย ๆ

และระหว่างที่คุณกำลังนั่งขุดประวัติศาสตร์ใหม่นั้น…

Network ฝั่งที่เหลือไม่ได้หยุดรอคุณนะครับ

มันยังสร้าง Block ใหม่และสะสม Chainwork ต่อไปเรื่อยๆ

และนี่จึงเป็นที่มาของประโยคที่ว่า

ข้อมูลใน Blockchain นั้นแก้ไขไม่ได้

ซึ่งมันเป็นคำอธิบายที่ผมไม่ค่อยชอบเท่าไรนัก

เนื่องจากว่าข้อมูลใน Computer นั้น ไม่มีเวทมนตร์อะไรที่ห้ามคุณแก้ไข Byte

มันแก้ได้เว้ย

แต่ประเด็นคือ…

ถ้าคุณเปลี่ยนประวัติศาสตร์ คุณจะต้องสร้าง Proof of Work ที่เกี่ยวข้องใหม่และสร้าง Chain ที่มี Proof of work สะสมเพียงพอเพื่อให้ Node พิจารณาตามกฎ Consensus

ยิ่ง Block นั้นถูกฝังลึกลงไปและมี Block ใหม่สร้างต่อด้านบนมากขึ้น

Proof of work ที่ต้องตามให้ทันก็ยิ่งมากขึ้น

คือมันไม่ได้บอกว่า Blockchain ของ Bitcoin นั้น

แก้ไม่ได้

แต่มันคือประโยคที่ว่า

แก้ได้นะ แต่มึงต้องจ่ายค่าความจริงใหม่ด้วยพลังงานและการคำนวณ

อันนี้ผมว่าคนละความรู้สึกเลย


แล้ว Bitcoin Node รู้ได้ยังไงว่า Blockchain ไหนคือของจริง?

ตรงนี้มี Trap อีกแล้วคร้าบท่านผู้ชม !!!

เพราะมีบางคนที่พูดว่า

Bitcoin เลือก Chain ที่ยาวที่สุด

ซึ่งถ้าพูดแบบประโยคด้านบนก็พอที่จะเห็นภาพได้

แต่ถ้าจะให้แม่นขึ้นจะต้องบอกว่า “Bitcoin สนใจ Valid chain ที่มี cumulative Proof of Work หรือ chainwork มากกว่า ตามกฎที่ Node บังคับใช้”

ระบบมันไม่ใช่แค่ นับว่าใครมีจำนวน Block เยอะกว่ากันเท่านั้นนะ ?

เพราะคุณสามารถสร้าง Block ที่มี Difficulty ต่ำ ๆ จำนวนมหาศาลในโลกสมมุติของคุณได้

ซึ่งมันไม่ได้แปลว่า Node จะมองว่าสิ่งที่คุณหลอกลวงขึ้นมานั้นจะมี Proof of work มากกว่า Bitcoin chain ปัจจุบัน

และคำว่า Valid นั้นสำคัญมากๆ

ถ้าคุณสร้าง Chain ที่มี Proof of Work เยอะ แต่ Block ข้างในละเมิด Consensus Rule ที่ Node ของผม enforce…

สำหรับ Node ของผมแล้วนั้น

มันก็ Invalid แหละ

ซึ่ง Proof of Work ไม่ใช่ใบอนุญาตให้ทำอะไรก็ได้นะครับ

นี่เป็นอีกครั้งที่เราเห็นว่า

Bitcoin ไม่ได้มีของชิ้นเดียวที่ทำให้มันทำงานได้

มี Mining เพียงอย่างเดียวไม่พอ

มี Node เพียงอย่างเดียวไม่พอ

มี Cryptography เพียงอย่างเดียวไม่พอ

มันเป็นระบบที่ของหลายชิ้นทำงานร่วมกัน


แล้ว Blockchain มันไปอยู่ที่ไหน?

คำถามนี้ผมชอบมาก

เพราะพอเราพูดคำว่า Blockchain เรามักจินตนาการเหมือนมันมี Cloud ก้อนหนึ่งลอยอยู่บน Internet

แล้วทุกคน Login เข้าไปดู

แต่ Bitcoin ไม่มีสิ่งที่ว่ามานี้

มันไม่ได้มี www.blockchain.com

เครื่องกลางหนึ่งเครื่องที่เก็บความจริงให้ทุกคน

Bitcoin Full Node สามารถดาวน์โหลดและตรวจสอบประวัติ Block ตั้งแต่ต้นได้ทันทีด้วยตัวคุณเอง เมื่อคุณโหลด Node Software มาแล้วติดตั้งในเครื่อง Computer ของคุณ จากนั้นมันจะทำงานตามความสามารถและโหมดการทำงานของมัน แล้วสร้าง State ที่มันต้องใช้ เช่น UTXO set โดยทันที

Node ต่าง ๆ เชื่อมต่อกันแบบ Peer-to-Peer ซึ่งคุณกำหนดได้ด้วยว่าจะให้เชื่อมกี่ Peer

จากนั้นมันจะทำการรับ Transaction

มันจะทำการรับ Block

มันจะทำการตรวจสอบ

แล้วส่งต่อข้อมูลที่ผ่าน Policy/Rules ที่เกี่ยวข้องไปยัง Peer อื่น

เพราะงั้นถ้าถามว่า

Blockchain อยู่ที่ไหน?

คำตอบแบบง่ายคือ…

สำเนาและข้อมูลที่เกี่ยวข้องกับ Chain ถูกเก็บอยู่บน Bitcoin Nodes จำนวนมากทั่วโลก แน่นอนว่ามันสามารถอยู่บนเครื่องของคุณได้ด้วยหากคุณติดตั้ง Node Software

แต่ผมอยากระวังคำว่า

“ทุก Node มี Blockchain เหมือนกันทุก Byte”

เพราะ Node สามารถทำงานแบบ Pruned Node ได้ นั่นก็แปลว่า Pruned Node จะไม่ได้มี Full Block เหมือนชาวบ้านเขา

ซึ่งสิ่งที่ Pruned Node ทำก็คือมันสามารถตรวจสอบ Chain แล้วลบ Block เก่าบางส่วนออกจาก Storage หลังจากตรวจสอบเรียบร้อย เพื่อประหยัดพื้นที่ Harddisk

ดังนั้นการเป็น Full Node ไม่ได้แปลว่าต้องเก็บ Block ทุก Block ไว้บน Disk ตลอดชีวิตเสมอไป

สิ่งสำคัญคือมันต้อง ตรวจสอบกฎด้วยตัวเอง


แล้ว Blockchain คือ Bitcoin หรือเปล่า?

ไม่ใช่

นี่เป็นอีกเรื่องนึงที่ผมเคยสับสนสมัยตอนยังเป็นวัยรุ่น

ถ้าจะตอบให้ถูกก็คือ Bitcoin ใช้ Blockchain เป็นส่วนหนึ่งของระบบ

แต่

Blockchain ≠ Bitcoin

Bitcoin ยังต้องมีอีกหลายอย่าง

Private Key

Digital Signature

UTXO

Script

Peer-to-Peer Network

Consensus Rules

Proof of Work

Difficulty Adjustment

Mining

Node Validation

Monetary Policy

ฯลฯ

ถ้าเอาแค่ Data Structure มาสร้างข้อมูลแบบ Block ต่อ Block แล้วบอกว่า

กูสร้าง Bitcoin ใหม่แล้ว

มันไม่ใช่

เหมือนคุณเอา SQL Database มาตัวหนึ่งแล้วบอกว่า

กูสร้างธนาคารแล้ว ซึ่งมันบ่อแม่นเด้อหล่า

Database เป็นแค่ส่วนหนึ่ง

สิ่งที่น่าสนใจของ Bitcoin คือ…

ของทุกชิ้นมันถูกเอามาประกอบเข้าด้วยกันได้ยังไง ?

อันนี้เรียกว่าสุดจริง


ถ้างั้น Blockchain ทุกอันก็เหมือน Bitcoin สิ?

ไม่ครับ ไม่มีวัน ไม่มีทาง

ถ้าหากคุณอยากเข้าใจว่า Blockchain คืออะไร ? คุณจะดูแค่ตื้นๆไม่ได้

คำว่า Blockchain ถูกเอาไปใช้กับระบบสารพัดอย่างในช่วงหลายปีที่ผ่านมา

Private Blockchain

Enterprise Blockchain

Permissioned Blockchain

Consortium Blockchain

และอื่น ๆ อีกมากมายหลายขุม

ผมไม่ได้บอกว่าระบบพวกนั้นมันไม่มีประโยชน์

มันอาจมี Use Case ของมันก็ได้มั้ง

แต่แค่ Data ถูกจัดเป็น Block แล้วมี Hash เชื่อมกัน…

มันไม่ได้ทำให้ระบบนั้นมี Security Model แบบ Bitcoin โดยอัตโนมัตินะครับ

ทีนี้เราต้องถามต่อว่า

แล้วใครสร้าง Block?

แล้วใคร Validate?

ใครสามารถเปลี่ยนกฎได้?

ใครสามารถเข้าร่วม Network ได้?

ระบบ Consensus ทำงานยังไง?

แล้ว Sybil Resistance มาจากไหน?

ใครสามารถ Rewrite History ได้?

ถ้ามีปัญหา ใครมีสิทธิ์ Override ได้ป่ะ?

เพราะงั้นเวลาได้ยินบริษัทพูดว่า

Powered by Blockchain Technology

ผมยังไม่อยากให้คุณตื่นเต้น

ซึ่งคำถามแรกที่ผุดขึ้นมาในหัวของผมก็คือ

แล้วใครเป็นคนควบคุมมัน?


แล้วทำไม Bitcoin ต้องใช้ Blockchain?

ทีนี้คำถามเริ่มกลับหัวละ

เราไม่ได้ถามว่า

เอา Blockchain ไปใช้ทำอะไรได้บ้าง?

แต่ถามว่า

Bitcoin มีปัญหาอะไร ถึงต้องสร้างระบบแบบนี้ขึ้นมา?

โลกของเรามีปัญหาอะไร ถึงต้องสร้างระบบแบบ Bitcoin ขึ้นมา?

ซึ่งไอเดียของ Bitcoin คือต้องการให้คนที่ไม่ได้รู้จักกัน

ไม่ได้ Trust กัน

ไม่มีธนาคารกลาง

ไม่มี Database Administrator

ไม่มีบริษัทเจ้าของระบบ

สามารถเห็นและตรวจสอบประวัติการ Spend ของเงินชุดเดียวกันได้ ทำงานร่วมกันได้

ถ้า Alice พยายาม Spend UTXO เดียวกันสองครั้ง

เราต้องมีวิธีทำให้ Network มาบรรจบกันว่า History ไหนถูกยอมรับ ?

นั่นจึงเป็นที่มาของ Proof of Work

นั่นจึงเป็นที่มาของ Block ordering

นั่นจึงเป็นที่มาของ Consensus validation

และ Chainwork จึงเข้ามาทำงานร่วมกัน

Blockchain ของ Bitcoin ไม่ได้มีค่าเพราะ

Block ต่อกันยาวๆแล้วมันดูเท่

มันมีค่าขึ้นมาได้ก็เพราะ Bitcoin มีวิธีการสำคัญที่ Network ใช้จัดลำดับเหตุการณ์ประวัติศาสตร์ของ Transaction ภายใต้กฎที่ไม่มีศูนย์กลางคนเดียวเป็นผู้ตัดสิน

ตรงนี้แหละที่ผมว่าเริ่มน่าสนใจจริง ๆ


Blockchain คืออะไร? ลองประกอบเครื่องทั้งหมดอีกครั้ง

ตอนนี้เรามีทุกชิ้นครบแล้ว

ทีนี้ถ้ามีใครมาถามผมว่า

Blockchain คืออะไร?

ผมคงไม่เริ่มด้วย

Distributed Immutable Decentralized Ledger Technology…

เพราะกูเองยังปวดหัว 😂

ผมจะเริ่มจาก Transaction หนึ่งอันก่อน

แล้วค่อยประกอบมันขึ้นมา

เพราะพอเห็นของทุกชิ้นทำงาน…

คำว่า Blockchain แทบไม่ต้อง Definition แล้ว เนื่องจากมันครบและจบได้ด้วยตัวมันเอง


FAQ — Blockchain คืออะไร? คำถามที่คนเริ่มศึกษา Bitcoin มักสงสัย

Blockchain คืออะไร?

Blockchain คือโครงสร้างข้อมูลที่ Block ถูกเชื่อมโยงต่อกัน โดย Block ใหม่อ้างอิง Hash ของ Block ก่อนหน้า สำหรับ Bitcoin โครงสร้างนี้ทำงานร่วมกับ Proof of Work, Consensus Rules และการตรวจสอบโดย Bitcoin Nodes เพื่อสร้างประวัติ Transaction ที่ Network สามารถตรวจสอบได้

Bitcoin กับ Blockchain เป็นสิ่งเดียวกันไหม?

ไม่ใช่

Blockchain เป็นส่วนหนึ่งของ Bitcoin แต่ Bitcoin ยังประกอบด้วย UTXO, Digital Signatures, Script, Proof of Work, Peer-to-Peer Networking, Consensus Rules, Mining และ Node Validation รวมถึงส่วนประกอบอื่น ๆ

Blockchain แก้ไขข้อมูลย้อนหลังไม่ได้จริงไหม?

พูดว่า “แก้ไม่ได้” ไม่แม่นนัก

ข้อมูลดิจิทัลสามารถถูกเปลี่ยนได้ แต่การเปลี่ยน Transaction เก่าใน Bitcoin จะทำให้ Merkle Root และ Block Hash เปลี่ยน ส่งผลให้ความเชื่อมโยงกับ Block หลังจากนั้นเสียไป และ Proof of Work ที่เกี่ยวข้องต้องถูกสร้างใหม่เพื่อสร้างประวัติทางเลือกที่สามารถแข่งขันด้าน chainwork ได้

Miner เป็นคนตัดสินว่า Block ไหนถูกต้องหรือไม่?

Miner สร้าง Candidate Block และทำ Proof of Work แต่ Bitcoin Node แต่ละตัวตรวจสอบ Block ตาม Consensus Rules ของตัวเอง

Block ที่มี Proof of Work แต่ละเมิด Consensus Rules ยังสามารถถูก Node ปฏิเสธได้

Bitcoin Blockchain อยู่ที่ไหน?

ข้อมูล Blockchain ถูกกระจายอยู่ใน Network ของ Bitcoin Nodes ไม่ได้อยู่ใน Server กลางเพียงเครื่องเดียว

Node บางตัวเก็บ Block History ไว้ทั้งหมด ขณะที่ Pruned Full Node สามารถตรวจสอบ Chain แล้วลบ Block เก่าบางส่วนออกจาก Storage ได้

Previous Block Hash สำคัญอย่างไร?

มันเชื่อม Block ใหม่เข้ากับ Block ก่อนหน้า

หากข้อมูลใน Block เก่าเปลี่ยน Hash ของ Block นั้นก็เปลี่ยน ทำให้ Reference ที่ Block ถัดไปเก็บไว้ไม่ตรงกัน และ Chain หลังจากจุดนั้นต้องถูกสร้างใหม่หากต้องการสร้างประวัติทางเลือกที่สอดคล้องกัน

Blockchain ปลอดภัยเพราะข้อมูลถูก Encrypt หรือไม่?

ไม่ใช่

Bitcoin Blockchain ไม่ได้ปลอดภัยเพราะ Transaction History ทั้งหมดถูก Encrypt แล้วไม่มีใครอ่านได้

ตรงกันข้าม ข้อมูล Blockchain จำนวนมากเป็น Public และสามารถตรวจสอบได้

Security ของ Bitcoin มาจากหลายองค์ประกอบร่วมกัน เช่น Cryptographic Hashing, Digital Signatures, Proof of Work, Consensus Rules และ Independent Node Validation

Blockchain ทุกระบบปลอดภัยเหมือน Bitcoin ไหม?

ไม่

การใช้ Data Structure แบบ Blockchain ไม่ได้ทำให้ระบบมี Security Properties แบบ Bitcoin โดยอัตโนมัติ

ต้องดูว่าใครสามารถสร้างและตรวจสอบ Block, Consensus ทำงานอย่างไร, ใครเปลี่ยนกฎได้ และระบบป้องกันการ Rewrite History หรือการควบคุม Network อย่างไร


แล้วของที่น่าสนใจจริง ๆ คือ Blockchain หรือเปล่า?

ตัวผมเองครั้นเมื่อยังเด็ก ก็จะได้ยินคำว่า Blockchain เสมอมา แล้วก็จะตั้งคำถามแรกๆเลยว่า Blockchain คืออะไร ?

ตอนแรกผมคิดว่า Blockchain เป็น Technology ที่ฉลาดมากๆแน่ๆเลย

เหมือนมันต้องมี Algorithm ลึกลับอะไรสักอย่างอยู่ข้างใน

แต่พอเราแกะมันออกทีละชิ้นแล้วพบว่ามันมี…

Transaction

Hash

Merkle Tree

Merkle Root

Block Header

SHA-256

Proof of Work

Node

ของแต่ละอย่างไม่ได้ดูเหมือนเวทมนตร์เลย

ซึ่ง Hash Function ก็มีมาก่อน Bitcoin

และ Digital Signature ก็มีมาก่อน Bitcoin

และ Merkle Tree ก็ไม่ได้ถูก Satoshi คิดขึ้นมา

และ Proof of Work Concept ก็มีการใช้งานก่อน Bitcoin

และ Peer-to-Peer Network ก็มีมาก่อน (หากใครเคยโหลด Bit Torrent ก็จะคุ้นเคยสิ่งนี้)

แล้ว Satoshi ทำอะไร?

อ๋อ….เขาเอาของพวกนี้มาประกอบกัน

จนเกิดระบบที่คนแปลกหน้าทั่วโลก

ไม่รู้จักกัน

ไม่ต้อง Trust กัน

ไม่ต้องมีบริษัทเจ้าของ Database

แต่สามารถตรวจสอบกฎและมาบรรจบกับประวัติของเงินชุดเดียวกันได้

ตอนแรกผมถามว่า

Blockchain คืออะไร?

แต่พอประกอบมันเสร็จแล้ว…

ผมกลับรู้สึกว่าคำถามนั้นอาจไม่ใช่คำถามที่น่าสนใจที่สุดแล้ว

เพราะ Blockchain ก็แค่ Block ที่ต่อกัน

คำถามที่เริ่มกวนหัวผมมากกว่าคือ…

ของที่น่าสนใจจริง ๆ คือ Blockchain…

หรือกฎที่ทำให้คนทั้งโลกยอมรับ Blockchain เส้นเดียวกันวะ?

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 แล้ว? เมื่อผมเปิด…

  • Bitcoin Self Custody คืออะไร? Not Your Keys, Not Your Coins หมายความว่าอะไร?

    นึกย้อนกลับไปในตอนผมเริ่มซื้อ Bitcoin ใหม่ ๆ ผมก็ซื้อจาก Exchange เหมือนคนทั่วไปนี่แหละ จุดเริ่มต้นมันก็มาจาก สมัคร Account ก่อนเลย ละก็ KYC (ถ่ายรูปบัตรประชาชน ละก็ หันซ้าย หันขวา อ้าปาก พยักหน้า กระพริบตา) จากนั้นก็โอนเงินบาทเข้าไป ละก็เลือก BTC จากนั้นก็กด Buy แล้วมันก็ขึ้นที่หน้าจอก็ว่า 0.01 BTC โอเค๊… กูมี Bitcoin แล้ว ง่ายดี 😂 แต่พอศึกษาไปเรื่อย ๆ ผมก็เริ่มได้ยินประโยคหนึ่งซ้ำแล้วซ้ำอีก นั่นก็คือ Not Your Keys, Not Your Coins ตอนแรกผมก็คิดว่า Bitcoin ก็อยู่ใน Account กูนี่หว่า ชื่อก็ชื่อกู Password กูก็รู้ 2FA ก็อยู่ในมือถือกู แล้วทำไมมันถึงไม่ใช่…

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

    เคยสงสัยไหมว่า ตอนที่เรากด Send Bitcoin ใน Wallet จริง ๆ แล้วเบื้องหลังมันกำลังทำอะไรอยู่? ถ้าวันหนึ่งไม่มี Wallet ให้ใช้ไม่มีปุ่ม Send ให้กดไม่มีหน้าจอสวย ๆ มาคอยจัดการทุกอย่างให้เรา… เรายังสามารถสร้าง Bitcoin Transaction ขึ้นมาเองได้ไหม? คำตอบคือ ได้ บทความนี้เราจะลองถอด Wallet ออกทีละชั้น แล้วสร้าง Bitcoin Transaction “ด้วยมือเปล่า” ตั้งแต่การเลือก Tools ที่เราจะใช้, กำหนดว่าจะส่งมันไปที่ไหน, สร้าง Transaction ขึ้นมา ไปจนถึงการเซ็น Transaction ก่อนส่งออกไปยัง Bitcoin Network เป้าหมายไม่ใช่การทรมานตัวเองด้วยการทำสิ่งที่ Wallet ทำให้เราได้ภายในไม่กี่วินาที 😆 แต่คือการเปิดฝากระโปรงดูว่า Bitcoin ทำงานอย่างไรจริง ๆ เพราะเมื่อคุณสร้าง Transaction เองได้สักครั้ง คำว่า UTXO, Input,…

  • 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 ใหม่ ๆ ผมก็เคยเข้าใจประมาณนั้นเหมือนกัน ผมคิดว่าคงมีโจทย์คณิตศาสตร์ยาก ๆ สักข้อ แล้ว…

  • 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 ก็จะมียอดเงินเพิ่มขึ้นเป็น…