zkSync 2.0: สวัสดี Ethereum
แนะนำ
แนะนำ
ชื่อระดับแรก
ความสำเร็จที่สำคัญ
ในแง่ของการเข้ารหัส ชุดคำสั่งของ zkEVM เสร็จสมบูรณ์แล้ว และการใช้งานทั้งสองก็เสร็จสมบูรณ์: ในวงจรและในสภาพแวดล้อมการดำเนินการ
ในด้านคอมไพเลอร์ สัญญาอัจฉริยะที่เขียนด้วย Solidity และ Zinc สามารถคอมไพล์เป็น zkEVM bytecode ได้แล้ว
ในแง่ของโครงสร้างพื้นฐานหลัก การรวมโหนดทั้งหมดเสร็จสมบูรณ์แล้ว และสัญญาอัจฉริยะที่คอมไพล์แล้วสามารถปรับใช้และดำเนินการได้สำเร็จ
ในขณะที่โครงสร้างพื้นฐาน zkEVM และ core 2.0 พร้อมที่จะเปิดเผยแล้ว คอมไพเลอร์ต้องการการทำงานที่มากขึ้นเพื่อให้ครอบคลุมขอบเคสทั้งหมดอย่างเหมาะสม เพื่อมอบประสบการณ์นักพัฒนาที่ครอบคลุมยิ่งขึ้น เราได้ตัดสินใจเปิดให้เข้าถึง zkEVM, คอมไพเลอร์ และ core SDK ทันทีที่คอมไพเลอร์เชื่อถือได้ 100%
zkSync 2.0 กับ Ethereum
ชื่อระดับแรก
สัญญาอัจฉริยะที่มั่นคง
รองรับ opcodes ส่วนใหญ่ใน Ethereum! อย่างไรก็ตาม มีข้อยกเว้นบางประการ:
ADDMOD, SMOD, MULMOD, EXP และ CREATE2 opcodes ไม่ได้รับการสนับสนุนในรุ่นนี้ แต่จะเป็นในอนาคต
ขณะนี้เราไม่รองรับ KECCAK256 opcode แต่จะแทนที่การโทรทั้งหมดโดยอัตโนมัติด้วยการเรียกไปยังฟังก์ชันแฮชที่ป้องกันการชนกันอื่น KECCAK256 จะเปิดตัวในภายหลังในฐานะคอมไพล์
เราตัดสินใจที่จะไม่รวม opcode ของ SELFDESTRUCT เนื่องจาก Ethereum วางแผนที่จะลบออก
ค่าใช้จ่าย
ค่าใช้จ่าย
ชื่อระดับแรก
Web3 API
รุ่นถัดไปจะรวมเอา Web3 API ของเราไปใช้ ซึ่งจะเข้ากันได้กับมาตรฐาน Web3 ที่กำหนดโดยเอกสาร Ethereum กิจกรรมจะทำงานนอกกรอบและบริการทั้งหมดสามารถรวมเข้าด้วยกันได้อย่างง่ายดาย
zkSync มีคุณสมบัติที่ L1 ไม่มี เช่น แนวคิดของการบล็อกที่คอมมิตและสิ้นสุด ดังนั้น จะมีวิธีอื่นๆ ที่ช่วยให้นักพัฒนาควบคุมข้อมูลได้แม่นยำยิ่งขึ้น รหัสไคลเอนต์ Web3 จะได้รับข้อมูลเดียวกันกับ Ethereum แต่สามารถขอข้อมูลพิเศษโดยใช้เนมสเปซ `zksync_`
ชื่อระดับแรก
ลงนามในข้อตกลง
การทำธุรกรรมใน zkSync 2.0 สามารถได้รับอนุญาตได้สองวิธี (นอกเหนือจากกลไกคิวลำดับความสำคัญ):
ผู้ใช้สามารถลงนามการทำธุรกรรมด้วยกระเป๋าเงิน Ethereum ปกติ (เช่น Metamask หรือกระเป๋าเงิน WalletConnect ใดๆ) โดยลงนามในข้อความ EIP712
ชื่อระดับแรก
ปรับปรุงประสิทธิภาพการจัดเก็บ
คอมไพล์ล่วงหน้า
คอมไพล์ล่วงหน้า
ชื่อระดับแรก
ข้อจำกัดเพิ่มเติม
การทำซ้ำครั้งแรกของ zkSync 2.0 อาจกำหนดขีดจำกัดเพิ่มเติมที่ 32 การเรียกใช้สัญญาอัจฉริยะต่อการทำธุรกรรม จนกว่าจะมีการใช้กลไกทางบัญชีที่เหมาะสม
จะมีขีดจำกัดที่เข้มงวดสำหรับการติดตามการดำเนินการ แต่ก็เทียบได้กับขีดจำกัดปัจจุบันของขนาดบล็อก Ethereum และไม่ควรส่งผลกระทบต่อโปรโตคอลส่วนใหญ่
อาจมีข้อจำกัดมากกว่านี้ แต่เป้าหมายของเราคือลดให้เหลือน้อยที่สุดในรุ่นสุดท้าย
เรียนรู้เพิ่มเติมเกี่ยวกับสถาปัตยกรรม zkSync 2.0
คุณอาจเคยได้ยินเรื่อง trilemma ของ blockchain แต่เมื่อพูดถึงการปรับขนาด Ethereum มีปัจจัยที่สี่: ความสามารถในการโปรแกรม โซลูชันการปรับขนาดปัจจุบันทั้งหมดอยู่ภายในขอบเขตของการเสียสละความปลอดภัย การกระจายอำนาจ และความสามารถในการตั้งโปรแกรมเพื่อความสามารถในการปรับขนาด การออกแบบของ zkSync 2.0 รวม 2 ความก้าวหน้าทางเทคโนโลยีต่อไปนี้เพื่อเพิ่มฟังก์ชันทั้ง 4 อย่างให้สูงสุด:
zkEVM: เอ็นจิ้นที่ขับเคลื่อน zkRollup ที่เข้ากันได้กับ EVM ของเรา ซึ่งเป็นโซลูชันเดียวที่สนับสนุนโดยสัญญาอัจฉริยะเพื่อความปลอดภัยและความน่าเชื่อถือของ L1
คำอธิบายภาพ
(ภาพจาก zkSync)
เนื่องจาก zkEVM และ zkPorter สามารถทำงานร่วมกันและประกอบเข้าด้วยกันได้ zkSync 2.0 จึงมีประสิทธิภาพเหนือกว่าโซลูชันการปรับขนาดอื่นๆ ทั้งหมดอย่างมาก
ชื่อระดับแรก
ต้นไม้ของรัฐ
โครงสร้างสถานะ zkSync 2.0 ครอบคลุมพื้นที่แอดเดรส 160 บิตของ Ethereum แต่ละบัญชีจะอยู่ในส่วน zkRollup หรือส่วน zkPorter ของสถานะ บัญชี zkRollup และ zkPorter เหมือนกัน ยกเว้นองค์ประกอบเดียว: รับประกันความพร้อมใช้งานของข้อมูล ข้อมูลธุรกรรม zkRollup ถูกเผยแพร่ไปยัง Ethereum ผ่าน calldata ข้อมูลธุรกรรม zkPorter ถูกเผยแพร่ไปยังเครือข่าย zkSync Guardian และผู้ถือโทเค็น zkSync มีส่วนร่วมในการพิสูจน์ความเป็นเจ้าของ
ข้อมูลที่เผยแพร่เป็นการแลกเปลี่ยนระหว่างต้นทุนและความปลอดภัย ธุรกรรม zkPorter นั้นถูกกว่าธุรกรรมแบบรวมมาก แต่มีความเป็นไปได้ที่จะส่งผลให้เงินของคุณถูกระงับ อย่างไรก็ตาม ความถูกต้องของบัญชี zkRollup และ zkPorter ได้รับการพิสูจน์ทั้งจากศูนย์ความรู้และ Ethereum กล่าวอีกนัยหนึ่ง เงินใน zkPorter สามารถถูกระงับได้เท่านั้น ไม่ถูกขโมย
การเข้ารหัส
การเข้ารหัส
VM ของเราหรือที่เรียกกันโดยทั่วไปว่า zkEVM ไม่ใช่สำเนา 1:1 ของ EVM แต่ได้รับการออกแบบมาให้สามารถเรียกใช้สัญญา 99% ที่เขียนด้วย Solidity และคงลักษณะการทำงานเช่นเดิม เช่น ระหว่างการกู้คืนและข้อยกเว้น ในขณะเดียวกัน zkEVM ถูกเขียนขึ้นเพื่อสร้างการพิสูจน์ที่ไม่มีความรู้อย่างมีประสิทธิภาพในวงจร
สิ่งนี้ทำโดยไม่มีการเปลี่ยนแปลงครั้งใหญ่ในระบบการพิสูจน์ของเรา เรายังคงใช้ PLONK กับเกทที่กำหนดเองและตารางการค้นหา (รู้จักกันทั่วไปในชื่อ UltraPLONK) และเส้นโค้ง BN-254 ของ Ethereum นี่เป็นข้อได้เปรียบเนื่องจากระบบพิสูจน์ได้รับการทดสอบการต่อสู้ตั้งแต่เดือนมิถุนายน 2020 ใน zkSync 1.0 เช่นเดียวกับโครงการอื่นๆ ที่ใช้ระบบพิสูจน์เดียวกัน
เป็นอีกครั้งที่เรายินดีที่จะแจ้งให้ทราบว่าหลังจากทำงานอย่างหนักหลายเดือน: ชุดคำสั่ง zkEVM เสร็จสมบูรณ์และใช้งานในวงจรและสภาพแวดล้อมการทำงาน
มีความแตกต่างที่สำคัญที่นี่: การใช้งานในวงจรและสภาพแวดล้อมการดำเนินการนั้นแยกจากกันและให้บริการตามวัตถุประสงค์ที่แตกต่างกัน หน้าที่ของวงจรคือสร้างหลักฐานร่องรอยการประหารชีวิตและจัดหาพยาน แต่การดำเนินการนี้ช้ามาก ในทางกลับกัน สภาพแวดล้อมการดำเนินการเป็นการใช้งานโดยตรงของ zkEVM ในสนิม ซึ่งมีประสิทธิภาพและรวดเร็ว หากเราอาศัยวงจรในการสร้างการพิสูจน์และดำเนินการ การทำธุรกรรมจะใช้เวลาหลายชั่วโมงกว่าจะเสร็จสิ้น การแยกการสร้างการพิสูจน์และการดำเนินการอย่างง่ายช่วยให้สามารถชำระธุรกรรมบน zkSync ได้ทันที
ชื่อระดับแรก
คำอธิบายภาพ
(ภาพจาก zkSync)
เรากำลังทำงานพร้อมกันกับคอมไพเลอร์สองตัวสำหรับ zkEVM: Yul และ Zinc Yul เป็นตัวแทน Solidity ระดับกลางที่รวบรวมเป็น bytecode สำหรับแบ็กเอนด์ที่แตกต่างกัน สังกะสีเป็นภาษาที่ใช้สนิมของเราสำหรับสัญญาอัจฉริยะและวงจรพิสูจน์ความรู้ที่ไม่มีความรู้ทั่วไป
เนื่องจากคอมไพเลอร์ถูกสร้างขึ้นโดยใช้เฟรมเวิร์ก LLVM จึงมองได้ว่ามีฟรอนท์เอนด์ Yul → LLVM IR และแบ็คเอนด์ LLVM IR → zkEVM bytecode การนำ LLVM มาใช้ทำให้เกิดข้อได้เปรียบที่สำคัญหลายประการ:
กรอบการปรับให้เหมาะสม LLVM นั้นไม่ตรงกัน: มันสร้าง zkEVM bytecode ที่มีประสิทธิภาพสูงสุดจาก LLVM IR
ด้วย Solidity หรือ Zinc เวอร์ชันใหม่ ส่วนหน้าของคอมไพเลอร์จะจัดการกับการเปลี่ยนแปลงทั้งหมด ในขณะที่ LLVM จะช่วยเราไม่ต้องเปลี่ยนแบ็กเอนด์ของคอมไพเลอร์
ในอนาคต หากนักพัฒนาซอฟต์แวร์ต้องการเขียนสัญญาอัจฉริยะใน Rust หรือ Javascript แบบเนทีฟ พวกเขาเพียงแค่สร้างส่วนหน้าของคอมไพเลอร์สำหรับภาษานั้น และสัญญาอัจฉริยะจะทำงานนอกกรอบใน zkSync
ความปลอดภัยของคอมไพเลอร์มีความสำคัญสูงสุดสำหรับเราและผ่านการทดสอบหลายชุด:
การทดสอบคำศัพท์ วากยสัมพันธ์ และความหมายในคอมไพเลอร์ Zinc และ Yul
การทดสอบการผสานรวม Zinc และ Solidity ของเราเองตลอดวงจรชีวิตของสัญญาอัจฉริยะทั้งหมด: ตั้งแต่การแยกวิเคราะห์ซอร์สโค้ดไปจนถึงการปรับใช้สัญญาและการดำเนินธุรกรรมบน zkSync
ชุดทดสอบที่ครอบคลุมซึ่งรวมจากที่เก็บ Solidity สำหรับเครื่องมือทดสอบการรวมของเรา
แต่ละชุดมีแบบทดสอบเป็นพันชุดอยู่แล้ว และเราจะเพิ่มจำนวนนี้อย่างน้อยตามลำดับความสำคัญ
คอมไพเลอร์ 2 ตัวของเราปรับใช้และดำเนินการสัญญาอัจฉริยะอย่างง่ายในทั้งสองภาษาได้สำเร็จ แต่ยังต้องทำการปรับให้เหมาะสมมากกว่านี้ คำสั่ง LLVM IR ที่ซับซ้อนบางคำสั่งจำเป็นต้องแปลงเป็น zkEVM bytecode ดังนั้นเราจึงตัดสินใจที่จะไม่ปล่อยคอมไพเลอร์จนกว่าจะมีสถานะที่แข็งแกร่งกว่านี้
ชื่อระดับแรก
โครงสร้างพื้นฐานหลัก
แกนหลักของ zkSync 2.0 ประกอบด้วยตัวแสดงหลักหลายตัว:
โหนดเต็ม
Pre-circuit executor สภาพแวดล้อมผ่าน zkEVM bytecode ของเครื่องเสมือน
สถานะพร้อมใช้งานภายในไม่กี่วินาทีหลังจากส่งธุรกรรม
กรองธุรกรรมที่ไม่ถูกต้องอย่างเห็นได้ชัด (เช่น ธุรกรรมที่มีเงินไม่เพียงพอ) ที่อาจนำไปสู่การบล็อกการขยายตัว
ดำเนินการธุรกรรมและสร้างบล็อกใน mempool
ผู้รับรอง
พยานที่ได้รับบล็อกและสร้างการพิสูจน์ที่ไม่มีความรู้
ส่วนต่อประสานการพิสูจน์สำหรับการสร้างการพิสูจน์แบบขนาน
ตัวปรับขนาดอัตโนมัติสำหรับเครื่องพิสูจน์ที่สร้างและยุติเครื่องพิสูจน์ตามความจำเป็น
ผู้โต้ตอบ
เครื่องมือสำหรับการดูและโต้ตอบกับ Ethereum L1
ค่าธรรมเนียมการทำธุรกรรมจะคำนวณตามราคาโทเค็น ต้นทุนการสร้าง ZKP และราคาก๊าซ L1
จอภาพหวาดระแวง
Prometheus, ยางยืด, ยาม, เวลาทำงาน, ระบบแจ้งเตือนเหตุการณ์อิสระหลายระบบ และบริการตรวจสุขภาพแบบกำหนดเอง โครงสร้างพื้นฐานหลักนี้ทำงานได้อย่างสมบูรณ์และมี zkEVM executor อยู่แล้ว


