ข้ามไปยังเนื้อหา

การขุด Bitcoin: แม่แบบบล็อก Proof of Work พูล และเศรษฐศาสตร์

การขุด Bitcoin สร้างบล็อกผู้สมัครที่ถูกต้องและค้นหาพื้นที่ส่วนหัว SHA-256d เพื่อหา proof of work ที่ต่ำกว่าเป้าหมายเครือข่าย ควรแยกวิเคราะห์ตัวตนแม่แบบ ความถูกต้องของธุรกรรมและ coinbase การค้นหา nonce และ extranonce การตรวจสอบโดยโหนดเต็ม การเผยแพร่ ความเสี่ยงบล็อกเก่า share ของพูล กฎการจ่าย ความยาก พลังงาน และเศรษฐศาสตร์การดำเนินงาน

อัปเดต

จัดทำขึ้นเพื่อการศึกษาเท่านั้น ไม่ใช่คำแนะนำการลงทุน การลงทุนอาจทำให้สูญเสียเงินลงทุนได้

คำตอบโดยตรง

การขุด Bitcoin คือกระบวนการสร้างบล็อกผู้สมัครที่ถูกต้องและแฮชส่วนหัวขนาด 80 ไบต์ซ้ำด้วย SHA-256d จนได้ผลลัพธ์ที่มีค่าไม่เกินเป้าหมายฉันทามติ นักขุดที่สำเร็จเสนอให้เครือข่ายพิจารณาบล็อกนั้น การขุดไม่ทำให้ธุรกรรมที่ผิดกลายเป็นถูก ไม่ตัดสินความจริงนอกโปรโตคอล และไม่ให้อำนาจนักขุดเหนือเหรียญของผู้ใช้อื่น เพราะโหนดเต็มทุกโหนดตรวจ proof of work ส่วนหัว ธุรกรรม สคริปต์ เอาต์พุตที่ถูกใช้แล้ว ขีดจำกัดบล็อก และจำนวน coinbase ที่อนุญาตอย่างอิสระ

โหนดขุดหรือพูลรับข้อมูลผู้สมัครผ่านอินเทอร์เฟซอย่าง getblocktemplate ช่องที่เกี่ยวข้องได้แก่ version, previousblockhash, transactions, coinbasevalue, target, bits, height, weightlimit และ sigoplimit แม่แบบเป็นจุดตั้งต้นที่คัดเลือกตามนโยบาย ไม่ใช่คำมั่นว่าต้องรวมทุกธุรกรรมในรายการหรือบล็อกที่แก้ไขแล้วจะได้รับการยอมรับ ความถูกต้องตามฉันทามติ นโยบาย mempool ท้องถิ่น การเลือกค่าธรรมเนียม และกฎของพูลเป็นคนละชั้นกัน

ฮาร์ดแวร์ขุดค้นหาความแปรผันของส่วนหัว เมื่อใช้ช่วง nonce 32 บิตหมด ซอฟต์แวร์จะเปลี่ยนข้อมูล extranonce ใน coinbase สร้างราก Merkle ใหม่ และอาจปรับช่องเวลาหรือเวอร์ชันที่อนุญาตเพื่อสร้างพื้นที่ส่วนหัวใหม่ แต่ละแฮชเป็นการทดลองอิสระ แฮชเรตที่เข้ากันได้มากขึ้นเพิ่มความถี่ความสำเร็จที่คาดหวัง แต่ไม่ได้กำหนดเวลาบล็อกใดหรือรับประกันผลภายในกำหนด

การขุดเดี่ยวจัดสรรเอาต์พุต coinbase ที่อนุญาตทั้งหมดของบล็อกที่ถูกต้องให้นักขุดเดี่ยว แต่มีความแปรปรวนการจ่ายสูง การขุดผ่านพูลรวมงานและใช้เป้าหมาย share ที่ง่ายกว่าเพื่อประมาณผลงาน มีเพียง share ที่ผ่านเป้าหมายเครือข่ายด้วยเท่านั้นที่เป็นบล็อกได้ พูลลดความแปรปรวนการจ่ายได้ แต่ไม่เพิ่มการออกเหรียญรวมที่เครือข่ายคาดหวัง การรับฝาก การควบคุมแม่แบบ การตรวจ share และภาระจ่ายแบบ PPS, PPLNS หรือแบบอื่นสร้างความเสี่ยงคู่สัญญาและการกระจุกตัวแยกต่างหาก

วิธีวิเคราะห์การขุด

  1. กำหนดตัวตนและอำนาจ บันทึก chain, network, client version, ชุดกฎ, bestblockhash, ผู้ให้แม่แบบ, endpoint ของพูล, ตัวตนผู้รับเงิน และเวลาสังเกต แยกโหนด ผู้สร้างแม่แบบ ผู้ดำเนินพูล เฟิร์มแวร์ สถานที่ และเจ้าของอุปกรณ์ออกจากกัน
  2. ทำซ้ำการเลือกผู้สมัคร บันทึกภาพ mempool และ UTXO set; ตรวจความถูกต้องของธุรกรรม การพึ่งพา ค่าธรรมเนียม น้ำหนัก ต้นทุนปฏิบัติการลายเซ็น locktime และข้อผูกมัด witness สร้างผู้สมัครซ้ำและอธิบายการเลือกเชิงนโยบาย อย่าถือว่า fee rate เพียงอย่างเดียวคือฉันทามติ
  3. กระทบยอด coinbase และส่วนหัว ตรวจเงินอุดหนุนตามความสูง ค่าธรรมเนียมรวม เอาต์พุต ข้อผูกมัด แฮชก่อนหน้า และต้นไม้ Merkle ติดตาม nonce ที่แก้ได้ extranonce ของ coinbase, Merkle root, time และ version bits และปฏิเสธแม่แบบที่เกินขีดจำกัดฉันทามติ
  4. ตรวจการค้นหาและส่ง proof ถอดรหัสเป้าหมายแบบย่อและทดสอบ block_hash <= target ตามกฎลำดับไบต์และการแฮชของเครือข่าย เมื่อพบคำตอบ ให้สร้างบล็อกเต็ม ส่งผ่าน submitblock หรือโปรโตคอลที่ใช้งาน และเก็บหลักฐานการยอมรับหรือปฏิเสธ
  5. ติดตามการตรวจสอบอิสระและการเผยแพร่ เปรียบเทียบหลายโหนดเต็มสำหรับการตรวจส่วนหัว ธุรกรรม สคริปต์ coinbase และ chainwork วัดการเผยแพร่ ปลายเชนที่แข่งกัน ผลลัพธ์ stale หรือ orphan และการจัดการ reorganization การพบ proof ไม่เท่ากับการคงอยู่บนเชนหลัก
  6. กระทบยอดรางวัลและบัญชีพูล แยก coinbase, subsidy + transaction fees, ค่าพูล เงินสำรองพูล, pool target, network target, share ที่รับ, share เก่า, วิธีจ่าย, ระยะสุกงอม, ยอดจ่ายขั้นต่ำ, การรับฝาก และความเสี่ยงคู่สัญญา
  7. จำลองเศรษฐศาสตร์และความปลอดภัยภายใต้ความเครียด ระบุแฮชเรตที่ใช้จริง uptime ประสิทธิภาพ ค่าไฟ การระบายความร้อน แรงงาน โฮสติ้ง บำรุงรักษา ค่าเสื่อม เงินทุน ภาษี การจำกัด Subsidy ค่าธรรมเนียม ราคา และความยาก ทดสอบความแปรปรวนบล็อก ฮาร์ดแวร์เสีย ราคาและค่าธรรมเนียมกระชาก ความล่าช้าความยาก พูลผิดนัด การเซ็นเซอร์ การกระจุกตัว และความเสี่ยง reorganization

ผลงานของการขุดคือข้อเสนอบล็อกพร้อมหลักฐานการค้นหาเชิงคำนวณ โหนดตัดสินความถูกต้อง กฎเลือก fork ตัดสินว่าสาขาที่ถูกต้องใดใช้งานอยู่ กฎความยากเปลี่ยนเป้าหมายเฉพาะขอบเขตที่กำหนด และแอปพลิเคชันเลือกความลึกการยืนยัน การขุดมีส่วนร่วมในกระบวนการเหล่านี้ แต่ไม่ทดแทนกระบวนการใด

ตัวอย่างคำนวณ

1. พื้นที่ nonce ไม่ใช่พื้นที่ค้นหาทั้งหมด

ส่วนหัว Bitcoin ขนาด 80 ไบต์มี nonce 32 บิต จึงมีค่า 2^32 = 4,294,967,296 ค่า ที่ 200 TH/s ฮาร์ดแวร์อาจทดสอบส่วนหัวจำนวนนี้ได้ในเวลาประมาณ:

4,294,967,296 / 200,000,000,000,000 = 0.0000214748 seconds

งานไม่ได้จบลง ซอฟต์แวร์ขุดเปลี่ยน extranonce ใน coinbase คำนวณราก Merkle ใหม่ และอาจเปลี่ยนช่องอื่นที่อนุญาตเพื่อสร้างพื้นที่ nonce ชุดใหม่ การถือว่า nonce ในส่วนหัวคือความสามารถค้นหาทั้งหมดของเครื่องจึงเป็นความผิดพลาดเชิงประเภท

2. ความแปรปรวนการขุดเดี่ยวและค่าไฟ

เมื่ออัตราเครือข่ายเป็น 600 EH/s และอัตราที่ใช้จริงของนักขุดเป็น 200 TH/s ส่วนแบ่งอย่างง่ายคือ 200 TH/s / 600 EH/s = 0.0000333333% หากสมมติ 144 บล็อกต่อวัน บล็อกเดี่ยวที่คาดหวังคือ lambda = 144 * 0.000000333333 = 0.000048 blocks/day หรือเวลารอเฉลี่ย 1 / 0.000048 = 20,833.33 days การประมาณแบบปัวซองให้โอกาสไม่พบบล็อกในหนึ่งวันเป็น P(0) = exp(-0.000048) = 99.9952001152%

เครื่อง 3.5 kW ที่ค่าไฟ USD 0.06 ต่อ kWh มีค่าไฟตรง 3.5 kW * 24 * USD 0.06/kWh = USD 5.04/day ซึ่งยังไม่รวมการระบายความร้อน โฮสติ้ง เวลาหยุด ซ่อม ค่าเสื่อม เงินทุน และภาษี ค่าคาดหวังไม่ใช่จังหวะกระแสเงินสด และชัยชนะเดี่ยวที่โอกาสต่ำไม่ควรแสดงเป็นลูกหนี้รายวัน

3. บัญชี coinbase และระยะสุกงอม

สมมติเงินอุดหนุนตามความสูงเป็น 3.125 BTC และค่าธรรมเนียมธุรกรรมที่ถูกต้องรวม 0.42 BTC มูลค่าสูงสุดที่ธุรกรรม coinbase สร้างได้ในตัวอย่างง่ายนี้คือ 3.125 + 0.42 = 3.545 BTC; การเรียกมากกว่านี้ทำให้บล็อกผิด ส่วนการเรียกน้อยกว่าอนุญาตได้แต่เสียมูลค่า

เอาต์พุต coinbase อยู่ภายใต้ระยะสุกงอมตามฉันทามติ 100 blocks ก่อนใช้จ่ายได้ บล็อกอาจกลายเป็น stale หรือถูก reorganization ก่อนครบกำหนด ยอดในแดชบอร์ดพูล เอาต์พุต coinbase ที่ยังไม่สุกงอม และยอดจ่ายภายนอกสุดท้ายจึงเป็นสิทธิเรียกร้องคนละชนิด พร้อมความเสี่ยงการรับฝากและชำระต่างกัน

4. Share ของพูลและสมมติฐานการจ่าย

สมมติ share ที่รับมีความยากเท่ากัน พูลบันทึกรวม 2,000,000 และนักขุดหนึ่งรายส่ง 50,000 ส่วนที่ได้เครดิตคือ 50,000 / 2,000,000 = 2.5% หากมูลค่าบล็อกเป็น 3.545 BTC และค่าพูล 2% จำนวนที่แบ่งได้ในตัวอย่างคือ 3.545 * (1 - 0.02) = 3.4741 BTC และการจัดสรรตามสัดส่วนคือ 3.4741 * 2.5% = 0.0868525 BTC

หากเป้าหมายพูลง่ายกว่าเป้าหมายเครือข่าย 1,000 เท่า share ที่รับมีโอกาสอย่างง่าย 1 / 1,000 ที่จะผ่านเป้าหมายเครือข่ายด้วย บัญชีจริงต้องปรับความยาก share ที่แปรผัน ปฏิเสธงานซ้ำและงานเก่า ใช้สัญญา PPS, FPPS, PPLNS หรือแบบอื่นตามชื่อ และแยกค่าคาดหวังที่พูลจ่ายจากรายได้ที่ขึ้นกับการพบบล็อก

ความเสี่ยงและข้อผิดพลาดในการตรวจทาน

ข้อผิดพลาดด้านโปรโตคอลและแม่แบบ

  • กล่าวว่านักขุดทำให้ธุรกรรมถูกต้อง แทนที่จะเลือกผู้สมัครที่โหนดเต็มตรวจอย่างอิสระ
  • ปะปนตัวตน chain, network, fork, tip, client, ผู้ให้แม่แบบ หรือพูล
  • ถือ mempool หรือแม่แบบเป็นสถานะฉันทามติ ชุดธุรกรรมครบถ้วน หรือบล็อกในอนาคตที่รับประกัน
  • เลือกธุรกรรมด้วย fee rate รายรายการโดยละเลย ancestor, descendant, น้ำหนัก ปฏิบัติการลายเซ็น lock และข้อผูกมัด
  • คำนวณความสูงเงินอุดหนุน ค่าธรรมเนียมรวม เอาต์พุต coinbase ข้อผูกมัด witness หรือราก Merkle ผิด
  • ค้นหาบนแฮชก่อนหน้าผิด เป้าหมายเก่า หรือช่วงเวลาและเวอร์ชันที่ไม่ได้รับอนุญาตหลังมีปลายใหม่
  • เปรียบเทียบแฮชส่วนหัวกับเป้าหมายที่แสดงโดยใช้ encoding, endianness หรืออัลกอริทึมผิด

ข้อผิดพลาดด้านพูลและการดำเนินงาน

  • ถือ share ที่พูลรับเท่ากับบล็อกที่เครือข่ายรับ หรือใช้จำนวน share โดยไม่ปรับความยาก
  • เปลี่ยนส่วนแบ่งแฮชที่คาดหวังเป็นบล็อก รายได้ หรือวันจ่ายที่รับประกันโดยไม่สนความแปรปรวน
  • ถือส่วนแบ่งบล็อกของพูลเป็นกรรมสิทธิ์ฮาร์ดแวร์ถาวร หรือละเลยการกระจุกตัวของแม่แบบและการจ่าย
  • ละ share เก่าและถูกปฏิเสธ latency เฟิร์มแวร์ อุณหภูมิ uptime การจำกัด และฮาร์ดแวร์เสีย
  • ละเลยวิธีจ่าย ฐานค่าธรรมเนียม เงินสำรอง ขั้นต่ำ ระยะสุกงอม การรับฝาก การถอน และเงื่อนไขผิดนัดของพูล
  • ถือบล็อกที่พบเป็นที่สิ้นสุดก่อนการยอมรับอิสระ การเผยแพร่ การเลือกเชนหลัก และการทบทวน reorganization
  • ใช้ข้อมูลรับรอง ที่อยู่จ่าย หรือเฟิร์มแวร์ระยะไกลซ้ำโดยไม่มีการยืนยันตัวตน ควบคุมการเปลี่ยนแปลง และตอบสนองเหตุการณ์

ข้อผิดพลาดด้านเศรษฐศาสตร์และความปลอดภัย

  • เรียกค่าคาดหวัง BTC ขั้นต้นว่ากำไรเงินตราโดยไม่มีราคา ความยาก ค่าธรรมเนียม ไฟ ระบายความร้อน แรงงาน ค่าเสื่อม เงินทุน และภาษี
  • อนุมานไฟฟ้าหรือการปล่อยจากแฮชเรตอย่างเดียวโดยไม่มีประสิทธิภาพอุปกรณ์ การใช้งาน ระบายความร้อน สถานที่ เวลา และส่วนผสมพลังงาน
  • คิดว่าความยากตอบสนองแฮชเรตทันที หรือบล็อกสิบนาทีมาถึงตามตาราง
  • อ้างว่า halving รับประกันราคาสูงขึ้น นักขุดยอมแพ้ หรือค่าใช้จ่ายความปลอดภัยคงเดิม
  • อ้างว่าแฮชเรตส่วนใหญ่ปลอมลายเซ็น ยึดเหรียญใดก็ได้ หรือทำให้โหนดเต็มรับเงินเฟ้อที่ผิดได้
  • ถือแฮชเรตรวมสูงเป็นหลักฐานว่าปลอดจากการกระจุกของพูล ผู้ผลิต เฟิร์มแวร์ ภูมิศาสตร์ พลังงาน เครือข่าย หรือซอฟต์แวร์

ความเข้าใจผิดที่พบบ่อย

  • นักขุดอนุมัติธุรกรรมใดก็ได้ให้ถูกต้อง นักขุดเลือกและเรียงผู้สมัคร แต่โหนดเต็มที่ซื่อตรงปฏิเสธบล็อกที่ฝ่าฝืนฉันทามติ
  • Nonce เป็นค่าเดียวที่นักขุดเปลี่ยนได้ Extranonce เปลี่ยน coinbase และราก Merkle ส่วนช่องเวลาและเวอร์ชันที่อนุญาตก็ขยายพื้นที่ค้นหาได้
  • Share ของพูลเป็นเศษส่วนของบล็อก มันคือหลักฐานที่ผ่านเป้าหมายพูลซึ่งง่ายกว่า share ส่วนใหญ่ไม่ผ่านเป้าหมายเครือข่ายและไม่เคยเป็นบล็อก
  • รายได้รายวันที่คาดหวังคือยอดจ่ายรับประกัน การพบบล็อกเป็นแบบสุ่ม และจังหวะจ่ายยังขึ้นกับสัญญาพูล ระยะสุกงอม และผลงานคู่สัญญา
  • แฮชเรตมากขึ้นหมายถึงกำไรมากขึ้นโดยอัตโนมัติ ส่วนแบ่งนักขุด ความยาก ค่าธรรมเนียม ราคา ประสิทธิภาพ ไฟ และโครงสร้างต้นทุนทั้งหมดกำหนดผล

หัวข้อที่เกี่ยวข้อง

แหล่งข้อมูล

การนำทาง

ค้นหาในวิกิ...