โพสต์นี้เสนอ wนวิธี radica สำหรับอนาคตของเลเยอร์การดำเนินการ Ethereum ที่เข้ากันได้กับการพยายามฉลาดเท่าเทียมกับการพยายาม chain effort สำหรับเลเยอร์ตรวจสอบ มีเป้าหมายที่จะพัฒนาประสิทธิภาพของเลเยอร์การดำเนินการ Ethereum โดยเฉพาะการแก้ปัญหาขีดจำกัดในการทําลายขนาดใหญ่ และยังสามารถปรับปรุงความง่ายของเลเยอร์การดำเนินการอย่างมาก - ที่จริงแล้ว น่าจะเป็นวิธีเดียวที่จะทำได้
ไอเดีย: แทนที่ EVM ด้วย RISC-V เป็นภาษาเครื่องเสมือนที่สมาร์ทคอนแทรคจะเขียน
คำชี้แจงที่สำคัญ:
หนึ่งในข้ออ้างอิงสำคัญสำหรับสิ่งนี้คือ Nervos CKB VM ซึ่งโดยพื้นฐาน RISC-V.
ในระยะสั้น ปัญหาหลักที่มีผลต่อความสามารถในการขยายของ Ethereum L1 จะได้รับการแก้ไขด้วย EIPs ที่กำลังจะมารายการการเข้าถึงระดับบล็อก, การดำเนินการล่าช้าและการจัดเก็บประวัติที่กระจายและEIP-4444ในระยะกลาง พวกเราจะแก้ไขปัญหาเพิ่มเติมด้วยการไม่มีสัญชาติ และ ZK-EVMsในระยะยาว ปัจจัยที่จำกัดหลักบน Ethereum L1 scaling คือ:
ฉันจะอ้างว่าการแทนที่ ZK-EVM ด้วย RISC-V จะแก้ปัญหาข้อจำกัดสำคัญใน (2) และ (3)
นี่คือตารางของจำนวนรอบที่ Succinct ZK-EVM ใช้ในการพิสูจน์ส่วนต่าง ๆ ของชั้นการดำเนินการ EVM:
มีสี่ส่วนที่ใช้เวลามาก: deserialize_inputs, initialize_witness_db, state_root_computation และ block_execution.
initialize_witness_db และ state_root_computation มีที่เกี่ยวข้องกับต้นไม้สถานะ และ deserialize_inputs หมายถึงกระบวนการแปลงข้อมูลบล็อกและพยานเป็นการแทนที่ภายใน ดังนั้น ในทางปฏิบัติมากกว่า 50% ของมันสัมพันธ์กับขนาดพยาน
ส่วนเหล่านี้สามารถถูกปรับปรุงอย่างสมบูรณ์โดยการแทนที่ระบบต้นไม้ Merkle Patricia 16-ary ปัจจุบันด้วยต้นไม้ทวิภาคีที่ใช้ฟังก์ชันแฮชที่เป็นมิตรกับ prover หากเราใช้ Poseidon เราสามารถ พิสูจน์ 2 ล้านแฮชต่อวินาทีบนคอมพิวเตอร์พกพา (เปรียบเทียบกับ ~15,000 แฮชต่อวินาทีสำหรับ keccak) ยังมีตัวเลือกอีกมากนอกเหนือจาก Poseidon โดยรวมมี๊โอกาสในการลดส่วนประกอบเหล่านี้อย่างมาก โดยเพิ่มเติมเราสามารถกำจัด accrue_logs_bloom ได้โดยการใช้ โอเคค่ะกำจัดบลูม.
ส่วนนี้เป็นการดำเนินการบล็อกซึ่งประกอบไปด้วยราว ๆ ครึ่งของวงจร prover ที่ใช้วันนี้ หากเราต้องการเพิ่มประสิทธิภาพของโปรเวอร์ทั้งหมด 100 เท่า จะไม่มีทางหลีกเลี่ยงได้ว่าเราต้องเพิ่มประสิทธิภาพของโปรเวอร์ EVM อย่างน้อย 50 เท่า สิ่งหนึ่งที่เราสามารถทำคือพยายามสร้างการประมวลผลของ EVM ที่มีประสิทธิภาพมากขึ้นตามด้านของวงจร prover สิ่งอื่นที่เราสามารถทำคือสังเกตเห็นว่าโปรแกรม ZK-EVM prover ในปัจจุบันทำงานโดยการพิสูทจากการประมวลผลของ EVM ที่คอมไพล์ลงไปเป็น RISC-V และให้ผู้พัฒนาสัญญาอัจฉริยะเข้าถึง RISC-V VM โดยตรง
บางข้อมูลบอกให้เห็นว่าในกรณีบางกรณี นี่อาจให้ประสิทธิภาพเพิ่มขึ้นกว่า 100 เท่า
ในการปฏิบัติฉันคาดว่าเวลา prover ที่เหลือจะเริ่มควบคุมโดยสิ่งที่เป็น precompiles ในปัจจุบัน หากเราทำให้ RISC-V เป็น VM หลัก ตาราง gas จะสะท้อนเวลาการพิสูจน์ และจึงมีความดันทางเศรษฐศาสตร์ในการหยุดใช้ precompiles ที่มีราคาสูงกว่า; แต่ยังมีการเพิ่มขึ้นที่ไม่ได้เป็นที่ประทับใจเท่านี้ แต่เรามีเหตุผลที่ดีที่จะเชื่อว่ามันจะมีผลสำคัญมาก
(อย่างไรก็ตาม การแบ่งแยกโดยประมาณที่ 50/50 ระหว่าง "EVM" และ "สิ่งอื่น ๆ" ยังปรากฏในการประมวลผล EVM ปกติ, และเราคาดการณ์อย่างอัตโนมัติว่าผลกำไรจากการลบ EVM ออกเป็น “คนกลาง” ควรมีขนาดใหญ่เช่นกัน
มีหลายวิธีในการใช้ข้อเสนอประเภทนี้ สิ่งที่ก่อกวนน้อยที่สุดคือการสนับสนุน VM สองเครื่องและอนุญาตให้เขียนสัญญาอย่างใดอย่างหนึ่ง สัญญาทั้งสองประเภทจะสามารถเข้าถึงสิ่งอํานวยความสะดวกประเภทเดียวกัน: ที่เก็บข้อมูลถาวร (SLOAD และ SSTORE) ความสามารถในการถือยอดคงเหลือ ETH ความสามารถในการโทรออกและรับสาย ฯลฯ สัญญา EVM และ RISC-V จะมีอิสระที่จะโทรเข้าหากัน มุมมอง RISC-V ที่เรียกสัญญา EVM จะปรากฏขึ้นจากมุมมองของมันเพื่อทํา syscall ด้วยพารามิเตอร์พิเศษบางอย่าง สัญญา EVM ที่ได้รับข้อความจะตีความว่าเป็นการโทร
การใช้วิธีการที่ Radical มากขึ้นจากมุมมองของโปรโตคอลคือการแปลงสัญญา EVM ที่มีอยู่ให้กลายเป็นสัญญาที่เรียกสัญญาตัวแปร EVM ที่เขียนด้วย RISC-V ซึ่งรันโค้ด EVM ที่มีอยู่ของพวกเขา กล่าวคือ หากสัญญา EVM มีโค้ด C และตัวแปร EVM อยู่ที่ที่อยู่ X แล้วสัญญานั้นถูกแทนที่ด้วยโลจิกระดับบนที่เมื่อมีการเรียกจากภายนอกด้วยพารามิเตอร์การเรียก D จะเรียก X ด้วย (C, D) และรอค่าที่ส่งกลับและส่งต่อมัน หากตัวแปร EVM เรียกสัญญาเอง โดยการขอทำการทำ CALL หรือ SLOAD/SSTORE แล้วสัญญาทำเช่นนั้น
เส้นทางกลางคือการทำตามตัวเลือกที่สอง แต่สร้างคุณสมบัติโปรโตคอลชัดเจนสำหรับมัน - โดยพื้นฐานแล้ว ทำให้แนบแน่นแน่นอนที่มีแนวคิดของ "ตัวแปลงเสมือน" และต้องการตรรกะในการเขียนด้วย RISC-V EVM จะเป็นตัวแรก แต่อาจมีตัวเลือกอื่นๆ (เช่น Move อาจเป็นตัวเลือก)
ประโยชน์สำคัญของข้อเสนอครั้งที่สองและครั้งที่สามคือพวกเขาทำให้ข้อกำหนดของเลเยอร์การดำเนินงานเรียบง่ายมาก - อย่างแท้จริงแนวคิดประเภทนี้อาจเป็นวิธีที่เป็นปฏิบัติได้เท่าที่จะทำได้ โดยที่ยากลำบากของการทำงานก็คือการทำให้เรื่องนี้เป็นเรื่องที่เป็นไปได้เท่าที่จะทำได้ การลดความซับซ้อนแบบกระโดดๆ เช่นการลบ SELFDESTRUCT ทำได้ยากอย่างมาก เทียนีแกรดมีกฎหมายแข็งแรงของไม่เกิน 10000 บรรทัดโค้ด; ชั้นฐานบล็อกเชนที่เหมาะสมควรสามารถพอดีกับขอบเขตเหล่านั้นและยังไปได้เล็กลงไปอีก ความพยายามของเชนแบมมีความสมบูรณ์ที่ยิ่งใหญ่ในการทำให้ชั้นข้อสรุปของ Ethereum ง่ายมาก แต่สำหรับชั้นการปฏิบัติเพื่อเห็นผลประสิทธิภาพที่คล้ายกัน การเปลี่ยนแปลงรุนแรงของแบบนี้อาจเป็นเส้นทางที่เป็นไปได้เพียงอย่างเดียว
โพสต์นี้เสนอ wนวิธี radica สำหรับอนาคตของเลเยอร์การดำเนินการ Ethereum ที่เข้ากันได้กับการพยายามฉลาดเท่าเทียมกับการพยายาม chain effort สำหรับเลเยอร์ตรวจสอบ มีเป้าหมายที่จะพัฒนาประสิทธิภาพของเลเยอร์การดำเนินการ Ethereum โดยเฉพาะการแก้ปัญหาขีดจำกัดในการทําลายขนาดใหญ่ และยังสามารถปรับปรุงความง่ายของเลเยอร์การดำเนินการอย่างมาก - ที่จริงแล้ว น่าจะเป็นวิธีเดียวที่จะทำได้
ไอเดีย: แทนที่ EVM ด้วย RISC-V เป็นภาษาเครื่องเสมือนที่สมาร์ทคอนแทรคจะเขียน
คำชี้แจงที่สำคัญ:
หนึ่งในข้ออ้างอิงสำคัญสำหรับสิ่งนี้คือ Nervos CKB VM ซึ่งโดยพื้นฐาน RISC-V.
ในระยะสั้น ปัญหาหลักที่มีผลต่อความสามารถในการขยายของ Ethereum L1 จะได้รับการแก้ไขด้วย EIPs ที่กำลังจะมารายการการเข้าถึงระดับบล็อก, การดำเนินการล่าช้าและการจัดเก็บประวัติที่กระจายและEIP-4444ในระยะกลาง พวกเราจะแก้ไขปัญหาเพิ่มเติมด้วยการไม่มีสัญชาติ และ ZK-EVMsในระยะยาว ปัจจัยที่จำกัดหลักบน Ethereum L1 scaling คือ:
ฉันจะอ้างว่าการแทนที่ ZK-EVM ด้วย RISC-V จะแก้ปัญหาข้อจำกัดสำคัญใน (2) และ (3)
นี่คือตารางของจำนวนรอบที่ Succinct ZK-EVM ใช้ในการพิสูจน์ส่วนต่าง ๆ ของชั้นการดำเนินการ EVM:
มีสี่ส่วนที่ใช้เวลามาก: deserialize_inputs, initialize_witness_db, state_root_computation และ block_execution.
initialize_witness_db และ state_root_computation มีที่เกี่ยวข้องกับต้นไม้สถานะ และ deserialize_inputs หมายถึงกระบวนการแปลงข้อมูลบล็อกและพยานเป็นการแทนที่ภายใน ดังนั้น ในทางปฏิบัติมากกว่า 50% ของมันสัมพันธ์กับขนาดพยาน
ส่วนเหล่านี้สามารถถูกปรับปรุงอย่างสมบูรณ์โดยการแทนที่ระบบต้นไม้ Merkle Patricia 16-ary ปัจจุบันด้วยต้นไม้ทวิภาคีที่ใช้ฟังก์ชันแฮชที่เป็นมิตรกับ prover หากเราใช้ Poseidon เราสามารถ พิสูจน์ 2 ล้านแฮชต่อวินาทีบนคอมพิวเตอร์พกพา (เปรียบเทียบกับ ~15,000 แฮชต่อวินาทีสำหรับ keccak) ยังมีตัวเลือกอีกมากนอกเหนือจาก Poseidon โดยรวมมี๊โอกาสในการลดส่วนประกอบเหล่านี้อย่างมาก โดยเพิ่มเติมเราสามารถกำจัด accrue_logs_bloom ได้โดยการใช้ โอเคค่ะกำจัดบลูม.
ส่วนนี้เป็นการดำเนินการบล็อกซึ่งประกอบไปด้วยราว ๆ ครึ่งของวงจร prover ที่ใช้วันนี้ หากเราต้องการเพิ่มประสิทธิภาพของโปรเวอร์ทั้งหมด 100 เท่า จะไม่มีทางหลีกเลี่ยงได้ว่าเราต้องเพิ่มประสิทธิภาพของโปรเวอร์ EVM อย่างน้อย 50 เท่า สิ่งหนึ่งที่เราสามารถทำคือพยายามสร้างการประมวลผลของ EVM ที่มีประสิทธิภาพมากขึ้นตามด้านของวงจร prover สิ่งอื่นที่เราสามารถทำคือสังเกตเห็นว่าโปรแกรม ZK-EVM prover ในปัจจุบันทำงานโดยการพิสูทจากการประมวลผลของ EVM ที่คอมไพล์ลงไปเป็น RISC-V และให้ผู้พัฒนาสัญญาอัจฉริยะเข้าถึง RISC-V VM โดยตรง
บางข้อมูลบอกให้เห็นว่าในกรณีบางกรณี นี่อาจให้ประสิทธิภาพเพิ่มขึ้นกว่า 100 เท่า
ในการปฏิบัติฉันคาดว่าเวลา prover ที่เหลือจะเริ่มควบคุมโดยสิ่งที่เป็น precompiles ในปัจจุบัน หากเราทำให้ RISC-V เป็น VM หลัก ตาราง gas จะสะท้อนเวลาการพิสูจน์ และจึงมีความดันทางเศรษฐศาสตร์ในการหยุดใช้ precompiles ที่มีราคาสูงกว่า; แต่ยังมีการเพิ่มขึ้นที่ไม่ได้เป็นที่ประทับใจเท่านี้ แต่เรามีเหตุผลที่ดีที่จะเชื่อว่ามันจะมีผลสำคัญมาก
(อย่างไรก็ตาม การแบ่งแยกโดยประมาณที่ 50/50 ระหว่าง "EVM" และ "สิ่งอื่น ๆ" ยังปรากฏในการประมวลผล EVM ปกติ, และเราคาดการณ์อย่างอัตโนมัติว่าผลกำไรจากการลบ EVM ออกเป็น “คนกลาง” ควรมีขนาดใหญ่เช่นกัน
มีหลายวิธีในการใช้ข้อเสนอประเภทนี้ สิ่งที่ก่อกวนน้อยที่สุดคือการสนับสนุน VM สองเครื่องและอนุญาตให้เขียนสัญญาอย่างใดอย่างหนึ่ง สัญญาทั้งสองประเภทจะสามารถเข้าถึงสิ่งอํานวยความสะดวกประเภทเดียวกัน: ที่เก็บข้อมูลถาวร (SLOAD และ SSTORE) ความสามารถในการถือยอดคงเหลือ ETH ความสามารถในการโทรออกและรับสาย ฯลฯ สัญญา EVM และ RISC-V จะมีอิสระที่จะโทรเข้าหากัน มุมมอง RISC-V ที่เรียกสัญญา EVM จะปรากฏขึ้นจากมุมมองของมันเพื่อทํา syscall ด้วยพารามิเตอร์พิเศษบางอย่าง สัญญา EVM ที่ได้รับข้อความจะตีความว่าเป็นการโทร
การใช้วิธีการที่ Radical มากขึ้นจากมุมมองของโปรโตคอลคือการแปลงสัญญา EVM ที่มีอยู่ให้กลายเป็นสัญญาที่เรียกสัญญาตัวแปร EVM ที่เขียนด้วย RISC-V ซึ่งรันโค้ด EVM ที่มีอยู่ของพวกเขา กล่าวคือ หากสัญญา EVM มีโค้ด C และตัวแปร EVM อยู่ที่ที่อยู่ X แล้วสัญญานั้นถูกแทนที่ด้วยโลจิกระดับบนที่เมื่อมีการเรียกจากภายนอกด้วยพารามิเตอร์การเรียก D จะเรียก X ด้วย (C, D) และรอค่าที่ส่งกลับและส่งต่อมัน หากตัวแปร EVM เรียกสัญญาเอง โดยการขอทำการทำ CALL หรือ SLOAD/SSTORE แล้วสัญญาทำเช่นนั้น
เส้นทางกลางคือการทำตามตัวเลือกที่สอง แต่สร้างคุณสมบัติโปรโตคอลชัดเจนสำหรับมัน - โดยพื้นฐานแล้ว ทำให้แนบแน่นแน่นอนที่มีแนวคิดของ "ตัวแปลงเสมือน" และต้องการตรรกะในการเขียนด้วย RISC-V EVM จะเป็นตัวแรก แต่อาจมีตัวเลือกอื่นๆ (เช่น Move อาจเป็นตัวเลือก)
ประโยชน์สำคัญของข้อเสนอครั้งที่สองและครั้งที่สามคือพวกเขาทำให้ข้อกำหนดของเลเยอร์การดำเนินงานเรียบง่ายมาก - อย่างแท้จริงแนวคิดประเภทนี้อาจเป็นวิธีที่เป็นปฏิบัติได้เท่าที่จะทำได้ โดยที่ยากลำบากของการทำงานก็คือการทำให้เรื่องนี้เป็นเรื่องที่เป็นไปได้เท่าที่จะทำได้ การลดความซับซ้อนแบบกระโดดๆ เช่นการลบ SELFDESTRUCT ทำได้ยากอย่างมาก เทียนีแกรดมีกฎหมายแข็งแรงของไม่เกิน 10000 บรรทัดโค้ด; ชั้นฐานบล็อกเชนที่เหมาะสมควรสามารถพอดีกับขอบเขตเหล่านั้นและยังไปได้เล็กลงไปอีก ความพยายามของเชนแบมมีความสมบูรณ์ที่ยิ่งใหญ่ในการทำให้ชั้นข้อสรุปของ Ethereum ง่ายมาก แต่สำหรับชั้นการปฏิบัติเพื่อเห็นผลประสิทธิภาพที่คล้ายกัน การเปลี่ยนแปลงรุนแรงของแบบนี้อาจเป็นเส้นทางที่เป็นไปได้เพียงอย่างเดียว