วิทยาศาสตร์ยอดนิยม: กระบวนการกำเนิดของ Beacon Chain
หมายเหตุบรรณาธิการ: บทความนี้มาจากผู้ที่ชื่นชอบ Ethereum (ID: ethfans)หมายเหตุบรรณาธิการ: บทความนี้มาจาก
ผู้ที่ชื่นชอบ Ethereum (ID: ethfans)
ผู้ที่ชื่นชอบ Ethereum (ID: ethfans)
, ผู้แต่ง: Ben Eddington, แปลและพิสูจน์อักษร: Min Min & A Jian, พิมพ์ซ้ำโดยได้รับอนุญาตจาก Odaily
เหตุการณ์การเปิดตัวบล็อกเชนหลายไคลเอ็นต์แบบกระจายขนาดใหญ่นั้นไม่ใช่เรื่องปกติ เมื่อวานนี้ (30 กรกฎาคม) เป็นวันครบรอบ 5 ปีของการถือกำเนิดของ ETH 1.0 จะเห็นได้ว่างานวันเกิดที่สำคัญเช่นนี้หายากยิ่งกว่า
กลไกการกำเนิด ETH 2.0 นั้นค่อนข้างซับซ้อน (สิ่งที่เราเรียกว่ากระบวนการบูทสแตรปของบล็อกเชน) ฉันจะอธิบายโดยละเอียด สำหรับข้อกำหนดทางเทคนิคจริง คุณสามารถดูความคิดเห็นของฉันใน "หมายเหตุข้อมูลจำเพาะ ETH 2.0"
ต่อไปนี้ "กำเนิด" หมายถึงช่วงเวลาที่บีคอนเชนออนไลน์และเริ่มประมวลผลการรับรองและบล็อก นั่นคือจุดเริ่มต้นของช่อง 0 ของยุค 0
(หากคุณไม่ต้องการอ่านบทความขนาดยาว คุณสามารถข้ามไปที่ส่วน "ฉาก" และเริ่มอ่านได้โดยตรง)
เงินฝากตรวจสอบความถูกต้อง
นี่คือพื้นหลังเล็กน้อยก่อน ทุกคนสามารถเป็นผู้ตรวจสอบ ETH 2.0 ได้โดยส่งเงินฝากจำนวน 32 ETH และข้อมูลอื่นๆ ไปยังสัญญา ETH 1.0 ตัวอย่างเช่น คุณสามารถเป็นผู้ตรวจสอบบนเครือข่ายทดสอบ Medalla ผ่านพอร์ทัล Lanchpad โปรดทราบว่าบนเน็ตทดสอบ Medalla เรากำลังใช้เน็ตทดสอบของ Goerli ETH! อย่าพยายามส่ง mainnet ETH ไปยังสัญญา แน่นอนว่าเมื่อมีการเปิดตัว beacon chain อย่างเป็นทางการ เราจะใช้ mainnet ETH จริง
สัญญามาร์จิ้นจะตอบสนองต่อเงินฝากที่ถูกต้องเท่านั้น เช่น เงินฝากเดี่ยว 32 ETH ขึ้นไป เงินฝากหลายรายการรวม 32 ETH ขึ้นไป (ข้อมูลเพิ่มเติมที่ต้องตรวจสอบ เช่น ลายเซ็นเข้ารหัส) ส่วนต่างที่ไม่ถูกต้องหรือไม่เพียงพอจะถูกละเว้น
ชื่อระดับแรก
ในขั้นตอนก่อนการสร้าง โหนดบีคอนเชนเท่านั้นที่จะเข้าร่วมในเครือข่าย ETH 2.0 เมื่อการสร้างเสร็จสมบูรณ์ ผู้ตรวจสอบสามารถเข้าร่วมในกลไกฉันทามติได้ทันที โหนดลูกโซ่บีคอนรักษาสถานะของระบบและสื่อสารระหว่างกันบนเครือข่ายเพียร์ทูเพียร์
ดังนั้นก่อนที่จะกำเนิด จะมีโหนดโซ่บีคอนบางส่วนที่ฟัง ETH 1.0 และตรวจสอบการฝากเงินที่มีประสิทธิภาพในสัญญาการฝาก ในความเป็นจริงแล้ว โหนดลูกโซ่บีคอนไม่จำเป็นต้องตรวจสอบ ETH 1.0 ตลอดเวลา: บล็อกบน ETH 1.0 จะมีการประทับเวลา ดังนั้นโหนดจึงสามารถติดตามได้ทุกเมื่อก่อนที่จะเกิด
อย่างที่เราทราบกันดีว่าเชน ETH 1.0 สามารถย้อนกลับได้ และธุรกรรมที่อยู่ในเชนนั้นอาจไม่ถูกต้องเนื่องจากการเปลี่ยนแปลงในบล็อกเชน นี่คือเหตุผลที่เมื่อคุณโอน ETH ไปยังการแลกเปลี่ยน คุณต้องรอ 30 บล็อกเพื่อให้แน่ใจว่าการทำธุรกรรมได้รับการยืนยัน การย้อนกลับมักมีขนาดเล็ก เพียง 1 หรือ 2 ช่วงตึก แต่เมื่อเครือข่ายถูกโจมตี การย้อนกลับจะมีขนาดใหญ่กว่ามาก เพื่อหลีกเลี่ยงการย้อนกลับของ ETH 2.0 เราระมัดระวังอย่างมากในการรักษาความล่าช้า 14*1024 วินาที (ประมาณ 4 ชั่วโมง) เมื่อซิงโครไนซ์ ETH 1.0 ฉันเรียกสิ่งนี้ว่า "ระยะติดตาม" สำหรับ ETH 1.0
ชื่อระดับแรก
เมื่อไร? WHO?
สำหรับการสร้าง คำถามที่สำคัญที่สุดสองข้อคือ "เมื่อไหร่" และ "ใคร"? โดยเฉพาะอย่างยิ่ง "การกำเนิดจะเกิดขึ้นเมื่อใด" และ "ใครจะเป็นผู้ตรวจสอบการกำเนิด" คำถามสองข้อนี้กำหนดสถานะการกำเนิดของห่วงโซ่บีคอน และสถานะอื่นๆ ได้มาจากสถานะการกำเนิด
กระบวนการทั่วไปมีดังนี้:
ตรวจสอบการไหลเข้าของมาร์จิ้นบน ETH 1.0
หลังจากรอนานพอสมควร มีระยะขอบเพียงพอ สถานะการสร้างจะถูกสร้างขึ้น
สองวันต่อมา ETH 2.0 เปิดตัวโดยเรียกเหตุการณ์การกำเนิด
โดยเฉพาะอย่างยิ่ง ในขั้นตอนที่ 2 เราต้องการค้นหาบล็อก ETH 1.0 แรกที่ตรงตามเงื่อนไขสองข้อต่อไปนี้: (a) มาร์จิ้นที่เพียงพอถูกล็อค (b) การประทับเวลาในบล็อกไม่เก่าเกินไป สถานะการกำเนิดถูกกำหนดโดยบล็อกนี้
การตั้งค่าพารามิเตอร์หลักสามรายการที่ส่งผลต่อ "เมื่อ" และ "ใคร" มีดังนี้:
GENESIS_DELAY คือ 172800 วินาที หรือประมาณ 48 ชั่วโมง นี่คือช่วงเวลาระหว่างการสร้างสถานะการกำเนิดและการเรียกเหตุการณ์การกำเนิด ทีมไคลเอนต์สามารถใช้เวลานี้เพื่อเบิร์นสถานะการกำเนิดลงในซอฟต์แวร์บีคอนเชนโหนด ด้วยวิธีนี้ โหนดลูกโซ่บีคอนที่ไม่ได้เรียกใช้โหนดตัวตรวจสอบความถูกต้องไม่จำเป็นต้องตรวจสอบลูกโซ่ ETH 1.0 ต่อไป เรายังมีเวลาจัดเจเนซิสสตรีมและปาร์ตี้
MIN_GENESIS_ACTIVE_VALIDATOR_COUNT หมายถึงจำนวนเงินฝากขั้นต่ำที่ถูกต้องซึ่งเราต้องล็อคในสัญญาหลักประกัน ETH 1.0 ก่อนที่จะสร้างสถานะเริ่มต้น สำหรับ Medalla (และ mainnet) จำเป็นต้องมีตัวตรวจสอบความถูกต้องอย่างน้อย 16,384 ตัว
บทเรียนที่ได้รับจากการเปิดตัวเครือข่ายทดสอบ Medalla: แม้ว่าเราจะมีเวลาจัดงานปาร์ตี้ แต่เวลา 44 ชั่วโมงก็ค่อนข้างนานเพื่อให้แน่ใจว่าโหนดเปิดใช้งานอยู่ในสภาพดี ซอฟต์แวร์ไคลเอนต์ที่อัปเดตมีข้อมูลที่จำเป็นทั้งหมด และเป็นเรื่องง่าย สำหรับผู้ใช้ที่ต้องการใช้เร่งด่วน เราอาจเพิ่ม GENESIS_DELEY สำหรับ mainnet
ชื่อระดับแรก
ฉาก
เมื่อบล็อกนี้ถูกสร้างขึ้น จำนวนตัวตรวจสอบจะต้องไม่ต่ำกว่า 16384 (MIN_GENESIS_ACTIVE_VALIDATOR_COUNT)
การประทับเวลาไม่เร็วเกินไป (ไม่เร็วกว่า MIN_GENESIS_TIME - GENESIS_DELAY)
ตามลำดับที่เป็นไปตามเงื่อนไขสองข้อด้านบน กระบวนการกำเนิดสามารถดำเนินการให้เสร็จสมบูรณ์ได้สองวิธีดังต่อไปนี้:
ชื่อเรื่องรอง
1. ปฏิบัติตามข้อกำหนดด้านหลักประกันขั้นต่ำก่อน
ในกรณีนี้ให้ปฏิบัติตามเงื่อนไขที่ 1 ก่อน ก่อนเวลากำเนิดที่เร็วที่สุด เราได้รับส่วนต่างเพียงพอแล้ว
บล็อก ETH 1.0 ที่เราใช้ในการกระตุ้นเหตุการณ์การกำเนิดจะต้องถูกขุดหลังจากช่วงเวลานี้ สมมติว่าบล็อกนี้ถูกขุดเมื่อเวลา 21:00:05 น. ของวันที่ 2 สิงหาคม เวลาปักกิ่ง (5 วินาทีหลังจาก 9 นาฬิกา)
หากสัญญามาร์จิ้นได้รับมาร์จิ้นที่แท้จริงอย่างน้อย 16384 มาร์จิ้น (รวมถึงธุรกรรมมาร์จิ้นทั้งหมดในบล็อคนี้) มาร์จิ้นทั้งหมดที่ได้รับในสัญญามาร์จิ้นจะรวมอยู่ในสถานะกำเนิดด้วย ดังนั้นจึงมีตัวตรวจสอบความถูกต้องของ Genesis มากกว่า 16,384 ตัวบนเชน ETH 2.0 (ในเครือข่ายทดสอบ Altona เราตั้งค่า MIN_GENESIS_ACTIVE_VALIDATOR_COUNT เป็น 640 แต่ตัวตรวจสอบความถูกต้องของการเกิดล่าสุดมี 685)
คำอธิบายภาพ
สรุป
สิ่งหนึ่งที่ควรทราบคือเมื่อพิจารณาจากระยะการติดตามของ ETH 1.0 เราต้องรอ 4 ชั่วโมงก่อนที่เราจะได้รับสถานะการกำเนิด กล่าวอีกนัยหนึ่งในสถานการณ์ปัจจุบัน เราต้องรอจนถึง 17:00 น. ของวันที่ 2 สิงหาคม เวลาปักกิ่งเพื่อรับสถานะการสร้าง
สรุป
เหตุการณ์การกำเนิดจะเกิดขึ้นไม่กี่วินาทีหลังจากเวลาการกำเนิดที่เร็วที่สุด หากตรงตามข้อกำหนดการฝากขั้นต่ำก่อน ผู้ตรวจสอบความถูกต้องที่ลงทะเบียน 48 ชั่วโมงก่อนเหตุการณ์การกำเนิดจะรวมอยู่ในสถานะการกำเนิด
ชื่อเรื่องรอง
2. หลังจากเป็นไปตามข้อกำหนดขั้นต่ำของหลักประกันแล้ว
ในกรณีนี้ บล็อก ETH 1.0 ที่เราใช้เพื่อทริกเกอร์เหตุการณ์กำเนิดจะต้องมีเงินฝากที่ถูกต้อง 16384 สมมติว่าบล็อกนี้ถูกขุดเมื่อเวลา 20:34:56 น. ของวันที่ 5 สิงหาคม ตามเวลาปักกิ่ง
ตอนนี้ สถานะห่วงโซ่บีคอนจะมีตัวตรวจสอบความถูกต้อง 16384 ตัวและเงินฝากที่ถูกต้องอื่นๆ ในบล็อกนี้ ดังนั้น หากบล็อกนี้มีการฝากหลายรายการ การฝากที่รวมอยู่ในสถานะบีคอนเชนจะสูงกว่าข้อกำหนดขั้นต่ำเล็กน้อย
คำอธิบายภาพ
สรุป
สรุป
สรุปแล้ว
หากการไหลเข้าของเงินฝากช้า เหตุการณ์การกำเนิดจะถูกกระตุ้น 48 ชั่วโมงหลังจากการขุดของบล็อก ETH 1.0 ที่มีเงินฝากที่มีผล 16384 สถานะกำเนิดจะมีตัวตรวจสอบความถูกต้องอย่างน้อย 16834 ตัว และอาจเพิ่มขึ้นเล็กน้อยเนื่องจากจำนวนธุรกรรมมาร์จิ้นที่รวมอยู่ในบล็อก ETH1.0 นี้ (ทำให้จำนวนตัวตรวจสอบทั้งหมดสูงกว่า 16834)
ชื่อระดับแรก
สรุปแล้ว
บทความนี้ได้แนะนำเนื้อหาพื้นฐานของกลไกการสร้าง ETH 2.0


