ในบล็อกมีอะไร: ส่วนหัว ความสูง ขนาด และเงินอุดหนุนบล็อก
บล็อกคือส่วนหัวขนาดเล็กที่มีขนาดคงที่ กับเนื้อหาที่เป็นธุรกรรม มาดูฟิลด์ทั้งหกในส่วนหัว สิ่งที่การขุดนำไปแฮช และความหมายของความสูงกับขนาดของบล็อก
บล็อกประกอบด้วยอะไรบ้าง?
บล็อกมีสองส่วน คือส่วนหัว (header) และเนื้อหา (body) การขุดแฮชเฉพาะส่วนหัวเท่านั้น
- เนื้อหาเก็บธุรกรรมไว้ อาจมีขนาดเพียงไม่กี่ร้อยไบต์ไปจนถึงหลายเมกะไบต์ ขึ้นอยู่กับว่าเชนยุ่งแค่ไหน
- ส่วนหัวคือสรุปของบล็อกที่มีขนาดคงที่ บนเชนส่วนใหญ่มีขนาด 80 ไบต์พอดี
- การขุดแฮชส่วนหัวเท่านั้น ไม่มีอย่างอื่น
ข้อสุดท้ายนี้คือข้อเท็จจริงที่มีประโยชน์ที่สุดในบทความนี้ นักขุดลองรูปแบบต่างๆ หลายพันล้านครั้งต่อวินาที ซึ่งทำไม่ได้หากทุกครั้งต้องแฮชบล็อกที่เต็มไปด้วยธุรกรรมใหม่ทั้งหมด มันแฮชใหม่แค่ 80 ไบต์เท่านั้น
ฟิลด์ทั้งหกในส่วนหัวคืออะไร?
ส่วนหัวมีหกฟิลด์ แต่ละฟิลด์มีเหตุผลของมัน และมีสองฟิลด์ที่ทำงานส่วนใหญ่
- เวอร์ชัน
- แฮชของบล็อกก่อนหน้า
- merkle root แฮชเดียวที่สรุปธุรกรรมทั้งหมด
- เวลาประทับ (timestamp)
- บิตความยาก (difficulty bits)
- nonce ตัวนับที่นักขุดเปลี่ยนได้
แฮชของบล็อกก่อนหน้าคือสิ่งที่ทำให้เป็นเชน ส่วนหัวแต่ละอันระบุบล็อกที่อยู่ก่อนหน้ามัน การเขียนบล็อกเก่าใหม่จะทำให้แฮชของมันเปลี่ยน ซึ่งจะทำให้ส่วนหัวถัดไปเสีย และอันถัดไปอีก ไปจนถึงปลายเชน ฟิลด์เดียวนี้คือเหตุผลทั้งหมดด้านความปลอดภัยของ proof of work
merkle root สรุปธุรกรรมทุกรายการในเนื้อหา เปลี่ยนธุรกรรมหนึ่งรายการแม้เพียงไบต์เดียว merkle root ก็เปลี่ยน จากนั้นส่วนหัวก็เปลี่ยน และแฮชทุกตัวที่ลองไปแล้วก็ไร้ค่า นี่คือเหตุที่ 80 ไบต์สามารถเป็นตัวแทนของบล็อกขนาดใดก็ได้อย่างซื่อตรง
บิตความยากคือเป้าหมายในรูปแบบย่อ ที่แฮชต้องต่ำกว่า เวลาประทับบอกคร่าวๆ ว่าบล็อกถูกสร้างเมื่อไร และอาจเป็นค่าโดยประมาณ nonce คือฟิลด์ที่นักขุดเปลี่ยนได้อย่างอิสระ อิสระนี้เองที่ทำให้การค้นหาเป็นไปได้
เกิดอะไรขึ้นเมื่อ nonce หมด?
nonce เป็นตัวนับขนาดเล็ก นักขุดสมัยใหม่ใช้ค่าทั้งหมดที่มันเก็บได้หมดแทบจะทันที นี่ไม่ใช่ทางตัน nonce เป็นเพียงสิ่งที่เปลี่ยนง่ายที่สุด ไม่ใช่สิ่งเดียวที่เปลี่ยนได้
เมื่อ nonce หมด นักขุดจะเปลี่ยนอย่างอื่นที่ส่งผลต่อส่วนหัว
- เลื่อนเวลาประทับได้
- ปรับธุรกรรม coinbase (ธุรกรรมแรกในบล็อก อธิบายไว้ด้านล่าง) เล็กน้อยได้ ซึ่งทำให้ merkle root เปลี่ยน และได้ส่วนหัวใหม่ทั้งหมดให้ค้นหา
บนพูล นี่คือหน้าที่ของ extra nonce พูลให้จุดเริ่มต้นที่ต่างกันแก่นักขุดแต่ละคน นักขุดสองคนจึงไม่ไล่ตัวเลขชุดเดียวกัน
ความสูงของบล็อกคืออะไร?
ความสูงของบล็อกคือจำนวนบล็อกที่มาก่อนบล็อกนั้น บล็อก genesis ซึ่งเป็นบล็อกแรกสุด มีความสูงเป็นศูนย์ บล็อกถัดไปคือหนึ่ง และต่อไปเรื่อยๆ นี่คือตัวเลขข้างทุกรายการในหน้าบล็อกของพูลและใน explorer ทุกตัว
ความสูงไม่ได้ถูกเก็บไว้ในส่วนหัวจริงๆ มันมาจากตำแหน่งของบล็อกในเชน
บนเชนสมัยใหม่ส่วนใหญ่ ความสูงยังถูกเขียนไว้ในธุรกรรม coinbase ด้วย กฎนี้เพิ่มเข้ามาภายหลัง เพื่อไม่ให้สองบล็อกที่ความสูงต่างกันเหมือนกันทุกไบต์ ถึงอย่างนั้น คำตอบที่ถือเป็นหลักของความสูงของบล็อกก็คือตำแหน่งของมัน
ความสูงยังเป็นวิธีนับการยืนยันที่เป็นธรรมชาติ ธุรกรรมที่จมลึกลงไปหกบล็อกอยู่ในบล็อกที่ต่ำกว่าปลายเชนหกขั้น ทุกบล็อกที่เพิ่มเข้ามาทำให้การเขียนมันใหม่มีราคาแพงขึ้น
ขนาดของบล็อกวัดอะไร?
ขนาดของบล็อกโดยพื้นฐานคือขนาดของเนื้อหา ส่วนหัวเล็กจนแทบไม่มีผลเมื่อเทียบกัน ขีดจำกัดขนาดบล็อกเป็นเรื่องของจำนวนธุรกรรมที่ใส่ได้ ไม่ใช่เรื่องของส่วนหัว
บล็อกที่เต็มกับบล็อกที่ว่างใช้งานขุดเท่ากันพอดี ความยากกำหนดว่าบล็อกหายากแค่ไหน ขนาดกำหนดว่าบล็อกบรรจุอะไรได้มากแค่ไหน ทั้งสองไม่เกี่ยวกัน และการสับสนทั้งสองอย่างทำให้เข้าใจเรื่องค่าธรรมเนียมผิดไปมาก
แต่ขนาดมีผลต่อตลาดค่าธรรมเนียม เมื่อมีธุรกรรมอยากเข้ามามากกว่าที่ใส่ได้ ธุรกรรมที่เสนอค่าธรรมเนียมสูงกว่าจะได้เข้าก่อน ค่าธรรมเนียมรวมในบล็อกเพิ่มขึ้น และส่วนนั้นไหลตรงเข้าไปในสิ่งที่บล็อกจ่าย
ธุรกรรม coinbase คืออะไร?
ธุรกรรมแรกในทุกบล็อกนั้นพิเศษ มันไม่มีผู้ส่ง มันสร้างเหรียญขึ้นมาจากความว่างเปล่าและจ่ายให้ผู้ที่สร้างบล็อก
เรียกว่าธุรกรรม coinbase ไม่เกี่ยวอะไรกับกระดานเทรดที่ชื่อเดียวกัน
มันจ่ายรางวัลบล็อก ซึ่งมีสองส่วน
- เงินอุดหนุน (subsidy) คือเหรียญที่ออกใหม่ ตารางการปล่อยเหรียญของเชนเป็นตัวกำหนด และบนเหรียญส่วนใหญ่จะลดลงตามเวลา
- ค่าธรรมเนียมของธุรกรรมอื่นทุกรายการในบล็อก ผู้ใช้แนบมาเพื่อให้ธุรกรรมของตนได้เข้าบล็อก
บนพูล coinbase จ่ายให้พูล จากนั้นพูลแบ่งรางวัลให้ทุกคนที่ส่ง share ในรอบนั้น นี่ไม่ใช่ทางอ้อม แต่เป็นวิธีที่พูลจ่ายให้คนจำนวนมาก จากรางวัลที่มาเป็นการจ่ายก้อนเดียวที่แบ่งไม่ได้
ทำไมเรื่องนี้สำคัญขณะที่คุณขุด?
เมื่อเข้าใจรูปร่างของบล็อกแล้ว สามเรื่องจะชัดเจน และทั้งสามเรื่องเจอบ่อยมาก
- บล็อกใหม่ทำให้งานของคุณไร้ค่าทันที แฮชของบล็อกก่อนหน้าเปลี่ยนไปแล้ว ส่วนหัวที่คุณกำลังค้นหาจึงไม่มีอยู่อีกต่อไป อะไรที่คุณส่งให้มันหลังจากนั้นคือ share ที่ล้าสมัย และความเร็วเท่าไรก็แก้ไม่ได้
- พูลส่งงานใหม่ให้คุณบ่อยๆ ธุรกรรมใหม่ทุกรายการที่พูลอยากใส่จะเปลี่ยน merkle root งานที่ใหม่กว่ามีค่าธรรมเนียมมากกว่า ซึ่งหมายถึงรางวัลมากขึ้นจากความพยายามเท่าเดิม
- ขนาดของบล็อกไม่เคยอยู่ในการประมาณรายได้ สิ่งที่คุณได้ขึ้นอยู่กับความยาก เงินอุดหนุน และค่าธรรมเนียม ไม่ขึ้นกับจำนวนไบต์ในเนื้อหา
หน้าบล็อกของพูลแสดงความสูง รางวัล และเวลาที่พบของแต่ละบล็อก แถวนั้นคือส่วนที่ใช้ประโยชน์ได้จากทั้งหมดข้างต้น ส่วนที่เหลือดูได้ใน explorer รวมถึงธุรกรรม coinbase ที่จ่ายบล็อกนั้น