未來的執行環境

เบนจามิน ฟันก์ นักวิจัยของสถาบันการลงทุนในสกุลเงินดิจิทัล Archetype ได้แสดงว่าปัญหา bottleneck ของ execution layer เกิดจากการเข้าถึงสถานะและการคำนวณที่ไม่มีประสิทธิภาพ เขาได้ประเมินการเลือกทางในการออกแบบที่ทำโดย integrated และ modular execution environments เพื่อให้ได้ประสิทธิภาพที่สูงขึ้น และขยายขอบเขตของ on-chain applications

Forwarded the Original Title: Designer Blockspace: The Future of Execution Environments

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

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

นับถึงหมอกนี้ เราได้เห็นการปรับปรุงที่น่าเชื่อถือและยั่งยืนเกี่ยวกับความสามารถในการขยายของบล็อกเชนเกิดขึ้นตลอดหลายปีที่ผ่านมา ซึ่งเมื่อ Ethereum ก้าวข้ามผ่านแผนเส้นทาง rollup-centric ของตน มีคลื่นใหม่ของ rollups, coprocessors,ความพร้อมใช้ข้อมูล (DA) ชั้น และ L1s ที่แข่งขันกันกำลังเกิดขึ้น - แต่ละอันมีการออกแบบที่เป็นเอกลักษณ์เพื่อให้นักพัฒนาได้รับสภาพแวดล้อมที่มีประสิทธิภาพมากขึ้นสำหรับการสร้าง dapps ที่มีประสิทธิภาพและใช้งานได้ง่าย

วันนี้การนำเสนอ EIP4844 และชั้น DA ทดแทนได้บรรเทาปัญหาขัดข้องของ DA ที่สำคัญ แม้ว่าจุดสำคัญนี้จะผ่านไปแล้ว หลักฐานชี้ให้เห็นว่าปัญหาขัดข้องอื่น ๆ ที่สำคัญต้องได้รับการแก้ไข ในเดือนที่แล้ว เกต รวบรวม 1.57 ล้านดอลลาร์ในค่าธรรมเนียมการธุรกรรมในหนึ่งวันในขณะที่จ่ายเพียง $5K เพื่อค่าใช้จ่ายในการให้ข้อมูลที่พร้อมใช้งานให้กับ Ethereum นี้แสดงให้เห็นว่างานคำนวณที่จำเป็นในการตรวจสอบและประมวลผลการอัพเดตสถานะยังคงเป็นจุดขัดข้องที่สำคัญและโอกาสในการปรับปรุง

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

ความท้าทายในวันนี้

ประสิทธิภาพของชั้นการดำเนินการสามารถทดสอบเช็คกลายเป็นตามงานคำนวณที่โหนดการดำเนินการทำได้เทียบกับเวลาบล็อกของเชนของพวกเขา หรือ 'แก๊สที่คำนวณต่อวินาที'

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

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

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

Bottleneck #1: การเข้าถึงสถานะที่ไม่มีประสิทธิภาพ

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

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

Ethereum specifically relies on a data structure known as the Merkle Patricia trie (MPT), which comprises @chiqing/merkle-patricia-trie-explained-ae3ac6a7e123">four sub-tries.

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

การเติบโตของสถานะนี้มีผลต่อประสิทธิภาพของ Ethereum โดยตรงเพราะสถานะถูกเก็บไว้ในดิสก์ และการดำเนินการดิสก์ทำให้เกิดภาระมาก ขณะที่การเข้าถึงข้อมูลจากที่ลงทะเบียน CPU ใช้เวลา 0.1 นาโนวินาที มันอาจใช้เวลาระหว่าง 10 และ 100 ไมโครวินาที(100เท่า–1000เท่าช้ากว่า)เพื่อเข้าถึงข้อมูลจากดิสก์ ประมาณการแปลเป็นคำสั่ง CPU 200,000 คำสั่งที่สามารถทำได้ในเวลานั้น นั้นเท่ากับการประมาณการอนุรักษ์ของการโอน ERC-20 36 ครั้งที่สามารถทำได้!

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

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

Bottleneck #2: การคำนวณที่ไม่มีประสิทธิภาพ

Execution layers ยังเผชิญกับปัญหาขีดจำกัดของการคำนวณที่ไม่มีประสิทธิภาพซึ่งแสดงออกอย่างหลากหลาย

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

โดยเพิ่มเติมการใช้เครื่องจำลองเสมือนนั้นเกี่ยวข้องกับการแปลงการดำเนินการของสัญญาอัจฉริยะระดับสูงเป็น bytecode—โค้ดระดับต่ำที่เป็นแพลตฟอร์ม-อิสระซึ่งจะถูกดำเนินการคำสั่งต่อคำสั่ง กระบวนการแปลและดำเนินการนี้มีความเยอะมากโดยเฉพาะอย่างยิ่งสำหรับแอปพลิเคชันที่มีงานที่เฉพาะเจาะจงซับซ้อนและที่ถูกทำซ้ำบ่อยค่ะ

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


Solutions: การเข้าถึงสถานะที่ไม่เป็นประสบการณ์

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

Statelessness & In-Memory Computing

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

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

เพื่อสมดุลความน่าสนใจของการคำนวณในหน่วยความจำกับการลดความเชื่อถือ ทั้ง L1s (เช่น Ethereum) และ L2s กำลังมองหาเส้นทางสเกลาบิลิตี้ที่พึงพอใจซึ่งพึ่งพารที่จะแยกบทบาทของผู้ตรวจสอบเป็นโหนดในการดำเนินงานที่เซ็นทรัลแยกจากโหนดที่ตรวจสอบมากมาย ในโมเดลนี้ ผู้ผลิตบล็อกที่มีประสิทธิภาพสูงพร้อมความต้องการของฮาร์ดแวร์ในการคำนวณในหน่วยความจำรับผิดชอบในการสร้างบล็อก และใช้พิสูจน์ทางกายภาพ (พิสูจน์การประพฤติและความถูกต้อง) โดยโหนดที่ตรวจสอบเพื่อให้แน่ใจว่าผู้ผลิตบล็อกมีความรับผิดชอบ

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

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

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

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

การลดขนาดต้นไม้ Verkle จาก Verkle Tree ของ Ethereum ที่ไม่สามารถหลีกเลี่ยงได้

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

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

ในระดับ L2 ทีมเช่น MegaETHกำลังปรับใช้แนวคิดของการไม่มีสถานะไปยังการออกแบบของ optimistic rollups โดยในการออกแบบของตน โหนด sequencer จะสร้างพยานสำหรับทุกบล็อกที่มีค่าสถานะที่จำเป็นและ intermediate hashes ในขณะที่ส่งออก state delta ที่แทนการเปลี่ยนแปลงในสถานะ โหนด verifier จึงสามารถที่จะทำการ execute บล็อกใดๆ อีกครั้งโดยการเรียกพยานจาก DA layer หรือเครือข่าย peer-to-peer โดยไม่ต้องเก็บรักษาสถานะทั้งหมด ในขณะเดียวกัน โหนด full จะทำการ update สถานะของตนโดยการนำ state deltas ที่กระจ散ผ่านเครือข่ายมาปรับใช้ ทำให้สามารถที่จะยังคง sync โดยไม่ต้องทำการ execute ธุรกรรมใหม่หรือเก็บรักษาประวัติสถานะทั้งหมด

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

TPS แบบเรียลไทม์จาก 'การเข้าใจประสิทธิภาพของเลเยอร์การดำเนินการอีเธอเรียมของ MegaETH'

As co-founder of MegaETH, Yilong Li, identifies in the followingการนำเสนองานวิจัยในการดำเนินการบน Ethereum ยังมีปัญหาประสิทธิภาพในโครงสร้างข้อมูลและรูปแบบการเข้าถึงบนเชนที่ยังคงได้รับการปรับปรุง

ปรับปรุงฐานข้อมูล

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

ในความเป็นจริง ข้อจำกัดของการออกแบบฐานข้อมูลที่มีอยู่ที่พบใน EVM แจ้งให้ทราบMonad’s* การตัดสินใจที่จะเลื่อนไปเกินการปรับปรุงเพียงอย่างเดียวสำหรับความมีประสิทธิภาพทางคอมพิวเตอร์เพื่อให้ได้การประมวลผลแบบพร้อมกัน Monad พบว่าแม้จะมีการปรับปรุงความเร็วเล็กน้อยหลังจากที่นำการประมวลผลแบบพร้อมกันมาใช้ แต่พวกเขาก็เห็นว่ามีการเลื่อนคำขอการอ่านและเขียนแบบหลายเทรดที่ถูกบล็อกจากกันที่ฐานข้อมูล ทำให้ไม่เห็นผลลัพธ์เท่าที่คาดคิด จึงทำให้ Monad นำฐานข้อมูลที่เข้ากันได้กับการทำ IO แบบไม่โดยการรอ (AIO) หรือการเข้าถึงแบบพร้อมกันเป็นส่วนสำคัญของการแก้ปัญหา

Async I/O

การดำเนินการ I/O - เช่น การอ่านหรือเขียนไปยังอุปกรณ์จัดเก็บ - มักสร้างข้อจำกัด โดยเฉพาะอย่างยิ่งกับฮาร์ดดิสก์ที่เป็นเครื่องมือ (HDDs) ที่มีการเคลื่อนที่ทางกายภาพของหัวอ่าน/เขียนเพื่อเข้าถึงข้อมูล ซึ่งอาจทำให้การประมวลผลข้อมูลช้าลงอย่างมีนัยสำคัญ

AIO ที่จัดการกับความท้าทายนี้โดยอนุญาตให้โปรแกรมทำการดำเนินการ I/O พร้อมกับกระบวนการอื่น ๆ อย่างสะกดสะเกด โดยพื้นฐานแล้ว โปรแกรมสามารถเริ่มต้นดำเนินการ I/O และเดินหน้าไปโดยไม่ต้องรอให้เสร็จสิ้น โดยการลงทะเบียนฟังก์ชัน callback หรือ promise ซึ่งระบบปฏิบัติการหรือไลบรารี I/O จะดำเนินการเมื่อการดำเนินการ I/O เสร็จสิ้น การทำแบบไม่รอดูและอนุญาตนี้ช่วยให้โปรแกรมหลักสามารถดำเนินการงานอื่นต่อไปได้โดยประสิทธิภาพที่ดีขึ้นโดยไม่ต้องรองของการดำเนินการ I/O เสร็จสิ้น

การปฏิบัติ I/O แบบไม่สม่ำเสมอสามารถนำมาใช้ได้ทั้งใน HDDs แบบดั้งเดิมและ solid-state drives (SSDs) อย่างไรก็ตามประโยชน์จะมีความชัดเจนมากขึ้นกับ SSDs HDDs สามารถทำ AIO ได้ แต่ลักษณะกลไกของพวกเขาหมายความว่าพวกเขาจะช้ากว่า SSDs ซึ่งจัดเก็บข้อมูลบนหน่วยความจำแบบแฟลชและไม่มีส่วนที่เคลื่อนไหว หมายความว่าเวลาเข้าถึงที่เร็วขึ้น

ตัวอย่างเช่น Monad ใช้ custom state backend ที่ถูกปรับแต่งให้เหมาะสำหรับการเก็บข้อมูลบน SSD ซึ่งรองรับการประมวลผลข้อมูลแบบพร้อมกันในระดับสูงและลดความหน่วงใน I/O การตั้งค่านี้มีประสิทธิภาพมากกว่าระบบที่พึ่งพาเฉพาะการเก็บข้อมูลบนดิสก์แบบดั้งเดิมหรือระบบที่ใช้ฐานข้อมูลในหน่วยความจำที่อาจเผชิญกับความล่าช้าจากการเขียนข้อมูลบ่อยครั้งและอ่านจากสื่อเก็บข้อมูลที่ช้าลง

ในทำเช่นนี้ Reth ใช้วิธีการที่แยกการดำเนินงานฐานข้อมูลจากเครื่องยนต์การดำเนินงาน EVM หลัก การตั้งค่านี้ช่วยให้ EVM bytecode สามารถดำเนินการตามลำดับบนเธรดเดียวเพื่อรักษาความสม่ำเสมอในขณะที่งาน I/O ของฐานข้อมูลถูกโอนออกไปทำงานพร้อมกัน Reth ใช้โมเดลนักแสดง - แบบออกแบบซอฟต์แวร์ - เพื่อจัดการกระบวนการของกระบวนการขนาดใหญ่เหล่านี้อย่างมีประสิทธิภาพ เพื่อให้แน่ใจว่าการดำเนินงาน I/O ไม่มีการขัดจังหวะกับตัวแปล EVM

ความถี่ในการเข้ารหัส Merklization ของรัฐ

อีกทางเลือกสำหรับการปรับปรุงคือความถี่ในการทำให้สถานะเป็น Merkle สถานะ โมเดลปัจจุบันของ Ethereum ในการทำให้สถานะเป็น Merkle หลังจากทุกบล็อกนำเข้าซึ่งมีความเยอะมากต้องการการดำเนินการบ่อยๆ การเขียนและอ่านจากดิสก์ และการท่องต้นไม้ต่อเนื่อง ต้นไม้ Merkle ทำงานโดยปกติโดยการจัดกลุ่ม intermediate hashes เป็นชุดของ 16 (เรียกว่า node) และเก็บไว้ในฐานข้อมูลร้านค้าคีย์-ค่าที่ที่คีย์คือ node hash และค่าคือ node นั้นเอง

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

วิธีการของ Solana ในการอัปเดตการสัญญาณของสถานะเท่านั้นที่สิ้นสุดของแต่ละยุค ทำให้การคิดเครื่องหมายการเขียนแบ่งตามจำนวนครั้งในระยะเวลานั้น ๆ หากมีการแก้ไขรายการสถานะหลายครั้งภายในยุคเดียวกัน การเขียนแต่ละครั้งไม่ต้องการการอัปเดตทันทีไปยังราก Merkle ซึ่งลดความซับซ้อนของการคำนวณโดยรวมที่เกี่ยวข้องกับการอัปเดตสถานะในระหว่างยุค ด้วยเหตุนี้ ค่าที่เกี่ยวข้องกับการอ่านจากสถานะยังคงคงที่ หรือ O(1) เนื่องจากสถานะสามารถอ่านได้โดยตรงโดยไม่จำเป็นต้องไล่ทาง Merkle ทุกครั้ง

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

โครงสร้างข้อมูลที่มีประสิทธิภาพและเชี่ยวชาญ

นอกจากนี้โครงสร้างต้นไม้ชั้นซ้อนภายในไคลเอ็นต์ Ethereum ที่มีอยู่โดยทั่วไปทำให้รูปแบบการเข้าถึงสถานะไม่มีประสิทธิภาพ ทำให้เกิด state bloat อีกด้วย ในขณะที่สถานะของ Ethereum ถูกสร้างขึ้นเป็น MPT แต่ก็ถูกเก็บไว้ในฐานข้อมูลของไคลเอ็นต์ Ethereum เช่นเดียวกันLevelDB,PebbleDB (ใช้โดย go-ethereum) หรือ MDBX (ใช้โดย Erigon) ที่เก็บข้อมูลในต้นไม้ Merkle เช่น B-Tree หรือ LSM-Tree.

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

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

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

การกําหนดค่าต้นไม้ Binary Merkle จาก "Nearly Optimal State Merklization" ของ Sovereign Labs

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

การหมดอายุของรัฐ

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

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

มีวิธีที่พูดถึงกันบ่อย ๆ สำหรับการใช้การหมดอายุของสถานะ

  • Expiry by Rent: This method involves charging a maintenance fee, or “rent,” to keep accounts active within the state database. If the rent isn’t paid, the accounts are archived until a fee is paid to restore them.
  • Expiry by Time: ที่นี่บัญชีถือว่าเป็นไม่ใช้งานหากไม่ได้เข้าถึง - หมายถึงไม่มีธุรกรรมหรือการจ inter กทำเป็นระยะเวลาที่ระบุ

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

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

การแยกการดำเนินการ

Sharding ช่วยเพิ่มประสิทธิภาพการใช้ทรัพยากรและประสิทธิผลโดยการกระจายงานและข้อมูลไปยังจำนวนจำกัดของโหนดที่เฉพาะทาง (ไม่ใช่ทุกโหนดทำงานกับสถานะทั่วโลก)

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

แผนภาพการแบ่งชั้นจาก Vitalik's “ขีดจำกัดของความสามารถในการขยายมากของบล็อกเชน”

นี้กลายเป็นชัดเจนเมื่อสำรวจNEAR Protocol’sการออกแบบการแบ่งส่วน, Nightshade, ซึ่งบรรลุการเป็นไร้รัฐธรรมนูญเพื่อเพิ่มประสิทธิภาพการแบ่งขนาดโดยไม่เสียความน่าเชื่อถือ

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

เช่นเดียวกับการแยกผู้สร้างที่เหมาะสม (PBS) บน Ethereum, Nightshade จำแนกบทบาทของโหนดที่มีสถานะและโหนดที่ไม่มีสถานะอย่างชัดเจน ใน NEAR, ผู้ตรวจสอบที่มีสถานะถูกกำหนดให้กับชาร์ดที่แน่นอนและรับผิดชอบในการรวบรวมธุรกรรม ดำเนินการธุรกรรม และสร้างชิ้นส่วนที่เฉพาะเฉพาะชาร์ด พวกเขารักษารัฐบาลทั้งหมดของชาร์ดที่กำหนดให้และสร้างพยานสถานะสำหรับผู้ตรวจสอบให้ใช้ระหว่างกระบวนการตรวจสอบ

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

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


คำตอบ: การคำนวณที่ไม่มีประสิทธิภาพ

การประมวลผลแบบขนาน

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

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

  • การเข้าถึงสถานะแบบขนาน
  • การประมวลผลข้อมูลพร้อมกัน
  • การทำขึ้นกับการตระกร้าและการดำเนินการโดยขนาน

การขยายขยายการเข้าถึงสถานะ

การเข้าถึงสถานะโดยขนานนำเสนอประโยชน์สองประการที่สำคัญ:

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

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

การดำเนินงานอย่างเปราะบาง

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

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

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

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

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

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

ระบบที่ใช้ Unspent transaction output (UTXO) ช่วยเพิ่มประสิทธิภาพในด้านการคำนวณเช่นเดียวกัน UTXO เกี่ยวข้องกับหน่วยเงินที่เฉพาะเจาะจง - UTXOs - ที่เชื่อมโยงกับกระเป๋าเงินของบุคคลใดบุคคลหนึ่ง สำหรับแต่ละธุรกรรมในกระเป๋าเงินดังกล่าว UTXOs ถูกใช้ไปและถูกแทนที่ด้วย UTXOs ใหม่ มี UTXO หนึ่งหรือมากกว่าที่สร้างขึ้นสำหรับผู้รับ แทนการชำระเงิน และสร้าง UTXO อีกหนึ่งรายการสำหรับผู้เริ่มต้นโดยทั่วไป แทนการเปลี่ยนเงินทอน

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

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

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

การดำเนินการที่เต็มไปด้วยความสมหวัง

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

แทนที่จะป้องกันความขัดแย้งก่อนที่จะเกิดขึ้น ธุรกรรมจะถูกดำเนินการอย่างเต็มใจในขณะเดียวกันโดยสมมติว่ามันเป็นอิสระ ซอฟต์แวร์ทำงานด้วยเทคนิคเช่น multi-version concurrency control (MVCC) และ ซอฟต์แวร์การจดจำธุรกรรม (STM) เพื่อติดตามชุดการอ่านและเขียนระหว่างการดําเนินการ หลังจากการดําเนินการรันไทม์จะตรวจจับข้อขัดแย้งหรือการขึ้นต่อกันใด ๆ ใช้มาตรการแก้ไขเช่นการยกเลิกและดําเนินการธุรกรรมที่ขัดแย้งกันอีกครั้ง แต่สามารถทําได้โดยการอ่านจากหน่วยความจําแทนดิสก์เพื่อระบุธุรกรรมที่ขัดแย้งกัน

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

หนึ่งในการปฏิบัติตามรูปแบบนี้ที่น่าสังเกตคือAptosและ MoveVM ของMovement Labs*, ซึ่งใช้เทคนิคที่รู้จักกันบล็อก-STMใน Block-STM ธุรกรรมถูกดำเนินการโดยการประมวลผลแบบขนานกันก่อน จากนั้น ธุรกรรมที่ขัดแย้งกันจะถูกระบุและกำหนดตารางให้ทำซ้ำอีกครั้งโดยอ้างอิงถึงความขึ้นต่อกันที่ตรวจพบ วิธีการนี้จะทำให้ทรัพยากรประมวลผลถูกใช้งานอย่างต่อเนื่อง ซึ่งจะเพิ่มประสิทธิภาพขณะรักษาความสมบูรณ์ของขั้นตอนการทำธุรกรรม

Block-STM ของ Aptos จาก "Scaling Blockchain Execution by Turning Ordering Curse to a Performance Blessing" โดย

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

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

นอกจากนี้โมเดลบัญชีที่ใช้โดย MoveVM แตกต่างจากของ Ethereum’s EVM ซึ่งทำให้เกิดการชนกันน้อยลง ใน Ethereum โทเค็นจะถูกจัดการโดยสัญญาอัจฉริยะเดียว อาจเกิดการทำธุรกรรมโทเค็นหลายรายการที่จะมีปฏิสัมพันธ์ผ่านที่อยู่สัญญาเดียวกัน ทำให้เพิ่มโอกาสในการเกิดข้อขัดแย้ง ในทางตรงกันข้าม MoveVM จะมอบหมายโทเค็นให้บัญชีผู้ใช้แต่ละราย ลดโอกาสในการเกิดข้อขัดแย้งเช่นนี้เนื่องจากทุกธุรกรรมโดยปกติจะมีปฏิสัมพันธ์กับที่อยู่บัญชีที่แตกต่างกัน

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

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

การข้อมูลและการประมวลผลงานขนาดใหญ่

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

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

ข้อมูลการแบ่งขยาย

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

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

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

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

การประสานงานงาน

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

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

Lagrange’s@lagrangelabs/a-big-data-primer-introducing-zk-mapreduce-12cf404eab75">ZK MapReduce (ZKMR) ใช้การขนานข้อมูลและงานเพื่อทำให้การแบ่งทำงานแบบขนานและสร้างพิสูจน์ของการคำนวณแบบกระจายบนชุดข้อมูลขนาดใหญ่เป็นไปอย่างมีประสิทธิภาพ ในเฟสแผนที่ ชุดข้อมูลนำเข้าถูกแบ่งเป็นชิ้นย่อยๆ และแต่ละชิ้นถูกประมวลผลโดยอิสระโดย mapper worker หรือเครื่องเป็นตัวตัดที่แยกกันอย่างขนาน (task parallelism) การดำเนินการ “map” สามารถทำขนานภายในทุกงาน mapper ข้ามหลายๆ คอร์ หรือโปรเซสเซอร์ (data parallelism) ในทำเดียวกัน ในเฟสลดลง การดำเนินการ “reduce” บนค่าที่เกี่ยวข้องกับแต่ละคีย์สามารถทำขนานภายในทุกงาน reducer (data parallelism) ในทำเดียวกัน ข้อแตกต่างคือ งาน reducer ถูกดำเนินการขนานข้ามหลายเครื่อง (task parallelism)

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

การตรวจสอบกระบวนการ MapReduce อย่างสมบูรณ์ใน ZK จาก Lagrange's "การแนะนำ ZK MapReduce"

ความสามารถของลาแกรนจ์ในการสร้างพิสูจน์การเก็บข้อมูลสำหรับการคำนวณ SQL ข้าม@lagrangelabs/ประกาศ-testnet-euclid-ฐานข้อมูลที่สามารถยืนยันได้และ ZK-coprocessor แรกของ Ethereum-cc4a5595365c">888,888 storage slots in 1 นาทีและ 20 วินาที แสดงให้เห็นถึงพลังของ ZKMR และความขัดแย้งงานและข้อมูลที่เป็นพื้นฐาน นอกจากนี้ ค่าที่ Lagrange ได้รับเร็วReckle Treesกระดาษเน้นถึงความจำเป็นของการประพันธ์ในที่นั้น ซึ่งมันทำให้ใบพิสูจน์แบบชุดของข้อมูลออนเชนสามารถคำนวณได้ในเวลา 𝑂(log𝑛) โดยอิสระจากขนาดของชุด

การขั้นตอนการชุมนุมแบบขนาน & การดำเนินการ

ในขณะที่ชิ้นงานนี้ไม่ได้ถึงข้อสรุป บล็อกเชนยังสามารถทำให้กระบวนการข้อสรุปและการดำเนินการได้เป็นพร้อมกันด้วย บล็อกเชนแบบดั้งเดิมมักประมวลผลธุรกรรมตามลำดับเรียงลำดับ การเดินทางสู่ข้อสรุปของบล็อก N จะถึงก่อนการดำเนินการ การประมวลข้อสรุปและการดำเนินการแบบพร้อมกันเพิ่มประสิทธิภาพการดำเนินการอย่างมีนัยยะและเป็นเทคนิคที่นำเสนอโดยระบบเช่น Monad เมื่อเครือข่ายได้ถึงข้อสรุปสำหรับบล็อก N จะดำเนินการทำธุรกรรมของบล็อกก่อนหน้า (N-1) พร้อมกัน

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

นักแปลและการลดค่าใช้จ่าย

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

Reth กำลังแก้ไขปัญหาความไม่มีประสิทธิภาพของ EVM โดยการรวมเข้ากับคอมไพเลอร์แบบ just-in-time (JIT) คอมไพเลอร์นี้แปลง bytecode เป็น native machine code เพียงไม่นานก่อนการดำเนินการ หลีกเลี่ยงกระบวนการตีความทรัพยากรที่ต้องใช้ในระหว่างการเป็นปกติ

The บทความ Reth ระบุว่า 50% ของเวลาดําเนินการ EVM ภายใต้ระบบล่ามนั้นทุ่มเทให้กับกระบวนการที่ JIT สามารถเพิ่มประสิทธิภาพในทางทฤษฎีซึ่งชี้ให้เห็นถึงความเป็นไปได้ในการเพิ่มความเร็วในการดําเนินการเป็นสองเท่าด้วยการใช้งาน JIT อย่างไรก็ตาม ตามที่อี้หลงชี้ให้เห็นใน การนำเสนอนี้, ในขณะที่JITสามารถลดเวลาที่ต้องใช้สำหรับการประมวลผลโอปคอดที่เฉพาะเจาะจงลงมาได้อย่างมีนัยสำคัญ อย่างไรก็ตาม มันอาจจะไม่มีผลกระทบอย่างมากต่อการประมวลผลโดยรวม นี่เพราะส่วนใหญ่ของ 50% ของเวลาการประมวลผล EVM ที่ JIT ใช้เป็นส่วนใหญ่ประกอบด้วยการดำเนินการ "โฮสต์" และ "ระบบ" (Slide 13), ซึ่งไม่สามารถปรับให้เหมาะสมกับการจัดเรียงลำดับการทำงานได้ เช่น "คำนวณ" หรือ "ควบคุม" เนื่องจากลักษณะที่ไม่ใช่การคำนวณ

ในขณะที่ตัวแปลอาจจำกัดประสิทธิภาพ แต่ก็สร้างโอกาสให้เกิด "การแปล" ซึ่งเพิ่มขอบเขตของโค้ดที่สามารถใช้เครื่องมือเสมือนอย่างใหม่ ลดการใช้ทรัพยากรสำหรับนักพัฒนาในการใช้พื้นที่บล็อกของนักออกแบบได้ ตัวอย่างเช่น Movement Labs ได้พัฒนา Fractal ซึ่งทำให้นักพัฒนาสามารถ implement สัญญาของพวกเขาที่ใช้ Solidity บน MoveVM ได้ Fractal ทำงานโดยการคอมไพล์ Solidity เป็นภาษากลางที่มีคำสั่งที่อธิบายไว้ใน EVM opcodes ซึ่งจะถูกซับซ้อนกับตัว MoveVM bytecode counterparts ทำให้สัญญา Solidity สามารถทำงานในสภาพแวดล้อม MoveVM

เครื่องจักรรัฐที่ได้รับการเชี่ยวชาญและปรับแต่ง

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

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

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

LayerN’s Nord สาธารณะความได้เปรียบทางประสิทธิภาพของสิ่งแวดล้อมการดำเนินการและโครงสร้างข้อมูลผ่านกรณีใช้ที่เฉพาะเจาะจงของหนังสือคำสั่งที่สามารถตรวจสอบได้ การเข้าถึงของ LayerN มุ่งเน้นการปรับปรุงการวางที่ของการซื้อขายเข้าไปยังโครงสร้างข้อมูลของหนังสือคำสั่งในขณะที่กลไกการเชื่อมต่อท่องน้ำของพวกเขาถูกออกแบบเพื่อแทรกใบสั่งใหม่เข้าไปในตำแหน่งที่เหมาะสมภายในต้นไม้ข้อมูลของหนังสือคำสั่ง โดยการปรับเปลี่ยนโครงสร้างข้อมูลและอัลกอริทึมการแทรกให้เข้ากับความต้องการที่เฉพาะเจางของหนังสือคำสั่ง LayerN บรรลุการวางที่ของคำสั่งที่มีความล่าช้าต่ำและความผ่านได้สูง

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

คล่องแคล่ว และ CWDใช้กลยุทธ์ที่สมดุลระหว่างการปรับปรุงประสิทธิภาพการคำนวณเชิงดิจิทัลและการเพิ่มประสบการณ์ของนักพัฒนาและความเข้ากันได้ของนิเวศ. การเข้าใช้วิธีนี้คำสำคัญไปที่การใช้ WebAssembly (Wasm) เป็น VM เพื่อดำเนินการรหัส. Wasm กลายเป็นทางเลือกที่ถูกใจในการพัฒนาเว็บเนื่องจากมีการสนับสนุนภาษาที่แพร่หลายและมีการนำมาใช้อย่างกว้างขวางอย่างมาก.

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

การติดตั้ง CosmWasm (CWD)โดยเฉพาะอย่างยิ่งเป็นตัวอย่างวิธีการนี้โดยไม่เพียง แต่ใช้ Wasm สําหรับการดําเนินการสัญญาอัจฉริยะ แต่ยังรวมเข้ากับกรอบการทํางานที่กว้างขวางยิ่งขึ้นซึ่งออกแบบมาเพื่อรองรับความซับซ้อนของการดําเนินงานบล็อกเชน อุดมด้วย "ตรรกะรอบนอก" เฟรมเวิร์กนี้นําเสนอการจัดการบัญชีขั้นสูงกลไกก๊าซที่ปรับแต่งได้และการสั่งซื้อธุรกรรมที่เหมาะสม คุณสมบัติเหล่านี้มีส่วนช่วยในสภาพแวดล้อมการพัฒนาที่ยืดหยุ่นมีประสิทธิภาพและปลอดภัยซึ่งช่วยให้นักพัฒนาสามารถสร้าง dapps ที่ปรับขนาดได้และซับซ้อนได้อย่างง่ายดาย

Stackr* ดำเนินการในทิศทางที่แตกต่างโดยการผสมผสานคุณสมบัติของสภาพแวดล้อมการดำเนินการที่ปรับแต่งกับความยืดหยุ่นของแพลตฟอร์มสมาร์ทคอนแทรคชนิดเดิม Stackr ช่วยให้นักพัฒนาสามารถเขียนโปรแกรมแอปพลิเคชันเป็น rollups ซึ่งทำให้พวกเขาสามารถกำหนดกฎของตัวเองสำหรับการเรียงลำดับธุรกรรมการดำเนินการ และการกำหนดค่า ในโมเดลของ Stackr นักพัฒนาสามารถเลือก ISA โครงสร้างข้อมูล และโมเดลการดำเนินการที่เหมาะที่สุดสำหรับความต้องการของแอปพลิเคชันของพวกเขา

การออกแบบไมโคร-โรลอัพของ Stackr จาก "การเสนอ Stackr SDK"

ด้วย Stackr, นักพัฒนาสามารถใช้กฎการเปลี่ยนสถานะโดยตรงในระบบ runtime ของแอปพลิเคชัน แทนที่จะถูก จำกัดโดยกฎของ VM สำหรับการใช้ทั่วไป ซึ่งทำให้พวกเขาสามารถปรับปรุงชุดคำสั่งของพวกเขาให้มีประสิทธิภาพมากขึ้นและนิยามชุดของสิ่งที่สามารถทำได้ในสภาพแวดล้อมรันไทม์

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


สรุป

มีหลายเส้นทางสู่ประสิทธิภาพของชั้นการดำเนินการที่ดีที่สุด

ไม่มีการเพิ่มประสิทธิภาพเอกพจน์ในการเข้าถึงสถานะหรือการขนานที่โดดเด่นเป็นจุดที่เป็นกรรมสิทธิ์ของความแตกต่างทางเทคนิคระหว่างชั้นการดําเนินการเมื่อพยายามจับ dapps เมื่อเราผ่านไปประโยชน์ของการขนานตามทรัพยากรบน Solana สามารถนําไปใช้กับโมเดล UTXO ของ Fuel ได้อย่างเท่าเทียมกัน ทุกคนสามารถใช้ Amazon ได้ วิธีการที่มีความหมายที่จะปรับปรุงประสิทธิภาพในเรื่องของความสามารถในการขยายตัวในแนวนอนผ่านการแบ่งส่วนและปรับปรุงประสิทธิภาพของชั้นการดำเนินงาน

ขณะที่ประสิทธิภาพของชั้นดำเนินการเป็นตัวชี้วัดที่สำคัญสำหรับการชนะใจผู้สร้างแอปพลิเคชันที่ไม่มีความเป็นจำพวก ชั้น L1 และ L2 ใหม่ที่เน้นการปรับปรุงการดำเนินการต้องแข่งขันในด้านตัวแปรอื่น ๆ รวมถึงความปลอดภัย ความสามารถในการทำงานร่วมกัน และความเข้ากันได้กับเครื่องมือที่มีอยู่ สำหรับเหตุนี้การแพร่กระจายของชั้นประสานงานใหม่ ๆ- ตั้งแต่ Nebra ไปจนถึง Statenet ไปจนถึง AggLayer ของ Polygon - จะเป็นสิ่งสำคัญสำหรับนักพัฒนาที่ซื้อพื้นที่บล็อกออกแบบได้เนื่องจากพวกเขาสามารถสร้างหรือซื้อพื้นที่บล็อกที่เชี่ยวชาญโดยไม่เสียความสามารถในการทำงานร่วมกันแบบเรียงต่อกันและของสาธารณะของ L1 แบบทั่วไป

การปรับปรุงการบริหารจัดการสถานะและประสิทธิภาพในการคำนวณมีความสัมพันธ์กัน

ทั่วชุมชนที่ออกแบบชั้นการทำงานใหม่ การประยุกต์ใช้พร้อมกันของการเข้าถึงสถานะได้เป็นเม็มที่กำหนดคุณภาพของการปรับปรุงประสิทธิภาพที่พวกเขาสัญญาจะนำเสนอ ซึ่งเป็นเหตุผลที่ดี ๆ เนื่องจากมันอาจนำไปสู่การปรับปรุง 5 เท่าในการดำเนินการของ EVM, หลักฐานจากการทดลองอย่างเต็มรูปแบบของ Monad กับการประยุกต์ใช้การขนานทำให้เห็นว่าบทบาทของมันถูกเน้นมากเกินไปหากไม่มีการพัฒนาปรับปรุงอย่างอื่น เช่น async I/O ในขณะเดียวกัน

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

การก้าวไปอีกขั้นผู้ดํารงตําแหน่งอาจตัดสินใจเลือกเส้นทางที่ขัดขวางความสามารถในการแข่งขันกับการออกแบบบล็อกเชนใหม่ที่ออกแบบใหม่ว่ารัฐได้รับการจัดการและอัปเดตอย่างไรเนื่องจากความเฉื่อยที่ฮาร์ดฟอร์คเกิดขึ้น ด้วยเหตุนี้เลเยอร์การดําเนินการแบบแยกส่วนเฉพาะและ L1 ทางเลือกอาจสามารถสร้างการป้องกันเกี่ยวกับตัวเลือกการออกแบบสําหรับการจัดเก็บสถานะที่มีประสิทธิภาพมากขึ้นและโปรโตคอลสําหรับการอ่านและเขียนลงไป การตัดสินใจออกแบบเหล่านี้ให้ความได้เปรียบในการแข่งขันเนื่องจากผู้ดํารงตําแหน่งอาจพบความเฉื่อยในการอัปเดตโครงสร้างฐานข้อมูลโดยไม่มี Hard Fork

สิ้นสุดที่สุดของวัน ค่าของ blockspace มีผลต่อพื้นที่การออกแบบสำหรับชั้นการดำเนินงาน

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

จากด้านหนึ่ง monolithic L1s เช่น Solana และ Monad ไม่ยอมรับในการแยกบทบาทของ validator เป็นโหนดที่มีพลังงานแบ่งแยกกันเพื่อเพิ่มประสิทธิภาพ "การยอมรับ" การขยายขนาดของสถานะในระยะสั้นไม่ใช่ทางเลือกที่เหมาะสม ดังนั้นพวกเขาพุ่งไปที่การปรับปรุงที่ระดับฐานข้อมูลและส่วนประกอบอื่น ๆ ของเครื่องมือการผลิตบล็อก เช่น ความเห็นร่วม เพื่อเป็นการแก้ไขจากจำนวนโหนดที่มีบทบาทสำคัญและค่าคอร์ของเครือข่าย เนื่องจากโมเดลความปลอดภัยของ L1s เหล่านี้ขึ้นอยู่กับความเห็นร่วมของ validators ชุดที่กระจายได้มากขึ้นที่มีความต้องการฮาร์ดแวร์ที่อ่อนแอขึ้น ข้อมูลของพวกเขาจึงต้องถูกเขียนลงในฐานข้อมูลที่อยู่บนดิสก์ซึ่งจำเป็นต้องถูกจ่ายราคาถูกสำหรับบล็อกเชนแบบไม่จำกัดและจำนวนมากที่สุด

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

สมมติว่า "ผู้ดําเนินการ" แบบรวมศูนย์ของธุรกรรมและการเปลี่ยนสถานะถือว่าเป็นที่ยอมรับในการแสวงหาอนาคตแบบกระจายอํานาจ ในกรณีนั้นกฎของฟิสิกส์ระบุว่าระบบที่สามารถ 1) เพิ่มบล็อกลงในห่วงโซ่โดยไม่ต้องให้นักแสดงหลายคนทําธุรกรรมซ้ํา 2) เพิ่มข้อกําหนดของผู้ตรวจสอบเพื่อเพิ่มการคํานวณในหน่วยความจําให้สูงสุด (และเพิกเฉยต่อปัญหาการขยายตัวของรัฐ) และ 3) ลดเวลาแฝงและคอขวดฉันทามติอย่างชัดเจนเมื่อเทียบกับระบบที่อาศัยการกระจายอํานาจอย่างกว้างขวางและฉันทามติระหว่างโหนด

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

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

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

โมเดลการปกครองเช่นนี้ได้รับการทดสอบอยู่ในแอพลิเคชันทางปฏิบัติแล้ว ตัวอย่างเช่น rollups เช่น Arbitrum กำลังสำรวจระบบการปกครองหรือระบบคณะกรรมการเพื่อบังคับกฎการสั่งซื้อธุรกรรมและกฎเลือกตั้งผู้นำ และพวกเขากำลังพิจารณากลไรที่ตัวเรียงใช้ข้อมูล onchain เพื่อสนับสนุนนโยบายการสั่งซื้อธุรกรรม

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

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

*denotes an Archetype portfolio company

คำประกาศ:

  1. บทความนี้ถูกพิมพ์ซ้ำจาก [ กระจก )], Forward the Original Title‘Designer Blockspace: The Future of Execution Environments’, All copyrights belong to the original author [ Benjamin Funk]. หากมีข้อติเติกตามการพิมพ์ซ้ำนี้ โปรดติดต่อGate Learnทีม และพวกเขาจะดำเนินการโดยเร็ว

  2. คำปฏิเสธความรับผิด: มุมมองและความเห็นที่แสดงในบทความนี้เป็นเพียงของผู้เขียนเท่านั้น และไม่เป็นที่สร้างขึ้นใด ๆ เกี่ยวกับคำแนะนำในการลงทุนใด ๆ

  3. การแปลบทความเป็นภาษาอื่น ๆ ถูกดำเนินการโดยทีม Gate Learn การคัดลอก การกระจาย หรือการลอกเลียนบทความที่ถูกแปลนั้นถ้าไม่ได้กล่าวถึงเป็นสิ้นสุด

未來的執行環境

ขั้นสูง5/13/2024, 10:22:30 AM
เบนจามิน ฟันก์ นักวิจัยของสถาบันการลงทุนในสกุลเงินดิจิทัล Archetype ได้แสดงว่าปัญหา bottleneck ของ execution layer เกิดจากการเข้าถึงสถานะและการคำนวณที่ไม่มีประสิทธิภาพ เขาได้ประเมินการเลือกทางในการออกแบบที่ทำโดย integrated และ modular execution environments เพื่อให้ได้ประสิทธิภาพที่สูงขึ้น และขยายขอบเขตของ on-chain applications

Forwarded the Original Title: Designer Blockspace: The Future of Execution Environments

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

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

นับถึงหมอกนี้ เราได้เห็นการปรับปรุงที่น่าเชื่อถือและยั่งยืนเกี่ยวกับความสามารถในการขยายของบล็อกเชนเกิดขึ้นตลอดหลายปีที่ผ่านมา ซึ่งเมื่อ Ethereum ก้าวข้ามผ่านแผนเส้นทาง rollup-centric ของตน มีคลื่นใหม่ของ rollups, coprocessors,ความพร้อมใช้ข้อมูล (DA) ชั้น และ L1s ที่แข่งขันกันกำลังเกิดขึ้น - แต่ละอันมีการออกแบบที่เป็นเอกลักษณ์เพื่อให้นักพัฒนาได้รับสภาพแวดล้อมที่มีประสิทธิภาพมากขึ้นสำหรับการสร้าง dapps ที่มีประสิทธิภาพและใช้งานได้ง่าย

วันนี้การนำเสนอ EIP4844 และชั้น DA ทดแทนได้บรรเทาปัญหาขัดข้องของ DA ที่สำคัญ แม้ว่าจุดสำคัญนี้จะผ่านไปแล้ว หลักฐานชี้ให้เห็นว่าปัญหาขัดข้องอื่น ๆ ที่สำคัญต้องได้รับการแก้ไข ในเดือนที่แล้ว เกต รวบรวม 1.57 ล้านดอลลาร์ในค่าธรรมเนียมการธุรกรรมในหนึ่งวันในขณะที่จ่ายเพียง $5K เพื่อค่าใช้จ่ายในการให้ข้อมูลที่พร้อมใช้งานให้กับ Ethereum นี้แสดงให้เห็นว่างานคำนวณที่จำเป็นในการตรวจสอบและประมวลผลการอัพเดตสถานะยังคงเป็นจุดขัดข้องที่สำคัญและโอกาสในการปรับปรุง

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

ความท้าทายในวันนี้

ประสิทธิภาพของชั้นการดำเนินการสามารถทดสอบเช็คกลายเป็นตามงานคำนวณที่โหนดการดำเนินการทำได้เทียบกับเวลาบล็อกของเชนของพวกเขา หรือ 'แก๊สที่คำนวณต่อวินาที'

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

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

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

Bottleneck #1: การเข้าถึงสถานะที่ไม่มีประสิทธิภาพ

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

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

Ethereum specifically relies on a data structure known as the Merkle Patricia trie (MPT), which comprises @chiqing/merkle-patricia-trie-explained-ae3ac6a7e123">four sub-tries.

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

การเติบโตของสถานะนี้มีผลต่อประสิทธิภาพของ Ethereum โดยตรงเพราะสถานะถูกเก็บไว้ในดิสก์ และการดำเนินการดิสก์ทำให้เกิดภาระมาก ขณะที่การเข้าถึงข้อมูลจากที่ลงทะเบียน CPU ใช้เวลา 0.1 นาโนวินาที มันอาจใช้เวลาระหว่าง 10 และ 100 ไมโครวินาที(100เท่า–1000เท่าช้ากว่า)เพื่อเข้าถึงข้อมูลจากดิสก์ ประมาณการแปลเป็นคำสั่ง CPU 200,000 คำสั่งที่สามารถทำได้ในเวลานั้น นั้นเท่ากับการประมาณการอนุรักษ์ของการโอน ERC-20 36 ครั้งที่สามารถทำได้!

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

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

Bottleneck #2: การคำนวณที่ไม่มีประสิทธิภาพ

Execution layers ยังเผชิญกับปัญหาขีดจำกัดของการคำนวณที่ไม่มีประสิทธิภาพซึ่งแสดงออกอย่างหลากหลาย

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

โดยเพิ่มเติมการใช้เครื่องจำลองเสมือนนั้นเกี่ยวข้องกับการแปลงการดำเนินการของสัญญาอัจฉริยะระดับสูงเป็น bytecode—โค้ดระดับต่ำที่เป็นแพลตฟอร์ม-อิสระซึ่งจะถูกดำเนินการคำสั่งต่อคำสั่ง กระบวนการแปลและดำเนินการนี้มีความเยอะมากโดยเฉพาะอย่างยิ่งสำหรับแอปพลิเคชันที่มีงานที่เฉพาะเจาะจงซับซ้อนและที่ถูกทำซ้ำบ่อยค่ะ

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


Solutions: การเข้าถึงสถานะที่ไม่เป็นประสบการณ์

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

Statelessness & In-Memory Computing

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

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

เพื่อสมดุลความน่าสนใจของการคำนวณในหน่วยความจำกับการลดความเชื่อถือ ทั้ง L1s (เช่น Ethereum) และ L2s กำลังมองหาเส้นทางสเกลาบิลิตี้ที่พึงพอใจซึ่งพึ่งพารที่จะแยกบทบาทของผู้ตรวจสอบเป็นโหนดในการดำเนินงานที่เซ็นทรัลแยกจากโหนดที่ตรวจสอบมากมาย ในโมเดลนี้ ผู้ผลิตบล็อกที่มีประสิทธิภาพสูงพร้อมความต้องการของฮาร์ดแวร์ในการคำนวณในหน่วยความจำรับผิดชอบในการสร้างบล็อก และใช้พิสูจน์ทางกายภาพ (พิสูจน์การประพฤติและความถูกต้อง) โดยโหนดที่ตรวจสอบเพื่อให้แน่ใจว่าผู้ผลิตบล็อกมีความรับผิดชอบ

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

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

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

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

การลดขนาดต้นไม้ Verkle จาก Verkle Tree ของ Ethereum ที่ไม่สามารถหลีกเลี่ยงได้

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

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

ในระดับ L2 ทีมเช่น MegaETHกำลังปรับใช้แนวคิดของการไม่มีสถานะไปยังการออกแบบของ optimistic rollups โดยในการออกแบบของตน โหนด sequencer จะสร้างพยานสำหรับทุกบล็อกที่มีค่าสถานะที่จำเป็นและ intermediate hashes ในขณะที่ส่งออก state delta ที่แทนการเปลี่ยนแปลงในสถานะ โหนด verifier จึงสามารถที่จะทำการ execute บล็อกใดๆ อีกครั้งโดยการเรียกพยานจาก DA layer หรือเครือข่าย peer-to-peer โดยไม่ต้องเก็บรักษาสถานะทั้งหมด ในขณะเดียวกัน โหนด full จะทำการ update สถานะของตนโดยการนำ state deltas ที่กระจ散ผ่านเครือข่ายมาปรับใช้ ทำให้สามารถที่จะยังคง sync โดยไม่ต้องทำการ execute ธุรกรรมใหม่หรือเก็บรักษาประวัติสถานะทั้งหมด

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

TPS แบบเรียลไทม์จาก 'การเข้าใจประสิทธิภาพของเลเยอร์การดำเนินการอีเธอเรียมของ MegaETH'

As co-founder of MegaETH, Yilong Li, identifies in the followingการนำเสนองานวิจัยในการดำเนินการบน Ethereum ยังมีปัญหาประสิทธิภาพในโครงสร้างข้อมูลและรูปแบบการเข้าถึงบนเชนที่ยังคงได้รับการปรับปรุง

ปรับปรุงฐานข้อมูล

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

ในความเป็นจริง ข้อจำกัดของการออกแบบฐานข้อมูลที่มีอยู่ที่พบใน EVM แจ้งให้ทราบMonad’s* การตัดสินใจที่จะเลื่อนไปเกินการปรับปรุงเพียงอย่างเดียวสำหรับความมีประสิทธิภาพทางคอมพิวเตอร์เพื่อให้ได้การประมวลผลแบบพร้อมกัน Monad พบว่าแม้จะมีการปรับปรุงความเร็วเล็กน้อยหลังจากที่นำการประมวลผลแบบพร้อมกันมาใช้ แต่พวกเขาก็เห็นว่ามีการเลื่อนคำขอการอ่านและเขียนแบบหลายเทรดที่ถูกบล็อกจากกันที่ฐานข้อมูล ทำให้ไม่เห็นผลลัพธ์เท่าที่คาดคิด จึงทำให้ Monad นำฐานข้อมูลที่เข้ากันได้กับการทำ IO แบบไม่โดยการรอ (AIO) หรือการเข้าถึงแบบพร้อมกันเป็นส่วนสำคัญของการแก้ปัญหา

Async I/O

การดำเนินการ I/O - เช่น การอ่านหรือเขียนไปยังอุปกรณ์จัดเก็บ - มักสร้างข้อจำกัด โดยเฉพาะอย่างยิ่งกับฮาร์ดดิสก์ที่เป็นเครื่องมือ (HDDs) ที่มีการเคลื่อนที่ทางกายภาพของหัวอ่าน/เขียนเพื่อเข้าถึงข้อมูล ซึ่งอาจทำให้การประมวลผลข้อมูลช้าลงอย่างมีนัยสำคัญ

AIO ที่จัดการกับความท้าทายนี้โดยอนุญาตให้โปรแกรมทำการดำเนินการ I/O พร้อมกับกระบวนการอื่น ๆ อย่างสะกดสะเกด โดยพื้นฐานแล้ว โปรแกรมสามารถเริ่มต้นดำเนินการ I/O และเดินหน้าไปโดยไม่ต้องรอให้เสร็จสิ้น โดยการลงทะเบียนฟังก์ชัน callback หรือ promise ซึ่งระบบปฏิบัติการหรือไลบรารี I/O จะดำเนินการเมื่อการดำเนินการ I/O เสร็จสิ้น การทำแบบไม่รอดูและอนุญาตนี้ช่วยให้โปรแกรมหลักสามารถดำเนินการงานอื่นต่อไปได้โดยประสิทธิภาพที่ดีขึ้นโดยไม่ต้องรองของการดำเนินการ I/O เสร็จสิ้น

การปฏิบัติ I/O แบบไม่สม่ำเสมอสามารถนำมาใช้ได้ทั้งใน HDDs แบบดั้งเดิมและ solid-state drives (SSDs) อย่างไรก็ตามประโยชน์จะมีความชัดเจนมากขึ้นกับ SSDs HDDs สามารถทำ AIO ได้ แต่ลักษณะกลไกของพวกเขาหมายความว่าพวกเขาจะช้ากว่า SSDs ซึ่งจัดเก็บข้อมูลบนหน่วยความจำแบบแฟลชและไม่มีส่วนที่เคลื่อนไหว หมายความว่าเวลาเข้าถึงที่เร็วขึ้น

ตัวอย่างเช่น Monad ใช้ custom state backend ที่ถูกปรับแต่งให้เหมาะสำหรับการเก็บข้อมูลบน SSD ซึ่งรองรับการประมวลผลข้อมูลแบบพร้อมกันในระดับสูงและลดความหน่วงใน I/O การตั้งค่านี้มีประสิทธิภาพมากกว่าระบบที่พึ่งพาเฉพาะการเก็บข้อมูลบนดิสก์แบบดั้งเดิมหรือระบบที่ใช้ฐานข้อมูลในหน่วยความจำที่อาจเผชิญกับความล่าช้าจากการเขียนข้อมูลบ่อยครั้งและอ่านจากสื่อเก็บข้อมูลที่ช้าลง

ในทำเช่นนี้ Reth ใช้วิธีการที่แยกการดำเนินงานฐานข้อมูลจากเครื่องยนต์การดำเนินงาน EVM หลัก การตั้งค่านี้ช่วยให้ EVM bytecode สามารถดำเนินการตามลำดับบนเธรดเดียวเพื่อรักษาความสม่ำเสมอในขณะที่งาน I/O ของฐานข้อมูลถูกโอนออกไปทำงานพร้อมกัน Reth ใช้โมเดลนักแสดง - แบบออกแบบซอฟต์แวร์ - เพื่อจัดการกระบวนการของกระบวนการขนาดใหญ่เหล่านี้อย่างมีประสิทธิภาพ เพื่อให้แน่ใจว่าการดำเนินงาน I/O ไม่มีการขัดจังหวะกับตัวแปล EVM

ความถี่ในการเข้ารหัส Merklization ของรัฐ

อีกทางเลือกสำหรับการปรับปรุงคือความถี่ในการทำให้สถานะเป็น Merkle สถานะ โมเดลปัจจุบันของ Ethereum ในการทำให้สถานะเป็น Merkle หลังจากทุกบล็อกนำเข้าซึ่งมีความเยอะมากต้องการการดำเนินการบ่อยๆ การเขียนและอ่านจากดิสก์ และการท่องต้นไม้ต่อเนื่อง ต้นไม้ Merkle ทำงานโดยปกติโดยการจัดกลุ่ม intermediate hashes เป็นชุดของ 16 (เรียกว่า node) และเก็บไว้ในฐานข้อมูลร้านค้าคีย์-ค่าที่ที่คีย์คือ node hash และค่าคือ node นั้นเอง

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

วิธีการของ Solana ในการอัปเดตการสัญญาณของสถานะเท่านั้นที่สิ้นสุดของแต่ละยุค ทำให้การคิดเครื่องหมายการเขียนแบ่งตามจำนวนครั้งในระยะเวลานั้น ๆ หากมีการแก้ไขรายการสถานะหลายครั้งภายในยุคเดียวกัน การเขียนแต่ละครั้งไม่ต้องการการอัปเดตทันทีไปยังราก Merkle ซึ่งลดความซับซ้อนของการคำนวณโดยรวมที่เกี่ยวข้องกับการอัปเดตสถานะในระหว่างยุค ด้วยเหตุนี้ ค่าที่เกี่ยวข้องกับการอ่านจากสถานะยังคงคงที่ หรือ O(1) เนื่องจากสถานะสามารถอ่านได้โดยตรงโดยไม่จำเป็นต้องไล่ทาง Merkle ทุกครั้ง

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

โครงสร้างข้อมูลที่มีประสิทธิภาพและเชี่ยวชาญ

นอกจากนี้โครงสร้างต้นไม้ชั้นซ้อนภายในไคลเอ็นต์ Ethereum ที่มีอยู่โดยทั่วไปทำให้รูปแบบการเข้าถึงสถานะไม่มีประสิทธิภาพ ทำให้เกิด state bloat อีกด้วย ในขณะที่สถานะของ Ethereum ถูกสร้างขึ้นเป็น MPT แต่ก็ถูกเก็บไว้ในฐานข้อมูลของไคลเอ็นต์ Ethereum เช่นเดียวกันLevelDB,PebbleDB (ใช้โดย go-ethereum) หรือ MDBX (ใช้โดย Erigon) ที่เก็บข้อมูลในต้นไม้ Merkle เช่น B-Tree หรือ LSM-Tree.

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

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

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

การกําหนดค่าต้นไม้ Binary Merkle จาก "Nearly Optimal State Merklization" ของ Sovereign Labs

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

การหมดอายุของรัฐ

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

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

มีวิธีที่พูดถึงกันบ่อย ๆ สำหรับการใช้การหมดอายุของสถานะ

  • Expiry by Rent: This method involves charging a maintenance fee, or “rent,” to keep accounts active within the state database. If the rent isn’t paid, the accounts are archived until a fee is paid to restore them.
  • Expiry by Time: ที่นี่บัญชีถือว่าเป็นไม่ใช้งานหากไม่ได้เข้าถึง - หมายถึงไม่มีธุรกรรมหรือการจ inter กทำเป็นระยะเวลาที่ระบุ

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

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

การแยกการดำเนินการ

Sharding ช่วยเพิ่มประสิทธิภาพการใช้ทรัพยากรและประสิทธิผลโดยการกระจายงานและข้อมูลไปยังจำนวนจำกัดของโหนดที่เฉพาะทาง (ไม่ใช่ทุกโหนดทำงานกับสถานะทั่วโลก)

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

แผนภาพการแบ่งชั้นจาก Vitalik's “ขีดจำกัดของความสามารถในการขยายมากของบล็อกเชน”

นี้กลายเป็นชัดเจนเมื่อสำรวจNEAR Protocol’sการออกแบบการแบ่งส่วน, Nightshade, ซึ่งบรรลุการเป็นไร้รัฐธรรมนูญเพื่อเพิ่มประสิทธิภาพการแบ่งขนาดโดยไม่เสียความน่าเชื่อถือ

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

เช่นเดียวกับการแยกผู้สร้างที่เหมาะสม (PBS) บน Ethereum, Nightshade จำแนกบทบาทของโหนดที่มีสถานะและโหนดที่ไม่มีสถานะอย่างชัดเจน ใน NEAR, ผู้ตรวจสอบที่มีสถานะถูกกำหนดให้กับชาร์ดที่แน่นอนและรับผิดชอบในการรวบรวมธุรกรรม ดำเนินการธุรกรรม และสร้างชิ้นส่วนที่เฉพาะเฉพาะชาร์ด พวกเขารักษารัฐบาลทั้งหมดของชาร์ดที่กำหนดให้และสร้างพยานสถานะสำหรับผู้ตรวจสอบให้ใช้ระหว่างกระบวนการตรวจสอบ

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

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


คำตอบ: การคำนวณที่ไม่มีประสิทธิภาพ

การประมวลผลแบบขนาน

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

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

  • การเข้าถึงสถานะแบบขนาน
  • การประมวลผลข้อมูลพร้อมกัน
  • การทำขึ้นกับการตระกร้าและการดำเนินการโดยขนาน

การขยายขยายการเข้าถึงสถานะ

การเข้าถึงสถานะโดยขนานนำเสนอประโยชน์สองประการที่สำคัญ:

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

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

การดำเนินงานอย่างเปราะบาง

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

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

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

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

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

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

ระบบที่ใช้ Unspent transaction output (UTXO) ช่วยเพิ่มประสิทธิภาพในด้านการคำนวณเช่นเดียวกัน UTXO เกี่ยวข้องกับหน่วยเงินที่เฉพาะเจาะจง - UTXOs - ที่เชื่อมโยงกับกระเป๋าเงินของบุคคลใดบุคคลหนึ่ง สำหรับแต่ละธุรกรรมในกระเป๋าเงินดังกล่าว UTXOs ถูกใช้ไปและถูกแทนที่ด้วย UTXOs ใหม่ มี UTXO หนึ่งหรือมากกว่าที่สร้างขึ้นสำหรับผู้รับ แทนการชำระเงิน และสร้าง UTXO อีกหนึ่งรายการสำหรับผู้เริ่มต้นโดยทั่วไป แทนการเปลี่ยนเงินทอน

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

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

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

การดำเนินการที่เต็มไปด้วยความสมหวัง

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

แทนที่จะป้องกันความขัดแย้งก่อนที่จะเกิดขึ้น ธุรกรรมจะถูกดำเนินการอย่างเต็มใจในขณะเดียวกันโดยสมมติว่ามันเป็นอิสระ ซอฟต์แวร์ทำงานด้วยเทคนิคเช่น multi-version concurrency control (MVCC) และ ซอฟต์แวร์การจดจำธุรกรรม (STM) เพื่อติดตามชุดการอ่านและเขียนระหว่างการดําเนินการ หลังจากการดําเนินการรันไทม์จะตรวจจับข้อขัดแย้งหรือการขึ้นต่อกันใด ๆ ใช้มาตรการแก้ไขเช่นการยกเลิกและดําเนินการธุรกรรมที่ขัดแย้งกันอีกครั้ง แต่สามารถทําได้โดยการอ่านจากหน่วยความจําแทนดิสก์เพื่อระบุธุรกรรมที่ขัดแย้งกัน

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

หนึ่งในการปฏิบัติตามรูปแบบนี้ที่น่าสังเกตคือAptosและ MoveVM ของMovement Labs*, ซึ่งใช้เทคนิคที่รู้จักกันบล็อก-STMใน Block-STM ธุรกรรมถูกดำเนินการโดยการประมวลผลแบบขนานกันก่อน จากนั้น ธุรกรรมที่ขัดแย้งกันจะถูกระบุและกำหนดตารางให้ทำซ้ำอีกครั้งโดยอ้างอิงถึงความขึ้นต่อกันที่ตรวจพบ วิธีการนี้จะทำให้ทรัพยากรประมวลผลถูกใช้งานอย่างต่อเนื่อง ซึ่งจะเพิ่มประสิทธิภาพขณะรักษาความสมบูรณ์ของขั้นตอนการทำธุรกรรม

Block-STM ของ Aptos จาก "Scaling Blockchain Execution by Turning Ordering Curse to a Performance Blessing" โดย

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

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

นอกจากนี้โมเดลบัญชีที่ใช้โดย MoveVM แตกต่างจากของ Ethereum’s EVM ซึ่งทำให้เกิดการชนกันน้อยลง ใน Ethereum โทเค็นจะถูกจัดการโดยสัญญาอัจฉริยะเดียว อาจเกิดการทำธุรกรรมโทเค็นหลายรายการที่จะมีปฏิสัมพันธ์ผ่านที่อยู่สัญญาเดียวกัน ทำให้เพิ่มโอกาสในการเกิดข้อขัดแย้ง ในทางตรงกันข้าม MoveVM จะมอบหมายโทเค็นให้บัญชีผู้ใช้แต่ละราย ลดโอกาสในการเกิดข้อขัดแย้งเช่นนี้เนื่องจากทุกธุรกรรมโดยปกติจะมีปฏิสัมพันธ์กับที่อยู่บัญชีที่แตกต่างกัน

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

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

การข้อมูลและการประมวลผลงานขนาดใหญ่

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

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

ข้อมูลการแบ่งขยาย

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

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

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

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

การประสานงานงาน

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

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

Lagrange’s@lagrangelabs/a-big-data-primer-introducing-zk-mapreduce-12cf404eab75">ZK MapReduce (ZKMR) ใช้การขนานข้อมูลและงานเพื่อทำให้การแบ่งทำงานแบบขนานและสร้างพิสูจน์ของการคำนวณแบบกระจายบนชุดข้อมูลขนาดใหญ่เป็นไปอย่างมีประสิทธิภาพ ในเฟสแผนที่ ชุดข้อมูลนำเข้าถูกแบ่งเป็นชิ้นย่อยๆ และแต่ละชิ้นถูกประมวลผลโดยอิสระโดย mapper worker หรือเครื่องเป็นตัวตัดที่แยกกันอย่างขนาน (task parallelism) การดำเนินการ “map” สามารถทำขนานภายในทุกงาน mapper ข้ามหลายๆ คอร์ หรือโปรเซสเซอร์ (data parallelism) ในทำเดียวกัน ในเฟสลดลง การดำเนินการ “reduce” บนค่าที่เกี่ยวข้องกับแต่ละคีย์สามารถทำขนานภายในทุกงาน reducer (data parallelism) ในทำเดียวกัน ข้อแตกต่างคือ งาน reducer ถูกดำเนินการขนานข้ามหลายเครื่อง (task parallelism)

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

การตรวจสอบกระบวนการ MapReduce อย่างสมบูรณ์ใน ZK จาก Lagrange's "การแนะนำ ZK MapReduce"

ความสามารถของลาแกรนจ์ในการสร้างพิสูจน์การเก็บข้อมูลสำหรับการคำนวณ SQL ข้าม@lagrangelabs/ประกาศ-testnet-euclid-ฐานข้อมูลที่สามารถยืนยันได้และ ZK-coprocessor แรกของ Ethereum-cc4a5595365c">888,888 storage slots in 1 นาทีและ 20 วินาที แสดงให้เห็นถึงพลังของ ZKMR และความขัดแย้งงานและข้อมูลที่เป็นพื้นฐาน นอกจากนี้ ค่าที่ Lagrange ได้รับเร็วReckle Treesกระดาษเน้นถึงความจำเป็นของการประพันธ์ในที่นั้น ซึ่งมันทำให้ใบพิสูจน์แบบชุดของข้อมูลออนเชนสามารถคำนวณได้ในเวลา 𝑂(log𝑛) โดยอิสระจากขนาดของชุด

การขั้นตอนการชุมนุมแบบขนาน & การดำเนินการ

ในขณะที่ชิ้นงานนี้ไม่ได้ถึงข้อสรุป บล็อกเชนยังสามารถทำให้กระบวนการข้อสรุปและการดำเนินการได้เป็นพร้อมกันด้วย บล็อกเชนแบบดั้งเดิมมักประมวลผลธุรกรรมตามลำดับเรียงลำดับ การเดินทางสู่ข้อสรุปของบล็อก N จะถึงก่อนการดำเนินการ การประมวลข้อสรุปและการดำเนินการแบบพร้อมกันเพิ่มประสิทธิภาพการดำเนินการอย่างมีนัยยะและเป็นเทคนิคที่นำเสนอโดยระบบเช่น Monad เมื่อเครือข่ายได้ถึงข้อสรุปสำหรับบล็อก N จะดำเนินการทำธุรกรรมของบล็อกก่อนหน้า (N-1) พร้อมกัน

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

นักแปลและการลดค่าใช้จ่าย

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

Reth กำลังแก้ไขปัญหาความไม่มีประสิทธิภาพของ EVM โดยการรวมเข้ากับคอมไพเลอร์แบบ just-in-time (JIT) คอมไพเลอร์นี้แปลง bytecode เป็น native machine code เพียงไม่นานก่อนการดำเนินการ หลีกเลี่ยงกระบวนการตีความทรัพยากรที่ต้องใช้ในระหว่างการเป็นปกติ

The บทความ Reth ระบุว่า 50% ของเวลาดําเนินการ EVM ภายใต้ระบบล่ามนั้นทุ่มเทให้กับกระบวนการที่ JIT สามารถเพิ่มประสิทธิภาพในทางทฤษฎีซึ่งชี้ให้เห็นถึงความเป็นไปได้ในการเพิ่มความเร็วในการดําเนินการเป็นสองเท่าด้วยการใช้งาน JIT อย่างไรก็ตาม ตามที่อี้หลงชี้ให้เห็นใน การนำเสนอนี้, ในขณะที่JITสามารถลดเวลาที่ต้องใช้สำหรับการประมวลผลโอปคอดที่เฉพาะเจาะจงลงมาได้อย่างมีนัยสำคัญ อย่างไรก็ตาม มันอาจจะไม่มีผลกระทบอย่างมากต่อการประมวลผลโดยรวม นี่เพราะส่วนใหญ่ของ 50% ของเวลาการประมวลผล EVM ที่ JIT ใช้เป็นส่วนใหญ่ประกอบด้วยการดำเนินการ "โฮสต์" และ "ระบบ" (Slide 13), ซึ่งไม่สามารถปรับให้เหมาะสมกับการจัดเรียงลำดับการทำงานได้ เช่น "คำนวณ" หรือ "ควบคุม" เนื่องจากลักษณะที่ไม่ใช่การคำนวณ

ในขณะที่ตัวแปลอาจจำกัดประสิทธิภาพ แต่ก็สร้างโอกาสให้เกิด "การแปล" ซึ่งเพิ่มขอบเขตของโค้ดที่สามารถใช้เครื่องมือเสมือนอย่างใหม่ ลดการใช้ทรัพยากรสำหรับนักพัฒนาในการใช้พื้นที่บล็อกของนักออกแบบได้ ตัวอย่างเช่น Movement Labs ได้พัฒนา Fractal ซึ่งทำให้นักพัฒนาสามารถ implement สัญญาของพวกเขาที่ใช้ Solidity บน MoveVM ได้ Fractal ทำงานโดยการคอมไพล์ Solidity เป็นภาษากลางที่มีคำสั่งที่อธิบายไว้ใน EVM opcodes ซึ่งจะถูกซับซ้อนกับตัว MoveVM bytecode counterparts ทำให้สัญญา Solidity สามารถทำงานในสภาพแวดล้อม MoveVM

เครื่องจักรรัฐที่ได้รับการเชี่ยวชาญและปรับแต่ง

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

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

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

LayerN’s Nord สาธารณะความได้เปรียบทางประสิทธิภาพของสิ่งแวดล้อมการดำเนินการและโครงสร้างข้อมูลผ่านกรณีใช้ที่เฉพาะเจาะจงของหนังสือคำสั่งที่สามารถตรวจสอบได้ การเข้าถึงของ LayerN มุ่งเน้นการปรับปรุงการวางที่ของการซื้อขายเข้าไปยังโครงสร้างข้อมูลของหนังสือคำสั่งในขณะที่กลไกการเชื่อมต่อท่องน้ำของพวกเขาถูกออกแบบเพื่อแทรกใบสั่งใหม่เข้าไปในตำแหน่งที่เหมาะสมภายในต้นไม้ข้อมูลของหนังสือคำสั่ง โดยการปรับเปลี่ยนโครงสร้างข้อมูลและอัลกอริทึมการแทรกให้เข้ากับความต้องการที่เฉพาะเจางของหนังสือคำสั่ง LayerN บรรลุการวางที่ของคำสั่งที่มีความล่าช้าต่ำและความผ่านได้สูง

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

คล่องแคล่ว และ CWDใช้กลยุทธ์ที่สมดุลระหว่างการปรับปรุงประสิทธิภาพการคำนวณเชิงดิจิทัลและการเพิ่มประสบการณ์ของนักพัฒนาและความเข้ากันได้ของนิเวศ. การเข้าใช้วิธีนี้คำสำคัญไปที่การใช้ WebAssembly (Wasm) เป็น VM เพื่อดำเนินการรหัส. Wasm กลายเป็นทางเลือกที่ถูกใจในการพัฒนาเว็บเนื่องจากมีการสนับสนุนภาษาที่แพร่หลายและมีการนำมาใช้อย่างกว้างขวางอย่างมาก.

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

การติดตั้ง CosmWasm (CWD)โดยเฉพาะอย่างยิ่งเป็นตัวอย่างวิธีการนี้โดยไม่เพียง แต่ใช้ Wasm สําหรับการดําเนินการสัญญาอัจฉริยะ แต่ยังรวมเข้ากับกรอบการทํางานที่กว้างขวางยิ่งขึ้นซึ่งออกแบบมาเพื่อรองรับความซับซ้อนของการดําเนินงานบล็อกเชน อุดมด้วย "ตรรกะรอบนอก" เฟรมเวิร์กนี้นําเสนอการจัดการบัญชีขั้นสูงกลไกก๊าซที่ปรับแต่งได้และการสั่งซื้อธุรกรรมที่เหมาะสม คุณสมบัติเหล่านี้มีส่วนช่วยในสภาพแวดล้อมการพัฒนาที่ยืดหยุ่นมีประสิทธิภาพและปลอดภัยซึ่งช่วยให้นักพัฒนาสามารถสร้าง dapps ที่ปรับขนาดได้และซับซ้อนได้อย่างง่ายดาย

Stackr* ดำเนินการในทิศทางที่แตกต่างโดยการผสมผสานคุณสมบัติของสภาพแวดล้อมการดำเนินการที่ปรับแต่งกับความยืดหยุ่นของแพลตฟอร์มสมาร์ทคอนแทรคชนิดเดิม Stackr ช่วยให้นักพัฒนาสามารถเขียนโปรแกรมแอปพลิเคชันเป็น rollups ซึ่งทำให้พวกเขาสามารถกำหนดกฎของตัวเองสำหรับการเรียงลำดับธุรกรรมการดำเนินการ และการกำหนดค่า ในโมเดลของ Stackr นักพัฒนาสามารถเลือก ISA โครงสร้างข้อมูล และโมเดลการดำเนินการที่เหมาะที่สุดสำหรับความต้องการของแอปพลิเคชันของพวกเขา

การออกแบบไมโคร-โรลอัพของ Stackr จาก "การเสนอ Stackr SDK"

ด้วย Stackr, นักพัฒนาสามารถใช้กฎการเปลี่ยนสถานะโดยตรงในระบบ runtime ของแอปพลิเคชัน แทนที่จะถูก จำกัดโดยกฎของ VM สำหรับการใช้ทั่วไป ซึ่งทำให้พวกเขาสามารถปรับปรุงชุดคำสั่งของพวกเขาให้มีประสิทธิภาพมากขึ้นและนิยามชุดของสิ่งที่สามารถทำได้ในสภาพแวดล้อมรันไทม์

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


สรุป

มีหลายเส้นทางสู่ประสิทธิภาพของชั้นการดำเนินการที่ดีที่สุด

ไม่มีการเพิ่มประสิทธิภาพเอกพจน์ในการเข้าถึงสถานะหรือการขนานที่โดดเด่นเป็นจุดที่เป็นกรรมสิทธิ์ของความแตกต่างทางเทคนิคระหว่างชั้นการดําเนินการเมื่อพยายามจับ dapps เมื่อเราผ่านไปประโยชน์ของการขนานตามทรัพยากรบน Solana สามารถนําไปใช้กับโมเดล UTXO ของ Fuel ได้อย่างเท่าเทียมกัน ทุกคนสามารถใช้ Amazon ได้ วิธีการที่มีความหมายที่จะปรับปรุงประสิทธิภาพในเรื่องของความสามารถในการขยายตัวในแนวนอนผ่านการแบ่งส่วนและปรับปรุงประสิทธิภาพของชั้นการดำเนินงาน

ขณะที่ประสิทธิภาพของชั้นดำเนินการเป็นตัวชี้วัดที่สำคัญสำหรับการชนะใจผู้สร้างแอปพลิเคชันที่ไม่มีความเป็นจำพวก ชั้น L1 และ L2 ใหม่ที่เน้นการปรับปรุงการดำเนินการต้องแข่งขันในด้านตัวแปรอื่น ๆ รวมถึงความปลอดภัย ความสามารถในการทำงานร่วมกัน และความเข้ากันได้กับเครื่องมือที่มีอยู่ สำหรับเหตุนี้การแพร่กระจายของชั้นประสานงานใหม่ ๆ- ตั้งแต่ Nebra ไปจนถึง Statenet ไปจนถึง AggLayer ของ Polygon - จะเป็นสิ่งสำคัญสำหรับนักพัฒนาที่ซื้อพื้นที่บล็อกออกแบบได้เนื่องจากพวกเขาสามารถสร้างหรือซื้อพื้นที่บล็อกที่เชี่ยวชาญโดยไม่เสียความสามารถในการทำงานร่วมกันแบบเรียงต่อกันและของสาธารณะของ L1 แบบทั่วไป

การปรับปรุงการบริหารจัดการสถานะและประสิทธิภาพในการคำนวณมีความสัมพันธ์กัน

ทั่วชุมชนที่ออกแบบชั้นการทำงานใหม่ การประยุกต์ใช้พร้อมกันของการเข้าถึงสถานะได้เป็นเม็มที่กำหนดคุณภาพของการปรับปรุงประสิทธิภาพที่พวกเขาสัญญาจะนำเสนอ ซึ่งเป็นเหตุผลที่ดี ๆ เนื่องจากมันอาจนำไปสู่การปรับปรุง 5 เท่าในการดำเนินการของ EVM, หลักฐานจากการทดลองอย่างเต็มรูปแบบของ Monad กับการประยุกต์ใช้การขนานทำให้เห็นว่าบทบาทของมันถูกเน้นมากเกินไปหากไม่มีการพัฒนาปรับปรุงอย่างอื่น เช่น async I/O ในขณะเดียวกัน

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

การก้าวไปอีกขั้นผู้ดํารงตําแหน่งอาจตัดสินใจเลือกเส้นทางที่ขัดขวางความสามารถในการแข่งขันกับการออกแบบบล็อกเชนใหม่ที่ออกแบบใหม่ว่ารัฐได้รับการจัดการและอัปเดตอย่างไรเนื่องจากความเฉื่อยที่ฮาร์ดฟอร์คเกิดขึ้น ด้วยเหตุนี้เลเยอร์การดําเนินการแบบแยกส่วนเฉพาะและ L1 ทางเลือกอาจสามารถสร้างการป้องกันเกี่ยวกับตัวเลือกการออกแบบสําหรับการจัดเก็บสถานะที่มีประสิทธิภาพมากขึ้นและโปรโตคอลสําหรับการอ่านและเขียนลงไป การตัดสินใจออกแบบเหล่านี้ให้ความได้เปรียบในการแข่งขันเนื่องจากผู้ดํารงตําแหน่งอาจพบความเฉื่อยในการอัปเดตโครงสร้างฐานข้อมูลโดยไม่มี Hard Fork

สิ้นสุดที่สุดของวัน ค่าของ blockspace มีผลต่อพื้นที่การออกแบบสำหรับชั้นการดำเนินงาน

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

จากด้านหนึ่ง monolithic L1s เช่น Solana และ Monad ไม่ยอมรับในการแยกบทบาทของ validator เป็นโหนดที่มีพลังงานแบ่งแยกกันเพื่อเพิ่มประสิทธิภาพ "การยอมรับ" การขยายขนาดของสถานะในระยะสั้นไม่ใช่ทางเลือกที่เหมาะสม ดังนั้นพวกเขาพุ่งไปที่การปรับปรุงที่ระดับฐานข้อมูลและส่วนประกอบอื่น ๆ ของเครื่องมือการผลิตบล็อก เช่น ความเห็นร่วม เพื่อเป็นการแก้ไขจากจำนวนโหนดที่มีบทบาทสำคัญและค่าคอร์ของเครือข่าย เนื่องจากโมเดลความปลอดภัยของ L1s เหล่านี้ขึ้นอยู่กับความเห็นร่วมของ validators ชุดที่กระจายได้มากขึ้นที่มีความต้องการฮาร์ดแวร์ที่อ่อนแอขึ้น ข้อมูลของพวกเขาจึงต้องถูกเขียนลงในฐานข้อมูลที่อยู่บนดิสก์ซึ่งจำเป็นต้องถูกจ่ายราคาถูกสำหรับบล็อกเชนแบบไม่จำกัดและจำนวนมากที่สุด

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

สมมติว่า "ผู้ดําเนินการ" แบบรวมศูนย์ของธุรกรรมและการเปลี่ยนสถานะถือว่าเป็นที่ยอมรับในการแสวงหาอนาคตแบบกระจายอํานาจ ในกรณีนั้นกฎของฟิสิกส์ระบุว่าระบบที่สามารถ 1) เพิ่มบล็อกลงในห่วงโซ่โดยไม่ต้องให้นักแสดงหลายคนทําธุรกรรมซ้ํา 2) เพิ่มข้อกําหนดของผู้ตรวจสอบเพื่อเพิ่มการคํานวณในหน่วยความจําให้สูงสุด (และเพิกเฉยต่อปัญหาการขยายตัวของรัฐ) และ 3) ลดเวลาแฝงและคอขวดฉันทามติอย่างชัดเจนเมื่อเทียบกับระบบที่อาศัยการกระจายอํานาจอย่างกว้างขวางและฉันทามติระหว่างโหนด

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

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

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

โมเดลการปกครองเช่นนี้ได้รับการทดสอบอยู่ในแอพลิเคชันทางปฏิบัติแล้ว ตัวอย่างเช่น rollups เช่น Arbitrum กำลังสำรวจระบบการปกครองหรือระบบคณะกรรมการเพื่อบังคับกฎการสั่งซื้อธุรกรรมและกฎเลือกตั้งผู้นำ และพวกเขากำลังพิจารณากลไรที่ตัวเรียงใช้ข้อมูล onchain เพื่อสนับสนุนนโยบายการสั่งซื้อธุรกรรม

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

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

*denotes an Archetype portfolio company

คำประกาศ:

  1. บทความนี้ถูกพิมพ์ซ้ำจาก [ กระจก )], Forward the Original Title‘Designer Blockspace: The Future of Execution Environments’, All copyrights belong to the original author [ Benjamin Funk]. หากมีข้อติเติกตามการพิมพ์ซ้ำนี้ โปรดติดต่อGate Learnทีม และพวกเขาจะดำเนินการโดยเร็ว

  2. คำปฏิเสธความรับผิด: มุมมองและความเห็นที่แสดงในบทความนี้เป็นเพียงของผู้เขียนเท่านั้น และไม่เป็นที่สร้างขึ้นใด ๆ เกี่ยวกับคำแนะนำในการลงทุนใด ๆ

  3. การแปลบทความเป็นภาษาอื่น ๆ ถูกดำเนินการโดยทีม Gate Learn การคัดลอก การกระจาย หรือการลอกเลียนบทความที่ถูกแปลนั้นถ้าไม่ได้กล่าวถึงเป็นสิ้นสุด

即刻開始交易
註冊並交易即可獲得
$100
和價值
$5500
理財體驗金獎勵!