จัดทำขึ้นเพื่อการศึกษาเท่านั้น ไม่ใช่คำแนะนำการลงทุน การลงทุนอาจทำให้สูญเสียเงินลงทุนได้
คำตอบโดยตรง
การปรับความยากของ Bitcoin เป็นกฎฉันทามติแบบกำหนดแน่นอนที่เปลี่ยนค่าแฮช Proof of Work สูงสุดซึ่งยอมรับได้ หรือ target เป็นระยะ เพื่อผลักช่วงเวลาสร้างบล็อกเฉลี่ยระยะยาวให้เข้าใกล้สิบนาทีเมื่ออัตราแฮชที่ทำงานเปลี่ยนไป บน mainnet ค่าเป้าหมายมักคงที่ตลอด 2,016 บล็อกแล้วจึงคำนวณใหม่สำหรับรอบถัดไป โหนดตรวจสอบทุกโหนดอนุมานค่าเป้าหมายบังคับเดียวกันจากส่วนหัวก่อนหน้า นักขุดไม่ได้ลงคะแนนและตัวสำรวจบล็อกไม่ได้เป็นผู้กำหนด
Proof of Work ของส่วนหัวจะถูกต้องต่อเมื่อแฮชซึ่งตีความเป็นจำนวนเต็มน้อยกว่าหรือเท่ากับค่าเป้าหมายที่เข้ารหัสในช่อง nBits ขนาด 32 บิต ค่าเป้าหมายที่เล็กลงยอมรับแฮชน้อยลง จึงต้องลองโดยคาดหมายมากขึ้น ตามธรรมเนียม ความยากเป็นจำนวนสัมพัทธ์ที่แปรผกผันกับค่าเป้าหมาย:
D = T₁ / T
ในที่นี้ T คือค่าเป้าหมายปัจจุบัน และ T₁ คือค่าเป้าหมายอ้างอิงสำหรับความยาก 1 ดังนั้นค่าเป้าหมายกับความยากจึงเคลื่อนไหวคนละทิศ ทั้งสองค่าไม่ได้วัดจำนวนเครื่อง พลังงาน ตัวตนนักขุด หรืออัตราแฮชที่สังเกตได้โดยตรง
สิบนาทีเป็นค่าคาดหมาย ไม่ใช่ตารางเวลา การลองแฮชและการมาถึงของบล็อกเป็นแบบสุ่ม สองบล็อกอาจห่างกันไม่กี่วินาที หรืออาจไม่มีบล็อกหนึ่งชั่วโมงแม้ค่าเป้าหมายและอัตราแฮชคงที่ การคำนวณใหม่เป็นป้อนกลับล่าช้าตลอดหนึ่งรอบ ช่วยลดการเบี่ยงเบนของความถี่ที่ต่อเนื่อง แต่ไม่กำจัดความแปรปรวนระยะสั้นหรือตอบสนองต่อแรงกระแทกของอัตราแฮชทันที
การปรับความยากมีผลต่อจังหวะเวลาของเหตุการณ์ตามความสูง รวมถึงการลดเงินอุดหนุน แต่ไม่ได้กำหนดจำนวนเงินอุดหนุน ช่วง 210,000 บล็อก หรือกฎอุปทานสุดท้าย และไม่ได้เลือกเชนมาตรฐานด้วยตัวเอง กฎเลือกฟอร์กของ Bitcoin เปรียบเทียบ chainwork สะสมหลังตรวจสอบส่วนหัวและบล็อกแล้ว ความยากของบล็อกเดียวไม่ใช่งานสะสม
วิธีวิเคราะห์การคำนวณใหม่
- กำหนดเครือข่ายและชุดกฎ Mainnet, testnet เดิม, Testnet4, signet และ regtest ไม่ได้ใช้ข้อยกเว้นเหมือนกันทั้งหมด บันทึกเชน ชุดกฎซอฟต์แวร์ ความสูงผู้สมัคร และสถานะการเปิดใช้การคำนวณใหม่หรือบล็อกความยากต่ำสุดพิเศษ
- ถอดรหัสค่าเป้าหมายที่อ้าง ขยายค่า
nBitsแบบกะทัดรัดของส่วนหัวผู้สมัครเป็นค่าเป้าหมายTปฏิเสธค่าเป้าหมายที่เป็นลบ ศูนย์ ล้น หรือสูงกว่าpowLimitแล้วกำหนดให้แฮชส่วนหัวต้องเป็น≤ T - หาขอบรอบการปรับ บน mainnet ต้องใช้ค่าเป้าหมายใหม่เมื่อความสูงผู้สมัครหารด้วย 2,016 ลงตัว ที่ความสูงอื่น
nBitsของบล็อกก่อนหน้าต้องคงเดิม - เลือกหน้าต่าง timestamp ที่ขอบ mainnet Bitcoin Core นำ timestamp ของบล็อกแรกในรอบก่อนหน้าซึ่งมี 2,016 บล็อกไปลบออกจาก timestamp ของบล็อกสุดท้าย ปลายทั้งสองครอบคลุม 2,016 บล็อกแต่มีช่วงระหว่างบล็อกเพียง 2,015 ช่วง ระยะเป้าหมายตามชื่อยังคงเป็น
2,016 × 600 = 1,209,600วินาที - จำกัดเวลาที่ผ่านไป กำหนด
t = clamp(t_actual, 302,400, 4,838,400)วินาที ตั้งแต่หนึ่งในสี่ถึงสี่เท่าของ 14 วันตามชื่อ Timestamp ในส่วนหัวเป็นช่องฉันทามติที่นักขุดให้มาและอยู่ภายใต้ข้อจำกัดความถูกต้องอื่น ไม่ใช่เวลาที่โหนดได้รับอย่างแม่นยำ - คำนวณและเข้ารหัสค่าเป้าหมายใหม่ ตามกฎ mainnet ปัจจุบัน คำนวณจำนวนเต็ม
T_new = min(powLimit, T_old × t / 1,209,600)แล้วเข้ารหัสผลแบบกะทัดรัดลงnBitsการหารจำนวนเต็มและการปัดเศษรูปแบบกะทัดรัดอาจทำให้อัตราส่วนที่แสดงต่างจากเลขทศนิยมอุดมคติเล็กน้อย - ตีความผลเชิงความน่าจะเป็น โดยประมาณ
D_new / D_old = T_old / T_newเปรียบเทียบการปรับกับการกระจายเวลาบล็อกและอัตราแฮชที่ระบุชัดว่าเป็นค่าประมาณ และแยกออกจากข้อสรุปเรื่องรายได้ chainwork การกระจุกตัว และความเสี่ยงการยืนยัน
สูตร mainnet ใช้ค่าเป้าหมายของบล็อกสุดท้ายเป็น T_old ส่วน Testnet4 ต่างออกไปโดยตั้งใจ: BIP 94 อนุญาตบล็อกความยากต่ำสุดพิเศษหลัง timestamp ล่าช้าเพียงพอ ห้ามข้อยกเว้นนี้กับบล็อกแรกของรอบ และใช้ความยากจริงของบล็อกแรกเป็นฐานคำนวณ เพื่อไม่ให้ข้อยกเว้นชั่วคราวปนเปื้อนรอบถัดไป Regtest มักปิดการคำนวณใหม่ คำอธิบายกฎที่ไม่ระบุเครือข่ายจึงไม่ครบถ้วน
ตัวอย่างคำนวณ
1. รอบตามชื่อที่ไม่เปลี่ยนแปลง
สมมติ T_old = 10 ในหน่วยค่าเป้าหมายใดก็ได้ และระยะที่วัดได้เท่ากับ 1,209,600 วินาทีพอดี ขีดจำกัดไม่เปลี่ยนค่า:
T_new = 10 × 1,209,600 / 1,209,600 = 10
อัตราส่วนความยากคือ 10 / 10 = 1 ดังนั้นความยากในอุดมคติไม่เปลี่ยน นี่ไม่ได้หมายความว่าทุกบล็อกใช้เวลาสิบนาที ช่วงเร็วและช้าแบบสุ่มในหน้าต่างอาจหักล้างกัน
2. รอบเร็ว 12 วัน
สมมติ timestamp ปลายทั้งสองห่างกัน 12 วัน เพราะอยู่ในขีดจำกัด อัตราส่วนค่าเป้าหมายคือ 12 / 14 = 6/7 ค่าเป้าหมายใหม่ประมาณ 85.7143% ของค่าเดิม ขณะที่:
D_new / D_old ≈ 14 / 12 = 1.166667
ความยากในอุดมคติจึงเพิ่มประมาณ 16.67% ไม่ใช่ 14.29% เปอร์เซ็นต์การลดค่าเป้าหมายและการเพิ่มความยากไม่เท่ากันเพราะเป็นปริมาณส่วนกลับ
3. ขีดจำกัดสี่เท่า
หาก timestamp ปลายทั้งสองห่างเพียง 1.75 วัน การคำนวณใช้ค่าต่ำสุด 3.5 วัน ค่าเป้าหมายอาจลดเหลือประมาณหนึ่งในสี่ และความยากอาจเพิ่มประมาณสี่เท่าในการปรับ mainnet ครั้งเดียว
หาก timestamp ครอบคลุม 70 วัน การคำนวณใช้ค่าสูงสุด 56 วัน ค่าเป้าหมายอาจเพิ่มประมาณสี่เท่าและความยากลดเหลือประมาณหนึ่งในสี่ เว้นแต่ powLimit จะจำกัดค่าเป้าหมายก่อน คำว่า “ขีดจำกัดสี่เท่า” ต้องระบุว่าหมายถึงค่าเป้าหมายหรือความยากและทิศทางใด
4. แรงกระแทกอัตราแฮชกลางรอบ
ใช้ค่าคาดหมายแบบง่าย: 1,008 บล็อกแรกถูกขุดด้วยอัตราที่สอดคล้องกับช่วงสิบนาทีและใช้เวลาประมาณเจ็ดวัน จากนั้นอัตราแฮชหายไป 30% ขณะที่ค่าเป้าหมายคงเดิม ส่วนที่เหลือ 70% จะมีช่วงคาดหมาย 10 / 0.70 ≈ 14.286 นาที ดังนั้น 1,008 บล็อกท้ายใช้ประมาณสิบวัน และทั้งรอบประมาณ 17 วัน
เมื่อไม่คิดผลของปลายช่วง ความสุ่ม และการปัดเศษแบบกะทัดรัด ตัวคูณค่าเป้าหมายคือ 17/14 ≈ 1.214286 ส่วนตัวคูณความยากคือ 14/17 ≈ 0.823529 หรือลดลงประมาณ 17.65% ไม่ได้ลดเต็ม 30% เพราะแรงกระแทกมีผลเพียงครึ่งรอบ หากอัตราแฮชยังอยู่ที่ 70% หลังการปรับบางส่วนนี้ บล็อกยังคาดว่าจะช้ากว่าสิบนาที และรอบถัดไปจะให้ป้อนกลับเพิ่ม
ความเสี่ยงและข้อผิดพลาดในการทบทวน
ข้อผิดพลาดด้านกฎและคณิตศาสตร์
- เรียกความยากว่าเป็นเกณฑ์เอง แทนที่จะแยกค่าเป้าหมายออกจากตัวชี้วัดสัมพัทธ์แบบผกผัน
- กลับสูตรจนรอบเร็วเพิ่มค่าเป้าหมาย หรือรอบช้าเพิ่มความยาก
- ถือว่า 2,016 บล็อกคือช่วง timestamp ที่วัด 2,016 ช่วง ทั้งที่การคำนวณ mainnet ปัจจุบันครอบคลุม 2,015 ช่วง
- ลืมขีดจำกัด 3.5 และ 56 วัน,
powLimit, การหารจำนวนเต็ม หรือการปัดเศษnBitsแบบกะทัดรัด - นำข้อความของ mainnet ไปใช้กับ Testnet4, testnet เดิม, signet, regtest หรือเชน Proof of Work อื่น
- ถือการคาดการณ์ของตัวสำรวจเป็นข้อมูลเข้าฉันทามติ แทนที่จะเป็นค่าประมาณก่อนมีบล็อกขอบ
- ใช้เวลารับในเครื่องแทน timestamp ส่วนหัวที่การคำนวณฉันทามติใช้
- สับสนความยากบล็อกปัจจุบัน งานต่อบล็อก chainwork สะสม หรือผลการเลือกฟอร์ก
การวัดและการอนุมาน
- ถืออัตราแฮชประมาณว่าเป็นรายชื่อเครื่องออนไลน์โดยตรง แทนที่จะเป็นข้ออนุมานจากงานและการมาถึงแบบสุ่ม
- คาดการณ์การปรับจากส่วนเล็กของรอบ ซึ่งความแปรปรวนเวลาบล็อกปกติอาจมีอิทธิพลกว่า
- มองความยากที่เพิ่มเป็นหลักฐานว่าราคา รายได้นักขุด การใช้พลังงาน หรือการกระจายศูนย์เพิ่ม
- มองความยากที่ลดเป็นหลักฐานเครือข่ายล้มเหลวโดยไม่ดูงานสัมบูรณ์ การกระจุกตัว และระยะเวลา
- เปรียบเทียบตัวเลขความยากข้ามเชนโดยไม่ปรับฟังก์ชันแฮช ค่าเป้าหมายอ้างอิง และกฎการปรับให้เทียบกัน
- อธิบายสิบนาทีว่าเป็นกำหนดเส้นตาย การรับประกันบริการ หรือเวลายืนยันคงที่
- อนุมานกำไรนักขุดโดยไม่ดูรางวัลบล็อก ค่าธรรมเนียม uptime เงื่อนไขพูล การป้องกันความเสี่ยง ไฟฟ้า เงินทุน และประสิทธิภาพ
ความปลอดภัยและการดำเนินงาน
- ถือการคำนวณใหม่เป็นการป้องกันทันทีต่อการไหลเข้าหรือออกของอัตราแฮชอย่างฉับพลันในรอบปัจจุบัน
- สมมติว่าความยากต่ำลงเพิ่มความจุบล็อกหรือล้างธุรกรรมค้างทันที
- เลือกนโยบายยืนยันจากความยากอย่างเดียวโดยไม่ดูงานสะสม ความสามารถในการปรับโครงสร้าง และมูลค่า
- มองข้ามแรงจูงใจบิดเบือน timestamp และมาตรการเฉพาะโปรโตคอลเมื่อประเมินกลไกการปรับ
- เปลี่ยนคณิตศาสตร์ฉันทามติ ดัชนีขอบ หรือการเข้ารหัสแบบกะทัดรัดโดยไม่มีชุดทดสอบข้ามการใช้งานและแผนเปิดใช้
ความเข้าใจผิดที่พบบ่อย
- ทุกบล็อก Bitcoin ใช้เวลาสิบนาที สิบนาทีคือค่าเฉลี่ยเป้าหมายเมื่ออัตราแฮชสอดคล้อง การมาถึงแต่ละครั้งยังเป็นแบบสุ่ม
- นักขุดลงคะแนนเลือกความยากถัดไป โหนดตรวจสอบคำนวณ
nBitsที่อนุญาตเอง บล็อกที่อ้างค่าอื่นไม่ถูกต้อง - ค่าเป้าหมายเล็กลง 20% หมายถึงความยากสูงขึ้น 20% ความสัมพันธ์เป็นผกผัน: ตัวคูณค่าเป้าหมาย 0.8 หมายถึงตัวคูณความยาก 1/0.8 = 1.25 หรือสูงขึ้น 25%
- การปรับวัดอัตราแฮชโดยตรง มันตอบสนองต่อการผลิตบล็อกที่มี timestamp ตัวเลขอัตราแฮชทุกค่าคือค่าประมาณที่มีสมมติฐานด้านการสุ่มตัวอย่างและเวลา
- ความยากคือนโยบายการเงินของ Bitcoin การปรับช่วยรักษาจังหวะเวลาของการออกตามความสูง ส่วนกฎฉันทามติอื่นกำหนดมูลค่าเงินอุดหนุนและการลดลง
หัวข้อที่เกี่ยวข้อง
แหล่งข้อมูล
- Bitcoin: A Peer-to-Peer Electronic Cash System - Bitcoin.org (เข้าถึงเมื่อ: 2026-08-19)
- Bitcoin Core: Proof-of-Work Calculations - Bitcoin Core (เข้าถึงเมื่อ: 2026-08-19)
- Bitcoin Core: Network Consensus Parameters - Bitcoin Core (เข้าถึงเมื่อ: 2026-08-19)
- Bitcoin Core: Consensus Parameter Definitions - Bitcoin Core (เข้าถึงเมื่อ: 2026-08-19)
- Bitcoin Developer Guide: Block Chain - Bitcoin Project (เข้าถึงเมื่อ: 2026-08-19)
- Bitcoin Developer Reference: Block Headers - Bitcoin Project (เข้าถึงเมื่อ: 2026-08-19)
- BIP 94: Testnet 4 - Bitcoin Improvement Proposals (เข้าถึงเมื่อ: 2026-08-19)
- Bitcoin Core RPC: getblockheader - Bitcoin Project (เข้าถึงเมื่อ: 2026-08-19)