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

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

จากบทความที่แล้วเราคุยกันเรื่อง Bitcoin Full Node

ซึ่งมีประโยคนึงที่ผมเขียนเอาไว้ว่า

Miner มีหน้าที่เสนอ Block เข้ามา ส่วน Node มีหน้าที่ตรวจการบ้าน

ฟังดูง่ายดี…

แต่คำถามก็คือ แล้วพวก Miner มันไปเอา Block มาจากไหนกันวะ?

เวลาเราเห็นภาพของ Bitcoin Mining ที่เจอกันบ่อย ๆ ก็คงจะเป็นโกดังใหญ่ ๆ ที่มีเครื่อง ASIC วางเรียงกันเป็นร้อยเป็นพันเครื่อง พัดลมหมุนติ้วๆๆเสียงดังชิบหายยังกับเครื่องบิน Jet มิหนำซ้ำยังแดกไฟยังกับเป็นโรงงานอุตสาหกรรม

แล้วไอ้เครื่องพวกนี้มันกำลังทำอะไรกันอยู่กันแน่?

มันกำลังแก้สมการคณิตศาสตร์รึเปล่านะ?

มันกำลังถอดรหัส Bitcoin รึเปล่านะ?

มันกำลังตรวจ Transaction รึเปล่านะ?

หรือมันกำลัง “ขุด” Bitcoin เหรียญใหม่ๆให้มันกระเด้งออกมาจาก Blockchain เหมือนคนขุดทอง?

ตอนผมเริ่มศึกษา Bitcoin ใหม่ ๆ ผมก็เคยเข้าใจประมาณนั้นเหมือนกัน ผมคิดว่าคงมีโจทย์คณิตศาสตร์ยาก ๆ สักข้อ แล้ว Network ก็โยนโจทย์ออกมาให้กับ Miner แล้วจากนั้นพวก Miner ก็ทำการแข่งกันแก้โจทย์นี้ ซึ่งมันทำให้ผมเหมือนจะเห็นภาพว่า Computer ทั่วโลกแข่งกันแก้สมการคณิตศาสตร์ จากนั้นก็วัดว่าใครฉลาดกว่า ใครเครื่องแรงกว่า ใครแก้โจทย์ได้ก่อนก็รับ Bitcoin ไป

แต่พอเข้าไปดูจริง ๆ

แม่งไม่ได้มีโจทย์คณิตศาสตร์ลึกลับอะไรให้มันแก้เลยนี่หว่า

เพราะว่าเครื่อง ASIC หรือว่าเครื่อง Miner นี่ทำงานที่ดูโง่มากๆเลย

มันก็แค่ Hash ข้อมูลอะไรสักอย่าง

ไม่ผ่าน…

จากนั้นก็เปลี่ยนค่า

แล้วเอามา Hash ใหม่

ยังไม่ผ่าน…

เปลี่ยนค่าอีกที

แล้วเอามา Hash ใหม่

วนแม่งอยู่อย่างนั้นเป็นจำนวนนับครั้งไม่ถ้วน

จนกระทั่งมีใครสักคนเจอ Hash ที่เข้าเงื่อนไขที่ Bitcoin Network Protocol กำหนด

พอเข้าใจปุ๊บ ทีนี้ คำถามเลยเปลี่ยนจาก

“Miner กำลังแก้โจทย์อะไร?”

มาเป็น

“มันกำลัง Hash อะไร แล้วทำไมการเดาสุ่มสี่สุ่มห้าแบบนี้ถึงทำให้ Bitcoin ปลอดภัยได้วะ?”

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


ก่อนที่ Bitcoin จะทำการ Mining ได้นั้น มันจะต้องสร้าง Block Template ขึ้นมาก่อน

ถ้าคุณยังจำบทความ Bitcoin Transaction คืออะไร ได้นะ ผมเคยบอกไว้ว่า Transaction ที่เราสร้างและ Broadcast ออกไปนั้น จะเดินทางผ่าน Network และอาจเข้าไปอยู่ใน Mempool ของ Node ต่าง ๆ เพื่อรอการ Confirm ถูกป่ะ?

แล้วถ้าจะให้เราเห็นภาพว่า Bitcoin Mining คืออะไร จริง ๆ แล้วล่ะก็ เราเลยต้องเลิกมองภาพคนกำลัง “ขุดเหรียญ” ก่อน เพราะสิ่งที่ Miner ทำนั้นมันเริ่มมาจากการสร้าง Candidate Block ขึ้นมา แล้วพยายามหาหลักฐานว่า Work นั้นถูกทำไปแล้วหรือยัง?

กลับไปที่ Mempool จากบทความเรื่อง Bitcoin Node กันนิดหนึ่ง

ใน Network มี Transaction จำนวนมากที่กำลังรอการ Confirm ใช่มะ?

Miner หรือระบบของ Mining Pool จะเลือก Transaction บางส่วนมาประกอบเรียงกันเป็น Candidate Block

คำว่า Candidate สำคัญมากนะครับ

เพราะตอนนี้มันยังไม่ได้เป็น Block ที่ Network ยอมรับ และมันมีอีกคำถามที่แฝงอยู่นั่นก็คือ แล้วมันเรียงกันตามลำดับของอะไร?

มันก็ประมาณว่า

“กูขอเสนอ Block หน้าตาประมาณนี้แล้วกัน”

ข้างในก็มี Transaction ที่ Miner เลือกมา และมี Transaction พิเศษอีกตัวหนึ่งที่เรียกว่า

Coinbase Transaction

ปล.ไม่ใช่ Coinbase ที่เป็นเว็บ Exchange ของเมกานะ 😂

Coinbase Transaction ตัวนี้มีความพิเศษตรงที่มันไม่ได้ Spend UTXO แบบที่เราเคยคุยกันในบทความ UTXO คืออะไร และเป็น Transaction ที่ Miner ใช้ claim สิ่งที่ได้รับอนุญาตจากการสร้าง Block ได้แก่ Block Subsidy และ Transaction Fees ตามกฎของ Bitcoin. พูดง่ายๆก็คืออีตัว Coinbase Transaction เนี่ย เป็นจุดที่พวก Miner เอาไว้เสกเงินให้กับตัวเอง จบข่าว

แน่นอนว่าจุดพิเศษของ Coinbase Transaction นั้นไม่จำเป็นต้องมี Input เลย ก็คือปล่อยโล่งๆได้เลย อยู่ดีๆก็เสกขึ้นมากลางอากาศแล้วก็ยิงเข้าไปใน Address ของใครสักคนได้เลยทันที ไม่ผิดกฏ มิหนำซ้ำจุดนี้ยังสามารถรวบเอา Transaction Fee เล็กๆน้องที่พวกคนโอนเงินทิ้งไว้มาบวกเข้าไปในนี้ได้อีกด้วย

ทีนี้หายสงสัยแล้วใช่มั้ย ว่าค่า Fee ที่เราจ่ายเวลาโอนเงินนั้นมันไปเข้า Miner ได้ยังไง

เมื่อมี Transaction ทั้งหมดแล้ว ข้อมูลเหล่านั้นจะถูกนำไปสร้าง Merkle Tree และได้ค่าหนึ่งออกมาที่เรียกว่า

Merkle Root

เดี๋ยวเรื่อง Merkle Tree เราค่อยลงหลุมกันอีกที ไม่งั้นวันนี้ไม่ได้ Mining แน่นอน (อีกแล้วหรอ?) 😂

ตอนนี้จำแค่ว่า Merkle Root ผูกอยู่กับชุด Transaction ใน Block นั้นก็พอ

พูดเชิงเทคนิคก็คือ มันทำหน้าที่คล้ายๆกับ Checksum ของ Computer Communication Protocol นั่นแหละ เพื่อป้องกันข้อมูลผิดพลาด คลาดเคลื่อน ไปจากต้นฉบับเดิม ก็แค่นั้นเอง

แล้ว Merkle Root ตัวนี้จะเข้าไปอยู่ในสิ่งที่ Miner สนใจมาก ๆ

นั่นก็คือสิ่งที่เรียกว่า Block Header


Block Header มีอะไรอยู่ข้างใน?

Bitcoin Block Header มีขนาด 80 bytes

เล็กจนน่าตกใจเมื่อเทียบกับขนาด Block ทั้งก้อน

ข้างในมีข้อมูลหลัก ๆ ประมาณ 6 อย่างด้วยกัน ซึ่งประกอบไปด้วย :

Version Number
Previous Block Hash
Merkle Root
Timestamp
nBits
Nonce

และไอ้ข้อมูล 80 bytes นี่แหละครับที่เกี่ยวข้องโดยตรงกับสิ่งที่ ASIC หรือ Miner เอาไป Hash ซ้ำแล้วซ้ำอีก.

ตรงนี้มีเรื่องหนึ่งที่ผมเคยเข้าใจผิด

ผมเคยคิดว่า ASIC กำลังเอา Transaction เป็นพัน ๆ รายการมา Hash ใหม่ทั้งหมดทุกครั้ง

ซึ่งเอาเข้าจริงๆแล้วมันไม่ใช่แบบนั้น

สิ่งที่ Proof of Work ผูกอยู่ด้วยคือ Block Header

และเพราะ Header มีทั้ง Previous Block Hash กับ Merkle Root อยู่ข้างใน มันจึงผูกทั้งข้อมูลของ Block ก่อนหน้าและข้อมูลทั้งชุด Transaction ของ Candidate Block เหล่านี้เข้ามาด้วย

ทีนี้ของเริ่มสนุกแล้ว (เชิญมึงสนุกไปคนเดียวเถอะ) ^_^


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

สมมุติ Miner สร้าง Block Header ขึ้นมา

จากนั้น ASIC หรือ Miner ก็เอา Block Header เหล่านี้ไปผ่าน SHA-256 ตามกระบวนการของ Bitcoin แล้วก็จะได้ Hash ออกมา (อันที่จริงแล้วมันทำ Double Hash ต่างหาก กล่าวคือ Hash 2 รอบ)

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

8f31a4c9...

พอเอาไป Hash อีกที ก็จะได้ :

91bc87e2...

อีกที ก็จะได้ :

43e107ad...

ASIC ไม่ได้มองว่า Hash ไหน “เลขสวย”

มันกำลังหา Hash ที่มีค่าตัวเลข ต่ำกว่าหรือเท่ากับ Target ที่กำหนด

สมมุติแบบง่ายมาก ๆ ว่า Target ของเกมนี้คือ :

0000FFFF...

ถ้าได้ :

83AF9213...

ก็คือ ไม่ผ่าน ❌

พอไป Hash อีกที ถ้าได้ :

12A73BC9...

ก็ยัง ไม่ผ่าน ❌

แต่ถ้าได้ :

00003F21...

เฮ้ย…

อันนี้อาจผ่าน ✅

ตัวอย่างนี้ผมย่อให้ดูง่ายนะครับ Target จริงเป็นค่าตัวเลขขนาดใหญ่ และใน Block Header จะเก็บ Target ในรูปแบบ compact ไว้ในตัวแปรที่เรียกว่า nBits หรือบางทีก็เขียนแค่ Bits นั่นเอง .

และนี่แหละที่ทำให้คนชอบพูดว่า Bitcoin Mining คือการหา Hash ที่มีเลขศูนย์นำหน้าหลาย ๆ ตัว

พูดแบบนั้นพอเห็นภาพได้

แต่ถ้าจะพูดให้ตรงกว่าเดิม:

Miner กำลังหา Block Header Hash ที่มีค่าตัวเลขไม่เกิน Target

มันไม่ได้มีกฎว่า “ต้องสวย”

มันไม่ได้มีสมการลับให้แก้ แต่สิ่งที่มันทำจริงๆก็คือ

มันเดาไปเรื่อย!!!


แล้ว Nonce คืออะไร?

ทีนี้ ASIC จะสร้าง Hash ใหม่ได้ยังไง?

หนึ่งในค่าที่สามารถเปลี่ยนแปลงได้ใน Block Header ก็คือ

ค่าในตัวแปรที่ชื่อว่า Nonce

ซึ่งตัวแปร Nonce ใน Block Header มีขนาด 32-bit.

สิ่งที่ Miner มันทำก็คือลองใส่ :

Nonce = 0

แล้วเอาไป Hash ดูซิ → ไม่ผ่าน

งั้นลองเปลี่ยนให้ Nonce = 1

แล้วเอาไป Hash ดูซิ → ไม่ผ่าน

งั้นลองเปลี่ยนให้ Nonce = 2

แล้วเอาไป Hash ดูซิ → ไม่ผ่าน

ทำต่อไปเรื่อย ๆ

แต่อย่าเพิ่งเข้าใจว่าการ Mining ทั้งโลกมีแค่การนับ Nonce จาก 0 ถึง 4 พันกว่าล้านค่า แล้วจบไปง่ายอย่างนั้น

ASIC สมัยใหม่วิ่งผ่านพื้นที่ Nonce ได้เร็วมาก

เมื่อจำเป็นต้องสร้างชุดงานใหม่ Mining software สามารถเปลี่ยนข้อมูลอื่นได้ เช่น extra nonce ใน Coinbase Transaction ซึ่งมีผลทำให้ Transaction ID เปลี่ยน → จากนั้น Merkle Root ก็จะเปลี่ยน → จากนั้น Block Header ก็จะเปลี่ยน → แล้วก็ได้พื้นที่ใหม่เพิ่มเติมเพื่อให้เราได้ Hash กันต่อ.

เมื่อกี้ผมบอกว่า Coinbase Transaction เป็น Transaction พิเศษที่ไม่ต้องมี Input ใช่ป่ะ จุดนี้นี่เองที่พวก Miner สามารถใส่ข้อความต่างเข้าไปได้ ใส่พวก ASCII ตัวอักษรหรืออะไรก็ได้ตามใจเลย ซึ่งไม่ผิดกฏ Bitcoin Protocol ซึ่งในจุดนี้นี่แหละเราเลยเรียกว่าเป็น extra nonce (จริงๆแล้วใน Block แรกที่ Satoshi สร้างไว้ เขาเองก็ได้ใส่ความเล่นในส่วนนี้เช่นกัน นั่นก็คือประโยคสุดฮิตว่า “The Times 03/Jan/2009 Chancellor on brink of second bailout for banks” ซึ่งเป็น Hidden Message ที่ถูกวางไว้ใน ScriptSig)

ตรงนี้แหละที่คำอธิบายว่า

“Miner แค่หา Nonce”

มันเริ่มไม่ใช่อีกต่อไปแล้ว

มันไม่ได้มีเลขวิเศษตัวเดียวซ่อนอยู่ในจักรวาลรอให้เราไปค้นพบ

Miner กำลังสร้าง Candidate Header จำนวนมหาศาลแล้วถามคำถามเดิมซ้ำ ๆ วนไป :

Hash นี้ต่ำกว่า Target หรือยัง ?

ไม่…

ต่อ…

ไม่…

ต่อ…

ไม่…

ต่อ…

ตรงนี้ทำให้ภาพของ Bitcoin Mining คืออะไร เริ่มชัดขึ้นอีกหน่อย มันไม่ใช่การตามหา Nonce วิเศษเพียงตัวเดียว แต่เป็นการสร้าง Candidate จำนวนมหาศาลแล้วลอง Hash ไปเรื่อย ๆ นั่นเอง


ทำไมถึงเดาอย่างเดียวล่ะ? ทำไมไม่หาวิธีที่คำนวณย้อนกลับเอาล่ะ?

นี่เป็นหัวใจของเรื่องนี้เลย

ถ้าเรารู้ Target อยู่แล้ว ทำไมไม่เขียนสูตรคำนวณ Nonce ที่ถูกต้องออกมาเลย ง่ายดีออก?

ถ้าทำได้ Mining คงไม่ต้องมีโกดัง ASIC แล้วล่ะครับ 😂

ถ้าคำนวณได้ง่ายๆ ขอ PC เครื่องเดียวก็พอ ใช่มะ ?

Cryptographic Hash Function ถูกออกแบบมาให้การเปลี่ยน Input แม้เพียงเล็กน้อยสามารถทำให้ Output เปลี่ยนไปอย่างคาดเดาไม่ได้ และเราไม่มี shortcut ที่รู้จักสำหรับคำนวณย้อนกลับไปหา Header ที่จะให้ Hash ต่ำกว่า Target ตามต้องการ

วิธีที่ใช้งานได้จึงกลายเป็น:

ลอง

แล้วก็

ลองอีก

ตรงนี้เองที่คำว่า Proof of Work เริ่มมีความหมาย

เพราะถ้าคุณเอา Block ที่มี Hash ถูกต้องมาให้ผมดู ผมตรวจมันได้ง่ายมาก

เอา Header ไป Hash

ตรวจว่า Hash ผ่าน Target หรือเปล่า

จบ

แต่การที่คุณจะ หา Header แบบนั้นมาให้ผมได้…

คุณต้องทำงานไปก่อนแล้ว


Proof of Work คืออะไร?

ผมชอบมองแบบนี้

มันแพงตอนสร้าง แต่ถูกตอนตรวจ

ถ้ามีใครถามผมว่า Bitcoin Mining คืออะไร แล้วให้ตอบสั้น ๆ ผมคงเริ่มจากตรงนี้แหละ Miner ต้องจ่ายต้นทุนเพื่อสร้าง Proof of Work แต่ Node สามารถตรวจสอบ Work นั้นได้ง่ายกว่ามาก

Miner อาจต้องใช้ ASIC จำนวนมหาศาล

กินไฟ

ใช้เวลา

สร้างความร้อน

เสียค่าเครื่อง

ลอง Hash จำนวนมหาศาล

เพื่อให้ได้ Block หนึ่งก้อน

แต่ Node ของผมไม่ต้องทำงานทั้งหมดนั้นซ้ำ

มันแค่ตรวจสอบ Proof of Work และตรวจสอบกฎอื่น ๆ ของ Block

ถ้าถูก…

รับ

ถ้าผิด…

ไม่รับ

Bitcoin Developer documentation อธิบาย Proof of Work ว่าเป็นการหา Hash ที่ต่ำกว่า Target ซึ่งโดยเฉลี่ยต้องใช้ brute-force work จำนวนหนึ่ง และเมื่อ Block ถูกต่อกันไปเรื่อย ๆ การย้อนกลับไปเปลี่ยน Block เก่าก็ต้องทำ Proof of Work ใหม่และไล่ตามงานที่สะสมอยู่หลังจากมันด้วย.

นี่เริ่มเชื่อมกับบท Bitcoin Node แล้วนะครับ

Miner ทำงานแพง

Node ตรวจงานถูก


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

มีปัญหาอีกข้อหนึ่ง

สมมุติวันนี้มี Miner อยู่ 100 เครื่อง

พรุ่งนี้ Bitcoin ราคาแพงขึ้น ทุกคนแห่ซื้อ ASIC จนกลายเป็น 10,000 เครื่อง

ถ้า Target ไม่เปลี่ยน Block ก็จะถูกหาเจอเร็วขึ้นเรื่อย ๆ

Bitcoin เลยมีระบบปรับ Difficulty

โดยภาพใหญ่ Network จะปรับ Target ทุก 2,016 Blocks เพื่อพยายามรักษาเวลาการสร้าง Block โดยเฉลี่ยให้อยู่แถว ๆ 10 นาที.

Hashrate เพิ่มมาก?

Target ก็ต้องยากขึ้น

Hashrate หายไป?

Target ก็ปรับให้ง่ายลงในรอบ Adjustment

มันไม่ได้บอกว่า

“ทุก Block ต้องออกตรง 10 นาทีเป๊ะ”

บาง Block อาจมาเร็วมาก

บาง Block รอนานจนเริ่มสงสัยว่า Internet บ้านกูเสียหรือเปล่า 😂

10 นาทีเป็นค่าเฉลี่ยที่ระบบพยายามรักษาในระยะยาว ไม่ใช่นาฬิกาจับเวลาของแต่ละ Block


แล้ว Miner ได้ Bitcoin จากไหน?

ตรงนี้เรากลับมาที่ Coinbase Transaction

เมื่อ Miner หา Block ที่มี Proof of Work ถูกต้องและ Block นั้นได้รับการยอมรับตามกฎ Miner สามารถ claim รายได้จากสองส่วนหลัก:

Block Subsidy

กับ

Transaction Fees

Subsidy คือ Bitcoin ใหม่ที่ Protocol อนุญาตให้สร้างตาม Schedule

และทุก ๆ 210,000 Blocks โดยประมาณ Subsidy จะลดลงครึ่งหนึ่ง

สิ่งนี้ที่เราเรียกว่า

Bitcoin Halving

ส่วน Fees มาจาก Transaction ที่ Miner เลือกเข้า Block

ดังนั้นคำว่า Block Reward ที่เราใช้กันทั่วไปจึงเกี่ยวข้องกับ Subsidy + Fees

แต่มีจุดหนึ่งที่อยากย้ำจาก Blog #5:

Miner ไม่ได้เขียน Coinbase Transaction แล้วบอกว่า

“วันนี้เหนื่อย ขอ 1,000 BTC ละกัน”

😂

เขียนได้ครับ

แต่ Node ที่บังคับใช้กฎเดิมก็ไม่จำเป็นต้องรับ Block นั้น

เพราะงั้นเวลาเราพูดถึง Bitcoin Mining คืออะไร เราไม่ควรเอา Mining ไปเท่ากับคำว่า “สร้าง Bitcoin ใหม่” อย่างเดียว เพราะ Miner ยังมีหน้าที่สร้าง Candidate Block และแข่งขันกันด้วย Proof of Work เพื่อให้ Block ของตัวเองถูกเสนอเข้าสู่ Network ด้วย


Mining Pool คืออะไร?

ปัญหาของ Solo Mining คือความแปรปรวนมันโหด

คุณอาจมี ASIC ของตัวเอง แต่เมื่อเทียบ Hashrate กับ Network ทั้งโลก โอกาสที่เครื่องของคุณจะเป็นคนเจอ Block อาจน้อยมาก

อาจรอ…

แล้วรอ…

แล้วรอ…

จนค่าไฟหมดไปก่อนจะเห็น Block แรก 😂

Mining Pool จึงเกิดขึ้นเพื่อให้ Miner จำนวนมากเอา Hashrate มาทำงานร่วมกัน

Pool สามารถกำหนด Target สำหรับสิ่งที่เรียกว่า Share ซึ่งง่ายกว่า Network Target

Share ไม่จำเป็นต้องเป็น Block จริง

แต่มันเป็นหลักฐานให้ Pool เห็นว่า

“เออ มึงทำงานจริง”

แล้วเมื่อมี Share ตัวหนึ่งบังเอิญผ่าน Network Target ด้วย Pool ก็สามารถ Broadcast Block นั้นออกไป และรายได้จะถูกแบ่งตามระบบการจ่ายของ Pool.

นี่ทำให้ Miner สามารถมีรายรับที่ถี่และคาดการณ์ได้มากกว่า Solo Mining แม้จะต้องแบ่งรายได้กับคนอื่น


Hashrate คืออะไร?

ถ้า ASIC ทำหน้าที่ลอง Hash ซ้ำ ๆ

เราก็ต้องมีหน่วยบอกว่ามันลองได้เร็วแค่ไหน

นั่นคือ Hashrate

เช่น:

TH/s
PH/s
EH/s

ยิ่ง Hashrate สูง ก็ยิ่งลอง Candidate Hash ได้มากต่อวินาที

แต่ Hashrate เยอะไม่ได้แปลว่า ASIC “ฉลาดกว่า”

มันไม่ได้เข้าใจ Bitcoin

ไม่ได้รู้ Austrian Economics

ไม่ได้อ่าน Whitepaper

ไม่ได้รู้ด้วยซ้ำว่า Michael Saylor คือใคร 😂

มันแค่ทำสิ่งเดิมได้เร็วมาก

Hash → Check → Hash → Check → Hash → Check


แล้ว 51% Attack ล่ะ?

พอพูดเรื่อง Hashrate คำนี้ต้องมา

51% Attack

ถ้าฝ่ายหนึ่งควบคุม Hashrate ส่วนใหญ่มากพอ เขาอาจมีความสามารถในการสร้าง chain ที่มี accumulated Proof of Work มากกว่าและใช้ความสามารถนั้นเพื่อทำบางอย่าง เช่น Reorganize Block ล่าสุด หรือ Censor Transaction บางส่วน

แต่มันไม่ได้แปลว่า:

51% = ได้ Private Key ของทุกคน

ไม่ใช่

51% = ขโมย UTXO ของใครก็ได้

ไม่ใช่

51% = สร้าง Bitcoin 100 ล้านเหรียญแล้ว Node ต้องรับ

ก็ไม่ใช่อีก

เพราะเรายังมีไอ้ตัวกวนจากบทที่แล้วอยู่

Bitcoin Node

Miner สามารถเสนอ Block

แต่ Node ยังตรวจ Consensus Rules

Hashrate ให้พลังกับ Miner ในเรื่องการสร้าง Proof of Work และลำดับของ Chain

มันไม่ได้ทำให้ Digital Signature ปลอมกลายเป็น Signature จริง หรือทำให้ Block ที่ผิด Consensus Rules กลายเป็น Block ถูกต้องสำหรับ Node ที่ยังใช้ Rules เดิม


ทำไม Bitcoin ต้องเผาไฟขนาดนี้?

นี่น่าจะเป็นคำถามที่ใหญ่ที่สุดของ Bitcoin Mining

และผมไม่อยากตอบว่า

“ก็เพื่อรักษาความปลอดภัยไง จบ”

เพราะมันง่ายเกินไป

ลองกลับไปดูสิ่งที่ ASIC ทำ

มันเอา พลังงานจริง

ผ่าน Hardware จริง

ใช้เวลาในโลกจริง

เพื่อสร้าง Proof of Work ให้กับข้อมูลดิจิทัล

และ Proof of Work นั้นถูกผูกเข้ากับ Block Header

Block Header ก็ผูกกับ Previous Block

Previous Block ก็ผูกกับ Previous Block ก่อนหน้า…

ไปเรื่อย ๆ

แนวคิดนี้คือหัวใจของ Proof-of-Work Chain ที่ Satoshi อธิบายไว้ใน Bitcoin Whitepaper

ถ้าคุณย้อนกลับไปแก้ Transaction เก่า Merkle Root ของ Block นั้นก็เปลี่ยน

Header เปลี่ยน

Hash เปลี่ยน

Proof of Work เดิมใช้ไม่ได้

และ Block หลังจากนั้นก็อ้างถึง Hash ของ Block ก่อนหน้าอีก

ดังนั้นการแก้อดีตไม่ได้มี Cost แค่แก้ตัวหนังสือใน Database

คุณต้องกลับไปสร้าง Work ใหม่ แล้วพยายามไล่ตาม Chain ที่ยังเดินหน้าต่ออยู่ด้วย.

ตอนแรกผมเองก็เคยมอง Bitcoin Mining ว่า

Computer จำนวนมหาศาลกำลังเสียไฟเพื่อเดาตัวเลข

ซึ่งถ้ามองแค่นั้น…

ก็ไม่ผิดเท่าไร 😂

มันเดาจริง

มันกินไฟจริง

แต่คำถามที่ผมเริ่มสนใจมากกว่าคือ

ทำไมระบบการเงินดิจิทัลที่ไม่มีบริษัท ไม่มีธนาคารกลาง และไม่มีใครมีสิทธิ์กดปุ่ม Undo ถึงยอมเอาพลังงานจริงจากโลกภายนอกมาเป็นส่วนหนึ่งของการเขียนประวัติของมัน?

อันนี้ผมว่า…

น่าคิดต่อกว่าแค่ถามว่า

“ขุด Bitcoin เดือนหนึ่งได้เงินกี่บาท?”

Similar Posts

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

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

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

  • Digital Signature คืออะไร? Bitcoin พิสูจน์ว่าเป็นเจ้าของได้อย่างไร โดยไม่เปิดเผย Private Key

    Digital Signature คืออะไร? ถ้าผมบอกคุณว่า… ผมสามารถพิสูจน์กับคนทั้งโลกได้ว่า “ผมมี Private Key ของแท้” โดยที่… ผมไม่ต้องเอา Private Key ให้ใครดูเลยแม้แต่นิดเดียว คุณจะเชื่อมั้ย? หรือคุณอาจถามว่า : “แล้วกูจะรู้ได้ยังไงว่ามึงมีของจริง?” 😂 นี่แหละครับคือหนึ่งในความมหัศจรรย์ของ Cryptography ที่ Bitcoin ใช้ ในบทความก่อนหน้าเรื่อง Private Key คืออะไร? ทำไมคนที่ถือ Key ถึงควบคุม Bitcoin ได้? เรารู้แล้วว่า Private Key ไม่ใช่ Password และ Bitcoin ก็ไม่ได้ถูกเก็บอยู่ใน Private Key Private Key คือ Secret ที่สามารถนำมาใช้สร้างหลักฐานทาง Cryptography เพื่ออนุญาตให้เราทำการ Spend Bitcoin ตามเงื่อนไขที่กำหนดไว้ได้อย่างสบายใจ ซึ่งอีหลักฐานที่ว่านี้คือสิ่งที่เรียกว่า :…

  • 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 Node คืออะไร? ทำไม Bitcoin ถึงไม่ต้องมีใครเป็นคนกลาง

    ในบทความที่แล้วเราเพิ่งคุยกันเรื่อง Digital Signature ว่า Bitcoin สามารถตรวจสอบได้ว่า Transaction นึงนั้นมี Signature ที่ถูกต้องหรือไม่? โดยที่เจ้าของ Private Key ไม่ต้องเอา Secret Key ของตัวเองออกมาเปิดเผยให้ใครเห็นเลยแม้แต่คนเดียว มันก็…ฟังดูดีนะครับ แต่พอผมคิดต่อไปอีกนิดนึงแล้ว มันเสือกมีคำถามหนึ่งโผล่ขึ้นมาในหัว แล้วใครเป็นคนตรวจสอบวะ? ใครที่เป็นคนบอกเราว่า Signature อันนี้ถูกต้อง? ใครเป็นคนบอกว่า UTXO ที่กำลังจะถูก Spend นี้มีอยู่จริง และมันยังเป็น UTXO ที่ไม่เคยถูกใช้ไปแล้ว? ใครเป็นคนบอกว่า Transaction นี้ไม่ได้ถูกเสกเพิ่มขึ้นมาจากอากาศ? แล้วถ้าวันหนึ่ง Miner เสือกบอกว่า “กูขุด Block นี้ได้แล้วนะ” ใครเป็นคนบอกว่า Block ที่มันขุดมานั้นถูกต้องตามกฎของ Bitcoin? ถ้าคำตอบของเราคือ “ก็ Server กลางของ Bitcoin ไง” งั้นเราก็มีปัญหาแล้วล่ะ เพราะถ้ามี Server กลางสักเครื่องเป็นคนบอกทุกคนว่าอะไรของจริง…