การเปิดเผยความลับของการขุดเหมือง

มือใหม่7/15/2024, 6:30:04 AM
บทความนี้ให้คำอธิบายอย่างละเอียดเกี่ยวกับกระบวนการ "ขุดเหมือง" ในบล็อกเชน โดยใช้การเปรียบเทียบกับกิจกรรมการขุดเหมืองทั่วไป เอกลักษณ์พื้นฐานของการขุดเหมืองดิจิทัลที่เกี่ยวข้องกับการใช้ทรัพยากรคำนวณในการแก้ไขปัญหาทางคณิตศาสตร์สำหรับการตรวจสอบธุรกรรมและการออกสกุลเงินใหม่

ส่งต่อชื่อเรื่องต้นฉบับ '白话区块链三:揭开挖矿神秘的面纱——挖矿是什么?为什么要挖矿?谁是我们买不起显卡的罪魁祸首?'

หนึ่งในแนวคิดที่คุ้นเคยที่สุดที่เกี่ยวข้องกับบล็อกเชนสําหรับทุกคนน่าจะเป็นการขุด หลายคนอาจเคยได้ยินเกี่ยวกับการขุดหลายครั้ง แต่ไม่แน่ใจว่ามันเกี่ยวข้องกับอะไร ในส่วนนี้เราจะขัดจังหวะการเขียนโปรแกรมปกติของเราเพื่อแนะนํา "การขุด" ก่อน

สรุปเนื้อหาอย่างรวดเร็วจาก "Plain Blockchain 1: Introduction to Bitcoin (ผู้บุกเบิกการปฏิวัติบล็อกเชนและผู้ท้าชิงสกุลเงินอธิปไตย)" ซึ่ง Satoshi Nakamoto ออกแบบระบบการเงิน Bitcoin เพื่อเชื่อมโยงรางวัลสําหรับการทําบัญชีกับการออกสกุลเงิน วิธีการนี้ช่วยให้การออกสกุลเงินเป็นไปโดยอัตโนมัติผ่านกระบวนการทําบัญชีแก้ปัญหาการออกสกุลเงินในขณะเดียวกันก็สนับสนุนให้ผู้ทําบัญชีมีส่วนร่วมอย่างแข็งขัน

1. กระบวนการขุดเหมืองคืออะไร?

ในโลกจริง กระบวนการขุดเหมืองเป็นกระบวนการที่เหมืองแร่ใช้เครื่องมือต่าง ๆ เพื่อขุดแร่มีคุณค่าซึ่งซ่อนอยู่ในหินจากเหมือง คนขุดแร่สามารถแยกความคุ้มค่าจากแร่โดยใช้แรงงานกายภาพ

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

2. ทำไมกระบวนการขุดเหมืองถึงจำเป็น?

การขุดเหมืองมีจุดประสงค์หลัก 2 ประการ: การตรวจสอบธุรกรรมที่เกิดขึ้นเร็วๆ นี้โดยการจัดหีบหน้าไว้ในบล็อกและเชื่อมโยงกับบล็อกเชน และการออกเสียงเงินใหม่โดยการให้รางวัลแก่ผู้บัญชีหนังสือรายวัน ด้านล่างเป็นฟังก์ชันละเอียดของการขุดเหมือง:

  1. การเลือกที่ประกอบด้วยผู้ดูแลบัญชี: จำเป็นต้องมีกลยุทธ์ในการเลือกผู้ดูแลบัญชีจริงจากผู้สมัครจำนวนมาก ผลการขุดเหมืองถูกใช้เป็นพื้นฐานในการเลือกนี้ เพื่อให้ทุกธุรกรรมได้รับการรับรู้จากผู้เข้าร่วมทั้งหมด และเพื่อเรียกใช้ความเห็นร่วมกันทั่วเครือข่าย
  2. การยืนยันธุรกรรม: ทุกธุรกรรมบิตคอยน์จำเป็นต้องได้รับการยืนยันจากผู้ขุดในเครือข่าย กระบวนการนี้ยืนยันความถูกต้องของธุรกรรมรวมถึง:
    • การตรวจสอบรูปแบบและขนาดของการทำธุรกรรมให้ตรงตามข้อมูลสเปค
    • ตรวจสอบความถูกต้องของลายเซ็นต์ของแต่ละธุรกรรมเพื่อให้แน่ใจว่ามันถูกเริ่มต้นโดยผู้ใช้ที่มีคีย์ส่วนตัวที่เกี่ยวข้อง
    • ตรวจสอบว่าจำนวนเงินที่รับเข้ามามากกว่าจำนวนเงินที่จ่ายออก (โดยบางส่วนของจำนวนเงินถูกเก็บเป็นค่าธรรมเนียม) โดยให้แน่ใจว่าโทเค็นที่ใช้ในการชำระเงินยังไม่เคยถูกใช้ไปซ้ำ
    • การยืนยันว่าธุรกรรมยังไม่เคยถูกรวมอยู่ในบล็อก
  3. การออกสกุลเงินใหม่: การขุดเป็นวิธีที่ bitcoins ใหม่เข้าสู่การไหลเวียน เมื่อนักขุดขุดบล็อกใหม่สําเร็จพวกเขาจะได้รับ bitcoin จํานวนหนึ่งเป็นรางวัล กลไกการให้รางวัลนี้ไม่เพียง แต่จูงใจให้ผู้คนมีส่วนร่วมในการขุด แต่ยังทําหน้าที่เป็นวิธีการออก bitcoin วิธีการออกสกุลเงินนี้ช่วยให้มั่นใจได้ว่าการไหลเวียนของสกุลเงินจะเพิ่มขึ้นอย่างต่อเนื่องและควบคุมได้ช่วยจัดการอัตราเงินเฟ้อ
  4. การส่งเสริมการมีส่วนร่วม: กลไกของรางวัลสร้างคติให้มีผู้เข้าร่วมมากขึ้นในการรักษาระบบสกุลเงิน โดยส่งเสริมการพัฒนาที่ต่อเนื่องและแข็งแรง
  5. การเพิ่มความปลอดภัยของเครือข่ายและการกระจายอํานาจ: ผลตอบแทนจากการขุดนําไปสู่นักขุดจํานวนมากส่งผลให้มีพลังการคํานวณแบบกระจาย การกระจายอํานาจนี้ช่วยให้มั่นใจได้ว่าไม่มีเอนทิตีเดียวที่สามารถควบคุม 50% ของพลังการคํานวณซึ่งจะช่วยเพิ่มความโปร่งใสและความปลอดภัยของระบบ การยึดมั่นในหลักการโซ่ที่ยาวที่สุดช่วยเพิ่มความปลอดภัยของระบบ

3. ทำไมนักขุดเหมืองต้องการมีส่วนร่วมในกระบวนการขุดเหมือง?

การขุดเหมืองเป็นกระบวนการที่ผู้ขุดเหมืองได้รับแรงบันดาลใจในการเข้าร่วมขุดเหมืองเนื่องจากพวกเขาได้รับรางวัลที่มีค่าสูงสำหรับการบรรจุบล็อกลงบนบล็อกเชน รางวัลเหล่านี้มาจากแหล่งที่มีความสำคัญสองแห่ง:

  • รางวัลบล็อก (เงินสกุลใหม่ที่เปิดจำหน่าย): ระบบสกุลเงินอัตโนมัติจะเปิดจำหน่ายสกุลเงินใหม่ซึ่งไปทั้งหมดให้กับผู้ขุดเหมือง เช่น เช่นในระบบบิตคอยน์ ณ ปัจจุบัน ผู้ขุดเหมืองจะได้รับบิตคอยน์ 3.125 เหรียญสำหรับแต่ละบล็อกที่พัก โดยที่แต่ละบิตคอยน์มีมูลค่าประมาณ 65,000 ดอลลาร์ การพักบล็อกเดียวสามารถทำให้ได้กำไรมากกว่า 200,000 ดอลลาร์ หรือประมาณ 1.47 ล้าน RMB
  • ค่าธรรมเนียมการทําธุรกรรมที่จ่ายโดยผู้ใช้: เนื่องจากความสามารถที่ จํากัด ของบล็อกในการเก็บบันทึกธุรกรรมผู้ใช้บางคนจ่ายค่าธรรมเนียมการทําธุรกรรมเพื่อจูงใจให้นักขุดจัดลําดับความสําคัญของธุรกรรมเพื่อการยืนยันที่รวดเร็วยิ่งขึ้น เมื่อเลือกธุรกรรมจากพูลที่จะรวมอยู่ในบล็อกนักขุดมักจะเลือกธุรกรรมที่มีค่าธรรมเนียมสูงกว่า บล็อกสามารถมีธุรกรรมได้หลายพันรายการและค่าธรรมเนียมทั้งหมดจากธุรกรรมเหล่านี้จะไปที่นักขุดซึ่งเป็นแหล่งรายได้ที่สําคัญอีกแหล่งหนึ่ง เมื่อผู้คนใช้ Bitcoin ในการทําธุรกรรมมากขึ้นการแข่งขันเพื่อรวมไว้ในบล็อกจึงทวีความรุนแรงขึ้นซึ่งนําไปสู่ค่าธรรมเนียมที่สูงขึ้นซึ่งผู้ใช้ยินดีจ่าย

เมื่อเวลาผ่านไป รางวัลบล็อคจะลดลง (ตัวอย่างเช่นเนื่องจากกลไกของบิตคอยน์ที่จะลดลงในระยะเวลาประมาณสี่ปี) ในที่สุดเมื่อขุดบิตคอยน์ 21 ล้านเหรียญทั้งหมดแล้วที่คาดว่าจะเกิดขึ้นปี 2141 รางวัลบล็อคอัตโนมัติจะหยุดอย่างเป็นทางการ และค่าธรรมเนียมการทำธุรกรรมจะเป็นแหล่งรายได้หลักสำหรับผู้ขุด

เคล็ดลับ

บิตคอยน์สร้างบล็อกใหม่โดยราว ๆ ทุก 10 นาที โดยเริ่มต้นแต่ละบล็อกที่สร้างขึ้นจะได้รับ 50 บิตคอยน์ รางวัลนี้จะลดลงครึ่งหนึ่งทุก 4 ปี และจนถึงปัจจุบันได้มีการลดลงครึ่งทั้งหมด 4 ครั้ง ในปัจจุบันแต่ละบล็อกสร้างขึ้นจะได้รับ 3.125 บิตคอยน์ โดยการลดลงครึ่งล่าสุดเกิดขึ้นในเดือนเมษายน 2024 การลดลงครึ่งถัดไปคาดว่าจะเกิดขึ้นรอบปี 2028 โดยประมาณในปี 2141 บิตคอยน์จะถึงขีดจำกัดในการเผยแพร่

ค่าธรรมเนียมการทำธุรกรรมได้รับผลกระทบไม่เพียงแค่จากการข้อเสนอและความต้องการเท่านั้น แต่ยังขึ้นอยู่กับขนาดของธุรกรรมด้วย เนื่องจากค่าธรรมเนียมเป็นสัมพันธ์กับพื้นที่ที่ธุรกรรมครอบครองในบล็อก

4. วิธีการเข้าร่วมกระบวนการขุดเหมือง

สำหรับคนขุดแร่ เข้าร่วมกระบวนการขุดเหมืองง่ายดาย ดาวน์โหลดไคลเอ็นต์กระเป๋าสตางค์สกุลเงินดิจิทัล และภายในไคลเอ็นต์ คลิกปุ่มขุดเหมืองเพื่อเริ่มต้นการขุดเหมือง

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

อัลกอริธึมการขุดเป็นตัวกําหนดซึ่งหมายความว่าตราบใดที่นักขุดเรียกใช้อัลกอริทึมอย่างต่อเนื่องในที่สุดพวกเขาจะได้รับผลลัพธ์ อย่างไรก็ตามเนื่องจากทรัพยากรการคํานวณที่แตกต่างกันเวลาที่ใช้ในการคํานวณผลลัพธ์นี้อาจแตกต่างกันในหมู่นักขุด เมื่อโหนดคํานวณค่าเป้าหมายความพยายามของนักขุดคนอื่น ๆ ในช่วงเวลานั้นจะไร้ประโยชน์ส่งผลให้ผลตอบแทนติดลบเนื่องจากทรัพยากรทางกายภาพที่ใช้ไป

เพื่อหลีกเลี่ยงความพยายามที่สูญเปล่านักขุดมักจะรวมทรัพยากรการคํานวณของพวกเขาโดยเข้าร่วมโหนดพูลการขุด โหนดนี้ทํางานเหมือนโหนดอื่น ๆ แต่มีพลังในการคํานวณมากกว่าอย่างมีนัยสําคัญ เมื่อพูลขุดบล็อกสําเร็จรางวัลจะถูกแจกจ่ายให้กับนักขุดที่เข้าร่วมตามทรัพยากรการคํานวณที่มีส่วนร่วม สิ่งสําคัญคือต้องทราบว่าบนบล็อกเชนนักขุดที่บันทึกเป็นบรรจุภัณฑ์บล็อกคือโหนดพูลการขุดในขณะที่นักขุดแต่ละคนจะได้รับส่วนแบ่งของรางวัลที่จัดสรรโดยพูลไม่ใช่โดยตรงจากระบบสกุลเงิน

บิทเมน บริษัทผู้ผลิตชิปขุดเหมืองที่มีประสิทธิภาพสูงที่พิสูจน์บทบาทของพูลขุดเหมือง ที่มีส่วนร่วมในการกระจายอำนาจในการทำบัญชี

5. ลักษณะเฉพาะของปัญหาการขุดเหมือง

โครงการบล็อกเชนที่แตกต่างกันอาจมีปริศนาในการขุดและระดับความยากต่าง ๆ ด้วย ตัวอย่างเช่น ที่นี่เราจะเลือกบิตคอยน์เป็นตัวอย่าง วิธีการขุดที่ใช้โดยบิตคอยน์คือ Proof of Work (PoW) สารที่สำคัญของอัลกอริทึมนี้คือ การที่จะได้ผลลัพธ์ต้องใช้งานไปมากกว่าที่จะพิสูจน์

ปริศนาการขุดไม่ใช่ปัญหาทางคณิตศาสตร์แบบดั้งเดิม แต่เกี่ยวข้องกับการหาตัวเลขสุ่มที่เรียกว่า nonce NONCE นี้เมื่อรวมกับข้อมูลในบล็อกและประมวลผลผ่านฟังก์ชันแฮชจะต้องสร้างค่าแฮชที่ตรงตามเงื่อนไขเฉพาะ โดยทั่วไปเงื่อนไขนี้ต้องการให้ค่าแฮชน้อยกว่าค่าเป้าหมาย (หรือเทียบเท่าว่าบิต n แรกของค่าแฮชเป็นศูนย์) สมการมีดังนี้: hash(nonce+block_data)≤target\text{hash}(\text{nonce} + \text{block_data}) \leq \text{target}hash(nonce+block_data)≤target

บิตคอยน์ใช้ฟังก์ชันแฮช sha-256 ซึ่งแปลงข้อมูลขนาดใดก็ตามเป็นผลลัพธ์ความยาวคงที่ของ 256 บิต (เทียบเท่ากับ 64 หลักสิบหกตัวหรือ 32 ไบต์) ผลลัพธ์เป็นสุ่มเกือบและมีการรับรองว่าจะเหมือนกันสำหรับข้อมูลนำเข้าที่เหมือนกัน การขุดเหมืองเกี่ยวข้องกับการเปลี่ยน nonce อย่างต่อเนื่องและการแฮชข้อมูลหัวบล็อกโดยใช้ sha-256 จนกว่าค่าแฮชที่ตรงตามเงื่อนไขเป้าหมายจะถูกค้นพบ

ตัวอย่างเช่น ค่าแฮช SHA-256 ที่มี 30 บิตแรกเป็นศูนย์: 000000000000000000000000000000111111010000011011000100100110111011000110100010011011000110100010110110101010011101011010100100011011010001111101001111110101001101111101011110011100011110011110000111000100110000001011011010001110011100110010111010010010010001101010110010110000000000000000000000000000000111111010000011011000100100110111011000110100010011011000110100010110110101010011101011010100100011011010001111101001111110101001101111101011110011100011110011110000111000100110000001011011010001110011100110010111010010010010001101010110010110000000000000000000000000000000111111010000011011000100100110111011000110100010011011000110100010110110101010011101011010100100011011010001111101001111110101001101111101011110011100011110011110000111000100110000001011011010001110011100110010111010010010010001101010110010110

การแปลงนี้เป็นเลขฐานสิบหกจะได้ค่าที่ขึ้นต้นด้วยเลขศูนย์เจ็ดตัว: 00000003f41b126ec689b1a2da9d5d46d13d0fd1bece47983d59c5d32eb4ac9000000003f41b126ec689b1a2da9d5d46d13d0fd1bece47983d59c5d32eb4ac9000000003f41b126ec689b1a2da9d5d46d13d0fd1bece47983d59c5d32eb4ac90

เพื่อความง่าย ๆ ความน่าจะเป็นในการค้นพบแฮชที่มีจำนวน n บิตแรกเป็นศูนย์คือ 12n\frac{1}{2^n}2n1​ ยิ่ง n มาก จะมีบิตศูนย์มากขึ้น และความน่าจะเป็นจะต่ำลง:

  • n=10n = 10n=10: 1 in 1,024
  • n = 20: 1 ใน 1,048,576
  • n=30n = 30n=30: 1 in 1,073,741,824
  • n = 40: 1 ใน 1,099,511,627,776
  • n=50n = 50n=50: 1 in 1,125,899,906,842,624

ด้วย n สูงสุด 256 การค้นหาค่าแฮชด้วยพลังคำนวณมนุษย์ปัจจุบันโดยยกเว้นคอมพิวเตอร์ควอนตัมเป็นเรื่องเกือบจะไปไม่ทันก่อนโลกจะสิ้นสุดลง

เนื่องจากคุณสมบัติของ sha-256 วิธีเดียวที่มีคือการใช้กำลังพลังงานที่มากมาย ซึ่งเกี่ยวข้องกับการพยายามต่าง ๆ อย่างต่อเนื่องจนกว่าเงื่อนไขจะถูกตอบรับ ความจำเป็นนี้สำหรับอุปกรณ์คอมพิวเตอร์ที่มีประสิทธิภาพสูงเป็นเหตุให้กระบวนการขุดเหมืองต้องใช้อุปกรณ์เช่นนี้

เนื่องจากคุณไม่สามารถคาดการณ์ค่าแฮชที่สร้างขึ้นโดยการเพิ่ม nonce ลงในข้อมูลบล็อกและส่งผ่าน SHA-256 กระบวนการนี้จึงเป็นแบบสุ่มทั้งหมด ตัวอย่างเช่นหากค่าแฮชเป้าหมายคือ 10,000 คุณไม่มีทางรู้ว่า NONCE ใดที่รวมกับข้อมูลบล็อกจะให้ค่าแฮชน้อยกว่า 10,000 ลักษณะที่คาดเดาไม่ได้และสุ่มนี้หมายความว่านักขุดต้องรักษาความเป็นไปได้ในการแจงนับจนกว่าเงื่อนไขจะพอใจ หากค่าหลายค่าตรงตามเงื่อนไข ค่าแฮชที่น้อยที่สุดจะถูกเลือกเนื่องจากค่าแฮชที่เล็กกว่าบ่งบอกถึงความยากที่สูงขึ้นและความน่าจะเป็นในการเกิดขึ้นที่ต่ํากว่า

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

6. โค้ดจำลองของอัลกอริทึมการขุดเหมือง

โค้ดต่อไปนี้จำลองกระบวนการขุดเหมือง เริ่มจากสตริงข้อมูลส่วนหัวบล็อก 'geekbang' และค้นหาเพิ่มขึ้นจากค่าน้อน 10,000 ไปเรื่อย ๆ จนกว่าจะพบค่าน้อนที่ตรงตามเงื่อนไขที่ระบุ

นี่คือสคริปต์ภาษาไพธอนที่สาธิตกระบวนการขุดเหมือง:

import hashlibdef main():    base_string = "geekbang"    nonce = 10000    count = 0    while true:        target_string = base_string + str(nonce)        pow_hash = hashlib.sha256(target_string.encode()).hexdigest()        count += 1        if pow_hash.startswith("0000"):  # first 4 hex digits are 0, equivalent to the first 16 bits being 0            print("hash:", pow_hash)            print("nonce:", nonce, "scan times:", count)            break        nonce += 1if __name__ == '__main__':    main()

เมื่อความต้องการคือว่าตัวอักษร 16 ตัวแรกของผลการแฮชต้องเป็นศูนย์ (เทียบเท่ากับ 16 บิตแรกเป็นศูนย์) จำนวนการคำนวณประมาณ 58,000 ครั้ง หากความต้องการเพิ่มเป็นตัวอักษร 5 ตัวแรกเป็นศูนย์ จำนวนการคำนวณเพิ่มขึ้นเป็น 1.23 ล้านครั้ง และเมื่อความต้องการคือตัวอักษร 7 ตัวแรกเป็นศูนย์ จำนวนการคำนวณเพิ่มขึ้นเป็น 160 ล้านครั้ง นี้แสดงให้เห็นว่าแต่ละศูนย์เพิ่มขึ้นในคำนวณแฮชจะทำให้การคำนวณเพิ่มขึ้นประมาณ 16 เท่า

นี่คือผลลัพธ์สำหรับเงื่อนไขเป้าหมายที่แตกต่างกัน:

4 หลักแรกของ hex เป็นศูนย์ (16 บิต):

import hashlib

def main():

base_string = "geekbang"nonce = 10000count = 0while true:    target_string = base_string + str(nonce)    pow_hash = hashlib.sha256(target_string).hexdigest()    count = count + 1    if pow_hash.startswith("0000"): # หน้า 4 ตัวหลัก 16 ในรหัสฐาน 16 เป็น 0 คือหน้า 16 บิตแรกเป็น 0    print pow_hash    print "nonce: https://s3.ap-northeast-1.amazonaws.com/gimg.gateimg.com/learn/51d786353cf4ac886dbb869fc7abf883dac67ceb.png"  scan times: https://s3.ap-northeast-1.amazonaws.com/gimg.gateimg.com/learn/4ebdb22f10c27f8797a1c2ae7bbbd78f40220ed4.png"" % (nonce, count)    break    nonce = nonce + 1

ifชื่อ == ‘หลัก‘:

main()

ดังที่เห็นการเพิ่มจํานวนศูนย์นําหน้าที่ต้องการในแฮชจะเพิ่มจํานวนความพยายามที่จําเป็นอย่างมากตามรูปแบบการเติบโตแบบเอ็กซ์โพเนนเชียล สิ่งนี้แสดงให้เห็นถึงความยากลําบากในการคํานวณและทรัพยากรที่จําเป็นสําหรับการขุดโดยเน้นย้ําถึงความต้องการอุปกรณ์คอมพิวเตอร์ประสิทธิภาพสูงในกระบวนการขุด

7. การปรับความยากของการขุดให้เป็นไปตามสภาพแวดล้อม

เพื่อให้แน่ใจว่าบล็อกถูกสร้างขึ้นประมาณทุก ๆ 10 นาทีระบบ Bitcoin จะปรับความยากในการขุดโดยการเปลี่ยนจํานวนศูนย์นําหน้าที่ต้องการในค่าแฮช กลไกการปรับความยากนี้เป็นส่วนสําคัญของระบบ Bitcoin มันประเมินเวลาที่ใช้ในการสร้างบล็อกล่าสุดในปี 2016 ซึ่งควรใช้เวลาประมาณสองสัปดาห์ หากบล็อกเหล่านี้ถูกขุดในเวลาน้อยกว่าสองสัปดาห์ความยากจะเพิ่มขึ้นโดยการเพิ่มศูนย์นําหน้ามากขึ้น (ลดค่าเป้าหมาย) ในทางกลับกันหากใช้เวลานานกว่าสองสัปดาห์ความยากจะลดลงโดยการลดจํานวนศูนย์นําหน้า (เพิ่มค่าเป้าหมาย) กลไกนี้ช่วยให้มั่นใจได้ว่าเวลาในการสร้างบล็อกยังคงอยู่ประมาณ 10 นาทีแม้ว่าอัตราแฮชทั้งหมดของเครือข่ายจะผันผวนก็ตาม

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

8. กระบวนการดำเนินการของอัลกอริทึมการขุดเหมือง

โครงการบล็อกเชนที่แตกต่างกันอาจมีขั้นตอนขุดเหมืองที่แตกต่างกัน ที่นี่เราจะอธิบายขั้นตอนที่มีชื่อเสียงที่สุด: ขั้นตอนขุดเหมืองของบิตคอยน์

กระบวนการขุดเหมืองของขั้นต่ำของบิตคอยน์

  1. การเลือกธุรกรรม: เลือกธุรกรรมหลายรายการจากกองความจำ (โดยทั่วไปจะมีลำดับความสำคัญสูงกว่า) สร้างธุรกรรมพิเศษโดยอัตโนมัติ (ที่เรียกว่าธุรกรรมเหรียญ) ที่ผู้รับเป็นผู้ทำเหมือง และจำนวนเงินของธุรกรรมคือรางวัลบล็อกบวกค่าธรรมเนียมทุกกระทำที่ถูกเลือกทั้งหมด และวางธุรกรรมพิเศษนี้ไว้ที่หัวรายการที่เลือกเพื่อสร้างชุดธุรกรรมสำหรับบล็อกที่จะถูกบรรจุไว้
  2. สร้างต้นไม้เมอร์เคิล: สร้างต้นไม้แฮชเมอร์เคิลจากชุดธุรกรรม ต้นไม้เมอร์เคิลเป็นต้นไม้ทวิภาคที่ใบแต่ละใบเก็บแฮชของธุรกรรมที่ทำให้ระบุและจัดทำดัชนีได้ แต่ล่างเก็บแฮชที่รวมของโหนดลูกของมัน ลงลึกไปยังโหนดราก โหนดรากระบุต้นไม้เมอร์เคิลและโดยต่อไประบุธุรกรรมทั้งหมด
  3. การสร้างส่วนหัวของบล็อก: ประกอบส่วนหัวของบล็อกจากค่ารากของ Merkle, nonce, เวอร์ชันบล็อก, แฮชของบล็อกก่อนหน้า, การประทับเวลา, เป้าหมายความยาก และ nonce ขนาดส่วนหัวของบล็อกคือ 80 ไบต์
  4. การแฮชหัวบล็อก: เปลี่ยนค่านอนซ์ในหัวบล็อกอย่างต่อเนื่องและทำการแฮช double sha-256 บนเนื้อหาของหัวบล็อก (คือ sha256(sha256(หัวบล็อก))) เปรียบเทียบค่าแฮชที่ได้กับค่าเป้าหมายปัจจุบันของเครือข่าย หากผลลัพธ์มีค่าน้อยกว่าค่าเป้าหมาย (แสดงถึงว่าสามารถที่ n ตัวแรกเป็นศูนย์) ปริ้นเทคโปร่งใจและการทำงานเสร็จสมบูรณ์
  5. การกระจายบล็อก: ส่งบล็อกที่ถูกขุดใหม่ไปยังโหนดต่อเนื่อง แจ้งให้ทราบว่าบล็อกถูกขุดเสร็จเรียบร้อยแล้ว
  6. การตรวจสอบและการแพร่กระจาย: เมื่อได้รับบล็อกใหม่ ๆ โหนดอื่น ๆ จะทำการแฮชคู่บนหัวบล็อกเพื่อให้ได้บล็อกแฮช พวกเขาจะตรวจสอบว่าตัวเลข n ตัวแรกของบล็อกแฮชเป็นศูนย์ ยอมรับบล็อก หยุดการคำนวณสำหรับบล็อกนี้ และpropaGate.io ไปยังโหนดบริเวณข้างเคียง

ขนาดของแต่ละฟิลด์ในส่วนหัวบล็อกมีดังนี้:

https://time.geekbang.org/column/article/5963

alt="">

โครงสร้างต้นไม้เมอร์เคิลมีดังนี้:

大后端私房菜]. alt="">

9. ความขัดแย้งในกระบวนการขุดเหมือง

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

มีทางสำคัญสองทางสำหรับการปรับปรุงการใช้ทรัพยากรที่สูญเสีย

  1. การเปลี่ยนอัลกอริทึมที่ใช้ทรัพยากรน้อยลง: ยิธีเรียมเป็นต้นมาได้ทำการเปลี่ยนจากอัลกอริทึม pow เป็นอัลกอริทึม proof of stake (pos) ซึ่งช่วยลดการสูญเสียทรัพยากรอย่างมาก
  2. การใช้ทรัพยากรไฟฟ้าว่างเปล่า: โหนดขุดเหมืองกำลังทดลองใช้แหล่งพลังงานทดแทน เช่น พลังงานลม สำหรับการดำเนินการขุดเหมือง พัฒนาที่สำคัญอีกอย่างคือการใช้ก๊าซธรรมชาติที่ไม่ได้ใช้งานแล้ว นอกจากนี้ บางสถาบันกำลังสำรวจวิธีที่จะรีไซเคิลความร้อนเกินขึ้นที่เกิดจากการขุดเหมืองบิตคอยน

10. คำถาม

มูลค่าของกระบวนการขุดเหมืองคืออะไร? ดูเหมือนว่าจะเป็นการสูญเสียทรัพยากรและไม่มีความหมายต่อสังคม

การทบทวนส่วน "ทําไมการขุดจึงจําเป็น" ของบทความนี้ความสําคัญโดยตรงของการขุดคือรองรับการออกสกุลเงินดิจิทัล รางวัลการขุดจูงใจให้ผู้คนมีส่วนร่วมในการรักษาสกุลเงินดิจิทัลมากขึ้นทําให้มีเสถียรภาพมากขึ้น นอกจากนี้อัลกอริธึมการขุดยังรักษาความสอดคล้องของธุรกรรมภายในระบบสกุลเงินดิจิทัลทําให้มีประสิทธิภาพมากขึ้นและอ่อนไหวต่อการโจมตีภายในและภายนอกน้อยลง

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

ผลตอบแทนจากการขุดจะลดลงจนถึงจุดที่ต่ํากว่าต้นทุนทําให้นักขุดหยุดการขุดและการทําธุรกรรมหยุดลงหรือไม่?

เป็นข้อกังวลทั่วไปที่ผลตอบแทนจากการขุดขึ้นอยู่กับผลตอบแทนของระบบเพียงอย่างเดียวซึ่งจะลดลงเมื่อเวลาผ่านไป อย่างไรก็ตามการขุดยังสร้างรายได้จํานวนมากจากค่าธรรมเนียมการทําธุรกรรม เมื่อสกุลเงินดิจิทัลได้รับการยอมรับในวงกว้างตลาดสําหรับการทําธุรกรรมสกุลเงินดิจิทัลจะขยายตัว ปริมาณธุรกรรมที่เพิ่มขึ้นนี้จะเพิ่มการแข่งขันสําหรับการรวมบล็อกซึ่งนําไปสู่ค่าธรรมเนียมที่สูงขึ้นซึ่งผู้ใช้ยินดีจ่ายเพื่อจัดลําดับความสําคัญของธุรกรรม ดังนั้นนักขุดจึงสามารถได้รับค่าธรรมเนียมการทําธุรกรรมจํานวนมากอย่างต่อเนื่องเพื่อให้มั่นใจว่าการประมวลผลธุรกรรมจะเป็นไปได้อย่างต่อเนื่อง

ถ้าค่าใช้จ่ายในการขุดเหมืองเกินกว่าค่าธรรมเนียมบล็อกเชน การขุดเหมืองสามารถดำเนินได้หรือไม่?

ค่าธรรมเนียมการทำธุรกรรมจะชดเชยค่าใช้จ่ายในกระบวนการขุดเหมืองหรือไม่?

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

จะเกิดอะไรขึ้นถ้านักขุดหลายคนไขปริศนาพร้อมกัน?

ผู้ขุดหลายคนแบ่งปันรางวัลการขุดหากพวกเขาส่งออกบล็อกใหม่ของพวกเขาพร้อมกันหรือไม่?

no, if multiple miners solve the puzzle and broadcast their new blocks at the same time, it creates a temporary fork in the blockchain. here’s how it works:

  1. การแข่งขันชั่วคราว: เมื่อบางโหนดได้รับบล็อกสองบล็อกที่มีความสูงเท่ากัน พวกเขาจะเก็บบล็อกทั้งสองชั่วคราว ทำให้เกิดการแข่งขันชั่วคราวในบล็อกเชน
  2. การแก้ไขคำถาม: เมื่อมีการขุดบล็อกใหม่ๆ โหนดจะดำเนินการสร้างบนโซ่ที่ยาวที่สุด โครงข่ายในที่สุดจะเข้าใจกันว่าเป็นโซ่เดียวกัน โดยทิ้งทิ้งโซ่ที่สั้นลง
  3. การเลือกโซ่หลัก: โหนดตามห่วงโซ่ที่ยาวที่สุด (โหนดที่มีหลักฐานการทํางานสะสมมากที่สุด) คนงานเหมืองที่มีบล็อกลงเอยด้วยโซ่ที่ยาวที่สุดจะได้รับรางวัลในขณะที่อีกบล็อกหนึ่งกลายเป็นบล็อก "เด็กกําพร้า"

ตัวอย่าง:

  • นักขุด a และนักขุด b ทั้งคู่ขุดบล็อกในความสูงเดียวกันและกระจายไป
  • บางๆ โหนดได้รับบล็อกของนักขุด a ก่อน ในขณะที่อื่น ๆ ได้รับบล็อกของนักขุด b ก่อน
  • ทั้งสองโซนจะอยู่ชั่วคราว
  • เมื่อบล็อกถัดไปถูกขุดเมื่อถูกเพิ่มเข้ากับโซ่ของนักขุด A โซ่นั้นกลายเป็นโซ่ที่ยาวที่สุดและโหนดจะนำมาใช้เป็นโซ่หลัก
  • นักขุด A ได้รับรางวัลและบล็อกของนักขุด B ถูกทิ้ง

เพราะไม่มีเหตุผลที่โหนดที่มีพลังงานแร่แฮชเป็น 50% ขึ้นไปจะทำให้ผิดกฎหมาย

การโจมตี 51% คืออะไร และทำไม super nodes ไม่โกง?

การโจมตี 51% เกิดขึ้นเมื่อภาคีหนึ่งหรือกลุ่มหนึ่งควบคุมกำลังคำนวณของเครือข่ายมากกว่า 50% นี่คือเหตุผลที่โหนดเซิร์ฟเวอร์ที่เทพสามารถใช้กับกัน:

  1. ความเป็นไปได้อย่างเ pr ไซต์: เป็นเรื่องที่ยากมากที่จะเป็นเจ้าของ 51% ของพลังการขุดเหมืองของเครือข่ายทั้งหมด เนื่องจากมีขนาดใหญ่และกระจายตัวของสกุลเงินดิจิตอลสำคัญ เช่น bitcoin
  2. การตรวจสอบเครือข่าย: แม้แม้ว่าโหนดซุปเปอร์จะพยายามที่จะโกง โหนดทุกโหนดจะตรวจสอบบล็อกแต่ละอันอย่างอิสระ ธุรกรรมที่ไม่ถูกต้องหรือพยายามใช้เงินซ้ำถูกปฏิเสธโดยเครือข่าย ทำให้ความพยายามของโหนดซุปเปอร์นั้นเป็นโมฆะ
  3. ความเคารพและแรงกดดันทางเศรษฐกิจ: โหนดเซอร์เป็นผู้ได้รับประโยชน์มากกว่าจากการรักษาความสมบูรณ์ของบล็อกเชนเมื่อเทียบกับการโจมตี การโจมตีที่ประสบความสำเร็จอาจทำให้มูลค่าของเหรียญดิจิตอลลดลงซึ่งจะทำให้นักโจมตีเสียเงินลง
  4. ประเภทของการโจมตี:
    • ใช้จ่ายสองเท่า: พยายามใช้เหรียญเดียวกันสองครั้ง
    • การบล็อกการทำธุรกรรม: ป้องกันการรวมธุรกรรมบางรายเข้าไปในบล็อก
    • การขุดเหมืองอิตถีที่ตั้งใจจะได้รับรางวัลการขุดเหมืองมากกว่าโดยการเปิดเผยบล็อกที่เลือก
    • การแก้ไขเวลา: เปลี่ยนแปลงเวลาบล็อกเพื่อได้ประโยชน์ในการขุดเหมือง
    • empty block attack: การขุดบล็อกที่ไม่มีธุรกรรมเพื่อชะลอความเร็วของเครือข่าย

ทำไมบล็อกเชนถือว่าไม่มีผู้บัญชีคงที่เพื่อป้องกันธุรกิจที่โกง

บล็อกเชนมีวิธีการป้องกันการกีดขวางและธุรกิจทุจริตอย่างไร

  1. การตรวจสอบโดยโหนดบริวณที่ใกล้เคียง: เมื่อบล็อกถูกกระจายให้กับโหนดใกล้เคียง เหล่าโหนดเหล่านี้จะตรวจสอบธุรกรรมภายในบล็อก หากพบธุรกรรมที่ไม่ถูกต้องใด ๆ พวกเขาจะปฏิเสธบล็อกและไม่แพร่เมื่อนไป
  2. กลไกฉันทามติ: กลไกฉันทามติของ Bitcoin อาศัยหลักการของห่วงโซ่ที่ยาวที่สุด โหนดเครือข่ายทั้งหมดพยายามขยายห่วงโซ่ที่ถูกต้องที่สุด หากมีคนพยายามแก้ไขบันทึกในอดีต (เช่น การลบธุรกรรม) พวกเขาจะต้องแก้ไขบล็อกที่ตามมาทั้งหมดที่เชื่อมโยงกับบล็อกที่ถูกดัดแปลงและตรวจสอบให้แน่ใจว่าห่วงโซ่ที่แก้ไขนั้นยาวกว่าห่วงโซ่หลักปัจจุบัน สิ่งนี้ต้องใช้ทรัพยากรการคํานวณจํานวนมหาศาลทําให้เป็นไปไม่ได้ในทางปฏิบัติ

ป้องกันการกระจายบล็อกที่ไม่สอดคล้องกันโดยนักขุด

  1. ความสอดคล้องในการกระจายบล็อก: นักขุดไม่สามารถค้นหาค่านอนที่ถูกต้องหลายค่าในเวลาสั้น ๆ ซึ่งป้องกันไม่ให้พวกเขากระจายบล็อกที่ถูกต้องไปยังโหนดที่ต่างกันพร้อมกัน บล็อกที่ผิดกฎหมายใด ๆ จะถูกลบทิ้งโดยโหนดที่อยู่ใกล้เคียง

พูลธุรกรรม (Mempool) คืออะไร

คำจำกัดความและฟังก์ชัน: ในเครือข่ายบล็อกเชน ธุรกรรมทั้งหมดที่ถูกส่งออกที่ยังไม่ได้รวมอยู่ชั่วคราวในหน่วยความจำ (mempool) ของโหนดเครือข่าย นักขุดเหมืองตรวจสอบ mempool เพื่อเลือกธุรกรรมที่จะสร้างบล็อกใหม่

กลยุทธ์การเลือกธุรกรรม: นักขุดสามารถเลือกธุรกรรมจาก Mempool ตามกลยุทธ์ของพวกเขา โดยทั่วไปพวกเขาจัดลําดับความสําคัญของธุรกรรมที่มีค่าธรรมเนียมสูงกว่า แต่บางคนอาจพิจารณาปัจจัยอื่น ๆ เช่นอายุของธุรกรรม (เวลาที่ใช้ใน mempool)

แหล่งรายได้ในระบบบิตคอยน์

ผู้เข้าร่วมและวิธีที่พวกเขาได้รับผลประโยชน์: นอกจากผู้ใช้ระบบบิตคอยน์นั้น ผู้เข้าร่วมสามคนหลักในระบบคือ คนขุดเหมือง นักพัฒนา และผู้ดำเนินการโหนด

  1. นักขุด: รับรางวัลและค่าธรรมเนียมการทําธุรกรรมผ่านการขุด
  2. นักพัฒนาและผู้ให้บริการโหนด: โดยทั่วไปจะไม่ได้รับโดยตรงจากระบบ Bitcoin การมีส่วนร่วมของพวกเขามักจะเป็นอุดมคติโดยมีเป้าหมายเพื่อรักษาความสมบูรณ์ของระบบ พวกเขาอาจได้รับรายได้ผ่านวิธีการอื่น เช่น การบริจาคและการสนับสนุน การมีส่วนร่วมในการขุดขึ้นอยู่กับความชอบของแต่ละบุคคล

ทำไมราคา GPU เพิ่มขึ้น? ทำไม GPU สำหรับการขุดเหมืองไม่น่าพอใจ?

การเพิ่มราคา GPU: ความต้องการสูงของ GPU โดยนักขุดเหมืองสำหรับการขุดเหมืองเป็นหนึ่งในสาเหตุที่ส่งผลให้มีความขาดแคลนในการส่งมอบสินค้า นำไปสู่การเพิ่มราคา

การขุดเหมือง gpus: การขุดเหมือง gpus คือ gpus ที่ใช้ก่อนหน้านี้สำหรับการขุดเหรียญดิจิตอล gpus เหล่านี้มีการคำนวณที่หนัก ทำให้เกิดการสึกกร่อนและสึกกรุ่นที่สำคัญ เนื่องจากประสิทธิภาพที่ลดลง ส่วนใหญ่คนส่วนมากจะไม่ต้องการซื้อ gpus ที่ใช้ไปแล้ว

นักขุดต้องเก็บข้อมูลบัญชีทั้งหมดหรือไม่?

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

เมื่อถึงขีดจำกัดการจำหน่ายของบิตคอยน์ จะเกิดอะไรขึ้น?

ไม่มีรางวัลอัตโนมัติเกิน 21 ล้านบิตคอยน์: เมื่อพลังงานทั้งหมดของบิตคอยน์ถึงขีดจำกัดของ 21 ล้านจะไม่มีระบบออกบิตคอยน์ใหม่เป็นรางวัลให้กับคนขุดเหมืองอีกต่อไป หากผู้ใช้ไม่ต้องการจ่ายค่าธรรมเนียมการทำธุรกรรมโดยทฤษฎีแล้วระบบการทำธุรกรรมอาจเผชิญกับความท้าทายในด้านการดำเนินงาน อย่างไรก็ตาม มีโอกาสที่ผู้ใช้จะเต็มใจจ่ายค่าธรรมเนียมการทำธุรกรรมเพื่อให้ทรานแซคชันของพวกเขาได้รับการประมวลผล ซึ่งสร้างความมั่นใจในการดำเนินการต่อไปของระบบ

ความสูงบล็อกจะยังคงเพิ่มขึ้น: แม้ว่าจะถึงจำนวนบิตคอยน์สูงสุด 21 ล้านบิตคอยน์แล้ว ความสูงของบล็อก (จำนวนบล็อกทั้งหมด) จะยังคงเพิ่มขึ้นตลอดเวลาถ้านักขุดยินดีขุดและพัฒนาการทำธุรกรรมเข้าเบียนใหม่ ความสูงของบล็อกไม่ได้จำกัดโดยการเพิ่มจำนวนบิตคอยน์

ศักยภาพในการเปลี่ยนแปลงฉันทามติ: ชุมชนสามารถเสนอการเปลี่ยนแปลงกฎฉันทามติเช่นการเพิ่มอุปทาน bitcoin ทั้งหมดเพื่อให้สามารถสร้างเหรียญใหม่ได้หากจําเป็น

นักขุดได้รับรางวัลอย่างไร?

ธุรกรรมคอยน์เบส: ในบล็อกเชนของบิตคอยน์ เหรียญรางวัลของนักขุดจะถูกกระจายผ่านธุรกรรมพิเศษที่รู้จักกันดีว่า "ธุรกรรมคอยน์เบส" หรือ "รางวัลบล็อก" ธุรกรรมนี้มีลักษณะเฉพาะ:

  1. ไม่ต้องประกาศ: ธุรกรรม coinbase เป็นธุรกรรมแรกในแต่ละบล็อกที่สร้างขึ้นโดยอัตโนมัติโดยอัลกอริทึมการขุดและไม่จำเป็นต้องประกาศให้โหนดอื่นเห็น
  2. ไม่มีอินพุต: ไม่เหมือนกับธุรกรรม Bitcoin ทั่วไปธุรกรรม Coinbase ไม่มีการป้อนข้อมูล (ไม่มีผู้ส่ง) มันสร้าง bitcoins ใหม่ที่ได้รับรางวัลให้กับนักขุด
  3. เอาต์พุต: ธุรกรรม Coinbase จะมอบรางวัลไปยังที่อยู่กระเป๋าเงินของนักขุด ซึ่งรวมถึง bitcoins ที่เพิ่งสร้างใหม่และค่าธรรมเนียมการทําธุรกรรมทั้งหมดจากธุรกรรมที่รวมอยู่ในบล็อก

วิธีการคำนวณรายได้ของผู้ขุดเหมืองคืออย่างไร?

การคํานวณรายได้ต่อบล็อก: รายได้ของนักขุดจะถูกคํานวณทุกครั้งที่มีการขุดบล็อกสําเร็จและยืนยันโดยกลไกฉันทามติของเครือข่าย นักขุด (หรือพูลการขุด) ที่ขุดบล็อกจะได้รับรางวัลบล็อกและค่าธรรมเนียมการทําธุรกรรมสะสมจากธุรกรรมทั้งหมดที่รวมอยู่ในบล็อก

กระบวนการรับรางวัล: เมื่อนักขุดหรือพูลการขุดขุดบล็อกสําเร็จและได้รับการยืนยันจากเครือข่ายพวกเขาจะได้รับรางวัลบล็อกและค่าธรรมเนียมการทําธุรกรรม สิ่งนี้ดําเนินการผ่านธุรกรรม Coinbase ซึ่งแปลงค่าธรรมเนียมและรางวัลเป็นเอาต์พุตธุรกรรมที่ไม่ได้ใช้ (UTXOs) ที่เครดิตไปยังบัญชีของนักขุด

บล็อกถูกสร้างต่อเนื่องหรือขนานกัน?

การสร้างต่อเนื่อง: บล็อกถูกสร้างต่อเนื่องในบล็อกเชน บล็อกใหม่สามารถสร้างได้เฉพาะหลังจากที่บล็อกก่อนหน้าได้ถูกขุดเหมืองเรียบร้อยและเพิ่มเข้าสู่โซ่

การบรรจุธุรกรรม

การทำธุรกรรมหลายรายการต่อบล็อก: บล็อกมีทั่วไปแล้วที่มีการทำธุรกรรมหลายรายการ นักขุดรวมทั้งหมดที่เป็นไปได้ของการทำธุรกรรมเพื่อเพิ่มรายได้จากค่าธุรกรรม แทนที่จะแพ็คเอกสารที่เป็นไปได้เป็นแต่ละรายการ

การใช้ประโยชน์จากพื้นที่บล็อก

บล็อกที่เต็มบางส่วน: บล็อกส่วนมากไม่ได้ใช้งานอย่างเต็มที่ นักขุดเริ่มทำงานกับบล็อกถัดไปเมื่อพวกเขาพบแฮชที่ถูกต้องที่ตรงกับความยากลำบาก โดยไม่ว่าบล็อกจะเต็มเต็มหรือไม่

การขุดเหมืองโดยไม่มีธุรกรรม

บล็อกที่ว่างเปล่า: บล็อกสามารถขุดได้แม้ว่าจะไม่มีธุรกรรมที่จะรวมอยู่ในบล็อกนั้น บล็อกเหล่านี้ที่เรียกว่าบล็อกที่ว่างเปล่า ยังคงให้รางวัลระบบให้กับนักขุด

การจัดการส้อมบล็อกเชน

กฎของโซ่ที่ยาวที่สุด: เมื่อเกิด fork ระบบเครือข่ายจะตามไปกับโซ่ที่มีหลักฐานขุดเหมืองสะสมมากที่สุด ซึ่งโดยทั่วไปแล้วคือโซ่ที่ยาวที่สุด โหนดจะสลับไปยังโซ่ที่ยาวกว่าเมื่อเป็นชัดเจนว่าโซ่ไหนมีการทำงานมากกว่า

ป้องกันการใช้จ่ายซ้ำ

การแก้ไขการใช้จ่ายครั้งที่สอง:

  • หากบล็อกมีธุรกรรมที่ขัดแย้งกัน (double spend) เฉพาะธุรกรรมที่ถูกต้องแรกที่จะถูกนำเข้าบล็อกถือเป็นที่ถูกต้องเท่านั้น ธุรกรรมที่ขัดแย้งกันอื่นๆจะถูกละทิ้ง
  • หากมีการทำธุรกรรมที่ขัดแย้งกันอยู่ในบล็อกที่แตกต่างกัน ธุรกรรมที่อยู่ในบล็อกที่ได้รับการยืนยันก่อนเป็นธุรกรรมที่ถูกต้อง

การจัดการการใช้จ่ายซ้ําซ้อนโดยละเอียด

กระบวนการตรวจสอบความถูกต้อง:

  • ระหว่างบล็อก: หากธุรกรรมสองรายการที่พยายามใช้เหรียญเดียวกันรวมอยู่ในบล็อกแยกต่างหากธุรกรรมในบล็อกที่ได้รับการยืนยันก่อนจะถือว่าถูกต้อง บล็อกที่มีธุรกรรมที่ขัดแย้งกันจะถูกปฏิเสธ
  • ในบล็อกเดียว: หากมีธุรกรรมที่ขัดแย้งกันอยู่ในบล็อกเดียวกัน นักขุดจะรวมเพียงหนึ่งรายการเท่านั้น นักขุดมักจะเลือกตามค่าธรรมเนียมการทำธุรกรรม (ค่าธรรมเนียมสูงได้รับการบัญชีก่อน) หรืออายุของธุรกรรม (ธุรกรรมก่อนหน้าได้รับการบัญชีก่อน)

ผู้ใช้สามารถควบคุมจำนวนค่าธรรมเนียมการทำธุรกรรมที่พวกเขาจ่ายได้อย่างไร?

การคำนวณค่าธรรมเนียมการทำธุรกรรม: ผู้ใช้สามารถควบคุมค่าธรรมเนียมการทำธุรกรรมเพื่อเร่งความเร็วในการยืนยันธุรกรรมของพวกเขา ค่าธรรมเนียมจะถูกกำหนดโดยสูตรต่อไปนี้:

ค่าธรรมเนียมการทําธุรกรรม = อินพุตทั้งหมด−เอาต์พุตทั้งหมด−เปลี่ยนแปลง

ผู้ใช้กําหนดค่าธรรมเนียมการทําธุรกรรมโดยการปรับจํานวนอินพุตจํานวนเอาต์พุตและจํานวนการเปลี่ยนแปลง

กระบวนการขุดเหมืองสกุลเงินดิจิตอล

  1. เตรียมอุปกรณ์การขุดเหมือง: ติดตั้งฮาร์ดแวร์การขุดหรืออุปกรณ์คอมพิวเตอร์ความสามารถสูง
  2. ให้แน่ใจว่ามีการเชื่อมต่ออินเทอร์เน็ต: เชื่อมต่ออุปกรณ์ขุดเหมืองกับอินเทอร์เน็ต
  3. ดาวน์โหลดกระเป๋าเงินดิจิทัล: ขอรับกระเป๋าเงินดิจิทัลและสร้างคีย์ส่วนตัวและคีย์สาธารณะของคุณ
  4. เริ่มขุด: คลิกที่ปุ่มขุดเหมืองในกระเป๋าเงินเพื่อเริ่มขุดเหมือง

การขุดเหมืองในสระว่ายน้ำ

การกระจายรายได้: เมื่อขุดในพูล พูลโหนดจะได้รับรางวัลบล็อก จากนั้นพูลจะกระจายรายได้ให้กับสมาชิกตามพลังการคํานวณที่มีส่วนร่วม การกระจายนี้ดําเนินการผ่านการโอนไปยังกระเป๋าเงินของนักขุด

selfish mining คืออะไร?

การขุดที่เห็นแก่ตัว: การขุดแบบเห็นแก่ตัวเป็นกลยุทธ์ที่นักขุด (หรือกลุ่มการขุด) พบบล็อกใหม่ แต่ไม่ได้ออกอากาศทันที พวกเขายังคงทําเหมืองแบบส่วนตัวบนโซ่ของพวกเขา (โซ่ที่ซ่อนอยู่) เมื่อพวกเขาพบบล็อกเพิ่มเติมพวกเขาจะออกอากาศทั้งหมดในครั้งเดียว สิ่งนี้สามารถทําให้งานของนักขุดคนอื่น ๆ เป็นโมฆะและเอียงพลังการคํานวณและรางวัลต่อนักขุดที่เห็นแก่ตัว Bitcoin สามารถ mitiGate.io ผลกระทบของการขุดที่เห็นแก่ตัวโดยการปรับปรุงโปรโตคอลการออกอากาศ

การตรวจสอบโหนดเมื่อได้รับธุรกรรมและบล็อก

การตรวจสอบการทำธุรกรรม: เมื่อมีการส่งธุรกรรมไปยังโหนดหนึ่ง จะมีการตรวจสอบหลายรายการเพื่อกำหนดให้เพิ่มลงใน mempool หรือไม่:

  1. รูปแบบธุรกรรม: ตรวจสอบความถูกต้องของโครงสร้างข้อมูลธุรกรรม
  2. เซ็นเนเจอร์ธุรกรรม: ตรวจสอบความถูกต้องของเซ็นเนเจอร์ธุรกรรม
  3. double-spending: ตรวจสอบว่าอินพุทยังไม่ได้ถูกใช้ใน mempool หรือบล็อกเชนก่อนหน้านี้
  4. อินพุตและเอาต์พุต: ยืนยันว่าจํานวนอินพุตทั้งหมดมากกว่าหรือเท่ากับจํานวนเอาต์พุตทั้งหมด
  5. สคริปต์ธุรกรรม: ดำเนินการและยืนยันสคริปต์ (โดยส่วนใหญ่ในสมาร์ทคอนแทร็ค)
  6. locktime: ตรวจสอบว่าเงื่อนไข locktime (ความสูงบล็อกหรือเวลา) ได้รับการปฏิบัติตามหรือไม่
  7. ขนาดและค่าธรรมเนียมการทำธุรกรรม: ให้ตรวจสอบขนาดและค่าธรรมเนียมการทำธุรกรรมให้เพียงพอ

ตรวจสอบบล็อก: เมื่อโหนดขุดเหรียญได้รับบล็อกใหม่ จะทำการตรวจสอบอย่างละเอียดในบล็อกและธุรกรรมของมัน:

  1. ความถูกต้องของการทำธุรกรรม: ตรวจสอบความถูกต้องของแต่ละธุรกรรมภายในบล็อก (การตรวจสอบเดียวกับการตรวจสอบธุรกรรม)
  2. การตรวจสอบเฉพาะบล็อก:
    • ขนาดบล็อก: ตรวจสอบให้แน่ใจว่าขนาดบล็อกอยู่ในขีดจำกัดที่อนุญาต
    • รางวัลบล็อก: ตรวจสอบว่ารางวัลบล็อก (บิตคอยน์ที่พึงพิงแล้วและค่าธรรมเนียมการทำธุรกรรม) ถูกต้องหรือไม่
    • รากเมอร์เคิล: คำนวณและตรวจสอบรากเมอร์เคิลของบล็อก
    • การประทับเวลา: ยืนยันว่าการประทับเวลาบล็อกอยู่ในช่วงที่เหมาะสม
    • เป้าหมายความยาก: ตรวจสอบว่าบล็อกตรงกับเป้าหมายความยากปัจจุบัน

11. references

[1] บรรยาย 12 | เทคโนโลยีบล็อกเชนลึกซึ้ง (4): การตกลง pow อย่างลึกลับของบล็อกเชน-geek time:คำประกาศ:

  1. บทความนี้ถูกนำเสนอใหม่จาก[Gate.io เรียนรู้ทีมของเราจะดูแลมันโดยรวดเร็ว
  2. ข้อความปฏิเสธความรับผิด: มุมมองและความคิดเห็นที่แสดงในบทความนี้เป็นเพียงเพียงผู้เขียนเท่านั้นและไม่มีอุทธรณ์ใด ๆ ที่จะเป็นการให้คำแนะนำทางการลงทุนใด ๆ
  3. การแปลบทความเป็นภาษาอื่น ๆ ดําเนินการโดยทีม Gate.io Learn ห้ามคัดลอก แจกจ่าย หรือลอกเลียนแบบบทความที่แปลแล้ว เว้นแต่จะกล่าวถึง คัดลอก แจกจ่าย หรือลอกเลียนแบบบทความที่แปลแล้ว

การเปิดเผยความลับของการขุดเหมือง

มือใหม่7/15/2024, 6:30:04 AM
บทความนี้ให้คำอธิบายอย่างละเอียดเกี่ยวกับกระบวนการ "ขุดเหมือง" ในบล็อกเชน โดยใช้การเปรียบเทียบกับกิจกรรมการขุดเหมืองทั่วไป เอกลักษณ์พื้นฐานของการขุดเหมืองดิจิทัลที่เกี่ยวข้องกับการใช้ทรัพยากรคำนวณในการแก้ไขปัญหาทางคณิตศาสตร์สำหรับการตรวจสอบธุรกรรมและการออกสกุลเงินใหม่

ส่งต่อชื่อเรื่องต้นฉบับ '白话区块链三:揭开挖矿神秘的面纱——挖矿是什么?为什么要挖矿?谁是我们买不起显卡的罪魁祸首?'

หนึ่งในแนวคิดที่คุ้นเคยที่สุดที่เกี่ยวข้องกับบล็อกเชนสําหรับทุกคนน่าจะเป็นการขุด หลายคนอาจเคยได้ยินเกี่ยวกับการขุดหลายครั้ง แต่ไม่แน่ใจว่ามันเกี่ยวข้องกับอะไร ในส่วนนี้เราจะขัดจังหวะการเขียนโปรแกรมปกติของเราเพื่อแนะนํา "การขุด" ก่อน

สรุปเนื้อหาอย่างรวดเร็วจาก "Plain Blockchain 1: Introduction to Bitcoin (ผู้บุกเบิกการปฏิวัติบล็อกเชนและผู้ท้าชิงสกุลเงินอธิปไตย)" ซึ่ง Satoshi Nakamoto ออกแบบระบบการเงิน Bitcoin เพื่อเชื่อมโยงรางวัลสําหรับการทําบัญชีกับการออกสกุลเงิน วิธีการนี้ช่วยให้การออกสกุลเงินเป็นไปโดยอัตโนมัติผ่านกระบวนการทําบัญชีแก้ปัญหาการออกสกุลเงินในขณะเดียวกันก็สนับสนุนให้ผู้ทําบัญชีมีส่วนร่วมอย่างแข็งขัน

1. กระบวนการขุดเหมืองคืออะไร?

ในโลกจริง กระบวนการขุดเหมืองเป็นกระบวนการที่เหมืองแร่ใช้เครื่องมือต่าง ๆ เพื่อขุดแร่มีคุณค่าซึ่งซ่อนอยู่ในหินจากเหมือง คนขุดแร่สามารถแยกความคุ้มค่าจากแร่โดยใช้แรงงานกายภาพ

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

2. ทำไมกระบวนการขุดเหมืองถึงจำเป็น?

การขุดเหมืองมีจุดประสงค์หลัก 2 ประการ: การตรวจสอบธุรกรรมที่เกิดขึ้นเร็วๆ นี้โดยการจัดหีบหน้าไว้ในบล็อกและเชื่อมโยงกับบล็อกเชน และการออกเสียงเงินใหม่โดยการให้รางวัลแก่ผู้บัญชีหนังสือรายวัน ด้านล่างเป็นฟังก์ชันละเอียดของการขุดเหมือง:

  1. การเลือกที่ประกอบด้วยผู้ดูแลบัญชี: จำเป็นต้องมีกลยุทธ์ในการเลือกผู้ดูแลบัญชีจริงจากผู้สมัครจำนวนมาก ผลการขุดเหมืองถูกใช้เป็นพื้นฐานในการเลือกนี้ เพื่อให้ทุกธุรกรรมได้รับการรับรู้จากผู้เข้าร่วมทั้งหมด และเพื่อเรียกใช้ความเห็นร่วมกันทั่วเครือข่าย
  2. การยืนยันธุรกรรม: ทุกธุรกรรมบิตคอยน์จำเป็นต้องได้รับการยืนยันจากผู้ขุดในเครือข่าย กระบวนการนี้ยืนยันความถูกต้องของธุรกรรมรวมถึง:
    • การตรวจสอบรูปแบบและขนาดของการทำธุรกรรมให้ตรงตามข้อมูลสเปค
    • ตรวจสอบความถูกต้องของลายเซ็นต์ของแต่ละธุรกรรมเพื่อให้แน่ใจว่ามันถูกเริ่มต้นโดยผู้ใช้ที่มีคีย์ส่วนตัวที่เกี่ยวข้อง
    • ตรวจสอบว่าจำนวนเงินที่รับเข้ามามากกว่าจำนวนเงินที่จ่ายออก (โดยบางส่วนของจำนวนเงินถูกเก็บเป็นค่าธรรมเนียม) โดยให้แน่ใจว่าโทเค็นที่ใช้ในการชำระเงินยังไม่เคยถูกใช้ไปซ้ำ
    • การยืนยันว่าธุรกรรมยังไม่เคยถูกรวมอยู่ในบล็อก
  3. การออกสกุลเงินใหม่: การขุดเป็นวิธีที่ bitcoins ใหม่เข้าสู่การไหลเวียน เมื่อนักขุดขุดบล็อกใหม่สําเร็จพวกเขาจะได้รับ bitcoin จํานวนหนึ่งเป็นรางวัล กลไกการให้รางวัลนี้ไม่เพียง แต่จูงใจให้ผู้คนมีส่วนร่วมในการขุด แต่ยังทําหน้าที่เป็นวิธีการออก bitcoin วิธีการออกสกุลเงินนี้ช่วยให้มั่นใจได้ว่าการไหลเวียนของสกุลเงินจะเพิ่มขึ้นอย่างต่อเนื่องและควบคุมได้ช่วยจัดการอัตราเงินเฟ้อ
  4. การส่งเสริมการมีส่วนร่วม: กลไกของรางวัลสร้างคติให้มีผู้เข้าร่วมมากขึ้นในการรักษาระบบสกุลเงิน โดยส่งเสริมการพัฒนาที่ต่อเนื่องและแข็งแรง
  5. การเพิ่มความปลอดภัยของเครือข่ายและการกระจายอํานาจ: ผลตอบแทนจากการขุดนําไปสู่นักขุดจํานวนมากส่งผลให้มีพลังการคํานวณแบบกระจาย การกระจายอํานาจนี้ช่วยให้มั่นใจได้ว่าไม่มีเอนทิตีเดียวที่สามารถควบคุม 50% ของพลังการคํานวณซึ่งจะช่วยเพิ่มความโปร่งใสและความปลอดภัยของระบบ การยึดมั่นในหลักการโซ่ที่ยาวที่สุดช่วยเพิ่มความปลอดภัยของระบบ

3. ทำไมนักขุดเหมืองต้องการมีส่วนร่วมในกระบวนการขุดเหมือง?

การขุดเหมืองเป็นกระบวนการที่ผู้ขุดเหมืองได้รับแรงบันดาลใจในการเข้าร่วมขุดเหมืองเนื่องจากพวกเขาได้รับรางวัลที่มีค่าสูงสำหรับการบรรจุบล็อกลงบนบล็อกเชน รางวัลเหล่านี้มาจากแหล่งที่มีความสำคัญสองแห่ง:

  • รางวัลบล็อก (เงินสกุลใหม่ที่เปิดจำหน่าย): ระบบสกุลเงินอัตโนมัติจะเปิดจำหน่ายสกุลเงินใหม่ซึ่งไปทั้งหมดให้กับผู้ขุดเหมือง เช่น เช่นในระบบบิตคอยน์ ณ ปัจจุบัน ผู้ขุดเหมืองจะได้รับบิตคอยน์ 3.125 เหรียญสำหรับแต่ละบล็อกที่พัก โดยที่แต่ละบิตคอยน์มีมูลค่าประมาณ 65,000 ดอลลาร์ การพักบล็อกเดียวสามารถทำให้ได้กำไรมากกว่า 200,000 ดอลลาร์ หรือประมาณ 1.47 ล้าน RMB
  • ค่าธรรมเนียมการทําธุรกรรมที่จ่ายโดยผู้ใช้: เนื่องจากความสามารถที่ จํากัด ของบล็อกในการเก็บบันทึกธุรกรรมผู้ใช้บางคนจ่ายค่าธรรมเนียมการทําธุรกรรมเพื่อจูงใจให้นักขุดจัดลําดับความสําคัญของธุรกรรมเพื่อการยืนยันที่รวดเร็วยิ่งขึ้น เมื่อเลือกธุรกรรมจากพูลที่จะรวมอยู่ในบล็อกนักขุดมักจะเลือกธุรกรรมที่มีค่าธรรมเนียมสูงกว่า บล็อกสามารถมีธุรกรรมได้หลายพันรายการและค่าธรรมเนียมทั้งหมดจากธุรกรรมเหล่านี้จะไปที่นักขุดซึ่งเป็นแหล่งรายได้ที่สําคัญอีกแหล่งหนึ่ง เมื่อผู้คนใช้ Bitcoin ในการทําธุรกรรมมากขึ้นการแข่งขันเพื่อรวมไว้ในบล็อกจึงทวีความรุนแรงขึ้นซึ่งนําไปสู่ค่าธรรมเนียมที่สูงขึ้นซึ่งผู้ใช้ยินดีจ่าย

เมื่อเวลาผ่านไป รางวัลบล็อคจะลดลง (ตัวอย่างเช่นเนื่องจากกลไกของบิตคอยน์ที่จะลดลงในระยะเวลาประมาณสี่ปี) ในที่สุดเมื่อขุดบิตคอยน์ 21 ล้านเหรียญทั้งหมดแล้วที่คาดว่าจะเกิดขึ้นปี 2141 รางวัลบล็อคอัตโนมัติจะหยุดอย่างเป็นทางการ และค่าธรรมเนียมการทำธุรกรรมจะเป็นแหล่งรายได้หลักสำหรับผู้ขุด

เคล็ดลับ

บิตคอยน์สร้างบล็อกใหม่โดยราว ๆ ทุก 10 นาที โดยเริ่มต้นแต่ละบล็อกที่สร้างขึ้นจะได้รับ 50 บิตคอยน์ รางวัลนี้จะลดลงครึ่งหนึ่งทุก 4 ปี และจนถึงปัจจุบันได้มีการลดลงครึ่งทั้งหมด 4 ครั้ง ในปัจจุบันแต่ละบล็อกสร้างขึ้นจะได้รับ 3.125 บิตคอยน์ โดยการลดลงครึ่งล่าสุดเกิดขึ้นในเดือนเมษายน 2024 การลดลงครึ่งถัดไปคาดว่าจะเกิดขึ้นรอบปี 2028 โดยประมาณในปี 2141 บิตคอยน์จะถึงขีดจำกัดในการเผยแพร่

ค่าธรรมเนียมการทำธุรกรรมได้รับผลกระทบไม่เพียงแค่จากการข้อเสนอและความต้องการเท่านั้น แต่ยังขึ้นอยู่กับขนาดของธุรกรรมด้วย เนื่องจากค่าธรรมเนียมเป็นสัมพันธ์กับพื้นที่ที่ธุรกรรมครอบครองในบล็อก

4. วิธีการเข้าร่วมกระบวนการขุดเหมือง

สำหรับคนขุดแร่ เข้าร่วมกระบวนการขุดเหมืองง่ายดาย ดาวน์โหลดไคลเอ็นต์กระเป๋าสตางค์สกุลเงินดิจิทัล และภายในไคลเอ็นต์ คลิกปุ่มขุดเหมืองเพื่อเริ่มต้นการขุดเหมือง

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

อัลกอริธึมการขุดเป็นตัวกําหนดซึ่งหมายความว่าตราบใดที่นักขุดเรียกใช้อัลกอริทึมอย่างต่อเนื่องในที่สุดพวกเขาจะได้รับผลลัพธ์ อย่างไรก็ตามเนื่องจากทรัพยากรการคํานวณที่แตกต่างกันเวลาที่ใช้ในการคํานวณผลลัพธ์นี้อาจแตกต่างกันในหมู่นักขุด เมื่อโหนดคํานวณค่าเป้าหมายความพยายามของนักขุดคนอื่น ๆ ในช่วงเวลานั้นจะไร้ประโยชน์ส่งผลให้ผลตอบแทนติดลบเนื่องจากทรัพยากรทางกายภาพที่ใช้ไป

เพื่อหลีกเลี่ยงความพยายามที่สูญเปล่านักขุดมักจะรวมทรัพยากรการคํานวณของพวกเขาโดยเข้าร่วมโหนดพูลการขุด โหนดนี้ทํางานเหมือนโหนดอื่น ๆ แต่มีพลังในการคํานวณมากกว่าอย่างมีนัยสําคัญ เมื่อพูลขุดบล็อกสําเร็จรางวัลจะถูกแจกจ่ายให้กับนักขุดที่เข้าร่วมตามทรัพยากรการคํานวณที่มีส่วนร่วม สิ่งสําคัญคือต้องทราบว่าบนบล็อกเชนนักขุดที่บันทึกเป็นบรรจุภัณฑ์บล็อกคือโหนดพูลการขุดในขณะที่นักขุดแต่ละคนจะได้รับส่วนแบ่งของรางวัลที่จัดสรรโดยพูลไม่ใช่โดยตรงจากระบบสกุลเงิน

บิทเมน บริษัทผู้ผลิตชิปขุดเหมืองที่มีประสิทธิภาพสูงที่พิสูจน์บทบาทของพูลขุดเหมือง ที่มีส่วนร่วมในการกระจายอำนาจในการทำบัญชี

5. ลักษณะเฉพาะของปัญหาการขุดเหมือง

โครงการบล็อกเชนที่แตกต่างกันอาจมีปริศนาในการขุดและระดับความยากต่าง ๆ ด้วย ตัวอย่างเช่น ที่นี่เราจะเลือกบิตคอยน์เป็นตัวอย่าง วิธีการขุดที่ใช้โดยบิตคอยน์คือ Proof of Work (PoW) สารที่สำคัญของอัลกอริทึมนี้คือ การที่จะได้ผลลัพธ์ต้องใช้งานไปมากกว่าที่จะพิสูจน์

ปริศนาการขุดไม่ใช่ปัญหาทางคณิตศาสตร์แบบดั้งเดิม แต่เกี่ยวข้องกับการหาตัวเลขสุ่มที่เรียกว่า nonce NONCE นี้เมื่อรวมกับข้อมูลในบล็อกและประมวลผลผ่านฟังก์ชันแฮชจะต้องสร้างค่าแฮชที่ตรงตามเงื่อนไขเฉพาะ โดยทั่วไปเงื่อนไขนี้ต้องการให้ค่าแฮชน้อยกว่าค่าเป้าหมาย (หรือเทียบเท่าว่าบิต n แรกของค่าแฮชเป็นศูนย์) สมการมีดังนี้: hash(nonce+block_data)≤target\text{hash}(\text{nonce} + \text{block_data}) \leq \text{target}hash(nonce+block_data)≤target

บิตคอยน์ใช้ฟังก์ชันแฮช sha-256 ซึ่งแปลงข้อมูลขนาดใดก็ตามเป็นผลลัพธ์ความยาวคงที่ของ 256 บิต (เทียบเท่ากับ 64 หลักสิบหกตัวหรือ 32 ไบต์) ผลลัพธ์เป็นสุ่มเกือบและมีการรับรองว่าจะเหมือนกันสำหรับข้อมูลนำเข้าที่เหมือนกัน การขุดเหมืองเกี่ยวข้องกับการเปลี่ยน nonce อย่างต่อเนื่องและการแฮชข้อมูลหัวบล็อกโดยใช้ sha-256 จนกว่าค่าแฮชที่ตรงตามเงื่อนไขเป้าหมายจะถูกค้นพบ

ตัวอย่างเช่น ค่าแฮช SHA-256 ที่มี 30 บิตแรกเป็นศูนย์: 000000000000000000000000000000111111010000011011000100100110111011000110100010011011000110100010110110101010011101011010100100011011010001111101001111110101001101111101011110011100011110011110000111000100110000001011011010001110011100110010111010010010010001101010110010110000000000000000000000000000000111111010000011011000100100110111011000110100010011011000110100010110110101010011101011010100100011011010001111101001111110101001101111101011110011100011110011110000111000100110000001011011010001110011100110010111010010010010001101010110010110000000000000000000000000000000111111010000011011000100100110111011000110100010011011000110100010110110101010011101011010100100011011010001111101001111110101001101111101011110011100011110011110000111000100110000001011011010001110011100110010111010010010010001101010110010110

การแปลงนี้เป็นเลขฐานสิบหกจะได้ค่าที่ขึ้นต้นด้วยเลขศูนย์เจ็ดตัว: 00000003f41b126ec689b1a2da9d5d46d13d0fd1bece47983d59c5d32eb4ac9000000003f41b126ec689b1a2da9d5d46d13d0fd1bece47983d59c5d32eb4ac9000000003f41b126ec689b1a2da9d5d46d13d0fd1bece47983d59c5d32eb4ac90

เพื่อความง่าย ๆ ความน่าจะเป็นในการค้นพบแฮชที่มีจำนวน n บิตแรกเป็นศูนย์คือ 12n\frac{1}{2^n}2n1​ ยิ่ง n มาก จะมีบิตศูนย์มากขึ้น และความน่าจะเป็นจะต่ำลง:

  • n=10n = 10n=10: 1 in 1,024
  • n = 20: 1 ใน 1,048,576
  • n=30n = 30n=30: 1 in 1,073,741,824
  • n = 40: 1 ใน 1,099,511,627,776
  • n=50n = 50n=50: 1 in 1,125,899,906,842,624

ด้วย n สูงสุด 256 การค้นหาค่าแฮชด้วยพลังคำนวณมนุษย์ปัจจุบันโดยยกเว้นคอมพิวเตอร์ควอนตัมเป็นเรื่องเกือบจะไปไม่ทันก่อนโลกจะสิ้นสุดลง

เนื่องจากคุณสมบัติของ sha-256 วิธีเดียวที่มีคือการใช้กำลังพลังงานที่มากมาย ซึ่งเกี่ยวข้องกับการพยายามต่าง ๆ อย่างต่อเนื่องจนกว่าเงื่อนไขจะถูกตอบรับ ความจำเป็นนี้สำหรับอุปกรณ์คอมพิวเตอร์ที่มีประสิทธิภาพสูงเป็นเหตุให้กระบวนการขุดเหมืองต้องใช้อุปกรณ์เช่นนี้

เนื่องจากคุณไม่สามารถคาดการณ์ค่าแฮชที่สร้างขึ้นโดยการเพิ่ม nonce ลงในข้อมูลบล็อกและส่งผ่าน SHA-256 กระบวนการนี้จึงเป็นแบบสุ่มทั้งหมด ตัวอย่างเช่นหากค่าแฮชเป้าหมายคือ 10,000 คุณไม่มีทางรู้ว่า NONCE ใดที่รวมกับข้อมูลบล็อกจะให้ค่าแฮชน้อยกว่า 10,000 ลักษณะที่คาดเดาไม่ได้และสุ่มนี้หมายความว่านักขุดต้องรักษาความเป็นไปได้ในการแจงนับจนกว่าเงื่อนไขจะพอใจ หากค่าหลายค่าตรงตามเงื่อนไข ค่าแฮชที่น้อยที่สุดจะถูกเลือกเนื่องจากค่าแฮชที่เล็กกว่าบ่งบอกถึงความยากที่สูงขึ้นและความน่าจะเป็นในการเกิดขึ้นที่ต่ํากว่า

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

6. โค้ดจำลองของอัลกอริทึมการขุดเหมือง

โค้ดต่อไปนี้จำลองกระบวนการขุดเหมือง เริ่มจากสตริงข้อมูลส่วนหัวบล็อก 'geekbang' และค้นหาเพิ่มขึ้นจากค่าน้อน 10,000 ไปเรื่อย ๆ จนกว่าจะพบค่าน้อนที่ตรงตามเงื่อนไขที่ระบุ

นี่คือสคริปต์ภาษาไพธอนที่สาธิตกระบวนการขุดเหมือง:

import hashlibdef main():    base_string = "geekbang"    nonce = 10000    count = 0    while true:        target_string = base_string + str(nonce)        pow_hash = hashlib.sha256(target_string.encode()).hexdigest()        count += 1        if pow_hash.startswith("0000"):  # first 4 hex digits are 0, equivalent to the first 16 bits being 0            print("hash:", pow_hash)            print("nonce:", nonce, "scan times:", count)            break        nonce += 1if __name__ == '__main__':    main()

เมื่อความต้องการคือว่าตัวอักษร 16 ตัวแรกของผลการแฮชต้องเป็นศูนย์ (เทียบเท่ากับ 16 บิตแรกเป็นศูนย์) จำนวนการคำนวณประมาณ 58,000 ครั้ง หากความต้องการเพิ่มเป็นตัวอักษร 5 ตัวแรกเป็นศูนย์ จำนวนการคำนวณเพิ่มขึ้นเป็น 1.23 ล้านครั้ง และเมื่อความต้องการคือตัวอักษร 7 ตัวแรกเป็นศูนย์ จำนวนการคำนวณเพิ่มขึ้นเป็น 160 ล้านครั้ง นี้แสดงให้เห็นว่าแต่ละศูนย์เพิ่มขึ้นในคำนวณแฮชจะทำให้การคำนวณเพิ่มขึ้นประมาณ 16 เท่า

นี่คือผลลัพธ์สำหรับเงื่อนไขเป้าหมายที่แตกต่างกัน:

4 หลักแรกของ hex เป็นศูนย์ (16 บิต):

import hashlib

def main():

base_string = "geekbang"nonce = 10000count = 0while true:    target_string = base_string + str(nonce)    pow_hash = hashlib.sha256(target_string).hexdigest()    count = count + 1    if pow_hash.startswith("0000"): # หน้า 4 ตัวหลัก 16 ในรหัสฐาน 16 เป็น 0 คือหน้า 16 บิตแรกเป็น 0    print pow_hash    print "nonce: https://s3.ap-northeast-1.amazonaws.com/gimg.gateimg.com/learn/51d786353cf4ac886dbb869fc7abf883dac67ceb.png"  scan times: https://s3.ap-northeast-1.amazonaws.com/gimg.gateimg.com/learn/4ebdb22f10c27f8797a1c2ae7bbbd78f40220ed4.png"" % (nonce, count)    break    nonce = nonce + 1

ifชื่อ == ‘หลัก‘:

main()

ดังที่เห็นการเพิ่มจํานวนศูนย์นําหน้าที่ต้องการในแฮชจะเพิ่มจํานวนความพยายามที่จําเป็นอย่างมากตามรูปแบบการเติบโตแบบเอ็กซ์โพเนนเชียล สิ่งนี้แสดงให้เห็นถึงความยากลําบากในการคํานวณและทรัพยากรที่จําเป็นสําหรับการขุดโดยเน้นย้ําถึงความต้องการอุปกรณ์คอมพิวเตอร์ประสิทธิภาพสูงในกระบวนการขุด

7. การปรับความยากของการขุดให้เป็นไปตามสภาพแวดล้อม

เพื่อให้แน่ใจว่าบล็อกถูกสร้างขึ้นประมาณทุก ๆ 10 นาทีระบบ Bitcoin จะปรับความยากในการขุดโดยการเปลี่ยนจํานวนศูนย์นําหน้าที่ต้องการในค่าแฮช กลไกการปรับความยากนี้เป็นส่วนสําคัญของระบบ Bitcoin มันประเมินเวลาที่ใช้ในการสร้างบล็อกล่าสุดในปี 2016 ซึ่งควรใช้เวลาประมาณสองสัปดาห์ หากบล็อกเหล่านี้ถูกขุดในเวลาน้อยกว่าสองสัปดาห์ความยากจะเพิ่มขึ้นโดยการเพิ่มศูนย์นําหน้ามากขึ้น (ลดค่าเป้าหมาย) ในทางกลับกันหากใช้เวลานานกว่าสองสัปดาห์ความยากจะลดลงโดยการลดจํานวนศูนย์นําหน้า (เพิ่มค่าเป้าหมาย) กลไกนี้ช่วยให้มั่นใจได้ว่าเวลาในการสร้างบล็อกยังคงอยู่ประมาณ 10 นาทีแม้ว่าอัตราแฮชทั้งหมดของเครือข่ายจะผันผวนก็ตาม

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

8. กระบวนการดำเนินการของอัลกอริทึมการขุดเหมือง

โครงการบล็อกเชนที่แตกต่างกันอาจมีขั้นตอนขุดเหมืองที่แตกต่างกัน ที่นี่เราจะอธิบายขั้นตอนที่มีชื่อเสียงที่สุด: ขั้นตอนขุดเหมืองของบิตคอยน์

กระบวนการขุดเหมืองของขั้นต่ำของบิตคอยน์

  1. การเลือกธุรกรรม: เลือกธุรกรรมหลายรายการจากกองความจำ (โดยทั่วไปจะมีลำดับความสำคัญสูงกว่า) สร้างธุรกรรมพิเศษโดยอัตโนมัติ (ที่เรียกว่าธุรกรรมเหรียญ) ที่ผู้รับเป็นผู้ทำเหมือง และจำนวนเงินของธุรกรรมคือรางวัลบล็อกบวกค่าธรรมเนียมทุกกระทำที่ถูกเลือกทั้งหมด และวางธุรกรรมพิเศษนี้ไว้ที่หัวรายการที่เลือกเพื่อสร้างชุดธุรกรรมสำหรับบล็อกที่จะถูกบรรจุไว้
  2. สร้างต้นไม้เมอร์เคิล: สร้างต้นไม้แฮชเมอร์เคิลจากชุดธุรกรรม ต้นไม้เมอร์เคิลเป็นต้นไม้ทวิภาคที่ใบแต่ละใบเก็บแฮชของธุรกรรมที่ทำให้ระบุและจัดทำดัชนีได้ แต่ล่างเก็บแฮชที่รวมของโหนดลูกของมัน ลงลึกไปยังโหนดราก โหนดรากระบุต้นไม้เมอร์เคิลและโดยต่อไประบุธุรกรรมทั้งหมด
  3. การสร้างส่วนหัวของบล็อก: ประกอบส่วนหัวของบล็อกจากค่ารากของ Merkle, nonce, เวอร์ชันบล็อก, แฮชของบล็อกก่อนหน้า, การประทับเวลา, เป้าหมายความยาก และ nonce ขนาดส่วนหัวของบล็อกคือ 80 ไบต์
  4. การแฮชหัวบล็อก: เปลี่ยนค่านอนซ์ในหัวบล็อกอย่างต่อเนื่องและทำการแฮช double sha-256 บนเนื้อหาของหัวบล็อก (คือ sha256(sha256(หัวบล็อก))) เปรียบเทียบค่าแฮชที่ได้กับค่าเป้าหมายปัจจุบันของเครือข่าย หากผลลัพธ์มีค่าน้อยกว่าค่าเป้าหมาย (แสดงถึงว่าสามารถที่ n ตัวแรกเป็นศูนย์) ปริ้นเทคโปร่งใจและการทำงานเสร็จสมบูรณ์
  5. การกระจายบล็อก: ส่งบล็อกที่ถูกขุดใหม่ไปยังโหนดต่อเนื่อง แจ้งให้ทราบว่าบล็อกถูกขุดเสร็จเรียบร้อยแล้ว
  6. การตรวจสอบและการแพร่กระจาย: เมื่อได้รับบล็อกใหม่ ๆ โหนดอื่น ๆ จะทำการแฮชคู่บนหัวบล็อกเพื่อให้ได้บล็อกแฮช พวกเขาจะตรวจสอบว่าตัวเลข n ตัวแรกของบล็อกแฮชเป็นศูนย์ ยอมรับบล็อก หยุดการคำนวณสำหรับบล็อกนี้ และpropaGate.io ไปยังโหนดบริเวณข้างเคียง

ขนาดของแต่ละฟิลด์ในส่วนหัวบล็อกมีดังนี้:

https://time.geekbang.org/column/article/5963

alt="">

โครงสร้างต้นไม้เมอร์เคิลมีดังนี้:

大后端私房菜]. alt="">

9. ความขัดแย้งในกระบวนการขุดเหมือง

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

มีทางสำคัญสองทางสำหรับการปรับปรุงการใช้ทรัพยากรที่สูญเสีย

  1. การเปลี่ยนอัลกอริทึมที่ใช้ทรัพยากรน้อยลง: ยิธีเรียมเป็นต้นมาได้ทำการเปลี่ยนจากอัลกอริทึม pow เป็นอัลกอริทึม proof of stake (pos) ซึ่งช่วยลดการสูญเสียทรัพยากรอย่างมาก
  2. การใช้ทรัพยากรไฟฟ้าว่างเปล่า: โหนดขุดเหมืองกำลังทดลองใช้แหล่งพลังงานทดแทน เช่น พลังงานลม สำหรับการดำเนินการขุดเหมือง พัฒนาที่สำคัญอีกอย่างคือการใช้ก๊าซธรรมชาติที่ไม่ได้ใช้งานแล้ว นอกจากนี้ บางสถาบันกำลังสำรวจวิธีที่จะรีไซเคิลความร้อนเกินขึ้นที่เกิดจากการขุดเหมืองบิตคอยน

10. คำถาม

มูลค่าของกระบวนการขุดเหมืองคืออะไร? ดูเหมือนว่าจะเป็นการสูญเสียทรัพยากรและไม่มีความหมายต่อสังคม

การทบทวนส่วน "ทําไมการขุดจึงจําเป็น" ของบทความนี้ความสําคัญโดยตรงของการขุดคือรองรับการออกสกุลเงินดิจิทัล รางวัลการขุดจูงใจให้ผู้คนมีส่วนร่วมในการรักษาสกุลเงินดิจิทัลมากขึ้นทําให้มีเสถียรภาพมากขึ้น นอกจากนี้อัลกอริธึมการขุดยังรักษาความสอดคล้องของธุรกรรมภายในระบบสกุลเงินดิจิทัลทําให้มีประสิทธิภาพมากขึ้นและอ่อนไหวต่อการโจมตีภายในและภายนอกน้อยลง

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

ผลตอบแทนจากการขุดจะลดลงจนถึงจุดที่ต่ํากว่าต้นทุนทําให้นักขุดหยุดการขุดและการทําธุรกรรมหยุดลงหรือไม่?

เป็นข้อกังวลทั่วไปที่ผลตอบแทนจากการขุดขึ้นอยู่กับผลตอบแทนของระบบเพียงอย่างเดียวซึ่งจะลดลงเมื่อเวลาผ่านไป อย่างไรก็ตามการขุดยังสร้างรายได้จํานวนมากจากค่าธรรมเนียมการทําธุรกรรม เมื่อสกุลเงินดิจิทัลได้รับการยอมรับในวงกว้างตลาดสําหรับการทําธุรกรรมสกุลเงินดิจิทัลจะขยายตัว ปริมาณธุรกรรมที่เพิ่มขึ้นนี้จะเพิ่มการแข่งขันสําหรับการรวมบล็อกซึ่งนําไปสู่ค่าธรรมเนียมที่สูงขึ้นซึ่งผู้ใช้ยินดีจ่ายเพื่อจัดลําดับความสําคัญของธุรกรรม ดังนั้นนักขุดจึงสามารถได้รับค่าธรรมเนียมการทําธุรกรรมจํานวนมากอย่างต่อเนื่องเพื่อให้มั่นใจว่าการประมวลผลธุรกรรมจะเป็นไปได้อย่างต่อเนื่อง

ถ้าค่าใช้จ่ายในการขุดเหมืองเกินกว่าค่าธรรมเนียมบล็อกเชน การขุดเหมืองสามารถดำเนินได้หรือไม่?

ค่าธรรมเนียมการทำธุรกรรมจะชดเชยค่าใช้จ่ายในกระบวนการขุดเหมืองหรือไม่?

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

จะเกิดอะไรขึ้นถ้านักขุดหลายคนไขปริศนาพร้อมกัน?

ผู้ขุดหลายคนแบ่งปันรางวัลการขุดหากพวกเขาส่งออกบล็อกใหม่ของพวกเขาพร้อมกันหรือไม่?

no, if multiple miners solve the puzzle and broadcast their new blocks at the same time, it creates a temporary fork in the blockchain. here’s how it works:

  1. การแข่งขันชั่วคราว: เมื่อบางโหนดได้รับบล็อกสองบล็อกที่มีความสูงเท่ากัน พวกเขาจะเก็บบล็อกทั้งสองชั่วคราว ทำให้เกิดการแข่งขันชั่วคราวในบล็อกเชน
  2. การแก้ไขคำถาม: เมื่อมีการขุดบล็อกใหม่ๆ โหนดจะดำเนินการสร้างบนโซ่ที่ยาวที่สุด โครงข่ายในที่สุดจะเข้าใจกันว่าเป็นโซ่เดียวกัน โดยทิ้งทิ้งโซ่ที่สั้นลง
  3. การเลือกโซ่หลัก: โหนดตามห่วงโซ่ที่ยาวที่สุด (โหนดที่มีหลักฐานการทํางานสะสมมากที่สุด) คนงานเหมืองที่มีบล็อกลงเอยด้วยโซ่ที่ยาวที่สุดจะได้รับรางวัลในขณะที่อีกบล็อกหนึ่งกลายเป็นบล็อก "เด็กกําพร้า"

ตัวอย่าง:

  • นักขุด a และนักขุด b ทั้งคู่ขุดบล็อกในความสูงเดียวกันและกระจายไป
  • บางๆ โหนดได้รับบล็อกของนักขุด a ก่อน ในขณะที่อื่น ๆ ได้รับบล็อกของนักขุด b ก่อน
  • ทั้งสองโซนจะอยู่ชั่วคราว
  • เมื่อบล็อกถัดไปถูกขุดเมื่อถูกเพิ่มเข้ากับโซ่ของนักขุด A โซ่นั้นกลายเป็นโซ่ที่ยาวที่สุดและโหนดจะนำมาใช้เป็นโซ่หลัก
  • นักขุด A ได้รับรางวัลและบล็อกของนักขุด B ถูกทิ้ง

เพราะไม่มีเหตุผลที่โหนดที่มีพลังงานแร่แฮชเป็น 50% ขึ้นไปจะทำให้ผิดกฎหมาย

การโจมตี 51% คืออะไร และทำไม super nodes ไม่โกง?

การโจมตี 51% เกิดขึ้นเมื่อภาคีหนึ่งหรือกลุ่มหนึ่งควบคุมกำลังคำนวณของเครือข่ายมากกว่า 50% นี่คือเหตุผลที่โหนดเซิร์ฟเวอร์ที่เทพสามารถใช้กับกัน:

  1. ความเป็นไปได้อย่างเ pr ไซต์: เป็นเรื่องที่ยากมากที่จะเป็นเจ้าของ 51% ของพลังการขุดเหมืองของเครือข่ายทั้งหมด เนื่องจากมีขนาดใหญ่และกระจายตัวของสกุลเงินดิจิตอลสำคัญ เช่น bitcoin
  2. การตรวจสอบเครือข่าย: แม้แม้ว่าโหนดซุปเปอร์จะพยายามที่จะโกง โหนดทุกโหนดจะตรวจสอบบล็อกแต่ละอันอย่างอิสระ ธุรกรรมที่ไม่ถูกต้องหรือพยายามใช้เงินซ้ำถูกปฏิเสธโดยเครือข่าย ทำให้ความพยายามของโหนดซุปเปอร์นั้นเป็นโมฆะ
  3. ความเคารพและแรงกดดันทางเศรษฐกิจ: โหนดเซอร์เป็นผู้ได้รับประโยชน์มากกว่าจากการรักษาความสมบูรณ์ของบล็อกเชนเมื่อเทียบกับการโจมตี การโจมตีที่ประสบความสำเร็จอาจทำให้มูลค่าของเหรียญดิจิตอลลดลงซึ่งจะทำให้นักโจมตีเสียเงินลง
  4. ประเภทของการโจมตี:
    • ใช้จ่ายสองเท่า: พยายามใช้เหรียญเดียวกันสองครั้ง
    • การบล็อกการทำธุรกรรม: ป้องกันการรวมธุรกรรมบางรายเข้าไปในบล็อก
    • การขุดเหมืองอิตถีที่ตั้งใจจะได้รับรางวัลการขุดเหมืองมากกว่าโดยการเปิดเผยบล็อกที่เลือก
    • การแก้ไขเวลา: เปลี่ยนแปลงเวลาบล็อกเพื่อได้ประโยชน์ในการขุดเหมือง
    • empty block attack: การขุดบล็อกที่ไม่มีธุรกรรมเพื่อชะลอความเร็วของเครือข่าย

ทำไมบล็อกเชนถือว่าไม่มีผู้บัญชีคงที่เพื่อป้องกันธุรกิจที่โกง

บล็อกเชนมีวิธีการป้องกันการกีดขวางและธุรกิจทุจริตอย่างไร

  1. การตรวจสอบโดยโหนดบริวณที่ใกล้เคียง: เมื่อบล็อกถูกกระจายให้กับโหนดใกล้เคียง เหล่าโหนดเหล่านี้จะตรวจสอบธุรกรรมภายในบล็อก หากพบธุรกรรมที่ไม่ถูกต้องใด ๆ พวกเขาจะปฏิเสธบล็อกและไม่แพร่เมื่อนไป
  2. กลไกฉันทามติ: กลไกฉันทามติของ Bitcoin อาศัยหลักการของห่วงโซ่ที่ยาวที่สุด โหนดเครือข่ายทั้งหมดพยายามขยายห่วงโซ่ที่ถูกต้องที่สุด หากมีคนพยายามแก้ไขบันทึกในอดีต (เช่น การลบธุรกรรม) พวกเขาจะต้องแก้ไขบล็อกที่ตามมาทั้งหมดที่เชื่อมโยงกับบล็อกที่ถูกดัดแปลงและตรวจสอบให้แน่ใจว่าห่วงโซ่ที่แก้ไขนั้นยาวกว่าห่วงโซ่หลักปัจจุบัน สิ่งนี้ต้องใช้ทรัพยากรการคํานวณจํานวนมหาศาลทําให้เป็นไปไม่ได้ในทางปฏิบัติ

ป้องกันการกระจายบล็อกที่ไม่สอดคล้องกันโดยนักขุด

  1. ความสอดคล้องในการกระจายบล็อก: นักขุดไม่สามารถค้นหาค่านอนที่ถูกต้องหลายค่าในเวลาสั้น ๆ ซึ่งป้องกันไม่ให้พวกเขากระจายบล็อกที่ถูกต้องไปยังโหนดที่ต่างกันพร้อมกัน บล็อกที่ผิดกฎหมายใด ๆ จะถูกลบทิ้งโดยโหนดที่อยู่ใกล้เคียง

พูลธุรกรรม (Mempool) คืออะไร

คำจำกัดความและฟังก์ชัน: ในเครือข่ายบล็อกเชน ธุรกรรมทั้งหมดที่ถูกส่งออกที่ยังไม่ได้รวมอยู่ชั่วคราวในหน่วยความจำ (mempool) ของโหนดเครือข่าย นักขุดเหมืองตรวจสอบ mempool เพื่อเลือกธุรกรรมที่จะสร้างบล็อกใหม่

กลยุทธ์การเลือกธุรกรรม: นักขุดสามารถเลือกธุรกรรมจาก Mempool ตามกลยุทธ์ของพวกเขา โดยทั่วไปพวกเขาจัดลําดับความสําคัญของธุรกรรมที่มีค่าธรรมเนียมสูงกว่า แต่บางคนอาจพิจารณาปัจจัยอื่น ๆ เช่นอายุของธุรกรรม (เวลาที่ใช้ใน mempool)

แหล่งรายได้ในระบบบิตคอยน์

ผู้เข้าร่วมและวิธีที่พวกเขาได้รับผลประโยชน์: นอกจากผู้ใช้ระบบบิตคอยน์นั้น ผู้เข้าร่วมสามคนหลักในระบบคือ คนขุดเหมือง นักพัฒนา และผู้ดำเนินการโหนด

  1. นักขุด: รับรางวัลและค่าธรรมเนียมการทําธุรกรรมผ่านการขุด
  2. นักพัฒนาและผู้ให้บริการโหนด: โดยทั่วไปจะไม่ได้รับโดยตรงจากระบบ Bitcoin การมีส่วนร่วมของพวกเขามักจะเป็นอุดมคติโดยมีเป้าหมายเพื่อรักษาความสมบูรณ์ของระบบ พวกเขาอาจได้รับรายได้ผ่านวิธีการอื่น เช่น การบริจาคและการสนับสนุน การมีส่วนร่วมในการขุดขึ้นอยู่กับความชอบของแต่ละบุคคล

ทำไมราคา GPU เพิ่มขึ้น? ทำไม GPU สำหรับการขุดเหมืองไม่น่าพอใจ?

การเพิ่มราคา GPU: ความต้องการสูงของ GPU โดยนักขุดเหมืองสำหรับการขุดเหมืองเป็นหนึ่งในสาเหตุที่ส่งผลให้มีความขาดแคลนในการส่งมอบสินค้า นำไปสู่การเพิ่มราคา

การขุดเหมือง gpus: การขุดเหมือง gpus คือ gpus ที่ใช้ก่อนหน้านี้สำหรับการขุดเหรียญดิจิตอล gpus เหล่านี้มีการคำนวณที่หนัก ทำให้เกิดการสึกกร่อนและสึกกรุ่นที่สำคัญ เนื่องจากประสิทธิภาพที่ลดลง ส่วนใหญ่คนส่วนมากจะไม่ต้องการซื้อ gpus ที่ใช้ไปแล้ว

นักขุดต้องเก็บข้อมูลบัญชีทั้งหมดหรือไม่?

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

เมื่อถึงขีดจำกัดการจำหน่ายของบิตคอยน์ จะเกิดอะไรขึ้น?

ไม่มีรางวัลอัตโนมัติเกิน 21 ล้านบิตคอยน์: เมื่อพลังงานทั้งหมดของบิตคอยน์ถึงขีดจำกัดของ 21 ล้านจะไม่มีระบบออกบิตคอยน์ใหม่เป็นรางวัลให้กับคนขุดเหมืองอีกต่อไป หากผู้ใช้ไม่ต้องการจ่ายค่าธรรมเนียมการทำธุรกรรมโดยทฤษฎีแล้วระบบการทำธุรกรรมอาจเผชิญกับความท้าทายในด้านการดำเนินงาน อย่างไรก็ตาม มีโอกาสที่ผู้ใช้จะเต็มใจจ่ายค่าธรรมเนียมการทำธุรกรรมเพื่อให้ทรานแซคชันของพวกเขาได้รับการประมวลผล ซึ่งสร้างความมั่นใจในการดำเนินการต่อไปของระบบ

ความสูงบล็อกจะยังคงเพิ่มขึ้น: แม้ว่าจะถึงจำนวนบิตคอยน์สูงสุด 21 ล้านบิตคอยน์แล้ว ความสูงของบล็อก (จำนวนบล็อกทั้งหมด) จะยังคงเพิ่มขึ้นตลอดเวลาถ้านักขุดยินดีขุดและพัฒนาการทำธุรกรรมเข้าเบียนใหม่ ความสูงของบล็อกไม่ได้จำกัดโดยการเพิ่มจำนวนบิตคอยน์

ศักยภาพในการเปลี่ยนแปลงฉันทามติ: ชุมชนสามารถเสนอการเปลี่ยนแปลงกฎฉันทามติเช่นการเพิ่มอุปทาน bitcoin ทั้งหมดเพื่อให้สามารถสร้างเหรียญใหม่ได้หากจําเป็น

นักขุดได้รับรางวัลอย่างไร?

ธุรกรรมคอยน์เบส: ในบล็อกเชนของบิตคอยน์ เหรียญรางวัลของนักขุดจะถูกกระจายผ่านธุรกรรมพิเศษที่รู้จักกันดีว่า "ธุรกรรมคอยน์เบส" หรือ "รางวัลบล็อก" ธุรกรรมนี้มีลักษณะเฉพาะ:

  1. ไม่ต้องประกาศ: ธุรกรรม coinbase เป็นธุรกรรมแรกในแต่ละบล็อกที่สร้างขึ้นโดยอัตโนมัติโดยอัลกอริทึมการขุดและไม่จำเป็นต้องประกาศให้โหนดอื่นเห็น
  2. ไม่มีอินพุต: ไม่เหมือนกับธุรกรรม Bitcoin ทั่วไปธุรกรรม Coinbase ไม่มีการป้อนข้อมูล (ไม่มีผู้ส่ง) มันสร้าง bitcoins ใหม่ที่ได้รับรางวัลให้กับนักขุด
  3. เอาต์พุต: ธุรกรรม Coinbase จะมอบรางวัลไปยังที่อยู่กระเป๋าเงินของนักขุด ซึ่งรวมถึง bitcoins ที่เพิ่งสร้างใหม่และค่าธรรมเนียมการทําธุรกรรมทั้งหมดจากธุรกรรมที่รวมอยู่ในบล็อก

วิธีการคำนวณรายได้ของผู้ขุดเหมืองคืออย่างไร?

การคํานวณรายได้ต่อบล็อก: รายได้ของนักขุดจะถูกคํานวณทุกครั้งที่มีการขุดบล็อกสําเร็จและยืนยันโดยกลไกฉันทามติของเครือข่าย นักขุด (หรือพูลการขุด) ที่ขุดบล็อกจะได้รับรางวัลบล็อกและค่าธรรมเนียมการทําธุรกรรมสะสมจากธุรกรรมทั้งหมดที่รวมอยู่ในบล็อก

กระบวนการรับรางวัล: เมื่อนักขุดหรือพูลการขุดขุดบล็อกสําเร็จและได้รับการยืนยันจากเครือข่ายพวกเขาจะได้รับรางวัลบล็อกและค่าธรรมเนียมการทําธุรกรรม สิ่งนี้ดําเนินการผ่านธุรกรรม Coinbase ซึ่งแปลงค่าธรรมเนียมและรางวัลเป็นเอาต์พุตธุรกรรมที่ไม่ได้ใช้ (UTXOs) ที่เครดิตไปยังบัญชีของนักขุด

บล็อกถูกสร้างต่อเนื่องหรือขนานกัน?

การสร้างต่อเนื่อง: บล็อกถูกสร้างต่อเนื่องในบล็อกเชน บล็อกใหม่สามารถสร้างได้เฉพาะหลังจากที่บล็อกก่อนหน้าได้ถูกขุดเหมืองเรียบร้อยและเพิ่มเข้าสู่โซ่

การบรรจุธุรกรรม

การทำธุรกรรมหลายรายการต่อบล็อก: บล็อกมีทั่วไปแล้วที่มีการทำธุรกรรมหลายรายการ นักขุดรวมทั้งหมดที่เป็นไปได้ของการทำธุรกรรมเพื่อเพิ่มรายได้จากค่าธุรกรรม แทนที่จะแพ็คเอกสารที่เป็นไปได้เป็นแต่ละรายการ

การใช้ประโยชน์จากพื้นที่บล็อก

บล็อกที่เต็มบางส่วน: บล็อกส่วนมากไม่ได้ใช้งานอย่างเต็มที่ นักขุดเริ่มทำงานกับบล็อกถัดไปเมื่อพวกเขาพบแฮชที่ถูกต้องที่ตรงกับความยากลำบาก โดยไม่ว่าบล็อกจะเต็มเต็มหรือไม่

การขุดเหมืองโดยไม่มีธุรกรรม

บล็อกที่ว่างเปล่า: บล็อกสามารถขุดได้แม้ว่าจะไม่มีธุรกรรมที่จะรวมอยู่ในบล็อกนั้น บล็อกเหล่านี้ที่เรียกว่าบล็อกที่ว่างเปล่า ยังคงให้รางวัลระบบให้กับนักขุด

การจัดการส้อมบล็อกเชน

กฎของโซ่ที่ยาวที่สุด: เมื่อเกิด fork ระบบเครือข่ายจะตามไปกับโซ่ที่มีหลักฐานขุดเหมืองสะสมมากที่สุด ซึ่งโดยทั่วไปแล้วคือโซ่ที่ยาวที่สุด โหนดจะสลับไปยังโซ่ที่ยาวกว่าเมื่อเป็นชัดเจนว่าโซ่ไหนมีการทำงานมากกว่า

ป้องกันการใช้จ่ายซ้ำ

การแก้ไขการใช้จ่ายครั้งที่สอง:

  • หากบล็อกมีธุรกรรมที่ขัดแย้งกัน (double spend) เฉพาะธุรกรรมที่ถูกต้องแรกที่จะถูกนำเข้าบล็อกถือเป็นที่ถูกต้องเท่านั้น ธุรกรรมที่ขัดแย้งกันอื่นๆจะถูกละทิ้ง
  • หากมีการทำธุรกรรมที่ขัดแย้งกันอยู่ในบล็อกที่แตกต่างกัน ธุรกรรมที่อยู่ในบล็อกที่ได้รับการยืนยันก่อนเป็นธุรกรรมที่ถูกต้อง

การจัดการการใช้จ่ายซ้ําซ้อนโดยละเอียด

กระบวนการตรวจสอบความถูกต้อง:

  • ระหว่างบล็อก: หากธุรกรรมสองรายการที่พยายามใช้เหรียญเดียวกันรวมอยู่ในบล็อกแยกต่างหากธุรกรรมในบล็อกที่ได้รับการยืนยันก่อนจะถือว่าถูกต้อง บล็อกที่มีธุรกรรมที่ขัดแย้งกันจะถูกปฏิเสธ
  • ในบล็อกเดียว: หากมีธุรกรรมที่ขัดแย้งกันอยู่ในบล็อกเดียวกัน นักขุดจะรวมเพียงหนึ่งรายการเท่านั้น นักขุดมักจะเลือกตามค่าธรรมเนียมการทำธุรกรรม (ค่าธรรมเนียมสูงได้รับการบัญชีก่อน) หรืออายุของธุรกรรม (ธุรกรรมก่อนหน้าได้รับการบัญชีก่อน)

ผู้ใช้สามารถควบคุมจำนวนค่าธรรมเนียมการทำธุรกรรมที่พวกเขาจ่ายได้อย่างไร?

การคำนวณค่าธรรมเนียมการทำธุรกรรม: ผู้ใช้สามารถควบคุมค่าธรรมเนียมการทำธุรกรรมเพื่อเร่งความเร็วในการยืนยันธุรกรรมของพวกเขา ค่าธรรมเนียมจะถูกกำหนดโดยสูตรต่อไปนี้:

ค่าธรรมเนียมการทําธุรกรรม = อินพุตทั้งหมด−เอาต์พุตทั้งหมด−เปลี่ยนแปลง

ผู้ใช้กําหนดค่าธรรมเนียมการทําธุรกรรมโดยการปรับจํานวนอินพุตจํานวนเอาต์พุตและจํานวนการเปลี่ยนแปลง

กระบวนการขุดเหมืองสกุลเงินดิจิตอล

  1. เตรียมอุปกรณ์การขุดเหมือง: ติดตั้งฮาร์ดแวร์การขุดหรืออุปกรณ์คอมพิวเตอร์ความสามารถสูง
  2. ให้แน่ใจว่ามีการเชื่อมต่ออินเทอร์เน็ต: เชื่อมต่ออุปกรณ์ขุดเหมืองกับอินเทอร์เน็ต
  3. ดาวน์โหลดกระเป๋าเงินดิจิทัล: ขอรับกระเป๋าเงินดิจิทัลและสร้างคีย์ส่วนตัวและคีย์สาธารณะของคุณ
  4. เริ่มขุด: คลิกที่ปุ่มขุดเหมืองในกระเป๋าเงินเพื่อเริ่มขุดเหมือง

การขุดเหมืองในสระว่ายน้ำ

การกระจายรายได้: เมื่อขุดในพูล พูลโหนดจะได้รับรางวัลบล็อก จากนั้นพูลจะกระจายรายได้ให้กับสมาชิกตามพลังการคํานวณที่มีส่วนร่วม การกระจายนี้ดําเนินการผ่านการโอนไปยังกระเป๋าเงินของนักขุด

selfish mining คืออะไร?

การขุดที่เห็นแก่ตัว: การขุดแบบเห็นแก่ตัวเป็นกลยุทธ์ที่นักขุด (หรือกลุ่มการขุด) พบบล็อกใหม่ แต่ไม่ได้ออกอากาศทันที พวกเขายังคงทําเหมืองแบบส่วนตัวบนโซ่ของพวกเขา (โซ่ที่ซ่อนอยู่) เมื่อพวกเขาพบบล็อกเพิ่มเติมพวกเขาจะออกอากาศทั้งหมดในครั้งเดียว สิ่งนี้สามารถทําให้งานของนักขุดคนอื่น ๆ เป็นโมฆะและเอียงพลังการคํานวณและรางวัลต่อนักขุดที่เห็นแก่ตัว Bitcoin สามารถ mitiGate.io ผลกระทบของการขุดที่เห็นแก่ตัวโดยการปรับปรุงโปรโตคอลการออกอากาศ

การตรวจสอบโหนดเมื่อได้รับธุรกรรมและบล็อก

การตรวจสอบการทำธุรกรรม: เมื่อมีการส่งธุรกรรมไปยังโหนดหนึ่ง จะมีการตรวจสอบหลายรายการเพื่อกำหนดให้เพิ่มลงใน mempool หรือไม่:

  1. รูปแบบธุรกรรม: ตรวจสอบความถูกต้องของโครงสร้างข้อมูลธุรกรรม
  2. เซ็นเนเจอร์ธุรกรรม: ตรวจสอบความถูกต้องของเซ็นเนเจอร์ธุรกรรม
  3. double-spending: ตรวจสอบว่าอินพุทยังไม่ได้ถูกใช้ใน mempool หรือบล็อกเชนก่อนหน้านี้
  4. อินพุตและเอาต์พุต: ยืนยันว่าจํานวนอินพุตทั้งหมดมากกว่าหรือเท่ากับจํานวนเอาต์พุตทั้งหมด
  5. สคริปต์ธุรกรรม: ดำเนินการและยืนยันสคริปต์ (โดยส่วนใหญ่ในสมาร์ทคอนแทร็ค)
  6. locktime: ตรวจสอบว่าเงื่อนไข locktime (ความสูงบล็อกหรือเวลา) ได้รับการปฏิบัติตามหรือไม่
  7. ขนาดและค่าธรรมเนียมการทำธุรกรรม: ให้ตรวจสอบขนาดและค่าธรรมเนียมการทำธุรกรรมให้เพียงพอ

ตรวจสอบบล็อก: เมื่อโหนดขุดเหรียญได้รับบล็อกใหม่ จะทำการตรวจสอบอย่างละเอียดในบล็อกและธุรกรรมของมัน:

  1. ความถูกต้องของการทำธุรกรรม: ตรวจสอบความถูกต้องของแต่ละธุรกรรมภายในบล็อก (การตรวจสอบเดียวกับการตรวจสอบธุรกรรม)
  2. การตรวจสอบเฉพาะบล็อก:
    • ขนาดบล็อก: ตรวจสอบให้แน่ใจว่าขนาดบล็อกอยู่ในขีดจำกัดที่อนุญาต
    • รางวัลบล็อก: ตรวจสอบว่ารางวัลบล็อก (บิตคอยน์ที่พึงพิงแล้วและค่าธรรมเนียมการทำธุรกรรม) ถูกต้องหรือไม่
    • รากเมอร์เคิล: คำนวณและตรวจสอบรากเมอร์เคิลของบล็อก
    • การประทับเวลา: ยืนยันว่าการประทับเวลาบล็อกอยู่ในช่วงที่เหมาะสม
    • เป้าหมายความยาก: ตรวจสอบว่าบล็อกตรงกับเป้าหมายความยากปัจจุบัน

11. references

[1] บรรยาย 12 | เทคโนโลยีบล็อกเชนลึกซึ้ง (4): การตกลง pow อย่างลึกลับของบล็อกเชน-geek time:คำประกาศ:

  1. บทความนี้ถูกนำเสนอใหม่จาก[Gate.io เรียนรู้ทีมของเราจะดูแลมันโดยรวดเร็ว
  2. ข้อความปฏิเสธความรับผิด: มุมมองและความคิดเห็นที่แสดงในบทความนี้เป็นเพียงเพียงผู้เขียนเท่านั้นและไม่มีอุทธรณ์ใด ๆ ที่จะเป็นการให้คำแนะนำทางการลงทุนใด ๆ
  3. การแปลบทความเป็นภาษาอื่น ๆ ดําเนินการโดยทีม Gate.io Learn ห้ามคัดลอก แจกจ่าย หรือลอกเลียนแบบบทความที่แปลแล้ว เว้นแต่จะกล่าวถึง คัดลอก แจกจ่าย หรือลอกเลียนแบบบทความที่แปลแล้ว
เริ่มตอนนี้
สมัครและรับรางวัล
$100