ผู้เขียนต้นฉบับ: Johan
Blockchain fork แบ่งออกเป็น soft fork และ hard forkบทความนี้มุ่งเน้นไปที่การฮาร์ดฟอร์ก ซึ่งเป็นวิธีการอัปเกรดซอฟต์แวร์ที่ไม่รองรับความเข้ากันได้แบบย้อนกลับHard fork คือการแยกหรือเปลี่ยนแปลงฉันทามติ Consensus คืออัลกอริทึมสำหรับแต่ละโหนดในระบบบล็อกเชนเพื่อให้ข้อมูลมีความสอดคล้องกัน ภายใต้สถานการณ์ปกติ แต่ละโหนดจำเป็นต้องเรียกใช้อัลกอริทึมด้วยกฎเดียวกัน ตัวอย่างเช่น Bitcoin ทำงานตาม PoW (หลักฐานภาระงาน) ฉันทามติ Ethereum เคยเป็นฉันทามติของ PoW และเพิ่งเปลี่ยนมาใช้อัลกอริทึมฉันทามติของ PoS ผ่าน การผสาน
มีเหตุผลหลายประการสำหรับการแยกสองทางซึ่งเป็นปรากฏการณ์ที่พบบ่อยมากใน blockchain มักจะเป็นการแยกสองทางระยะสั้นซึ่งเกี่ยวข้องกับอัลกอริทึมที่สอดคล้องกัน บางครั้งบล็อกที่แข่งขันกันจะปรากฏที่ความสูงเท่ากัน แต่ท้ายที่สุดจะมีบล็อก ทิ้งและจะเก็บไว้เพียงบล็อกเดียว แต่การ hard fork นั้นแตกต่างออกไป การ fork แบบนี้มีการวางแผนและมีวัตถุประสงค์ บาง node ไคลเอนต์ได้ปรับใช้โปรแกรมเวอร์ชันต่าง ๆ จากเครือข่ายเดิม บล็อกที่สร้างขึ้นสามารถตรวจสอบได้เฉพาะในห่วงโซ่ที่แยกออก และไม่สามารถตรวจสอบได้โดยเครือข่ายดั้งเดิม เครือข่ายยอมรับและไม่ยอมรับการบล็อกจากเครือข่ายเดิม ตัวอย่างเช่น การ fork EthereumPoW (ETHW) ที่ได้รับความนิยมล่าสุด
ชื่อระดับแรก
ชั้นเครือข่าย
เนื่องจาก forked chain เป็น blockchain ที่ไม่ขึ้นกับเครือข่ายดั้งเดิม อันดับแรกจำเป็นต้องแยกที่เลเยอร์เครือข่าย (P2P):
1. โหนดเมล็ด
โหนดเมล็ดหรือที่เรียกว่า bootnode หรือ seednode เป็นโหนดที่เครือข่ายจะพยายามเชื่อมต่อเป็นอันดับแรกเมื่อบล็อกเชนเริ่มทำงาน เมื่อโซ่แยกเริ่มทำงาน ขั้นแรกจะเชื่อมต่อกับโหนดในรายการโหนดเมล็ด เพื่อค้นหาโหนดเพียร์อื่นๆ ในเครือข่ายต่อไป จากนั้นจึงสามารถซิงโครไนซ์บล็อกเพิ่มเติมและเข้าถึงฉันทามติ ดังนั้นจึงต้องแก้ไขรายการโหนดเริ่มต้นเพื่อป้องกันไม่ให้โหนดเชื่อมต่อกับเครือข่ายเดิม
2. การโจมตีของมนุษย์ต่างดาว
แม้ว่ารายการของโหนดเริ่มต้นจะเปลี่ยนไป แต่ก็ไม่ได้หมายความว่าเครือข่ายที่แยกจะไม่เชื่อมต่อกับเครือข่ายเดิม เนื่องจากโปรโตคอล P2P ของทั้งสองฝ่ายเหมือนกัน หากโหนดหนึ่งเพิ่มการเชื่อมต่อโหนดของเครือข่ายอื่นโดยไม่ตั้งใจ โหนดทั้งสองจะจับมือกันสำเร็จและอีกฝ่ายหนึ่งจะถูกเพิ่มในกลุ่มที่อยู่โหนด ไม่เพียงเท่านั้น โหนดของทั้งสองฝ่ายจะแบ่งปันที่อยู่ในโหนดของตนเองให้กันและกัน ซึ่งจะทำให้เกิดมลพิษร่วมกันของ Node Pool ของเครือข่ายทวิภาคี สำหรับประเด็นนี้ ทาง SlowMist ได้ออกมาเปิดเผยไว้ก่อนหน้านี้แล้ว“เครือข่ายประชาชนขัดแย้ง! ช่องโหว่การโจมตีของเอเลี่ยนจากโปรโตคอล P2P。
เพื่อแก้ปัญหามลพิษร่วมกันของกลุ่มที่อยู่จำเป็นต้องทำการระบุเครือข่ายบนโปรโตคอลการสื่อสาร Ethereum ในยุคแรก ๆ ไม่รองรับการแยกเครือข่าย แต่ในรุ่นต่อ ๆ มา NetworkID ถูกเพิ่มเข้าไปในโปรโตคอลเพื่อเป็นสัญญาณของความแตกต่างของเครือข่าย โดยปกติแล้ว NetworkID จะเป็น ChainID ของแต่ละเชน ตัวอย่างเช่น NetworkID และ ChainID ของ Ethereum mainnet จะเป็น 1 ทั้งคู่ ในขณะที่ ETHW เวอร์ชันเริ่มต้นนั้น NetworkID ไม่ได้ถูกแยก และอาจมีช่องโหว่จากการโจมตีจากเอเลี่ยน
ชื่อระดับแรก
ชั้นฉันทามติ
1. การแยกธุรกรรม
โดยปกติแล้ว เมื่อมีปฏิสัมพันธ์กับบล็อกเชน เราจำเป็นต้องลงนามธุรกรรมด้วยรหัสส่วนตัวของเราเอง จากนั้นธุรกรรมนั้นจะถูกถ่ายทอดไปยังเครือข่ายและบรรจุลงในบล็อกโดยนักขุดหรือผู้ผลิตบล็อก แต่ถ้ามีการ fork ใน blockchain การทำธุรกรรมอาจถูกรวมเป็น block ที่แตกต่างกันโดย 2 เครือข่าย สมมติว่านี่คือการโอนบน chain เดิม ก็จะมีธุรกรรมเดียวกันบน forked chain การโอน เห็นได้ชัดว่านี่คือ พฤติกรรมที่ไม่คาดคิดจะทำให้สูญเสียทรัพย์สิน
ในเวลานี้ จำเป็นต้องป้องกันการเล่นซ้ำของธุรกรรม ใน Ethereum เวอร์ชันแรก ๆ ไม่มีการป้องกันดังกล่าว ต่อมา หลังจาก EIP155 ChainID ได้ถูกเพิ่มเข้าไปในโครงสร้างธุรกรรมเพื่อให้แน่ใจว่าธุรกรรมที่ลงนามโดยผู้ใช้นั้น ใช้เฉพาะในเครือข่ายปัจจุบันเท่านั้น หาก Ethereum ถูก fork ต้องมีการกำหนด ChainID ใหม่ด้วย แน่นอนว่ามันไม่ง่ายเหมือนการปรับเปลี่ยน ChainID ในการกำหนดค่า เนื่องจาก chain ที่ fork นั้นจำเป็นต้องเข้ากันได้กับบล็อคเก่า ดังนั้น มันจึงต้องอยู่หลัง ความสูงของส้อม เฉพาะการใช้ ChainID ใหม่เท่านั้นที่สามารถรับประกันการทำงานปกติของโซ่แบบแยกได้
ChainID ไม่มีอยู่ในโครงสร้างการทำธุรกรรมของ Bitcoin แล้วมันจะป้องกันการเล่นซ้ำได้อย่างไร? Bitcoin ใช้รูปแบบที่เรียกว่า UTXO พูดง่ายๆ ก็คือ มันใช้จ่ายในการทำธุรกรรม (UTXO) แทนบัญชี โดยปกติจะไม่มีการทำธุรกรรมสองรายการที่เหมือนกันในเครือข่ายที่เพิ่งเปิดตัวและจะไม่มีการเล่นซ้ำ
อย่างไรก็ตาม ในกรณีของ hard fork จะยังมีปัญหาการเล่นซ้ำของธุรกรรม เช่น การ fork BCH ในปี 2560 และการ fork BSV ในภายหลัง ด้วยการเพิ่ม SIGHASH_FORKID (0x40) ในลายเซ็นข้อมูลธุรกรรมของ BCH ธุรกรรมใน BCH และ BTC จะไม่สามารถทำงานร่วมกันได้อีกต่อไป เพื่อให้บรรลุวัตถุประสงค์ของการป้องกันการเล่นซ้ำ
2. การปรับกำลังคอมพิวเตอร์
ก่อนการแยก ห่วงโซ่ดั้งเดิมใช้พลังการประมวลผลทั้งหมดของเครือข่ายทั้งหมด ดังนั้นตามอัลกอริทึมที่สอดคล้องกันของ PoW ความยากในการคำนวณของการสร้างบล็อกจึงค่อนข้างสูง หลังจากการ Fork พลังการประมวลผลจะถูกกระจายไปยังบล็อคเชนต่างๆ และเชนที่ Fork มักไม่สามารถรับพลังการประมวลผลที่เพียงพอเพื่อสร้างบล็อคใหม่ เนื่องจากฉันทามติไม่เพียงพอ และการเติบโตของบล็อคจะซบเซา ในเวลานี้ จำเป็นต้องลดความยุ่งยากในการคำนวณเริ่มต้นหลังการ Fork และชนะกรอบเวลาสำหรับ Fork Chain เพื่อปรับกำลังการประมวลผลอย่างรวดเร็ว
3. ป้องกันการโจมตี 51%
เครือข่ายและการทำธุรกรรมถูกแยกออกจากกัน บล็อกเชนถูกแยกออก บล็อกใหม่ถูกสร้างขึ้นอย่างราบรื่น และทุกอย่างดูเหมือนจะเป็นปกติ อย่างไรก็ตาม ปัญหาด้านความปลอดภัยยังคงค้างคาอยู่ และยังมีการป้องกันการโจมตีทั่วไปและยากกว่า: การโจมตี 51%
การขุดเป็นการแสวงหาผลกำไร เมื่อมี fork coin นักขุดในฝั่งที่มีรายได้การขุดสูงสุดจะเปลี่ยนพลังการประมวลผลไปยังเครือข่ายนั้น อย่างไรก็ตาม ความจริงก็คือ fork coin มักมีราคาสกุลเงินต่ำ ส่งผลให้ พลังการประมวลผลโดยรวมต่ำมาก . ยกตัวอย่าง ETHW fork เราสามารถเห็นได้จาก 2miners ว่าพลังการประมวลผลสูงสุดของเครือข่าย ETH ดั้งเดิมนั้นเกิน 900TH/s ในขณะที่พลังการประมวลผลของ ETHW อยู่ที่ประมาณ 30TH/s เท่านั้นในขณะที่เขียน การหายไปของ a พลังการประมวลผลจำนวนมากไม่ใช่เรื่องดี การโจมตี 51% บน ETHW สามารถเริ่มได้ทุกเมื่อ
ชื่อระดับแรก
ชั้นแอปพลิเคชัน
เราจัดประเภทแอปพลิเคชันตามธุรกรรม เช่น สัญญาอัจฉริยะตามเครื่องเสมือน ไว้ในเลเยอร์แอปพลิเคชัน เมื่อบล็อกเชนถูกแยกออก ก็จะมีผลกระทบอย่างมากต่อแอปพลิเคชันที่ทำงานบนบล็อกเชน
1. เล่นซ้ำลายเซ็น
การเล่นซ้ำลายเซ็นจะเหมือนกับการเล่นซ้ำธุรกรรมที่กล่าวถึงข้างต้น สัญญาบางรายการ เช่น Gnosis Safe จะตรวจสอบลายเซ็นของผู้ใช้ในสัญญา การเล่นซ้ำในแต่ละเชน ส่งผลให้ทรัพย์สินสูญหาย
2. คำทำนายล้มเหลว
สัญญาอัจฉริยะส่วนใหญ่ใน blockchain หลังจากการ fork ยังคงสามารถทำงานได้ตามปกติ เช่น สัญญา Token และสัญญา AMM ระบบที่ทำงานด้วยตัวเองเหล่านี้สามารถทำงานได้อย่างเสถียรโดยไม่ต้องพึ่งพาข้อมูลนอกเครือข่าย ราคาของข้อมูล oracle หลังจากสูญเสียการสนับสนุนฟีดราคาออกจากห่วงโซ่แล้ว จะไม่สามารถดำเนินการต่อไปได้
3. การเปลี่ยนแปลงราคาอย่างมาก
บล็อกเชนถูกแยกออกจากกันและแอปพลิเคชันทำงานบนสองเชนพร้อมกัน ผู้ใช้ควรใช้เชนใด อันไหนคือ ออร์โธดอกซ์? คำถามนี้กลับมาที่ความเห็นพ้องกัน โดยปกติแล้ว บล็อกเชนใดมีความเห็นเป็นเอกฉันท์ดั้งเดิม สินทรัพย์ในนั้นจะยังคงฉันทามติตามมูลค่าดั้งเดิม ในขณะที่สินทรัพย์ในบล็อกเชนอื่นจะสูญเสียมูลค่าในทันที
สรุป
สรุป
จนถึงตอนนี้ เราได้วิเคราะห์ความปลอดภัยของ blockchain fork จากเลเยอร์เครือข่าย เลเยอร์ฉันทามติ และเลเยอร์แอปพลิเคชัน และเราสามารถเห็นความเสี่ยงทางเทคนิคที่มีอยู่ เราจำเป็นต้องระมัดระวังอย่างมากเกี่ยวกับ fork ยิ่งไปกว่านั้น เบื้องหลัง Fork จำนวนมากไม่ได้เป็นเพียงความต้องการสำหรับการเปลี่ยนแปลงทางเทคโนโลยีเท่านั้น แต่บาง Fork อาจมีผลประโยชน์ทางการค้าโดยตรง ตัวอย่างเช่น ผู้ริเริ่มได้รับเหรียญที่ Fork จำนวนมากโดยตรง สิ่งเหล่านี้ต้องการให้ผู้ใช้เข้าใจอย่างถูกต้องและหลีกเลี่ยงการสูญเสียที่จำเป็นโดยไม่จำเป็น .
blockchain เป็นระบบที่กระจายอำนาจและการอัพเกรดไม่ได้ขึ้นอยู่กับบุคคลหรือองค์กรใดองค์กรหนึ่ง ดังนั้น fork จึงหลีกเลี่ยงไม่ได้ใน blockchain แม้ว่าจะสร้างความสับสนให้กับผู้ใช้ในชุมชนแต่ก็ยังส่งเสริมการพัฒนาระบบเพื่อตอบสนองสังคมได้ดียิ่งขึ้น