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 เลย (จริงๆตัว coinbase transaction ก็คือ one special coinbase input แต่แค่มันไม่ต้องการ previous UTXO แค่นั้นเอง) ซึ่งก็คือปล่อยโล่งๆได้เลย อยู่ดีๆก็เสกขึ้นมากลางอากาศแล้วก็ยิงเข้าไปใน 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 ตามต้องการ

พูดง่ายคือ Hash Function คือการที่เราเอาข้อมูลอะไรก็ได้ จำนวนเท่าไรก็ได้ ไม่ว่าจะสั้นหรือยาว มันจะให้ผลลัพธ์ออกมาเป็น Fix Lenght เสมอ และเมื่อเราเปลี่ยนข้อมูลทางฝั่ง Input เพียงนิดเดียว หรือแม้กระทั่งใส่ Space Bar เพียงอันเดียว มันจะมีผลทำให้ข้อมูลทางฝั่ง Output เละเทะเสมอ

แน่นอนว่า Cryptographic Hash Function นั้นเป็น One Way Function ที่ไม่สามารถคำนวณย้อนกลับได้ เพียงแค่นี้ความบรรลัยก็เกิดขึ้น

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

ลอง

แล้วก็

ลองอีก

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

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

ผมก็เอา Block Header นั้นไปเข้า Hash เลยทันที

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

จบข่าวในพระราชสำนัก

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

คุณต้องไป “Work” มาก่อน ^_^


แล้ว Proof of Work คืออะไร?

ผมชอบมองแบบนี้มากกว่า

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

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

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

แดกทั้งไฟ

ใช้ทั้งเวลา

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

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

ทดลอง Hash จำนวนมหาศาลนับครั้งไม่ถ้วน

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

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

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

ถ้าถูก…

รับ

ถ้าผิด…

ไม่รับ

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

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

Miner ทำงานราคาแพง

Node ตรวจงานราคาถูก


แล้ว Difficulty หรือค่าความยากในการขุดนั้นมาจากไหน?

มีปัญหาอีกหนึ่งข้อที่จะชวนให้เราต้องมาปวดหัวกัน

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

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

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

Bitcoin เลยมีระบบปรับ Difficulty โดยอัตโนมัติ

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

นี่คือจุดเฉลยของ Magic Number เลยนะว่า Block Time ของ Bitcoin ทุกๆ 10 นาทีนี้มันมาจากไหน? ซึ่งคำตอบก็คือระบบของ Bitcoin มันไม่ได้ Sync Time จากหแนาฬกา Big Ben หรือ Sync Time จากกองทัพเรือ กรมอุทกศาสตร์ แต่เลข 10 นาที นั้นเกิดจากเครื่อง Miner ทั่วโลกทำการ Hash พร้อมกันแล้วจะมีสักเครื่องบนโลกใบนี้ที่เจอ Hash ที่เข้า Traget ของ Block ใหม่พอดิพอดี ^_^

เมื่อ Hashrate เพิ่มมาก?

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

และเมื่อ Hashrate หายไป?

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

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

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

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

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

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

ตรงจุดนี้มันทำให้ผมเริ่มเข้าใจว่า Bitcoin Mining คืออะไร มากขึ้นอีกหน่อยแล้วล่ะ เพราะมันไม่ได้มีแค่เรื่องว่าเครื่องใคร Hash ได้เร็วกว่า แต่ Network ยังปรับ Target ตามกำลังขุดที่เข้ามา เพื่อให้การหา Block ไม่เร็วขึ้นเรื่อย ๆ ตามจำนวนเครื่องที่เพิ่มขึ้น


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

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

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

อันดับแรกเลยก็คือ Block Subsidy

กับ

Transaction Fees ยิบๆย่อยๆ

ซึ่ง Block Subsidy ก็คือ Bitcoin ที่ถูกผลิตขึ้นใหม่ที่ Protocol อนุญาตให้สร้างตาม Schedule

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

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

Bitcoin Halving

นี่เป็นนโยบายของมัน เราแก้ไขอะไรไม่ได้เลย มันเป็นเหมือนปรากฏการณ์ทางธรรมชาติไปเสียแล้วทั้งๆที่ Bitcoin นั้นถูกสร้างขึ้นโดยเงื้อมมือของมนุษย์ แต่เรากลับควบคุมมันไม่ได้เสียอย่างนั้น เจ๋งดีแฮะ

ส่วนค่า Fees นั้นมาจาก Transaction ยิบๆย่อยๆที่ Miner เลือกเข้า Block

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

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

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

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

😂

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

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

กล่าวคือคุณอุตส่าห์ไปหา Hash ที่เข้าเป้ากับ Target มา แต่ Node เสือกโยนทิ้งอ่ะ ^_^

เพราะงั้นเวลาเราพูดถึง 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 ซ้ำ ๆ

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

นั่นคือ Hashrate

เช่น:

TH/s
PH/s
EH/s

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

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

เครื่อง ASIC มันไม่ได้เข้าใจ Bitcoin

เครื่อง ASIC ไม่ได้รู้ Austrian Economics

เครื่อง ASIC ไม่ได้อ่าน Whitepaper

เครื่อง ASIC มันไม่ได้รู้ด้วยซ้ำว่า 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 เดิม


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

Bitcoin Mining คืออะไร?

Bitcoin Mining คือกระบวนการที่ Miner สร้าง Candidate Block แล้วใช้กำลังประมวลผลเพื่อค้นหา Block Header Hash ที่มีค่าต่ำกว่าหรือเท่ากับ Target ของ Network

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

Bitcoin Miner กำลังแก้โจทย์คณิตศาสตร์อยู่หรือเปล่า?

ถ้าพูดว่า Miner กำลัง “แก้โจทย์คณิตศาสตร์ที่ซับซ้อน” มันก็พอทำให้เห็นภาพ แต่จริง ๆ แล้วอาจทำให้เราเข้าใจผิดไปไกลเหมือนกัน

ASIC ไม่ได้นั่งแก้สมการลับอะไรอยู่แม้แต่น้อย แต่มันกำลังลอง Hash Candidate Block Header จำนวนมหาศาล แล้วตรวจว่า Hash ที่ได้ผ่าน Target หรือยัง

ไม่ผ่านก็ลองใหม่ ไม่ผ่านก็ลองใหม่ ง่าย ๆ แบบนั้นเลย

Nonce ใน Bitcoin Mining คืออะไร?

Nonce เป็นข้อมูลขนาด 32-bit ที่อยู่ใน Bitcoin Block Header และเป็นหนึ่งในค่าที่ Miner สามารถเปลี่ยนเพื่อสร้าง Hash ใหม่ได้

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

Proof of Work คืออะไร?

Proof of Work คือหลักฐานที่แสดงว่า Miner ได้ใช้ Computational Work เพื่อค้นหา Block Header Hash ที่ผ่าน Target ตามที่ Network กำหนด

ส่วนที่ผมว่าน่าสนใจคือ การสร้างมันแพง แต่การตรวจมันถูก

Miner อาจต้องลอง Hash จำนวนมหาศาลกว่าจะเจอ แต่ Bitcoin Node ไม่จำเป็นต้องทำงานทั้งหมดนั้นซ้ำเพื่อดูว่า Proof of Work ถูกต้องหรือไม่

Bitcoin Mining กับ Bitcoin Node ต่างกันอย่างไร?

Miner และ Node ทำงานเกี่ยวข้องกัน แต่ไม่ใช่ของอย่างเดียวกัน

Miner แข่งขันกันสร้าง Proof of Work และเสนอ Block ใหม่ ส่วน Bitcoin Full Node ตรวจสอบ Transaction, Block และ Consensus Rules ด้วยตัวเอง

ดังนั้น Miner ขุด Block สำเร็จไม่ได้แปลว่า Node ทุกตัวต้องยอมรับ ถ้า Block นั้นผิดกฎที่ Node บังคับใช้ Node ก็สามารถ Reject มันได้

Miner เสนอ Block ส่วน Node ตรวจการบ้าน

รัน Bitcoin Mining แล้วได้เงินไหม?

Miner มีโอกาสได้รับรายได้จาก Block Subsidy และ Transaction Fees แต่ไม่ได้หมายความว่าซื้อ ASIC มาเสียบปลั๊กแล้วจะกำไรแน่นอน

รายได้และต้นทุนยังขึ้นอยู่กับหลายอย่าง เช่น Hashrate ของเครื่อง, Network Difficulty, ค่าไฟ, ราคา Bitcoin, Mining Pool Fee, Cooling และประสิทธิภาพของ Hardware

เพราะงั้นคำถามว่า “Mining ได้ Bitcoin เท่าไร?” กับ “Mining แล้วมีกำไรเท่าไร?” จริง ๆ เป็นคนละคำถามกัน แต่ Concept ของการ “เสียบปลั๊กรับตังค์” นั้นมีอยู่จริง ^_^


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

นี่น่าจะเป็นคำถามที่ใหญ่ที่สุดของ Bitcoin Mining และเป็นข้อครหาเดียวที่ทำให้หลายๆคนมองว่า Bitcoin นั้นไร้สาระ

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

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

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

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

มันเอา พลังงานจริง จากโลก Physical World

ผ่าน Hardware จริง

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

เพื่อสร้าง Proof of Work ให้กับข้อมูลใน Digital World

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

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

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

ไปเรื่อย ๆ

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

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

จากนั้น Block Header ก็จะเปลี่ยน

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

และ Proof of Work เดิมก็จะใช้ไม่ได้

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

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

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

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

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

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

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

ก็มันเดาจริงๆอ่ะมึง

และมันก็แดกไฟจริง

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

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

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

น่าคิดต่อมากกว่าคำถามที่ว่า

“ขุด 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 Lightning Network ทำงานอย่างไร? จากการเปิด Channel ไปจนถึงการจ่ายค่ากาแฟภายในไม่กี่วินาที

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

  • Bitcoin Node คืออะไร? ทำไม Bitcoin ถึงไม่ต้องมีใครเป็นคนกลาง

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

  • 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 ก็อยู่ในมือถือกู แล้วทำไมมันถึงไม่ใช่…

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

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

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

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