Pruk on Nostr: บิตคอยน์ทำงานอย่างไร? (Part 2) — ...
บิตคอยน์ทำงานอย่างไร? (Part 2) — ว่าด้วยการขุด
ในโพสต์ที่แล้ว เราคุยกันว่าบิตคอยน์เป็นเครือข่ายไร้ศูนย์กลางที่มีคอมพิวเตอร์ที่เรียกว่า โหนด ทำงานร่วมกันเพื่อเก็บบัญชีธุรกรรมทั้งหมดแบบเดียวกันกระจายทั่วโลก
แต่คำถามสำคัญคือ… โหนดไหนจะถูกเลือกเป็นผู้มีสิทธิ์บันทึกธุรกรรมชุดใหม่ลงในบัญชีธุรกรรม?
คำตอบก็คือ กระบวนการที่เรียกว่า "การขุด" (Mining) นั่นเองครับ
การขุดคืออะไร?
การขุด คือกระบวนการเพิ่มธุรกรรมใหม่ลงในบัญชีธุรกรรมของบิตคอยน์
ทุกโหนดในเครือข่ายจะเก็บธุรกรรมล่าสุดไว้ในพื้นที่เก็บข้อมูลชั่วคราวที่เรียกว่า Memory Pool
จากนั้นโหนดใด ๆ ก็ได้สามารถพยายามขุดโดยรวบรวมธุรกรรมจาก Memory Pool และบรรจุลงในสิ่งที่เรียกว่า "บล็อก" (Block)
แต่การสร้างบล็อกใหม่นี้ไม่ได้หมายความว่าแค่การรวบรวมธุรกรรมเฉย ๆ นะครับ
เพราะบล็อกใหม่จะได้รับการยอมรับและบันทึกลงบัญชีธุกรรมจากโหนดอื่น ๆ ก็ต่อเมื่อมีหลักฐานว่าได้ใช้พลังประมวลผล หรือที่เรียกว่า “Proof of Work” มากพอครับ
แล้ว Proof of Work ถูกสร้างขึ้นได้อย่างไร?
บล็อกที่ถูกสร้างขึ้นมานี้จะต้องผ่านกระบวนการที่เรียกว่า “ฟังก์ชัน Hash” ครับ
ลองนึกถึงเครื่องปั่นผลไม้ชนิดพิเศษที่มีความเที่ยงตรงสูงมากครับ ถ้าเรานำผลไม้ต่าง ๆ ใส่ลงไป เช่น กล้วย สตรอว์เบอร์รี และแอปเปิ้ล แล้วกดปั่น เราจะได้สมูทตี้ออกมา 1 แก้ว (ดูรูปที่ 2 ข้างบน) และไม่ว่าใครจะเอาส่วนผสมแบบเดียวกันไปปั่นก็จะได้สมูทตี้ที่มีรสชาติเหมือนกันเป๊ะ
ในทางกลับกันหากส่วนผสมแตกต่างกันเพียงเล็กน้อย สมูทตี้ที่ได้ก็จะมีรสชาติที่แตกต่างกันมาก และเราก็ไม่สามารถชิมรสชาติแล้วบอกได้ว่ามีอะไรอยู่ในนั้นบ้าง
ฟังก์ชัน Hash ก็ทำงานในลักษณะเดียวกันครับ
แต่เปลี่ยนจากเครื่องปั่นผลไม้มาเป็น “เครื่องปั่นข้อมูล” ที่ใช้สูตรทางคณิตศาสตร์แปลงข้อมูลอะไรก็ได้ (ไม่ว่าจะเป็นตัวหนังสือ ตัวเลข หรือแม้แต่ไฟล์) ให้ออกมาเป็นตัวเลขชุดหนึ่งที่เรียกว่า “ค่า Hash” (ดูรูปที่ 2 ข้างล่าง)
สิ่งสำคัญคือ
ถ้าใส่ข้อมูลเดิมเข้าไปจะได้ค่า Hash เดิมทุกครั้ง แต่ถ้าเปลี่ยนข้อมูลแม้แต่นิดเดียว ค่า Hash จะเปลี่ยนไปอย่างสิ้นเชิง และไม่สามารถย้อนกลับจากค่า Hash เพื่อหาข้อมูลเดิมได้ครับ
แล้วฟังก์ชัน Hash สร้าง Proof of Work ได้อย่างไร?
Proof of Work คือการแข่งขันค้นหาค่า Hash ที่ตรงตามเงื่อนไขของเครือข่ายบิตคอยน์ครับ
เมื่อสร้างบล็อกธุรกรรม ข้อมูลทั้งหมดของบล็อกจะถูกนำมาเข้าฟังก์ชัน Hash เพื่อคำนวณค่า Hash ถ้าค่าที่ได้ต่ำกว่าค่า “เป้าหมาย” ที่เครือข่ายกำหนด บล็อกนั้นจะถือว่าใช้ได้ และได้รับการยอมรับให้บันทึกลงในบัญชีธุรกรรมของทุกโหนด
แต่ปัญหาคือ เราไม่สามารถคาดเดาผลลัพธ์จากฟังก์ชัน Hash ล่วงหน้าได้ และไม่สามารถย้อนกลับจากค่า Hash ที่ต้องการเพื่อหาข้อมูลเดิมได้
ดังนั้น หากค่า Hash ยังไม่ต่ำกว่าเป้าหมาย จะต้องปรับเปลี่ยนข้อมูลบางอย่างในบล็อก (เช่น เปลี่ยนค่าตัวเลขสุ่มที่เรียกว่า Nonce) แล้วคำนวณใหม่ ซึ่งแม้จะเปลี่ยนข้อมูลเพียงเล็กน้อยค่า Hash ที่ได้ก็จะเปลี่ยนไปโดยสิ้นเชิง
กระบวนการนี้จะถูกทำซ้ำไปเรื่อย ๆ จนกว่าจะมีโหนดที่พบค่า Hash ที่ต่ำกว่าเป้าหมาย
เมื่อพบแล้ว บล็อกนั้นก็จะได้รับการยอมรับให้ถูกเพิ่มลงในบัญชีธุรกรรมของทุกโหนดในเครือข่าย (ดูรูปที่ 3) และกระบวนการสร้างบล็อกใหม่ก็จะเริ่มต้นอีกครั้งครับ
เพื่อจูงใจให้โหนดต่าง ๆ ใช้พลังประมวลผลในการแข่งขันสร้างบล็อกใหม่ บิตคอยน์จึงมี “รางวัลบล็อก” (Block Reward) ครับ
รางวัลบล็อกนี้จะอยู่ในรูปของธุรกรรมพิเศษที่เป็นธุรกรรมแรกของบล็อก โดยไม่มีผู้ส่ง แต่มีผู้รับเพียงอย่างเดียว จึงเป็นกลไกที่ทำให้เกิดบิตคอยน์ใหม่ในระบบ
หากท่านเป็นเจ้าของโหนดที่สามารถสร้างบล็อกได้สำเร็จ ท่านก็สามารถ สร้างบิตคอยน์เหรียญใหม่เป็นรางวัลให้ตัวเองได้ครับ
อย่างไรก็ตาม รางวัลนี้ไม่ได้คงที่ตลอดไปนะครับ
บิตคอยน์มีกลไกที่เรียกว่า "Halving" หรือการลดรางวัลบล็อกลงครึ่งหนึ่งทุก ๆ 210,000 บล็อก (ประมาณ 4 ปี)
ปี 2009: รางวัลเริ่มต้นที่ 50 BTC ต่อบล็อก
ปี 2012: ลดลงเหลือ 25 BTC
ปี 2016: ลดลงเหลือ 12.5 BTC
ปี 2020: ลดลงเหลือ 6.25 BTC
ปี 2024: (ปัจจุบัน) เหลือ 3.125 BTC
รางวัลบล็อกนี้จะลดลงเรื่อย ๆ จนกระทั่งประมาณปี 2140 จะไม่มีบิตคอยน์ใหม่ถูกขุดเพิ่มอีกต่อไป และจะมีบิตคอยน์รวมกัน เกือบ 21 ล้านเหรียญ ซึ่งเป็นจำนวนสูงสุดของระบบ
นี่คือเหตุผลที่เรียกกระบวนการสร้างบล็อกธุรกรรมว่า "การขุด" (Mining) เพราะมันคล้ายกับการขุดทองที่มีอยู่จำกัด การที่มีอยู่จำกัดนี้เองคือเหตุที่ทำให้บิตคอยน์สามารถรักษามูลค่าได้ครับ
และที่สำคัญ การขุดไม่ได้เป็นแค่กระบวนการสร้างบิตคอยน์ใหม่เท่านั้น แต่ยังเป็นหัวใจสำคัญที่ทำให้เครือข่ายปลอดภัยจากการแก้ไขข้อมูลย้อนหลัง
เพราะหากใครต้องการเปลี่ยนแปลงข้อมูลในบล็อกที่ถูกบันทึกไปแล้ว เขาจะต้องขุดบล็อกใหม่ทั้งหมดตั้งแต่จุดที่ต้องการเปลี่ยนแปลง พร้อมกับแข่งพลังประมวลผลกับเครือข่ายที่กำลังสร้างบล็อกใหม่ตลอดเวลา ซึ่งต้องใช้ทรัพยากรจำนวนมหาศาล
ทำให้ระบบบิตคอยน์สามารถรักษาความสมบูรณ์ของข้อมูลได้โดยไม่ต้องพึ่งพาใครเป็นศูนย์กลาง
ถึงตรงนี้ เรารู้แล้วว่าการขุดคืออะไรและนักขุดได้รับรางวัลอย่างไร
แต่การขุดไม่ได้ง่ายเสมอไปครับ เพราะเครือข่ายบิตคอยน์มีกลไกที่ทำให้การขุดยากขึ้นตามเวลา
ทำไมเป้าหมายต่ำลงถึงทำให้การขุดยากขึ้น?
ถ้าขุดเร็วเกินไป จะเกิดปัญหาอะไร?
บิตคอยน์ปรับสมดุลของระบบอย่างไร?
เราจะมาพูดถึงกลไกสำคัญเหล่านี้ในโพสต์ถัดไปครับ
#siamstr
ในโพสต์ที่แล้ว เราคุยกันว่าบิตคอยน์เป็นเครือข่ายไร้ศูนย์กลางที่มีคอมพิวเตอร์ที่เรียกว่า โหนด ทำงานร่วมกันเพื่อเก็บบัญชีธุรกรรมทั้งหมดแบบเดียวกันกระจายทั่วโลก
แต่คำถามสำคัญคือ… โหนดไหนจะถูกเลือกเป็นผู้มีสิทธิ์บันทึกธุรกรรมชุดใหม่ลงในบัญชีธุรกรรม?
คำตอบก็คือ กระบวนการที่เรียกว่า "การขุด" (Mining) นั่นเองครับ

การขุดคืออะไร?
การขุด คือกระบวนการเพิ่มธุรกรรมใหม่ลงในบัญชีธุรกรรมของบิตคอยน์
ทุกโหนดในเครือข่ายจะเก็บธุรกรรมล่าสุดไว้ในพื้นที่เก็บข้อมูลชั่วคราวที่เรียกว่า Memory Pool
จากนั้นโหนดใด ๆ ก็ได้สามารถพยายามขุดโดยรวบรวมธุรกรรมจาก Memory Pool และบรรจุลงในสิ่งที่เรียกว่า "บล็อก" (Block)
แต่การสร้างบล็อกใหม่นี้ไม่ได้หมายความว่าแค่การรวบรวมธุรกรรมเฉย ๆ นะครับ
เพราะบล็อกใหม่จะได้รับการยอมรับและบันทึกลงบัญชีธุกรรมจากโหนดอื่น ๆ ก็ต่อเมื่อมีหลักฐานว่าได้ใช้พลังประมวลผล หรือที่เรียกว่า “Proof of Work” มากพอครับ
แล้ว Proof of Work ถูกสร้างขึ้นได้อย่างไร?
บล็อกที่ถูกสร้างขึ้นมานี้จะต้องผ่านกระบวนการที่เรียกว่า “ฟังก์ชัน Hash” ครับ
ลองนึกถึงเครื่องปั่นผลไม้ชนิดพิเศษที่มีความเที่ยงตรงสูงมากครับ ถ้าเรานำผลไม้ต่าง ๆ ใส่ลงไป เช่น กล้วย สตรอว์เบอร์รี และแอปเปิ้ล แล้วกดปั่น เราจะได้สมูทตี้ออกมา 1 แก้ว (ดูรูปที่ 2 ข้างบน) และไม่ว่าใครจะเอาส่วนผสมแบบเดียวกันไปปั่นก็จะได้สมูทตี้ที่มีรสชาติเหมือนกันเป๊ะ
ในทางกลับกันหากส่วนผสมแตกต่างกันเพียงเล็กน้อย สมูทตี้ที่ได้ก็จะมีรสชาติที่แตกต่างกันมาก และเราก็ไม่สามารถชิมรสชาติแล้วบอกได้ว่ามีอะไรอยู่ในนั้นบ้าง
ฟังก์ชัน Hash ก็ทำงานในลักษณะเดียวกันครับ
แต่เปลี่ยนจากเครื่องปั่นผลไม้มาเป็น “เครื่องปั่นข้อมูล” ที่ใช้สูตรทางคณิตศาสตร์แปลงข้อมูลอะไรก็ได้ (ไม่ว่าจะเป็นตัวหนังสือ ตัวเลข หรือแม้แต่ไฟล์) ให้ออกมาเป็นตัวเลขชุดหนึ่งที่เรียกว่า “ค่า Hash” (ดูรูปที่ 2 ข้างล่าง)

สิ่งสำคัญคือ
ถ้าใส่ข้อมูลเดิมเข้าไปจะได้ค่า Hash เดิมทุกครั้ง แต่ถ้าเปลี่ยนข้อมูลแม้แต่นิดเดียว ค่า Hash จะเปลี่ยนไปอย่างสิ้นเชิง และไม่สามารถย้อนกลับจากค่า Hash เพื่อหาข้อมูลเดิมได้ครับ
แล้วฟังก์ชัน Hash สร้าง Proof of Work ได้อย่างไร?
Proof of Work คือการแข่งขันค้นหาค่า Hash ที่ตรงตามเงื่อนไขของเครือข่ายบิตคอยน์ครับ
เมื่อสร้างบล็อกธุรกรรม ข้อมูลทั้งหมดของบล็อกจะถูกนำมาเข้าฟังก์ชัน Hash เพื่อคำนวณค่า Hash ถ้าค่าที่ได้ต่ำกว่าค่า “เป้าหมาย” ที่เครือข่ายกำหนด บล็อกนั้นจะถือว่าใช้ได้ และได้รับการยอมรับให้บันทึกลงในบัญชีธุรกรรมของทุกโหนด
แต่ปัญหาคือ เราไม่สามารถคาดเดาผลลัพธ์จากฟังก์ชัน Hash ล่วงหน้าได้ และไม่สามารถย้อนกลับจากค่า Hash ที่ต้องการเพื่อหาข้อมูลเดิมได้
ดังนั้น หากค่า Hash ยังไม่ต่ำกว่าเป้าหมาย จะต้องปรับเปลี่ยนข้อมูลบางอย่างในบล็อก (เช่น เปลี่ยนค่าตัวเลขสุ่มที่เรียกว่า Nonce) แล้วคำนวณใหม่ ซึ่งแม้จะเปลี่ยนข้อมูลเพียงเล็กน้อยค่า Hash ที่ได้ก็จะเปลี่ยนไปโดยสิ้นเชิง
กระบวนการนี้จะถูกทำซ้ำไปเรื่อย ๆ จนกว่าจะมีโหนดที่พบค่า Hash ที่ต่ำกว่าเป้าหมาย
เมื่อพบแล้ว บล็อกนั้นก็จะได้รับการยอมรับให้ถูกเพิ่มลงในบัญชีธุรกรรมของทุกโหนดในเครือข่าย (ดูรูปที่ 3) และกระบวนการสร้างบล็อกใหม่ก็จะเริ่มต้นอีกครั้งครับ

เพื่อจูงใจให้โหนดต่าง ๆ ใช้พลังประมวลผลในการแข่งขันสร้างบล็อกใหม่ บิตคอยน์จึงมี “รางวัลบล็อก” (Block Reward) ครับ
รางวัลบล็อกนี้จะอยู่ในรูปของธุรกรรมพิเศษที่เป็นธุรกรรมแรกของบล็อก โดยไม่มีผู้ส่ง แต่มีผู้รับเพียงอย่างเดียว จึงเป็นกลไกที่ทำให้เกิดบิตคอยน์ใหม่ในระบบ
หากท่านเป็นเจ้าของโหนดที่สามารถสร้างบล็อกได้สำเร็จ ท่านก็สามารถ สร้างบิตคอยน์เหรียญใหม่เป็นรางวัลให้ตัวเองได้ครับ
อย่างไรก็ตาม รางวัลนี้ไม่ได้คงที่ตลอดไปนะครับ
บิตคอยน์มีกลไกที่เรียกว่า "Halving" หรือการลดรางวัลบล็อกลงครึ่งหนึ่งทุก ๆ 210,000 บล็อก (ประมาณ 4 ปี)
ปี 2009: รางวัลเริ่มต้นที่ 50 BTC ต่อบล็อก
ปี 2012: ลดลงเหลือ 25 BTC
ปี 2016: ลดลงเหลือ 12.5 BTC
ปี 2020: ลดลงเหลือ 6.25 BTC
ปี 2024: (ปัจจุบัน) เหลือ 3.125 BTC
รางวัลบล็อกนี้จะลดลงเรื่อย ๆ จนกระทั่งประมาณปี 2140 จะไม่มีบิตคอยน์ใหม่ถูกขุดเพิ่มอีกต่อไป และจะมีบิตคอยน์รวมกัน เกือบ 21 ล้านเหรียญ ซึ่งเป็นจำนวนสูงสุดของระบบ
นี่คือเหตุผลที่เรียกกระบวนการสร้างบล็อกธุรกรรมว่า "การขุด" (Mining) เพราะมันคล้ายกับการขุดทองที่มีอยู่จำกัด การที่มีอยู่จำกัดนี้เองคือเหตุที่ทำให้บิตคอยน์สามารถรักษามูลค่าได้ครับ
และที่สำคัญ การขุดไม่ได้เป็นแค่กระบวนการสร้างบิตคอยน์ใหม่เท่านั้น แต่ยังเป็นหัวใจสำคัญที่ทำให้เครือข่ายปลอดภัยจากการแก้ไขข้อมูลย้อนหลัง
เพราะหากใครต้องการเปลี่ยนแปลงข้อมูลในบล็อกที่ถูกบันทึกไปแล้ว เขาจะต้องขุดบล็อกใหม่ทั้งหมดตั้งแต่จุดที่ต้องการเปลี่ยนแปลง พร้อมกับแข่งพลังประมวลผลกับเครือข่ายที่กำลังสร้างบล็อกใหม่ตลอดเวลา ซึ่งต้องใช้ทรัพยากรจำนวนมหาศาล
ทำให้ระบบบิตคอยน์สามารถรักษาความสมบูรณ์ของข้อมูลได้โดยไม่ต้องพึ่งพาใครเป็นศูนย์กลาง
ถึงตรงนี้ เรารู้แล้วว่าการขุดคืออะไรและนักขุดได้รับรางวัลอย่างไร
แต่การขุดไม่ได้ง่ายเสมอไปครับ เพราะเครือข่ายบิตคอยน์มีกลไกที่ทำให้การขุดยากขึ้นตามเวลา
ทำไมเป้าหมายต่ำลงถึงทำให้การขุดยากขึ้น?
ถ้าขุดเร็วเกินไป จะเกิดปัญหาอะไร?
บิตคอยน์ปรับสมดุลของระบบอย่างไร?
เราจะมาพูดถึงกลไกสำคัญเหล่านี้ในโพสต์ถัดไปครับ
#siamstr