Dokumentasi Teknis Optimism

โดย Optimism Collective · 2021

โหมดเดี่ยว community.optimism.io

Optimism ไม่มี whitepaper แบบดั้งเดิม ในฐานะ Ethereum Layer 2 optimistic rollup การออกแบบและข้อกำหนดของมันได้รับการจัดเก็บผ่านเอกสารทางเทคนิค, ข้อกำหนด OP Stack และบทความวิจัย แทนที่บทความวิชาการอย่างเป็นทางการฉบับเดียว

บทคัดย่อ

เอกสารนี้กล่าวถึงปัญหาความสามารถในการปรับขนาดในการกระจายอำนาจ blockchains โดยการวิเคราะห์การแลกเปลี่ยนระหว่างปริมาณงานของธุรกรรมและข้อกำหนดด้านฮาร์ดแวร์เพื่อเรียกใช้โหนด Rollups เช่น เทคโนโลยีสำหรับการตรวจสอบ on-chain ของบล็อกที่ดำเนินการนอกลูกโซ่ จะถูกนำเสนอในรูปแบบของการพิสูจน์ข้อบกพร่องหรือความถูกต้อง เราเปรียบเทียบ Optimistic Rollups และ Validity Rollups โดยคำนึงถึงเวลาถอนเงิน ต้นทุนการทำธุรกรรม เทคนิคการปรับให้เหมาะสม และความเข้ากันได้กับระบบนิเวศ Ethereum การวิเคราะห์ของเราเผยให้เห็นว่า Optimism ปัจจุบัน Bedrock มีอัตราการบีบอัดก๊าซที่ประมาณ 20:1 ในขณะที่ StarkNet มีอัตราการบีบอัดต้นทุนการเขียนพื้นที่จัดเก็บที่ประมาณ 24:1 นอกจากนี้เรายังหารือถึงเทคนิคต่างๆ เพื่อเพิ่มประสิทธิภาพอัตราเหล่านี้ เช่น การใช้สัญญาแคชและตัวกรอง Bloom ท้ายที่สุดแล้ว ข้อสรุปของเราเน้นย้ำถึงการแลกเปลี่ยนระหว่างความซับซ้อนและความคล่องตัวในการเลือกระหว่างการโรลอัปในแง่ดีและความถูกต้อง คำสำคัญ Blockchain, Scalability, Rollup 1. บทนำ เทคโนโลยี Blockchain ได้รับความสนใจอย่างมากเนื่องจากมีศักยภาพในการปฏิวัติอุตสาหกรรมต่างๆ อย่างไรก็ตาม ความสามารถในการปรับขนาดยังคงเป็นความท้าทายที่สำคัญ เนื่องจาก blockchain ส่วนใหญ่ต้องเผชิญกับการแลกเปลี่ยนระหว่างความสามารถในการปรับขนาด การกระจายอำนาจ และความปลอดภัย โดยทั่วไปเรียกว่า Scalability Trilemma [1, 2] ในการเพิ่มปริมาณงานของ blockchain วิธีแก้ปัญหาเล็กน้อยคือการเพิ่มขนาดบล็อก ในบริบทของ Ethereum นี่หมายถึงการเพิ่มปริมาณก๊าซสูงสุดที่บล็อกสามารถกักเก็บได้ เนื่องจากแต่ละโหนดแบบเต็มจะต้องตรวจสอบทุกธุรกรรมของทุกบล็อก เมื่อปริมาณงานเพิ่มขึ้น ความต้องการฮาร์ดแวร์ก็เพิ่มขึ้นเช่นกัน ซึ่งนำไปสู่การรวมศูนย์ของเครือข่ายมากขึ้น blockchain บางตัว เช่น Bitcoin และ Ethereum เพิ่มประสิทธิภาพการออกแบบเพื่อเพิ่มการกระจายอำนาจทางสถาปัตยกรรมให้สูงสุด ในขณะที่ตัวอื่นๆ เช่น Binance Smart Chain และ Solana ได้รับการออกแบบมาให้รวดเร็วและราคาถูกที่สุดเท่าที่จะเป็นไปได้ เครือข่ายแบบกระจายอำนาจจะจำกัดปริมาณงานของ blockchain อย่างไม่ถูกต้อง เพื่อลดข้อกำหนดด้านฮาร์ดแวร์ในการเข้าร่วมในเครือข่าย ในช่วงหลายปีที่ผ่านมา มีความพยายามที่จะค้นหาวิธีแก้ปัญหาสำหรับไตรเลมมา เช่น ช่องสถานะ [3] และพลาสมา [4, 5] โซลูชันเหล่านี้มีลักษณะของการย้ายกิจกรรมบางอย่างนอกเครือข่าย การเชื่อมโยงกิจกรรมบนเครือข่ายไปยังกิจกรรมนอกเครือข่ายโดยใช้ smart contracts และการตรวจสอบ DLT 2023: 5th Distributed Ledger Technology Workshop, 25-26 พฤษภาคม 2023, โบโลญญา, อิตาลี $ [email protected] (L. Donno) https://lucadonnoh.github.io/ (L. Donno) 0000-0001-9221-3529 (L. Donno) © 2023 ลิขสิทธิ์บทความนี้โดยผู้เขียน ใช้ได้รับอนุญาตภายใต้ Creative Commons License Attribution 4.0 International (CC BY 4.0) CEUR Workshop Proceedings http://ceur-ws.org ISSN 1613-0073 CEUR Workshop Proceedings (CEUR-WS.org) สิ่งที่เกิดขึ้นนอกเครือข่ายแบบออนไลน์ อย่างไรก็ตาม ทั้งช่องพลาสมาและสถานะถูกจำกัดในการสนับสนุน smart contracts ทั่วไป การโรลอัปคือ blockchains (เรียกว่า Layer 2 หรือ L2) ที่เผยแพร่บล็อกของตนบน blockchain อื่น (Layer 1 หรือ L1) ดังนั้นจึงสืบทอดฉันทามติ ความพร้อมใช้งานของข้อมูล และคุณสมบัติด้านความปลอดภัย ซึ่งต่างจากโซลูชันอื่นๆ ตรงที่สนับสนุนการคำนวณตามอำเภอใจ Rollup มีองค์ประกอบหลักสามส่วน: • Sequencers: โหนดที่ได้รับธุรกรรม Rollup จากผู้ใช้และรวมเข้าด้วยกันเป็นบล็อกที่ส่งไปยัง Layer 1 บล็อกประกอบด้วยอย่างน้อยรากของสถานะ (เช่น รากของ Merkle) และข้อมูลที่จำเป็นในการสร้างใหม่และตรวจสอบความถูกต้องของสถานะ Layer 1 กำหนด...

Abstrak

Makalah ini membahas masalah skalabilitas dalam blockchains yang terdesentralisasi dengan menganalisis trade-off antara throughput transaksi dan persyaratan perangkat keras untuk menjalankan sebuah node. Rollup, yaitu teknologi untuk verifikasi on-chain dari blok yang dieksekusi secara off-chain, disajikan dalam bentuk bukti kesalahan atau validitas. Kami membandingkan Rollup Optimis dan Rollup Validitas sehubungan dengan waktu penarikan, biaya transaksi, teknik pengoptimalan, dan kompatibilitas dengan ekosistem Ethereum. Analisis kami menunjukkan bahwa Optimism Batuan Dasar saat ini memiliki laju kompresi gas sekitar 20:1, sementara StarkNet mencapai laju kompresi biaya tulis penyimpanan sekitar 24:1. Kami juga membahas teknik untuk lebih mengoptimalkan tarif ini, seperti penggunaan kontrak cache dan filter Bloom. Pada akhirnya, kesimpulan kami menyoroti trade-off antara kompleksitas dan kelincahan dalam pilihan antara Optimistic dan Validity Rollup. Kata Kunci Blockchain, Skalabilitas, Rollup 1. Pendahuluan Teknologi Blockchain telah mendapatkan perhatian yang signifikan karena potensinya untuk merevolusi berbagai industri. Namun, skalabilitas tetap menjadi tantangan besar, karena sebagian besar blockchain menghadapi trade-off antara skalabilitas, desentralisasi, dan keamanan, yang biasa disebut sebagai Trilema Skalabilitas [1, 2]. Untuk meningkatkan throughput blockchain, solusi sederhana adalah dengan meningkatkan ukuran bloknya. Dalam konteks Ethereum, hal ini berarti meningkatkan jumlah maksimum gas yang dapat ditampung suatu blok. Karena setiap node penuh harus memvalidasi setiap transaksi di setiap blok, seiring dengan peningkatan throughput, kebutuhan perangkat keras juga meningkat, sehingga menyebabkan sentralisasi jaringan yang lebih besar. Beberapa blockchain, seperti Bitcoin dan Ethereum, mengoptimalkan desainnya untuk memaksimalkan desentralisasi arsitekturnya, sementara yang lain, seperti Binance Smart Chain dan Solana, dirancang agar secepat dan semurah mungkin. Jaringan terdesentralisasi secara artifisial membatasi throughput blockchain untuk menurunkan persyaratan perangkat keras untuk berpartisipasi dalam jaringan. Selama bertahun-tahun, upaya telah dilakukan untuk menemukan solusi terhadap Trilema, seperti saluran negara [3] dan Plasma [4, 5]. Solusi ini memiliki karakteristik memindahkan beberapa aktivitas di luar rantai, menghubungkan aktivitas di dalam rantai dengan aktivitas di luar rantai menggunakan smart contracts, dan memverifikasi DLT 2023: Lokakarya Teknologi Buku Besar Terdistribusi ke-5, 25-26 Mei 2023, Bologna, Italia $ [email protected] (L. Donno) https://lucadonnoh.github.io/ (L. Donno) 0000-0001-9221-3529 (L. Donno) © 2023 Hak cipta untuk makalah ini oleh penulisnya. Penggunaan diizinkan berdasarkan Creative Commons License Attribution 4.0 International (CC BY 4.0). Prosiding Lokakarya CEUR http://ceur-ws.org ISSN 1613-0073 Prosiding Lokakarya CEUR (CEUR-WS.org) on-chain apa yang terjadi di luar rantai. Namun, saluran Plasma dan negara terbatas dalam mendukung smart contracts umum. Rollup adalah blockchain (disebut Layer 2 atau L2) yang memublikasikan bloknya di blockchain lain (Layer 1 atau L1) dan oleh karena itu mewarisi properti konsensus, ketersediaan data, dan keamanannya. Berbeda dengan solusi lainnya, solusi ini mendukung komputasi arbitrer. Rollup memiliki tiga komponen utama: • Sequencer: node yang menerima transaksi Rollup dari pengguna dan menggabungkannya ke dalam blok yang dikirim ke Layer 1. Blok tersebut setidaknya terdiri dari root negara (misalnya root Merkle) dan data yang diperlukan untuk merekonstruksi dan memvalidasi negara. Layer 1 mendefinisikan...

การแนะนำ

  1. บทนำ เทคโนโลยีบล็อคเชนได้รับความสนใจอย่างมากเนื่องจากมีศักยภาพในการปฏิวัติ อุตสาหกรรมต่างๆ อย่างไรก็ตาม ความสามารถในการขยายขนาดยังคงเป็นความท้าทายที่สำคัญ ตามที่ blockchain ส่วนใหญ่เผชิญอยู่ การแลกเปลี่ยนระหว่างความสามารถในการปรับขนาด การกระจายอำนาจ และการรักษาความปลอดภัย โดยทั่วไปเรียกว่า ความสามารถในการปรับขยาย Trilemma [1, 2] ในการเพิ่มปริมาณงานของ blockchain วิธีแก้ปัญหาเล็กน้อยคือ เพื่อเพิ่มขนาดบล็อก ในบริบทของ Ethereum นี่หมายถึงการเพิ่มค่าสูงสุด ปริมาณก๊าซที่บล็อกสามารถเก็บได้ เนื่องจากแต่ละโหนดเต็มจะต้องตรวจสอบทุกธุรกรรมของทุก ๆ บล็อก เมื่อปริมาณงานเพิ่มขึ้น ความต้องการฮาร์ดแวร์ก็เพิ่มขึ้นเช่นกัน ซึ่งส่งผลให้มีมากขึ้น การรวมศูนย์ของเครือข่าย blockchains บางตัว เช่น Bitcoin และ Ethereum ปรับให้เหมาะสม การออกแบบเพื่อเพิ่มการกระจายอำนาจทางสถาปัตยกรรมให้สูงสุด ในขณะที่อื่นๆ เช่น Binance Smart Chain และ Solana ได้รับการออกแบบมาให้รวดเร็วและราคาถูกที่สุดเท่าที่จะเป็นไปได้ เครือข่ายกระจายอำนาจ จำกัดปริมาณงานของ blockchain โดยไม่ตั้งใจ เพื่อลดข้อกำหนดด้านฮาร์ดแวร์ลง มีส่วนร่วมในเครือข่าย ในช่วงหลายปีที่ผ่านมา มีการพยายามหาทางแก้ไขปัญหา Trilemma เช่น รัฐ ช่อง [3] และพลาสมา [4, 5] โซลูชันเหล่านี้มีลักษณะเฉพาะในการเคลื่อนย้ายกิจกรรมบางอย่าง นอกเครือข่าย เชื่อมโยงกิจกรรมออนไลน์กับกิจกรรมนอกเครือข่ายโดยใช้ smart contracts และการตรวจสอบ DLT 2023: การประชุมเชิงปฏิบัติการเทคโนโลยี Distributed Ledger ครั้งที่ 5, 25-26 พฤษภาคม 2023, โบโลญญา, อิตาลี $ [email protected] (แอล. ดอนโน) https://lucadonnoh.github.io/ (แอล. ดอนโน) 0000-0001-9221-3529 (แอล.ดอนโน) © 2023 ลิขสิทธิ์บทความนี้โดยผู้เขียน ใช้ได้รับอนุญาตภายใต้ Creative Commons License Attribution 4.0 International (CC BY 4.0) ซีอีอาร์ การประชุมเชิงปฏิบัติการ การดำเนินการ http://ceur-ws.org ISSN 1613-0073 การดำเนินการประชุมเชิงปฏิบัติการ CEUR (CEUR-WS.org)on-chain สิ่งที่เกิดขึ้นนอกเครือข่าย อย่างไรก็ตาม ทั้ง Plasma และ State Channel นั้นมีข้อจำกัด การสนับสนุนทั่วไป smart contracts Rollups คือ blockchains (เรียกว่า Layer 2 หรือ L2) ที่เผยแพร่บล็อกของพวกเขาใน blockchain อื่น (Layer 1 หรือ L1) ดังนั้นจึงสืบทอดความเห็นพ้องต้องกัน ความพร้อมใช้งานของข้อมูล และคุณสมบัติด้านความปลอดภัย พวกเขา ไม่เหมือนกับโซลูชันอื่น ๆ รองรับการคำนวณตามอำเภอใจ Rollups มีองค์ประกอบหลักสามประการ: • Sequencers: โหนดที่รับธุรกรรม Rollup จากผู้ใช้และรวมเข้าด้วยกันเป็น บล็อกที่ส่งไปที่ Layer 1 บล็อกประกอบด้วยอย่างน้อยรากของสถานะ (เช่น Merkle root) และข้อมูลที่จำเป็นในการสร้างใหม่และตรวจสอบสถานะ Layer 1 กำหนด ตามบัญญัติ blockchain ของ L2 โดยการสร้างการเรียงลำดับของข้อมูลที่เผยแพร่ • Rollup full nodes: โหนดที่ได้รับ ประมวลผล และตรวจสอบ Rollup block จาก Layer 1 โดยการตรวจสอบว่ารูตถูกต้อง หากบล็อกมีธุรกรรมที่ไม่ถูกต้อง แสดงว่าเป็นเช่นนั้น ละทิ้ง ซึ่งจะป้องกันไม่ให้ Sequencers สร้างบล็อกที่ถูกต้องซึ่งรวมถึงบล็อกที่ไม่ถูกต้อง การทำธุรกรรม • Rollup light nodes: โหนดที่ได้รับ Rollup block จาก Layer 1 แต่ไม่ได้คำนวณ รัฐใหม่นั่นเอง พวกเขาตรวจสอบว่ารูทสถานะใหม่นั้นถูกต้องโดยใช้เทคนิค เช่นการพิสูจน์ข้อบกพร่องหรือความถูกต้อง Rollups บรรลุความสามารถในการปรับขนาดได้โดยการลดต้นทุนตัดจำหน่ายของธุรกรรมตามตัวเลข ของผู้ใช้เพิ่มขึ้น นี่เป็นเพราะว่าต้นทุนในการรับรองความถูกต้องของ blockchain นั้นเพิ่มขึ้นแบบไม่เชิงเส้น เกี่ยวกับค่าใช้จ่ายในการตรวจสอบธุรกรรมเป็นรายบุคคล Rollups จะแตกต่างกันไปตาม กลไกที่พวกเขารับรองความถูกต้องของการทำธุรกรรมที่ light nodes: ใน Rollups ในแง่ดี รับประกันโดยแบบจำลองทางเศรษฐกิจและการพิสูจน์ข้อผิดพลาด ขณะที่ยังใช้งานได้ โรลอัปจะรับประกันด้วยการเข้ารหัสโดยใช้การพิสูจน์ความถูกต้อง Light nodes สามารถนำไปใช้เป็น smart contracts บน Layer 1 พวกเขายอมรับรากเหง้าของ สถานะใหม่และตรวจสอบความถูกต้องหรือการพิสูจน์ข้อบกพร่อง: การยกเลิกเหล่านี้จึงเรียกว่าสัญญาอัจฉริยะ โรลอัป หากโหนดแสงเป็นอิสระ พวกมันจะถูกเรียกว่า Sovereign Rollups [6] ข้อดีของ การใช้ Smart Contract Rollup จะสามารถสร้างสะพานเชื่อมที่ลดความน่าเชื่อถือระหว่างทั้งสองได้ blockchains: เนื่องจากความถูกต้องของสถานะ L2 ได้รับการพิสูจน์แล้วถึง L1 ซึ่งเป็นระบบธุรกรรมจาก สามารถใช้ L2 ถึง L1 ได้ ทำให้สามารถถอนเงินได้ ข้อเสียคือต้นทุนของการ ธุรกรรมขึ้นอยู่กับค่าใช้จ่ายในการตรวจสอบสถานะบน L1: หากชั้นฐานอิ่มตัวด้วย กิจกรรมอื่นๆ ต้นทุนของธุรกรรมบน Rollup ก็เพิ่มขึ้นเช่นกัน ชั้นข้อมูลและมติเป็นชั้นที่กำหนดความปลอดภัยของระบบ พวกเขากำหนดลำดับของธุรกรรม ป้องกันการโจมตี และทำให้ข้อมูลพร้อมใช้งานเพื่อพิสูจน์สถานะ ความถูกต้อง การบริจาคกระดาษ ในบทความนี้ เราศึกษา Rollups ในแง่ดีและความถูกต้อง ซึ่งเป็นนวัตกรรมสองรายการ โซลูชันสำหรับ Scalability Trilemma โดยมุ่งเน้นไปที่การใช้งานที่โดดเด่น เช่น Optimism Bedrock และ StarkNet การมีส่วนร่วมของเรามีการเปรียบเทียบสิ่งเหล่านี้อย่างครอบคลุม วิธีแก้ปัญหา การวิเคราะห์เวลาการถอน และการอภิปรายเกี่ยวกับการโจมตีที่เป็นไปได้ใน Optimism ข้อเท็จจริง นอกจากนี้ เรายังคำนวณอัตราส่วนการอัดแก๊ส เพิ่มประสิทธิภาพเฉพาะแอปพลิเคชัน และนำเสนอข้อดีและข้อเสียของการย้ายออกจาก Ethereum เครื่องเสมือน (EVM)

โครงสร้างกระดาษ กระดาษมีการจัดดังนี้ ในส่วนที่ 2 การโรลอัปในแง่ดีคือ แนะนำโดยการวิเคราะห์ Optimism Bedrock ในส่วนที่ 3 มีการแนะนำการโรลอัปความถูกต้องโดย กำลังวิเคราะห์ StarkNet ในส่วนที่ 4 เราจะเปรียบเทียบทั้งสองวิธี ในที่สุด ในส่วนที่ 5 เราวาด ข้อสรุปบางอย่าง

Perkenalan

  1. Pendahuluan Teknologi Blockchain telah mendapatkan perhatian yang signifikan karena potensinya untuk melakukan revolusi berbagai industri. Namun, skalabilitas tetap menjadi tantangan besar, seperti yang dihadapi sebagian besar blockchain trade-off antara skalabilitas, desentralisasi, dan keamanan, yang biasa disebut sebagai Trilema Skalabilitas [1, 2]. Untuk meningkatkan throughput blockchain, solusi yang sepele adalah untuk meningkatkan ukuran bloknya. Dalam konteks Ethereum, ini berarti meningkatkan secara maksimal jumlah gas yang dapat ditampung suatu blok. Karena setiap node penuh harus memvalidasi setiap transaksi blok, seiring dengan peningkatan throughput, kebutuhan perangkat keras juga meningkat, sehingga menyebabkan lebih besar sentralisasi jaringan. Beberapa blockchain, seperti Bitcoin dan Ethereum, mengoptimalkannya desain untuk memaksimalkan desentralisasi arsitekturnya, sementara yang lain, seperti Binance Smart Chain dan Solana, dirancang secepat dan semurah mungkin. Jaringan terdesentralisasi membatasi throughput blockchain secara artifisial untuk menurunkan persyaratan perangkat keras berpartisipasi dalam jaringan. Selama bertahun-tahun, upaya telah dilakukan untuk menemukan solusi terhadap Trilema, seperti negara saluran [3] dan Plasma [4, 5]. Solusi-solusi ini mempunyai ciri-ciri menggerakkan suatu aktivitas off-chain, menghubungkan aktivitas on-chain ke aktivitas off-chain menggunakan smart contracts, dan memverifikasi DLT 2023: Lokakarya Teknologi Buku Besar Terdistribusi ke-5, 25-26 Mei 2023, Bologna, Italia $ [email protected] (L.Donno) https://lucadonnoh.github.io/ (L.Donno) 0000-0001-9221-3529 (L.Donno) © 2023 Hak cipta untuk makalah ini oleh penulisnya. Penggunaan diizinkan berdasarkan Creative Commons License Attribution 4.0 International (CC BY 4.0). CEUR Bengkel Proses http://ceur-ws.org ISSN 1613-0073 Prosiding Lokakarya CEUR (CEUR-WS.org)on-chain apa yang terjadi di off-chain. Namun, saluran Plasma dan negara terbatas dukungan mereka terhadap smart contracts umum. Rollup adalah blockchain (disebut Layer 2 atau L2) yang memublikasikan bloknya di blockchain lain (Layer 1 atau L1) dan karenanya mewarisi properti konsensus, ketersediaan data, dan keamanannya. Mereka, tidak seperti solusi lain, mendukung komputasi sewenang-wenang. Rollup memiliki tiga komponen utama: • Sequencer: node yang menerima transaksi Rollup dari pengguna dan menggabungkannya menjadi a blok yang dikirim ke Layer 1. Blok tersebut setidaknya terdiri dari root negara (misalnya Merkle root) dan data yang diperlukan untuk merekonstruksi dan memvalidasi keadaan. Layer 1 mendefinisikan kanonik blockchain dari L2 dengan menetapkan urutan data yang dipublikasikan. • Rollup full node: node yang memperoleh, memproses dan memvalidasi blok Rollup dari Layer 1 dengan memverifikasi bahwa root sudah benar. Jika sebuah blok berisi transaksi yang tidak valid, maka itu adalah blok tersebut dibuang, yang mencegah Sequencer membuat blok valid yang menyertakan blok tidak valid transaksi. • Rollup light node: node yang memperoleh blok Rollup dari Layer 1 tetapi tidak melakukan komputasi negara baru itu sendiri. Mereka memverifikasi bahwa root negara baru valid menggunakan teknik seperti bukti kesalahan atau keabsahan. Rollup mencapai skalabilitas dengan mengurangi biaya transaksi yang diamortisasi sebagai jumlahnya jumlah pengguna meningkat. Hal ini karena biaya untuk memastikan validitas blockchain meningkat secara sub-linear sehubungan dengan biaya verifikasi transaksi secara individual. Rollup berbeda menurut mekanisme yang digunakan untuk memastikan validitas eksekusi transaksi pada node ringan: in Rollup Optimis itu dijamin oleh model ekonomi dan bukti kesalahan, sementara dalam Validitas Rollup itu dipastikan secara kriptografis menggunakan bukti validitas. Node cahaya dapat diimplementasikan sebagai smart contracts pada Layer 1. Mereka menerima akar dari keadaan baru dan verifikasi validitas atau bukti kesalahan: Oleh karena itu, Rollup ini disebut Kontrak Cerdas Rollup. Jika light node bersifat independen, maka disebut Sovereign Rollup [6]. Keuntungan dari menggunakan Smart Contract Rollup adalah untuk dapat membangun jembatan kepercayaan yang diminimalkan antara keduanya blockchains : karena keabsahan status L2 terbukti hingga L1, maka sistem transaksi dari L2 hingga L1 dapat diterapkan, memungkinkan penarikan. Kerugiannya adalah biaya transaksi tergantung pada biaya verifikasi keadaan pada L1: jika lapisan dasar jenuh aktivitas lainnya, biaya transaksi pada Rollup juga meningkat. Lapisan data dan konsensus inilah yang menentukan keamanan sistem mereka menentukan urutan transaksi, mencegah serangan, dan menyediakan data untuk membuktikan keadaan validitas. Kontribusi kertas Dalam makalah ini, kami mempelajari Optimistic dan Validity Rollup, dua yang inovatif solusi Trilema Skalabilitas, dengan fokus pada implementasi penting, seperti Optimism Batuan Dasar dan StarkNet. Kontribusi kami mencakup perbandingan komprehensif mengenai hal-hal tersebut solusi, analisis waktu penarikan, dan diskusi tentang kemungkinan serangan terhadap Optimism Batuan dasar. Selain itu, kami menghitung rasio kompresi gasnya, memberikan pengoptimalan khusus aplikasi, dan menyajikan keuntungan dan kerugian jika beralih dari Ethereum Mesin Virtual (EVM).

Struktur kertas Makalah ini disusun sebagai berikut. Di bagian 2 Rollup Optimis adalah diperkenalkan dengan menganalisis Optimism Batuan Dasar. Di bagian 3 Validitas Rollup diperkenalkan oleh menganalisis StarkNet. Di bagian 4 kami membandingkan kedua solusi. Terakhir, di bagian 5 kita menggambar beberapa kesimpulan.

โรลอัปในแง่ดี

  1. การโรลอัปในแง่ดี แนวคิดในการยอมรับผลลัพธ์ของบล็อกในแง่ดีโดยไม่ต้องตรวจสอบการดำเนินการคือ มีอยู่แล้วในเอกสารไวท์เปเปอร์ Bitcoin [7] ที่กำลังพูดถึงโหนดแสง โหนดเหล่านี้ติดตามเท่านั้น ห่วงโซ่ส่วนหัวโดยการตรวจสอบกฎฉันทามติ ทำให้มีความเสี่ยงที่จะยอมรับการบล็อก มีธุรกรรมที่ไม่ถูกต้องในกรณีที่มีการโจมตี 51% นากาโมโตะเสนอที่จะแก้ไขปัญหานี้ ปัญหาโดยใช้ระบบ "แจ้งเตือน" เพื่อเตือนโหนดแสงว่าบล็อกมีธุรกรรมที่ไม่ถูกต้อง กลไกนี้ถูกนำมาใช้ครั้งแรกโดย Al-Bassam, Sonnino และ Buterin [8] ซึ่งมีข้อผิดพลาด ใช้ระบบพิสูจน์ตามรหัสแก้ไขข้อผิดพลาด [9] เพื่อให้เกิดการสร้าง เพื่อป้องกันข้อผิดพลาด จำเป็นต้องมีข้อมูลจากบล็อกทั้งหมด รวมถึงบล็อกที่ไม่ถูกต้องด้วย เครือข่าย: นี่คือปัญหาความพร้อมใช้งานของข้อมูล ซึ่งแก้ไขได้โดยใช้ข้อมูลที่น่าจะเป็น กลไกการสุ่มตัวอย่าง การออกแบบ Rollup Optimistic ครั้งแรกนำเสนอโดย John Adler และ Mikerah Quintyne-Collins ในปี 2019 [10] ซึ่งมีการเผยแพร่บล็อกใน blockchain อื่น ที่กำหนดฉันทามติในการสั่งซื้อ 2.1. Optimism ข้อเท็จจริง Bedrock [11] คือเวอร์ชันล่าสุดของ Optimism ซึ่งเป็น Smart Contract Rollup เวอร์ชันก่อนหน้านี้ Optimistic Virtual Machine (OVM) จำเป็นต้องมีคอมไพเลอร์เฉพาะกิจเพื่อรวบรวม Solidity ลงในเครื่อง รหัสไบต์ของตัวเอง: ในทางตรงกันข้าม Bedrock นั้นเทียบเท่ากับ EVM อย่างสมบูรณ์โดยที่เอ็นจิ้นการดำเนินการ เป็นไปตาม Ethereum ข้อกำหนดกระดาษสีเหลือง [12] 2.1.1. เงินฝาก ผู้ใช้สามารถฝากธุรกรรมผ่านสัญญาบน Ethereum ซึ่งเป็นพอร์ทัล Optimism โดยการเรียกฟังก์ชันDepositTransaction เมื่อทำธุรกรรมแล้ว ก เหตุการณ์ TransactionDeposited ถูกส่งออกมา ซึ่งแต่ละโหนดใน Rollup รับฟังเพื่อดำเนินการ เงินฝาก ธุรกรรมที่ฝากคือธุรกรรม L2 ที่ได้มาจาก L1 หากผู้โทรเข้าของ ฟังก์ชั่นคือสัญญา ที่อยู่จะถูกเปลี่ยนโดยการเพิ่มค่าคงที่ลงไป ซึ่งจะช่วยป้องกัน การโจมตีที่สัญญาบน L1 มีที่อยู่เดียวกันกับสัญญาบน L2 แต่มีรหัสต่างกัน การรวม L2 ของธุรกรรมที่ฝากไว้นั้นรับประกันโดยข้อกำหนดภายในลำดับ หน้าต่าง ธุรกรรมที่ฝากเป็นธุรกรรมประเภทใหม่ที่รองรับ EIP-2718 [13] โดยมีคำนำหน้า 0x7E โดยที่ฟิลด์ที่เข้ารหัส rlp คือ: • bytes32 sourceHash: hash ที่ระบุแหล่งที่มาของธุรกรรมโดยไม่ซ้ำกัน • ที่อยู่จาก: ที่อยู่ของผู้ส่ง • ที่อยู่: ที่อยู่ของผู้รับ หรือที่อยู่ศูนย์หากธุรกรรมที่ฝากคือ a การสร้างสัญญา• uint256 mint: ค่าที่จะสร้างบน L2 • ค่า uint256: ค่าที่จะส่งไปยังผู้รับ • ข้อมูลไบต์: ข้อมูลอินพุต • bytes gasLimit: ขีดจำกัดก๊าซของธุรกรรม sourceHash คำนวณเป็น keccak256 hash ของบล็อก L1 hash และบันทึก L1 ดัชนี ระบุเหตุการณ์ในบล็อกโดยไม่ซ้ำกัน เนื่องจากธุรกรรมที่ฝากเริ่มต้นบน L1 แต่ดำเนินการบน L2 ระบบจึงจำเป็นต้องมี กลไกการจ่าย L1 สำหรับก๊าซที่ใช้ใน L2 ทางออกหนึ่งคือส่ง ETH ผ่านทางพอร์ทัล แต่นี่หมายความว่าผู้โทรทุกคน (แม้แต่ผู้โทรทางอ้อม) จะต้องถูกทำเครื่องหมายว่าต้องชำระ และนี่คือ ไม่สามารถทำได้สำหรับโครงการที่มีอยู่มากมาย อีกทางเลือกหนึ่งคือการเผาไหม้ก๊าซที่สอดคล้องกันบน L1 ก๊าซ 𝑔ที่จัดสรรให้กับธุรกรรมที่ฝากเรียกว่าก๊าซรับประกัน ราคาก๊าซ L2 บน L1 จะไม่ซิงโครไนซ์โดยอัตโนมัติ แต่ประเมินโดยใช้กลไกที่คล้ายกับ EIP-1559 [14]. ปริมาณก๊าซสูงสุดที่รับประกันต่อ Ethereum บล็อกคือ 8 ล้าน โดยมีเป้าหมาย จำนวน 2 ล้าน ปริมาณ 𝑐 ของ ETH ที่ต้องชำระค่าก๊าซบน L2 คือ 𝑐= 𝑔𝑏L2 โดยที่ 𝑏L2 คือ ค่าธรรมเนียมพื้นฐานบน L2 สัญญาของ L1 จะเผาผลาญก๊าซในปริมาณเท่ากับ 𝑐/𝑏L2 ค่าแก๊สที่ใช้ในการโทร การฝากเงินธุรกรรมจะคืนเงินให้กับ L2: หากจำนวนนี้มากกว่าก๊าซที่รับประกัน ไม่มีการเผาไหม้ของก๊าซ ธุรกรรมแรกของบล็อก rollup คือธุรกรรมที่ฝากแอตทริบิวต์ L1 ใช้ในการลงทะเบียน บน L2 ปรับใช้คุณลักษณะของบล็อก Ethereum ล่วงหน้า คุณลักษณะที่การปรับใช้ล่วงหน้ามอบให้ การเข้าถึงคือหมายเลขบล็อก การประทับเวลา ค่าพื้นฐาน บล็อก hash และลำดับ number ซึ่งเป็นหมายเลขบล็อกของ L2 ที่สัมพันธ์กับบล็อก L1 ที่เกี่ยวข้อง (เรียกอีกอย่างว่ายุค) หมายเลขนี้จะถูกรีเซ็ตเมื่อยุคใหม่เริ่มต้นขึ้น 2.1.2. การเรียงลำดับ โหนด Rollup ได้รับสายโซ่ Optimism ทั้งหมดจาก Ethereum ห่วงโซ่นี้จะขยายออกไป แต่ละครั้งที่มีการเผยแพร่ธุรกรรมใหม่บน L1 และบล็อกจะถูกจัดระเบียบใหม่ในแต่ละครั้ง Ethereum บล็อกได้รับการจัดระเบียบใหม่ Rollup blockchain แบ่งออกเป็นยุคต่างๆ สำหรับแต่ละฮันนา หมายเลขบล็อกของ Ethereum มียุคที่สอดคล้องกัน แต่ละยุคมีอย่างน้อยหนึ่งยุค บล็อก และแต่ละบล็อกในยุคนั้นมีธุรกรรมที่ฝากแอตทริบิวต์ L1 บล็อคแรก ในยุคประกอบด้วยธุรกรรมทั้งหมดที่ฝากผ่านพอร์ทัล Layer 2 บล็อกก็ได้ มีธุรกรรมที่เรียงลำดับ เช่น ธุรกรรมที่ส่งโดยตรงไปยัง Sequencer Sequencer ยอมรับธุรกรรมจากผู้ใช้และสร้างบล็อก สำหรับแต่ละบล็อกจะมีการสร้าง ชุดที่จะเผยแพร่เมื่อ Ethereum สามารถเผยแพร่แบทช์หลายชุดในลักษณะบีบอัด เอาชื่อช่อง. ช่องสามารถแบ่งออกเป็นหลายเฟรมได้ ในกรณีที่ช่องมีขนาดใหญ่เกินไป ธุรกรรมเดียว ช่องสัญญาณถูกกำหนดให้เป็นการบีบอัดด้วย ZLIB [15] ของการเข้ารหัส rlp แบตช์ ฟิลด์ของแบตช์คือหมายเลขยุค, ยุค hash, ระดับบนสุด hash, การประทับเวลาและรายการธุรกรรม หน้าต่างลำดับที่ระบุโดยยุค มีตัวเลขคงที่ 𝑤ของ L1 ที่ต่อเนื่องกัน บล็อกที่ขั้นตอนการรับมาใช้เป็นอินพุตเพื่อสร้างจำนวนตัวแปรของบล็อก L2 สำหรับ ยุคที่ 4, หน้าต่างลำดับของ 4 รวมถึงบล็อก [4, + 4 𝑤] นี่หมายความว่าการสั่งซื้อ ของธุรกรรมและบล็อก L2 ภายในหน้าต่างลำดับไม่ได้รับการแก้ไขจนกว่าหน้าต่างจะสิ้นสุด ธุรกรรม rollup จะถูกเรียกว่าปลอดภัย หากแบทช์ที่มีธุรกรรมนั้นได้รับการยืนยันบน L1 เฟรมถูกอ่านจากบล็อก L1 เพื่อสร้างแบทช์ใหม่ การใช้งานในปัจจุบันไม่อนุญาตให้มี การบีบอัดช่องสัญญาณเพื่อเริ่มต้นจนกว่าจะได้รับเฟรมที่เกี่ยวข้องทั้งหมด ไม่ถูกต้อง ชุดงานจะถูกละเว้น ธุรกรรมบล็อกแต่ละรายการจะได้รับจากแบทช์ ซึ่งก็คือ ใช้โดยกลไกการดำเนินการเพื่อใช้การเปลี่ยนสถานะและรับสถานะ Rollup 2.1.3. การถอนเงิน เพื่อดำเนินการถอนเงิน ระบบส่งข้อความ L2-to-L1 จะถูกนำมาใช้ Ethereum จำเป็นต้องทราบสถานะของ L2 เพื่อที่จะยอมรับการถอนเงิน และทำได้โดยการเผยแพร่ บน L2 Output Oracle smart contract บน L1 รูทสถานะของแต่ละบล็อก L2 รากเหล่านี้ ได้รับการยอมรับในแง่ดีว่าถูกต้อง (หรือสรุปแล้ว) หากไม่มีการดำเนินการพิสูจน์ข้อบกพร่องในระหว่าง ระยะเวลาข้อพิพาท เฉพาะที่อยู่ที่กำหนดให้เป็นผู้เสนอเท่านั้นที่สามารถเผยแพร่รูตเอาท์พุตได้ ความถูกต้อง ของรากเอาท์พุตนั้นได้รับการจูงใจโดยการให้ผู้เสนอวางเงินเดิมพันซึ่งจะถูกเฉือนหากเป็นเช่นนั้น แสดงว่าได้เสนอรูทที่ไม่ถูกต้อง ธุรกรรมเริ่มต้นโดยการเรียกใช้ฟังก์ชัน เริ่มต้นถอนการปรับใช้ล่วงหน้าบน L2 จากนั้นจึงสรุปบน L1 โดยการเรียกใช้ฟังก์ชัน สิ้นสุดการถอนธุรกรรมบนพอร์ทัล Optimism ที่กล่าวถึงก่อนหน้านี้ รูทเอาท์พุตที่สอดคล้องกับบล็อก L2 นั้นได้มาจาก L2 Output Oracle; มันคือ ตรวจสอบว่าได้สรุปแล้ว เช่น ผ่านช่วงข้อพิพาทไปแล้ว เป็นการตรวจสอบว่าเอาท์พุต Root Proof ตรงกับ Oracle Proof; ได้รับการตรวจสอบแล้วว่ารวม hash ของการถอนออกด้วย โดยใช้หลักฐานการถอนเงิน การถอนเงินยังไม่เสร็จสิ้น แล้ว การเรียกไปยังที่อยู่เป้าหมายจะดำเนินการ โดยมีขีดจำกัดก๊าซ ปริมาณอีเธอร์ และข้อมูลที่ระบุ 2.1.4. แคนนอน: ระบบป้องกันข้อผิดพลาด หาก Rollup Full Node ค้นพบสิ่งนั้นโดยการดำเนินการแบตช์ภายในเครื่องและธุรกรรมที่ฝากไว้ สถานะ Layer 2 ไม่ตรงกับสถานะรูทที่เผยแพร่บนเชนโดยผู้เสนอ มันสามารถดำเนินการได้ การพิสูจน์ข้อบกพร่องบน L1 เพื่อพิสูจน์ว่าผลลัพธ์ของการเปลี่ยนบล็อกไม่ถูกต้อง เนื่องจาก ค่าใช้จ่ายการประมวลผล Rollup block ทั้งหมดบน L1 นั้นแพงเกินไป ได้มีการนำแนวทางแก้ไขไปใช้แล้ว โดย Bedrock คือการดำเนินการบนเชนเฉพาะคำสั่งแรกของความไม่เห็นด้วยของ minigeth รวบรวมมันเป็นสถาปัตยกรรม MIPS ที่ดำเนินการบนล่ามออนไลน์และเผยแพร่ บน L1 minigeth เป็นเวอร์ชันที่เรียบง่ายของ geth 1 ซึ่งมีฉันทามติ RPC และฐานข้อมูล ได้ถูกลบออกแล้ว เพื่อค้นหาคำสั่งแรกของความขัดแย้ง การค้นหาแบบไบนารีเชิงโต้ตอบจะดำเนินการระหว่าง ผู้ที่ริเริ่มการพิสูจน์ข้อบกพร่องและผู้ที่เผยแพร่รูตเอาท์พุต เมื่อพิสูจน์แล้ว เริ่มต้น ทั้งสองฝ่ายเผยแพร่รูทของสถานะหน่วยความจำ MIPS ครึ่งทางของการดำเนินการ การบล็อกสัญญาการท้าทาย: หาก hash ตรงกัน หมายความว่าทั้งสองฝ่ายเห็นด้วยกับ ครึ่งแรกของการดำเนินการจึงเผยแพร่รากของครึ่งหนึ่งของครึ่งหลัง มิฉะนั้นครึ่งหนึ่ง ของครึ่งแรกมีการเผยแพร่เป็นต้น การทำเช่นนี้จะถือเป็นคำสั่งแรกของการไม่เห็นด้วย ในจำนวนขั้นตอนลอการิทึมเมื่อเทียบกับการดำเนินการเดิม หากหนึ่งในสองหยุด โต้ตอบ เมื่อสิ้นสุดระยะเวลาการโต้แย้ง ผู้เข้าร่วมรายอื่นจะชนะโดยอัตโนมัติ ในการประมวลผลคำสั่ง ล่าม MIPS จำเป็นต้องเข้าถึงหน่วยความจำของมัน: เนื่องจากรูทคือ พร้อมใช้งาน เซลล์หน่วยความจำที่จำเป็นสามารถเผยแพร่ได้โดยการพิสูจน์การรวมเข้าด้วยกัน ในการเข้าถึง สถานะของ EVM การใช้งานทำจาก Preimage Oracle: เมื่อพิจารณาจาก hash ของบล็อกที่ส่งคืน 1https://geth.ethereum.org/docs

ส่วนหัวของบล็อกซึ่งสามารถรับ hash ของบล็อกก่อนหน้าและย้อนกลับไปใน chain หรือรับ hash ของสถานะและบันทึกที่สามารถรับพรีอิมเมจได้ oracle ดำเนินการโดย minigeth และแทนที่ฐานข้อมูล มีการสอบถามไปยังโหนดอื่นเพื่อ รับภาพเบื้องต้น

Rollup Optimis

  1. Rollup Optimis Gagasan untuk menerima keluaran blok secara optimis tanpa memverifikasi eksekusinya adalah sudah ada di whitepaper Bitcoin [7], membahas tentang light node. Node-node ini hanya mengikuti rantai header dengan memverifikasi aturan konsensus, membuat mereka rentan untuk menerima pemblokiran berisi transaksi yang tidak valid jika terjadi serangan 51%. Nakamoto mengusulkan untuk memecahkan masalah ini masalah dengan menggunakan sistem "peringatan" untuk memperingatkan node ringan bahwa suatu blok berisi transaksi yang tidak valid. Mekanisme ini pertama kali diterapkan oleh Al-Bassam, Sonnino dan Buterin [8] dimana terjadi kesalahan sistem pembuktian berdasarkan kode koreksi kesalahan [9] digunakan. Untuk memungkinkan pembuatan bukti kesalahan, data dari semua blok, termasuk blok yang tidak valid, harus tersedia jaringan: ini adalah Masalah Ketersediaan Data, yang diselesaikan dengan menggunakan data probabilistik mekanisme pengambilan sampel. Desain Optimistic Rollup pertama dipresentasikan oleh John Adler dan Mikerah Quintyne-Collins pada tahun 2019 [10], di mana blok diterbitkan pada blockchain lain yang mendefinisikan konsensus mereka tentang pemesanan. 2.1. Optimism Batuan Dasar Batuan Dasar [11] adalah versi terbaru dari Optimism, Smart Contract Rollup. Versi sebelumnya, Mesin Virtual Optimis (OVM) memerlukan kompiler ad hoc untuk mengkompilasi Soliditas ke dalamnya bytecode sendiri: sebaliknya, Bedrock sepenuhnya setara dengan EVM di mesin eksekusi mengikuti spesifikasi Ethereum Kertas Kuning [12]. 2.1.1. Deposito Pengguna dapat menyetorkan transaksi melalui kontrak di Ethereum, Portal Optimism, dengan memanggil fungsi depositTransaction. Pada saat transaksi dijalankan, a Peristiwa TransactionDeposited dipancarkan, yang didengarkan oleh setiap node di Rollup untuk diproses deposito. Transaksi yang disimpan adalah transaksi L2 yang berasal dari L1. Jika penelepon dari fungsinya adalah kontrak, alamat diubah dengan menambahkan nilai konstan ke dalamnya: ini mencegah serangan di mana kontrak di L1 memiliki alamat yang sama dengan kontrak di L2 tetapi kodenya berbeda. Dimasukkannya L2 dari transaksi yang disimpan dijamin oleh spesifikasi dalam suatu urutan jendela. Transaksi yang disimpan adalah jenis transaksi baru yang kompatibel dengan EIP-2718 [13] dengan awalan 0x7E, di mana bidang yang dikodekan rlp adalah: • bytes32 sourceHash: hash yang secara unik mengidentifikasi sumber transaksi. • alamat dari : alamat pengirim. • alamat ke : alamat penerima, atau alamat nol jika transaksi yang disetor adalah a pembuatan kontrak.• uint256 mint: nilai yang akan dibuat pada L2. • nilai uint256: nilai yang akan dikirim ke penerima. • byte data: data masukan. • bytes gasLimit: batas gas transaksi. sourceHash dihitung sebagai keccak256 hash dari blok L1 hash dan log L1 indeks, secara unik mengidentifikasi suatu peristiwa dalam sebuah blok. Karena transaksi yang disimpan dimulai pada L1 tetapi dieksekusi pada L2, sistem memerlukan a mekanisme untuk membayar L1 untuk gas yang dihabiskan untuk L2. Salah satu solusinya adalah dengan mengirimkan ETH melalui Portal, tapi ini menyiratkan bahwa setiap penelepon (bahkan penelepon tidak langsung) harus ditandai sebagai orang yang harus dibayar, dan memang demikian tidak mungkin untuk banyak proyek yang ada. Alternatifnya adalah dengan membakar gas yang sesuai pada L1. Gas yang 𝑔dialokasikan untuk transaksi yang disetor disebut gas terjamin. Harga gas L2 aktif L1 tidak disinkronkan secara otomatis tetapi diperkirakan menggunakan mekanisme yang mirip dengan EIP-1559 [14]. Jumlah maksimum gas yang dijamin per blok Ethereum adalah 8 juta, dengan target dari 2 juta. Kuantitas 𝑐ETH yang dibutuhkan untuk membayar gas pada L2 adalah 𝑐= 𝑔𝑏L2 dimana 𝑏L2 adalah biaya dasar pada L2. Kontrak pada L1 membakar sejumlah gas yang sama dengan 𝑐/𝑏L2. Gas dihabiskan untuk menelepon depositTransaksi diganti pada L2: jika jumlah ini lebih besar dari gas yang dijamin, tidak ada gas yang terbakar. Transaksi pertama dari blok rollup adalah transaksi yang disimpan dengan atribut L1, digunakan untuk mendaftar pada L2 pra-deploy atribut blok Ethereum. Atribut yang diberikan oleh pra-penerapan aksesnya adalah nomor blok, stempel waktu, biaya dasar, blok hash dan urutannya number, yang merupakan nomor blok L2 relatif terhadap blok L1 terkait (juga disebut epoch); nomor ini disetel ulang ketika zaman baru dimulai. 2.1.2. Urutan Node Rollup memperoleh rantai Optimism seluruhnya dari Ethereum. Rantai ini diperpanjang setiap kali transaksi baru dipublikasikan di L1, dan bloknya direorganisasi setiap kali Ethereum blok ditata ulang. Rollup blockchain dibagi menjadi beberapa zaman. Untuk setiap 𝑛 nomor blok Ethereum, ada 𝑛epoch yang sesuai. Setiap zaman berisi setidaknya satu blok, dan setiap blok dalam suatu zaman berisi transaksi penyimpanan atribut L1. Blok pertama dalam suatu zaman berisi semua transaksi yang disimpan melalui Portal. Layer 2 blok juga bisa berisi transaksi berurutan, yaitu transaksi yang dikirim langsung ke Sequencer. Sequencer menerima transaksi dari pengguna dan membangun blok. Untuk setiap blok, itu dibangun kumpulan yang akan diterbitkan pada Ethereum. Beberapa batch dapat diterbitkan secara terkompresi, mengambil nama saluran. Sebuah saluran dapat dibagi menjadi beberapa bingkai, jika terlalu besar satu transaksi. Saluran didefinisikan sebagai kompresi dengan ZLIB [15] yang dikodekan rlp batch. Bidang batch adalah nomor zaman, zaman hash, induk hash, stempel waktu dan daftar transaksi. Jendela pengurutan, yang diidentifikasi berdasarkan suatu zaman, berisi bilangan tetap 𝑤dari L1 yang berurutan blok yang diambil langkah derivasi sebagai masukan untuk membangun sejumlah variabel blok L2. Untuk Epoch 𝑛, jendela pengurutan 𝑛 mencakup blok [𝑛, 𝑛+𝑤). Ini menyiratkan bahwa pemesanan transaksi dan blok L2 dalam jendela sequencing tidak diperbaiki sampai jendela berakhir. Transaksi rollup disebut aman jika batch yang memuatnya telah dikonfirmasi di L1. Bingkaidibaca dari blok L1 untuk merekonstruksi batch. Implementasi saat ini tidak memungkinkan dekompresi saluran dimulai sampai semua frame yang sesuai telah diterima. Tidak valid batch diabaikan. Transaksi blok individu diperoleh dari batch, yaitu digunakan oleh mesin eksekusi untuk menerapkan transisi status dan mendapatkan status Rollup. 2.1.3. Penarikan Untuk memproses penarikan, sistem pesan L2-ke-L1 diterapkan. Ethereum perlu mengetahui status L2 untuk menerima penarikan, dan ini dilakukan dengan menerbitkan pada Output L2 Oracle smart contract pada L1 state root setiap blok L2. Akar ini secara optimis diterima sebagai valid (atau diselesaikan) jika tidak ada bukti kesalahan yang dilakukan selama proses periode perselisihan. Hanya alamat yang ditunjuk sebagai Pengusul yang dapat mempublikasikan akar keluaran. Validitas akar keluaran diberi insentif dengan meminta Pengusul menyetorkan taruhan yang akan dipotong jika memang demikian terbukti telah mengusulkan root yang tidak valid. Transaksi dimulai dengan memanggil fungsi tersebut inisiasi Penarikan pada pra-penerapan di L2 dan kemudian diselesaikan di L1 dengan memanggil fungsi tersebut finalizeWithdrawalTransaction pada Portal Optimism yang disebutkan sebelumnya. Root keluaran yang sesuai dengan blok L2 diperoleh dari L2 Output Oracle; itu diverifikasi bahwa perselisihan tersebut telah selesai, yaitu bahwa jangka waktu perselisihan telah berlalu; telah diverifikasi bahwa Output Bukti Root cocok dengan Bukti Oracle; telah diverifikasi bahwa hash penarikan disertakan di dalamnya menggunakan Bukti Penarikan; bahwa penarikan tersebut belum diselesaikan; dan kemudian panggilan ke alamat target dieksekusi, dengan batas gas, jumlah Ether, dan data yang ditentukan. 2.1.4. Cannon: sistem bukti kesalahan Jika Rollup Full Node, dengan mengeksekusi batch dan transaksi yang disimpan secara lokal, menemukannya status Layer 2 tidak cocok dengan root status yang diterbitkan secara on-chain oleh Pengusul, ia dapat mengeksekusi bukti kesalahan pada L1 untuk membuktikan bahwa hasil transisi blok salah. Karena overhead, memproses seluruh blok Rollup di L1 terlalu mahal. Solusinya diterapkan oleh Bedrock adalah mengeksekusi on-chain hanya instruksi pertama dari ketidaksepakatan minigeth, mengkompilasinya menjadi arsitektur MIPS yang dieksekusi pada penerjemah on-chain dan diterbitkan di L1. minigeth adalah versi sederhana dari geth 1 yang berisi konsensus, RPC, dan database telah dihapus. Untuk menemukan instruksi ketidaksepakatan pertama, dilakukan pencarian biner interaktif antar orang yang memulai bukti kesalahan dan orang yang menerbitkan akar keluaran. Ketika buktinya dimulai, kedua belah pihak mempublikasikan root dari status memori MIPS di tengah-tengah eksekusi blok pada kontrak Tantangan: jika hash cocok berarti kedua belah pihak menyetujui paruh pertama eksekusi sehingga menerbitkan akar setengah dari paruh kedua, jika tidak, setengahnya babak pertama diterbitkan dan seterusnya. Melakukan hal itu akan menghasilkan instruksi ketidaksepakatan yang pertama dalam jumlah langkah logaritmik dibandingkan dengan eksekusi aslinya. Jika salah satu dari keduanya berhenti berinteraksi, di akhir masa perselisihan peserta lain otomatis menang. Untuk memproses instruksi, penerjemah MIPS memerlukan akses ke memorinya: karena root adalah tersedia, sel memori yang diperlukan dapat dipublikasikan dengan membuktikan penyertaannya. Untuk mengakses keadaan EVM, penggunaan dibuat dari Preimage Oracle: mengingat hash dari blok yang dikembalikannya 1https://geth.ethereum.org/docs

header blok, dari mana seseorang bisa mendapatkan hash dari blok sebelumnya dan kembali ke rantai, atau dapatkan hash status dan log dari mana seseorang bisa mendapatkan gambar awal. oracle diimplementasikan oleh minigeth dan menggantikan database. Kueri dibuat ke node lain untuk mendapatkan gambar awal.

Rollups ความถูกต้อง

  1. การยกเลิกความถูกต้อง เป้าหมายของการยกเลิกความถูกต้องคือการพิสูจน์ความถูกต้องของการเปลี่ยนแปลงสถานะด้วยการเข้ารหัส โดยมีลำดับการทำธุรกรรมพร้อมหลักฐานสั้นๆ ที่สามารถตรวจสอบเปรียบเทียบแบบเชิงเส้นย่อยได้ จนถึงเวลาคำนวณแบบเดิม ใบรับรองประเภทนี้เรียกว่าการพิสูจน์ความสมบูรณ์ทางคอมพิวเตอร์ และนำไปใช้งานได้จริงกับ SNARK (Succint Non-interactive ARgument of Knowledge) ซึ่งใช้เลขคณิต วงจรเป็นแบบจำลองการคำนวณ การใช้งาน SNARK ที่แตกต่างกันต่างกันในเรื่องเวลาในการพิสูจน์ เวลาในการตรวจสอบ ความจำเป็นในการตั้งค่าที่เชื่อถือได้ และความต้านทานควอนตัม [16, 17] สตาร์ค (ปรับขนาดได้ ARgument of Knowledge ที่โปร่งใส) [18] เป็น SNARK ประเภทหนึ่งที่ไม่จำเป็นต้องมีความน่าเชื่อถือ การตั้งค่าและทนทานต่อควอนตัม ขณะเดียวกันก็ทำให้ประสิทธิภาพในการพิสูจน์และการตรวจสอบลดลง เมื่อเทียบกับโซลูชั่นอื่นๆ 3.1. StarkNet StarkNet คือ Smart Contract Validity Rollup ที่พัฒนาโดย StarkWare ที่ใช้ STARK ระบบพิสูจน์เพื่อตรวจสอบสถานะเป็น Ethereum เพื่ออำนวยความสะดวกในการสร้างหลักฐานความถูกต้อง มีการใช้เครื่องเสมือนที่แตกต่างจาก EVM ซึ่งมีภาษาระดับสูงคือไคโร 3.1.1. เงินฝาก ผู้ใช้สามารถฝากธุรกรรมผ่านสัญญาใน Ethereum โดยการเรียก sendMessageToL2 ฟังก์ชั่น ข้อความถูกบันทึกโดยการคำนวณ hash และเพิ่มตัวนับ ซีเควนเซอร์ ฟังเหตุการณ์ LogMessageToL2 และเข้ารหัสข้อมูลในธุรกรรม StarkNet ที่เรียกใช้ฟังก์ชันของสัญญาที่มีมัณฑนากร l1_handler เมื่อสิ้นสุดการประหารชีวิต เมื่อมีการสร้างหลักฐานการเปลี่ยนสถานะ การใช้ข้อความจะถูกแนบไปด้วย และมันถูกลบโดยการลดตัวนับ การรวมธุรกรรมที่ฝากไม่จำเป็นตามข้อกำหนด StarkNet ดังนั้นจึงเป็นแก๊ส จำเป็นต้องมีตลาดเพื่อจูงใจให้ Sequencers เผยแพร่บน L2 ในเวอร์ชั่นปัจจุบันเพราะว่า Sequencer ได้รับการรวมศูนย์และจัดการโดย StarkWare ซึ่งเป็นต้นทุนของธุรกรรมที่ฝากไว้ ถูกกำหนดโดยค่าใช้จ่ายในการดำเนินการฝากเงินเท่านั้น ค่าใช้จ่ายนี้ชำระโดยการส่ง ETH ไปที่ sendMessageToL2. อีเทอร์เหล่านี้ยังคงล็อคอยู่บน L1 และจะถูกถ่ายโอนไปยังซีเควนเซอร์บน L1 เมื่อธุรกรรมที่ฝากรวมอยู่ในการเปลี่ยนสถานะ จำนวน ETH ที่ส่ง ถ้า รวมธุรกรรมที่ฝากไว้แล้ว ใช้ไปจนหมด โดยไม่คำนึงถึงปริมาณการใช้ก๊าซ บน L2 StarkNet ไม่มีระบบที่ทำให้แอ็ตทริบิวต์บล็อก L1 พร้อมใช้งานโดยอัตโนมัติ อีกทางหนึ่ง Fossil เป็นโปรโตคอลที่พัฒนาโดย Oiler Network 2 ที่อนุญาต โดยให้ hash ของ บล็อก ข้อมูลใด ๆ ที่จะได้รับจาก Ethereum โดยการเผยแพร่ภาพล่วงหน้า 2https://www.oiler.network/3.1.2. การเรียงลำดับ สถานะปัจจุบันของ StarkNet สามารถได้รับมาจาก Ethereum ทั้งหมด ความแตกต่างของรัฐใด ๆ ระหว่างช่วงการเปลี่ยนภาพถูกเผยแพร่บน L1 เป็น calldata มีการเผยแพร่ความแตกต่างสำหรับแต่ละสัญญา และบันทึกเป็น uint256[] โดยมีการเข้ารหัสต่อไปนี้: • จำนวนฟิลด์ที่เกี่ยวข้องกับการปรับใช้สัญญา • สำหรับสัญญาที่เผยแพร่แต่ละฉบับ: – ที่อยู่ของสัญญาที่เผยแพร่ – hash ของสัญญาที่เผยแพร่ – จำนวนข้อโต้แย้งของผู้สร้างสัญญา – รายการข้อโต้แย้งของคอนสตรัคเตอร์ • จำนวนสัญญาที่มีการแก้ไขการจัดเก็บ • สำหรับแต่ละสัญญาที่ได้รับการแก้ไข: – ที่อยู่ของสัญญาที่แก้ไข – จำนวนการอัปเดตที่เก็บข้อมูล – คู่คีย์-ค่าของที่อยู่หน่วยเก็บข้อมูลที่มีค่าใหม่ ความแตกต่างของรัฐได้รับการเผยแพร่ตามลำดับ ดังนั้นจึงเพียงพอที่จะอ่านตามลำดับ สร้างรัฐขึ้นใหม่ 3.1.3. การถอนเงิน หากต้องการส่งข้อความจาก L2 ถึง L1 จะใช้ syscall send_message_to_L1 ข้อความก็คือ เผยแพร่ไปยัง L1 โดยเพิ่มตัวนับ hash พร้อมกับการพิสูจน์และสรุปโดยการเรียก ฟังก์ชั่น consumeMessageFromL2 บน StarkGate smart contract บน L1 ซึ่งลดลง เคาน์เตอร์ ทุกคนสามารถสรุปการถอนเงินได้ 3.1.4. หลักฐานความถูกต้อง เครื่องเสมือนของไคโร [19] ได้รับการออกแบบมาเพื่ออำนวยความสะดวกในการสร้างหลักฐาน STARK ภาษาไคโรช่วยให้สามารถอธิบายการคำนวณด้วยการเขียนโปรแกรมระดับสูงได้ ภาษาและไม่ใช่วงจรโดยตรง ซึ่งสามารถทำได้โดยระบบสมการพหุนาม 3 แสดงถึงการคำนวณครั้งเดียว: วงจร FDE ของสถาปัตยกรรม von Neumann หมายเลข ข้อจำกัดจึงได้รับการแก้ไขและไม่ขึ้นกับประเภทของการคำนวณ โดยอนุญาตให้ทำได้เพียงรายการเดียวเท่านั้น โปรแกรมตรวจสอบสำหรับทุกโปรแกรมที่ต้องพิสูจน์การคำนวณ StarkNet รวมธุรกรรมหลายรายการไว้ในหลักฐาน STARK เดียวโดยใช้เครื่องพิสูจน์ที่ใช้ร่วมกัน ชื่อชาร์ป หลักฐานจะถูกส่งไปยัง smart contract ใน Ethereum ซึ่งจะตรวจสอบความถูกต้อง และอัพเดตรูต Merkle ที่สอดคล้องกับสถานะใหม่ ต้นทุนย่อยเชิงเส้นของการตรวจสอบ หลักฐานความถูกต้องช่วยให้สามารถตัดจำหน่ายต้นทุนในการทำธุรกรรมหลายรายการได้ 3เรียกว่าการเป็นตัวแทนระดับกลางพีชคณิต (AIR)

Rollup Validitas

  1. Pembatalan Validitas Tujuan dari Validity Rollup adalah untuk membuktikan secara kriptografis validitas transisi keadaan diberikan urutan transaksi dengan bukti singkat yang dapat diverifikasi dibandingkan secara sub-linear ke waktu perhitungan aslinya. Sertifikat semacam ini disebut bukti integritas komputasi dan secara praktis diimplementasikan dengan SNARK (Succint Non-interactive ARgument of Knowledge), yang menggunakan aritmatika sirkuit sebagai model komputasinya. Implementasi SNARK yang berbeda berbeda dalam waktu pembuktian, waktu verifikasi, kebutuhan pengaturan yang tepercaya dan ketahanan kuantum [16, 17]. STARK (Dapat diskalakan ARgumen Pengetahuan Transparan) [18] adalah jenis SNARK yang tidak memerlukan kepercayaan pengaturannya dan tahan terhadap kuantum, namun mengurangi efisiensi dalam pembuktian dan verifikasi dibandingkan dengan solusi lain. 3.1. StarkNet StarkNet adalah Rollup Validitas Kontrak Cerdas yang dikembangkan oleh StarkWare yang menggunakan STARK sistem bukti untuk memvalidasi statusnya ke Ethereum. Untuk memudahkan konstruksi bukti keabsahan, a mesin virtual berbeda dari EVM yang digunakan, yang bahasa tingkat tingginya adalah Kairo. 3.1.1. Deposito Pengguna dapat menyetor transaksi melalui kontrak di Ethereum dengan menghubungi sendMessageToL2 fungsi. Pesan dicatat dengan menghitung hash dan menambah penghitung. Pengurut mendengarkan acara LogMessageToL2 dan menyandikan informasi dalam transaksi StarkNet yang memanggil fungsi kontrak yang memiliki dekorator l1_handler. Di akhir eksekusi, ketika bukti transisi keadaan dihasilkan, konsumsi pesan dilampirkan padanya dan itu dihapus dengan mengurangi penghitungnya. Pencantuman transaksi yang disimpan tidak diwajibkan oleh spesifikasi StarkNet, jadi gas pasar diperlukan untuk memberi insentif kepada Sequencer untuk mempublikasikannya di L2. Dalam versi saat ini, karena Sequencer dipusatkan dan dikelola oleh StarkWare, biaya transaksi yang disimpan hanya ditentukan oleh biaya pelaksanaan titipan. Biaya ini dibayar dengan mengirimkan ETH ke kirimMessageToL2. Eter ini tetap terkunci di L1 dan ditransfer ke Sequencer aktif L1, apabila transaksi yang disetorkan termasuk dalam keadaan transisi. Jumlah ETH yang dikirim, jika transaksi yang disimpan sudah termasuk, dihabiskan sepenuhnya, berapa pun jumlah gas yang dikonsumsi di L2. StarkNet tidak memiliki sistem yang membuat atribut blok L1 tersedia secara otomatis. Alternatifnya, Fossil adalah protokol yang dikembangkan oleh Oiler Network 2 yang memungkinkan, dengan hash dari a blok, informasi apa pun yang dapat diperoleh dari Ethereum dengan menerbitkan gambar awal. 2https://www.oiler.network/3.1.2. Urutan Keadaan StarkNet saat ini dapat diturunkan seluruhnya dari Ethereum. Perbedaan negara bagian apa pun antar transisi dipublikasikan di L1 sebagai data panggilan. Perbedaan dipublikasikan untuk setiap kontrak dan disimpan sebagai uint256[] dengan pengkodean berikut: • Jumlah bidang mengenai penerapan kontrak. • Untuk setiap kontrak yang diterbitkan: – Alamat kontrak yang diterbitkan. – hash dari kontrak yang dipublikasikan. – Jumlah argumen pembuat kontrak. – Daftar argumen konstruktor • Jumlah kontrak yang penyimpanannya telah diubah. • Untuk setiap kontrak yang telah diubah: – Alamat kontrak yang diubah. – Jumlah pembaruan penyimpanan. – Pasangan nilai kunci dari alamat penyimpanan dengan nilai baru. Perbedaan negara diterbitkan secara berurutan, sehingga cukup membacanya secara berurutan merekonstruksi negara. 3.1.3. Penarikan Untuk mengirim pesan dari L2 ke L1 digunakan syscall send_message_to_L1. Pesannya adalah diterbitkan ke L1 dengan menambah counter hash-nya beserta buktinya dan diselesaikan dengan memanggil fungsi mengkonsumsiMessageFromL2 di StarkGate smart contract di L1, yang mengurangi konter. Siapa pun dapat menyelesaikan penarikan apa pun. 3.1.4. Bukti validitas Mesin Virtual Kairo [19] dirancang untuk memfasilitasi pembuatan bukti STARK. Bahasa Kairo memungkinkan komputasi dijelaskan dengan pemrograman tingkat tinggi bahasa, dan tidak secara langsung sebagai sirkuit. Hal ini dicapai dengan sistem persamaan polinomial 3 mewakili komputasi tunggal: siklus FDE dari arsitektur von Neumann. Nomornya batasannya tetap dan tidak bergantung pada jenis komputasi, sehingga hanya memungkinkan satu komputasi Program verifikator untuk setiap program yang perhitungannya perlu dibuktikan. StarkNet menggabungkan beberapa transaksi menjadi satu bukti STARK menggunakan pembuktian bersama bernama SHARP. Buktinya dikirim ke smart contract pada Ethereum, yang memverifikasi keabsahannya dan memperbarui akar Merkle yang sesuai dengan status baru. Biaya sub-linier untuk verifikasi a bukti validitas memungkinkan biayanya diamortisasi dalam beberapa transaksi. 3disebut Representasi Menengah Aljabar (AIR)

การเปรียบเทียบ

  1. การเปรียบเทียบ 4.1. เวลาถอนเงิน สิ่งสำคัญที่สุดที่ทำให้ Rollups ในแง่ดีแตกต่างจาก Rollups ที่มีความถูกต้องคือ เวลาที่ผ่านไประหว่างการเริ่มต้นของการถอนและการสรุป ในทั้งสองกรณี การถอนเงินจะเริ่มต้นใน L2 และสิ้นสุดใน L1 ใน StarkNet การสรุปสามารถทำได้ดังนี้ ทันทีที่หลักฐานความถูกต้องของรูทสถานะใหม่ได้รับการยอมรับใน Ethereum: ตามทฤษฎีแล้ว สามารถถอนเงินได้ในบล็อคแรกของ L1 หลังจากการเริ่มต้น ในทางปฏิบัตินั้น ความถี่ในการส่งหลักฐานความถูกต้องใน Ethereum ถือเป็นการแลกเปลี่ยนระหว่างความเร็วของบล็อก การสรุปและการรวมหลักฐาน ปัจจุบัน StarkNet มีหลักฐานยืนยันความถูกต้องสำหรับการตรวจสอบ ทุก 10 ชั่วโมง 4 แต่ตั้งใจให้ลดลงเมื่อกิจกรรมธุรกรรมเพิ่มขึ้น ใน Optimism Bedrock เป็นไปได้ที่จะสรุปการถอนตัวเมื่อสิ้นสุดข้อพิพาทเท่านั้น ระยะเวลา (ปัจจุบันคือ 7 วัน) หลังจากนั้นรูทจะถือว่าใช้ได้โดยอัตโนมัติ ความยาวของ ช่วงเวลานี้ถูกกำหนดโดยข้อเท็จจริงที่ว่าการพิสูจน์ข้อบกพร่องสามารถตรวจสอบได้ใน Ethereum จนกระทั่ง จุดสิ้นสุดของมัน ความน่าจะเป็นที่สำเร็จของการโจมตีประเภทนี้จะลดลงแบบทวีคูณเมื่อเวลาผ่านไป: E[ค่าที่ลบออก] = 𝑉𝑝크 โดยที่ ñ คือจำนวนบล็อกในช่วงเวลา 𝑉 คือจำนวนเงินที่สามารถลบได้ โดยการเผยแพร่รูทที่ไม่ถูกต้อง และ 𝑝คือความน่าจะเป็นในการดำเนินการเซ็นเซอร์ได้สำเร็จ โจมตีในบล็อคเดียว สมมติว่าความน่าจะเป็นนี้คือ 99% ที่ค่าถูกล็อกไว้ในค่าสะสม คือหนึ่งล้านอีเธอร์ และบล็อกในช่วงเวลาคือ 1800 (บล็อก 6 ชั่วโมงด้วย 12 ช่วงเวลาวินาที): ค่าที่คาดหวังคือประมาณ 0.01391 อีเธอร์ ระบบมีความปลอดภัยโดย ขอให้ผู้เสนอเดิมพันอีเธอร์ในปริมาณที่มากกว่าที่คาดไว้ วินเซอร์ และคณะ แสดงวิธีดำเนินการโจมตีด้วยการเซ็นเซอร์โดยใช้ smart contract แบบง่ายๆ เพื่อให้แน่ใจว่าพื้นที่บางส่วนของหน่วยความจำในสถานะไม่เปลี่ยนแปลง [20] การสร้างแบบจำลองการโจมตี ในฐานะเกมของ Markov บทความนี้แสดงให้เห็นว่าการเซ็นเซอร์เป็นกลยุทธ์ที่โดดเด่นสำหรับเหตุผล บล็อกผู้ผลิตหากพวกเขาได้รับค่าตอบแทนมากกว่าการรวมธุรกรรมที่เปลี่ยนแปลง หน่วยความจำ ค่า 𝑝 ที่กล่าวถึงข้างต้นสามารถดูได้เป็นเปอร์เซ็นต์ของบล็อกตรรกยะ ผู้ผลิตในเครือข่ายโดยที่ “เหตุผล” ไม่คำนึงถึงการลงโทษ ภายนอก เช่น ความไว้วางใจน้อยลงใน blockchain ที่ทำให้มูลค่าสกุลเงินดิจิทัลลดลง รหัสต่อไปนี้แสดง smart contract ที่สามารถใช้เพื่อโจมตีด้วยการเซ็นเซอร์ บนพื้นหิน การโจมตีดังกล่าวใช้ประโยชน์จากสิ่งจูงใจของผู้ผลิตบล็อกโดยการเสนอสินบนให้พวกเขา เพื่อเซ็นเซอร์ธุรกรรมที่จะแก้ไขส่วนใดส่วนหนึ่งของรัฐ หลักสัญญา ฟังก์ชั่นการเรียกร้องสินบนช่วยให้ผู้ผลิตบล็อกสามารถเรียกร้องสินบนได้หากพวกเขาเซ็นเซอร์ได้สำเร็จ ธุรกรรมเป้าหมายโดยการตรวจสอบว่าไม่ได้แตะรูทเอาท์พุตที่ไม่ถูกต้อง ฟังก์ชั่นการเรียกร้องสินบน (หน่วยเก็บข้อมูลไบต์หลักฐาน) ภายนอก { need(!claimed[block.number], "สินบนถูกอ้างสิทธิ์แล้ว"); หน่วยความจำ OutputProposal ปัจจุบัน = storageOracle.getStorage(L2_ORACLE, block.number, SLOT, หลักฐานการจัดเก็บ); ต้องการ (invalidOutputRoot == current.outputRoot, "การโจมตีล้มเหลว"); อ้างสิทธิ์ [block.number] = จริง; (บูลที่ส่ง ) = block.coinbase.call{value: bribeAmount}(""); 4https://etherscan.io/address/0xc662c410c0ecf747543f5ba90660f6abebd9c8c4ต้องการ (ส่ง "ไม่สามารถส่งอีเธอร์"); } รายการ 1: ตัวอย่างของสัญญาที่จูงใจให้เกิดการโจมตีด้วยการเซ็นเซอร์ใน Bedrock ระยะเวลาของข้อพิพาทจะต้องคำนึงถึงข้อเท็จจริงที่พิสูจน์ความผิดด้วย หลักฐานเชิงโต้ตอบและจึงต้องจัดเตรียมเวลาให้เพียงพอเพื่อให้ผู้เข้าร่วมโต้ตอบได้ และปฏิสัมพันธ์ใดๆ ก็ตามสามารถถูกเซ็นเซอร์ได้ หากการเคลื่อนไหวครั้งล่าสุดเกิดขึ้นในเวลาที่ใกล้กับจุดนั้นมาก เมื่อสิ้นสุดระยะเวลาข้อพิพาท ค่าใช้จ่ายในการเซ็นเซอร์จะน้อยลงอย่างมาก แม้ว่าการเซ็นเซอร์จะเป็น กลยุทธ์ที่โดดเด่น โอกาสที่จะประสบความสำเร็จจะลดลงเนื่องจากการเซ็นเซอร์โหนดมีความเสี่ยง การโจมตีแบบปฏิเสธการให้บริการ: ผู้โจมตีสามารถสร้างธุรกรรมที่ซับซ้อนมากซึ่งลงท้ายด้วย การเผยแพร่หลักฐานข้อบกพร่องโดยไม่มีค่าใช้จ่าย เนื่องจากไม่ต้องเสียค่าธรรมเนียม ในกรณีที่ร้ายแรง ระยะเวลาการโต้แย้งที่ยาวนานจะช่วยให้สามารถประสานงานในกรณีที่ประสบความสำเร็จ การโจมตีเซ็นเซอร์เพื่อจัดระเบียบทางแยกและแยกผู้ผลิตบล็อกการโจมตี อีกอัน การโจมตีที่เป็นไปได้ประกอบด้วยการเผยแพร่ข้อเสนอรากของรัฐมากกว่าที่ผู้โต้แย้งสามารถตรวจสอบได้ ซึ่งสามารถหลีกเลี่ยงได้โดยใช้การจำกัดความถี่ 4.1.1. การถอนเงินในแง่ดีอย่างรวดเร็ว เนื่องจากความถูกต้องของ Optimistic Rollup สามารถตรวจสอบได้ตลอดเวลาโดยโหนดเต็มใดๆ a oracle ที่เชื่อถือได้ สามารถใช้เพื่อทราบใน L1 ว่าการถอนเงินสามารถสรุปได้อย่างปลอดภัยหรือไม่ นี้ กลไกถูกเสนอครั้งแรกโดย Maker [21]: oracle ตรวจสอบการถอนออก เผยแพร่ ส่งผลให้ L1 กำหนดเงินกู้ที่มีดอกเบี้ยให้กับผู้ใช้ซึ่งเป็นไปโดยอัตโนมัติ ปิดเมื่อครบ 7 วัน นั่นคือเมื่อการถอนสามารถสรุปได้จริง วิธีแก้ปัญหานี้ แนะนำสมมติฐานความน่าเชื่อถือ แต่ในกรณีของ Maker จะถูกย่อให้เล็กสุดเนื่องจากตัวดำเนินการ oracle ได้รับการจัดการโดยองค์กรเดียวกับที่รับความเสี่ยงโดยการให้เงินกู้ 4.2. ต้นทุนการทำธุรกรรม ต้นทุนของธุรกรรม L2 ส่วนใหญ่ถูกกำหนดโดยการโต้ตอบกับ L1 ในโซลูชั่นทั้งสอง ต้นทุนการคำนวณของธุรกรรมมีราคาถูกมากเนื่องจากมีการดำเนินการนอกเครือข่ายทั้งหมด Optimism เผยแพร่ calldata ธุรกรรม L2 เป็น calldata และแทบจะไม่ (หรือไม่เคย) ดำเนินการผิดพลาดเลย หลักฐาน ดังนั้น calldata จึงเป็นทรัพยากรที่แพงที่สุด เมื่อวันที่ 12 มกราคม 2022 เครือข่าย Bedrock ได้รับการเปิดตัวบน Goerli testnet ของ Ethereum สามารถคำนวณอัตราการอัดแก๊สได้ โดยการติดตามปริมาณก๊าซที่ใช้ใน Bedrock ในช่วงเวลาหนึ่งและเปรียบเทียบกับ ปริมาณก๊าซที่ใช้ใน L1 สำหรับบล็อกที่เกี่ยวข้อง การใช้วิธีนี้เป็นการบีบอัดแก๊ส พบอัตรา ∼20 : 1 แต่ตัวเลขนี้อาจแตกต่างกับกิจกรรมจริงบนเมนเน็ต StarkNet เผยแพร่บน Ethereum ทุกการเปลี่ยนแปลงในสถานะ L2 เป็น calldata ดังนั้นที่เก็บข้อมูลจึงเป็น ทรัพยากรที่แพงที่สุด เนื่องจากเครือข่ายไม่ได้ใช้ EVM ต้นทุนการทำธุรกรรม การบีบอัดไม่สามารถประมาณได้เล็กน้อย โดยสมมติค่าใช้จ่ายในการดำเนินการและข้อมูลการโทรไปที่ เพียงเล็กน้อยก็เป็นไปได้ที่จะคำนวณอัตราส่วนการบีบอัดของการเขียนที่เก็บข้อมูลเมื่อเปรียบเทียบกับ L1. สมมติว่าไม่มีการปรับใช้สัญญาและ 10 เซลล์ที่ไม่เคยเข้าถึงก่อนหน้านี้บน StarkNet คือ แก้ไขแล้ว พบอัตราการบีบอัดต้นทุนการเขียนหน่วยเก็บข้อมูลที่ ∼24: 1 หากเซลล์ถูกเขียนทับ ระยะเวลาระหว่างการเผยแพร่ข้อมูล ค่าใช้จ่ายในการเขียนแต่ละครั้งจะเท่ากับ 1/ เมื่อเทียบกับค่าใช้จ่าย ของการเขียนเพียงฉบับเดียวเนื่องจากเผยแพร่เฉพาะฉบับสุดท้ายเท่านั้น สามารถลดต้นทุนได้อีกโดยการบีบอัดค่าที่ใช้บ่อย ค่าใช้จ่ายในการตรวจสอบหลักฐานความถูกต้องจะแบ่งออกเป็น ธุรกรรมที่อ้างถึง: ตัวอย่างเช่น StarkNet บล็อก 4779 มี 200 ธุรกรรมและ หลักฐานความถูกต้องใช้ก๊าซ 267830 หน่วย หรือ 1339.15 หน่วยก๊าซสำหรับแต่ละธุรกรรม 4.2.1. การเพิ่มประสิทธิภาพ calldata: สัญญาแคช ด้านล่างนี้คือ smart contract ที่ใช้แคชที่อยู่สำหรับการใช้งานบ่อย ที่อยู่โดยการใช้ประโยชน์จากความจริงที่ว่าการจัดเก็บและการดำเนินการนั้นมีราคาถูกกว่ามาก ทรัพยากรต่างๆ พร้อมด้วยสัญญา Friends ที่สาธิตการใช้งาน หลังติดตามของ “เพื่อน” ของที่อยู่ที่สามารถลงทะเบียนได้โดยการเรียกใช้ฟังก์ชัน addFriend ถ้าเป็นที่อยู่ มีการใช้งานมาแล้วอย่างน้อย 1 ครั้ง สามารถเพิ่มได้ด้วยการเรียก addFriendWithCache ฟังก์ชั่น: ดัชนีแคชเป็นจำนวนเต็ม 4 ไบต์ในขณะที่ที่อยู่แสดงด้วย 20 ไบต์ ดังนั้นจึงมีการบันทึก 5:1 ในอาร์กิวเมนต์ของฟังก์ชัน ตรรกะเดียวกันนี้สามารถนำไปใช้กับข้อมูลอื่นได้ ประเภทต่างๆ เช่น จำนวนเต็ม หรือไบต์โดยทั่วไป AddressCache สัญญา { การทำแผนที่ (ที่อยู่ => uint32) address2key สาธารณะ; ที่อยู่ [] กุญแจสาธารณะ2ที่อยู่; ฟังก์ชั่น cacheWrite (ที่อยู่ _ ที่อยู่) ส่งคืนภายใน (uint32) { ต้องการ (key2address.length < ประเภท (uint32).max, "AddressCache: แคชเต็ม"); ต้องการ (address2key[_address] == 0, "AddressCache: ที่อยู่แคชไว้แล้ว"); // คีย์ต้องเริ่มจาก 1 เพราะ 0 หมายถึง "ไม่พบ" คีย์ uint32 = uint32 (key2address.length + 1); address2key[_address] = คีย์; key2address.push(_ที่อยู่); ส่งคืนกุญแจ; } ฟังก์ชั่น cacheRead (uint32 _key) มุมมองสาธารณะส่งคืน (ที่อยู่) { ต้องการ(_key <= key2address.length && _key > 0, "AddressCache: ไม่พบคีย์"); กลับคีย์2ที่อยู่[_key - 1]; } } รายการ 2: สัญญาแคชที่อยู่ เพื่อนสัญญาคือ AddressCache { การทำแผนที่ (ที่อยู่ => ที่อยู่ []) เพื่อนสาธารณะ; ฟังก์ชั่น addFriend (ที่อยู่ _friend) สาธารณะ { เพื่อน[msg.sender].push(_friend); แคชเขียน(_เพื่อน); } ฟังก์ชั่น addFriendWithCache (uint32 _friendKey) สาธารณะ { เพื่อน[msg.sender].push(cacheRead(_friendKey)); } ฟังก์ชั่น getFriends() ส่งคืนมุมมองสาธารณะ (หน่วยความจำที่อยู่ []) { ส่งกลับเพื่อน[msg.sender];} } รายการ 3: ตัวอย่างของสัญญาที่สืบทอดแคชที่อยู่ สัญญารองรับที่อยู่แคชประมาณ 4 พันล้าน (232) ที่อยู่และเพิ่มอีกหนึ่งไบต์ ประมาณ 1 ล้านล้าน (240) 4.2.2. การเพิ่มประสิทธิภาพพื้นที่เก็บข้อมูล: ตัวกรองของ Bloom ใน StarkNet มีเทคนิคหลายประการในการลดการใช้พื้นที่เก็บข้อมูล ถ้าไม่จำเป็น รับประกันความพร้อมใช้งานของข้อมูลต้นฉบับ จากนั้นการบันทึกแบบออนไลน์ก็เพียงพอแล้ว hash: สิ่งนี้ เป็นกลไกที่ใช้ในการบันทึกข้อมูลสำหรับ ERC-721 (NFT) [22] เช่นลิงก์ IPFS ที่แก้ไข hash ของข้อมูล หากมี สำหรับข้อมูลที่เก็บไว้หลายครั้ง สามารถใช้การค้นหาได้ ตารางที่คล้ายกับระบบแคชที่แนะนำสำหรับ Optimism โดยกำหนดให้ต้องบันทึกค่าทั้งหมดไว้ที่ อย่างน้อยหนึ่งครั้ง สำหรับบางแอปพลิเคชัน คุณสามารถหลีกเลี่ยงการบันทึกค่าทั้งหมดได้โดยใช้ตัวกรอง Bloom [23, 24, 25] กล่าวคือ โครงสร้างข้อมูลความน่าจะเป็นที่ช่วยให้ทราบได้อย่างแน่นอนว่า องค์ประกอบไม่ได้อยู่ในชุด แต่ยอมรับความน่าจะเป็นเท็จเล็กน้อยแต่ไม่อาจมองข้ามได้ แง่บวก ตัวกรอง Bloom เริ่มต้นเป็นอาร์เรย์ของ 𝑚บิตที่ศูนย์ หากต้องการเพิ่มองค์ประกอบ ให้ใช้ฟังก์ชัน 𝑘hash ด้วยการแจกแจงแบบสุ่มแบบสม่ำเสมอ แต่ละอันจะแมปกับบิตของอาเรย์ที่ตั้งค่าไว้ ถึง 1. เพื่อตรวจสอบว่าองค์ประกอบเป็นของชุดหรือไม่ เราเรียกใช้ฟังก์ชัน 𝑘hash และตรวจสอบ ว่า 𝑘bits ถูกตั้งค่าเป็น 1 ในตัวกรองของ Bloom แบบธรรมดา ไม่มีทางที่จะแยกแยะได้ว่า องค์ประกอบจริงๆ นั้นเป็นของเซตหรือเป็นผลบวกลวง ความน่าจะเป็นที่เพิ่มขึ้นตามตัวเลข ของรายการเพิ่มขึ้น หลังจากใส่องค์ประกอบแล้ว: P[ผลบวกลวง] = (︃ 1 − [︂ 1 −1 𝑚 ]︂𝑘न)︃𝑘 data (︁ 1 −ฎ−𝑘크/𝑚)︁𝑘 สมมติความเป็นอิสระของความน่าจะเป็นของแต่ละชุดบิต หากองค์ประกอบ (ขนาดใดก็ได้!) เป็น คาดว่าจะรวมไว้และความน่าจะเป็นของผลบวกลวงที่ยอมรับได้คือ 𝑝 ซึ่งเป็นขนาดของอาร์เรย์ สามารถคำนวณได้ดังนี้: 𝑚= −โทนลน์ 𝑝 (ใน 2)2 ในขณะที่จำนวนที่เหมาะสมที่สุดของฟังก์ชัน hash คือ: 𝑘= 𝑚 ฮันอิน 2 หากเราถือว่าแทรก 1,000 องค์ประกอบโดยมีค่าความคลาดเคลื่อน 1% ขนาดของอาร์เรย์จะเป็น 9585 บิต ด้วย 𝑘= 6 ในขณะที่ค่าความคลาดเคลื่อน 0.1% จะกลายเป็น 14377 บิต โดยที่ 𝑘= 9 หากมีองค์ประกอบล้านองค์ประกอบ คาดว่าจะใส่ได้ขนาดของอาเรย์จะอยู่ที่ประมาณ 1170 kB สำหรับ 1% และ 1775 kB สำหรับ 0.1% โดยมีค่าเท่ากันคือ 𝑘 เนื่องจากขึ้นอยู่กับ 𝑝[26] เท่านั้น ในเกมที่ผู้เล่นจะต้องไม่ถูกมอบหมายให้กับคู่ต่อสู้ที่พวกเขาท้าทายไปแล้ว แทนที่จะบันทึกในที่เก็บข้อมูลสำหรับผู้เล่นแต่ละคน รายชื่อคู่ต่อสู้ที่ผ่านมาเราสามารถใช้ Bloom ได้ กรอง ความเสี่ยงที่จะไม่ท้าทายผู้เล่นบางคนมักจะยอมรับได้ และสามารถรีเซ็ตตัวกรองได้ เป็นระยะๆ4.3. Ethereum ความเข้ากันได้ ข้อได้เปรียบหลักของความเข้ากันได้กับ EVM และ Ethereum คือการนำสิ่งที่มีอยู่ทั้งหมดกลับมาใช้ใหม่ เครื่องมือ Ethereum smart contracts สามารถเผยแพร่บน Optimism โดยไม่มีการแก้ไขหรือ การตรวจสอบใหม่ กระเป๋าเงินยังคงเข้ากันได้ เครื่องมือการพัฒนาและการวิเคราะห์แบบคงที่ การวิเคราะห์ทั่วไป เครื่องมือ เครื่องมือจัดทำดัชนี และ oracles Ethereum และ Solidity มีประวัติอันยาวนานของการศึกษามาอย่างดี ช่องโหว่ เช่น การโจมตีซ้ำ, ล้นและอันเดอร์โฟลว์, สินเชื่อแฟลช และ oracle กิจวัตร ด้วยเหตุนี้ Optimism จึงสามารถจับมูลค่าจำนวนมากได้ในระยะสั้น เวลา. การเลือกใช้เครื่องเสมือนอื่นหมายถึงต้องสร้างระบบนิเวศใหม่ทั้งหมด ด้วยความได้เปรียบจากอิสระในการดำเนินการที่มากขึ้น StarkNet ใช้งานบัญชีโดยกำเนิด นามธรรม ซึ่งเป็นกลไกที่แต่ละบัญชีเป็น smart contract ที่สามารถนำมาใช้ได้ ตรรกะตามอำเภอใจตราบใดที่มันสอดคล้องกับอินเทอร์เฟซ (ดังนั้นคำว่านามธรรม): สิ่งนี้อนุญาต การใช้รูปแบบลายเซ็นดิจิทัลที่แตกต่างกัน ความสามารถในการเปลี่ยนคีย์ส่วนตัวโดยใช้ ที่อยู่เดียวกัน หรือใช้ multisig ชุมชน Ethereum เสนอการแนะนำสิ่งนี้ กลไก EIP-2938 ในปี 2563 แต่ข้อเสนอดังกล่าวยังคงค้างอยู่นานกว่าหนึ่งปีเนื่องจาก การอัปเดตอื่นๆ มีลำดับความสำคัญมากกว่า [27] ประโยชน์ที่สำคัญอีกประการหนึ่งที่ได้รับจากความเข้ากันได้คือการนำไคลเอนต์ที่มีอยู่กลับมาใช้ใหม่: Optimism ใช้เวอร์ชันของ geth สำหรับโหนดของตัวเองโดยมีความแตกต่างเพียง 800 บรรทัดเท่านั้น พัฒนา ทดสอบ และบำรุงรักษามาตั้งแต่ปี 2014 การมีลูกค้าที่แข็งแกร่งถือเป็นสิ่งสำคัญตามที่กำหนดไว้ สิ่งที่ได้รับการยอมรับว่าถูกต้องหรือไม่อยู่ในเครือข่าย จุดบกพร่องในการใช้งานการพิสูจน์ข้อบกพร่อง ระบบอาจทำให้ข้อพิสูจน์ที่ไม่ถูกต้องได้รับการยอมรับว่าถูกต้องหรือข้อพิสูจน์ที่ถูกต้องสำหรับข้อที่ไม่ถูกต้อง ถือว่าบล็อกไม่ถูกต้อง ส่งผลให้ระบบเสียหาย ความน่าจะเป็นของประเภทนี้ การโจมตีสามารถจำกัดได้ด้วยความหลากหลายของไคลเอนต์ที่กว้างขึ้น: Optimism สามารถใช้ซ้ำได้ นอกเหนือจากการรับ ไคลเอนต์ Ethereum อื่น ๆ ได้รับการดูแลอยู่แล้ว และการพัฒนาไคลเอนต์ที่ใช้ Erigon อื่นก็คือ กำลังดำเนินการอยู่ ในปี 2559 เกิดปัญหาในการจัดการหน่วยความจำของ geth สำหรับ a การโจมตีแบบ DoS และแนวป้องกันแนวแรกคือแนะนำให้ใช้ Parity มากเป็นอันดับสอง ลูกค้าที่ใช้ในขณะนั้น 5. StarkNet ประสบปัญหาเดียวกันกับการพิสูจน์ความถูกต้อง แต่ลูกค้า จะต้องเขียนตั้งแต่เริ่มต้น และระบบพิสูจน์อักษรก็ซับซ้อนกว่ามาก และด้วยเหตุนี้ มันยังซับซ้อนกว่ามากในการรับรองความถูกต้อง

Perbandingan

  1. Perbandingan 4.1. Waktu penarikan Aspek terpenting yang membedakan Optimistic Rollup dengan Validity Rollup adalah waktu yang berlalu antara inisialisasi penarikan dan penyelesaiannya. Dalam kedua kasus tersebut, penarikan diinisialisasi pada L2 dan diselesaikan pada L1. Pada StarkNet, finalisasi dapat dilakukan sebagai segera setelah bukti validitas root negara baru diterima pada Ethereum: secara teoritis, itu adalah mungkin untuk menarik dana di blok pertama L1 setelah inisialisasi. Dalam praktiknya, frekuensi pengiriman bukti validitas pada Ethereum merupakan trade-off antara kecepatan blok finalisasi dan agregasi bukti. Saat ini StarkNet memberikan bukti validitas untuk verifikasi setiap 10 jam 4, namun dimaksudkan untuk dikurangi seiring dengan meningkatnya aktivitas transaksi. Di Optimism Batuan Dasar, penarikan hanya dapat diselesaikan di akhir perselisihan periode (saat ini 7 hari), setelah itu root secara otomatis dianggap valid. Panjangnya periode ini terutama ditentukan oleh fakta bahwa bukti kesalahan dapat disensor pada Ethereum hingga akhirnya. Kemungkinan keberhasilan serangan jenis ini menurun secara eksponensial seiring bertambahnya waktu: E[nilai yang dikurangi] = 𝑉𝑝𝑛 dimana 𝑛adalah jumlah blok dalam suatu interval, 𝑉adalah jumlah dana yang dapat dikurangi dengan menerbitkan root yang tidak valid, dan 𝑝adalah kemungkinan berhasil melakukan penyensoran menyerang dalam satu blok. Misalkan probabilitas ini adalah 99%, nilai terkunci di Rollup adalah satu juta Eter, dan blok dalam suatu interval adalah 1800 (6 jam blok dengan 12 interval detik): nilai yang diharapkan adalah sekitar 0,01391 Eter. Sistem dibuat aman oleh meminta Pengusul untuk mempertaruhkan jumlah Ether yang jauh lebih besar dari nilai yang diharapkan. Winzer dkk. menunjukkan cara melakukan serangan sensor menggunakan smart contract sederhana yang memastikan bahwa area memori tertentu di negara bagian tidak berubah [20]. Memodelkan serangan sebagai permainan Markov, makalah ini menunjukkan bahwa penyensoran adalah strategi dominan yang rasional produsen blok jika mereka menerima kompensasi lebih dari memasukkan transaksi yang berubah memori. Nilai 𝑝 yang dibahas di atas dapat dipandang sebagai persentase blok rasional produsen dalam jaringan, di mana “rasional” tidak memperhitungkan kemungkinan pemberian sanksi eksternalitas, seperti berkurangnya kepercayaan pada blockchain yang menurunkan nilai mata uang kripto. Kode berikut menyajikan smart contract yang dapat digunakan untuk melakukan serangan sensor di Batuan Dasar. Serangan tersebut mengeksploitasi insentif produsen blok dengan menawarkan suap untuk menyensor transaksi yang akan mengubah bagian tertentu negara. Kontrak utama fungsi,claimBribe, memungkinkan produsen blok untuk mengklaim suap jika mereka berhasil menyensor transaksi yang ditargetkan dengan memeriksa bahwa akar keluaran yang tidak valid tidak disentuh. fungsi klaim Suap (byte memori penyimpanan Bukti) eksternal { require(!claimed[block.number], "suap sudah diklaim"); Memori OutputProposal saat ini = storageOracle.getStorage(L2_ORACLE, block.number, SLOT, penyimpananBukti); require(invalidOutputRoot == current.outputRoot, "serangan gagal"); diklaim[block.number] = true; (bool terkirim, ) = block.coinbase.call{value: bribeAmount}(""); 4https://etherscan.io/address/0xc662c410c0ecf747543f5ba90660f6abebd9c8c4require(terkirim, "gagal mengirim ether"); } Listing 1: Contoh kontrak yang memberikan insentif untuk serangan sensor terhadap Bedrock. Lamanya jangka waktu perselisihan juga harus mempertimbangkan fakta bahwa bukti kesalahannya bukti interaktif dan oleh karena itu waktu yang cukup harus disediakan bagi peserta untuk berinteraksi dan bahwa interaksi apa pun dapat disensor. Jika pergerakan terakhir terjadi pada waktu yang sangat dekat dengan Pada akhir periode perselisihan, biaya penyensoran jauh lebih sedikit. Meskipun penyensoran adalah hal yang paling penting strategi dominan, kemungkinan keberhasilannya lebih rendah karena node penyensoran rentan terhadapnya Serangan Denial of Service: penyerang dapat menghasilkan transaksi yang sangat kompleks yang diakhiri dengan publikasi bukti kesalahan tanpa biaya, karena tidak ada biaya yang akan dibayarkan. Dalam kasus ekstrim, periode perselisihan yang panjang memungkinkan terjadinya koordinasi jika terjadi keberhasilan serangan sensor untuk mengatur percabangan dan mengecualikan produsen blok yang menyerang. Lainnya kemungkinan serangan terdiri dari menerbitkan lebih banyak proposal dasar negara bagian daripada yang dapat diverifikasi oleh pihak yang berselisih, yang dapat dihindari dengan menggunakan batas frekuensi. 4.1.1. Penarikan optimis yang cepat Karena validitas Optimistic Rollup dapat diverifikasi kapan saja oleh Full Node mana pun, a oracle tepercaya dapat digunakan untuk mengetahui di L1 apakah penarikan dapat diselesaikan dengan aman. Ini mekanisme pertama kali diusulkan oleh Pembuat [21]: oracle memverifikasi penarikan, menerbitkan hasil pada L1 di mana pinjaman berbunga diberikan kepada pengguna, yang secara otomatis ditutup pada akhir 7 hari, yaitu saat penarikan benar-benar dapat diselesaikan. Solusi ini memperkenalkan asumsi kepercayaan, tetapi dalam kasus Maker, asumsi ini diminimalkan karena operator oracle dikelola oleh organisasi yang sama yang menanggung risiko dengan memberikan pinjaman. 4.2. Biaya transaksi Biaya transaksi L2 sebagian besar ditentukan oleh interaksi dengan L1. Dalam kedua solusi biaya komputasi transaksi sangat murah karena dijalankan sepenuhnya secara off-chain. Optimism menerbitkan data panggilan transaksi L2 sebagai data panggilan dan jarang (atau tidak pernah) mengeksekusi kesalahan buktinya, oleh karena itu calldata adalah sumber daya yang paling mahal. Pada 12 Januari 2022 jaringan Bedrock telah diluncurkan di testnet Goerli Ethereum. Tingkat kompresi gas dapat dihitung dengan melacak jumlah gas yang digunakan pada Batuan Dasar dalam periode tertentu dan membandingkannya dengan jumlah gas yang dihabiskan pada L1 untuk blok terkait. Menggunakan metode ini kompresi gas tingkat ∼20 : 1 ditemukan, namun angka ini mungkin berbeda dengan aktivitas nyata di mainnet. StarkNet diterbitkan pada Ethereum setiap perubahan status L2 sebagai data panggilan, oleh karena itu penyimpanan adalah sumber daya yang paling mahal. Karena jaringan tidak menggunakan EVM, biaya transaksinya kompresi tidak dapat diperkirakan dengan mudah. Dengan mengasumsikan biaya eksekusi dan data panggilan dapat diabaikan, dimungkinkan untuk menghitung rasio kompresi penulisan penyimpanan dibandingkan dengan L1. Dengan asumsi tidak ada kontrak yang diterapkan dan 10 sel yang sebelumnya tidak diakses di StarkNet adalah dimodifikasi, ditemukan tingkat kompresi biaya tulis penyimpanan ∼24 : 1. Jika sel ditimpa 𝑛waktu antar publikasi data, biaya setiap penulisan akan menjadi 1/𝑛dibandingkan dengan biayanya dari satu tulisan, karena hanya yang terakhir yang diterbitkan. Biaya dapat diminimalkan lebih lanjut denganmengompresi nilai yang sering digunakan. Biaya verifikasi bukti keabsahan dibagi diantara transaksi yang dimaksud: misalnya, StarkNet blok 4779 berisi 200 transaksi dan bukti validitas mengkonsumsi 267830 unit gas atau 1339,15 gas untuk setiap transaksi. 4.2.1. Mengoptimalkan data panggilan: kontrak cache Disajikan di bawah ini adalah smart contract yang mengimplementasikan cache alamat yang sering digunakan alamat dengan memanfaatkan fakta bahwa penyimpanan dan eksekusi jauh lebih murah sumber daya, bersama dengan kontrak Teman yang menunjukkan penggunaannya. Yang terakhir melacak “teman” dari suatu alamat yang dapat didaftarkan dengan memanggil fungsi addFriend. Jika sebuah alamat telah digunakan minimal satu kali, dapat ditambahkan dengan memanggil addFriendWithCache fungsi: indeks cache adalah bilangan bulat 4-byte sedangkan alamat diwakili oleh 20 byte, jadi ada penghematan 5:1 pada argumen fungsi. Logika yang sama dapat digunakan untuk data lain jenis seperti bilangan bulat atau lebih umum byte. kontrak AlamatCache { pemetaan(alamat => uint32) alamat2 kunci publik; alamat[] kunci2 publik; fungsi cacheWrite(alamat _alamat) pengembalian internal (uint32) { require(key2address.length < type(uint32).max, "AddressCache: cache penuh"); require(address2key[_address] == 0, "AddressCache: alamat sudah di-cache"); // kunci harus dimulai dari 1 karena 0 berarti "tidak ditemukan" kunci uint32 = uint32(alamat kunci2.panjang + 1); alamat2kunci[_alamat] = kunci; key2address.push(_address); kunci kembali; } fungsi cacheRead(uint32 _key) tampilan publik kembali (alamat) { require(_key <= key2address.length && _key > 0, "AddressCache: kunci tidak ditemukan"); kembalikan alamat kunci2[_kunci - 1]; } } Daftar 2: Kontrak cache alamat. kontrak Teman adalah AddressCache { pemetaan(alamat => alamat[]) teman umum; fungsi addFriend(alamat _teman) publik { teman[pesan.pengirim].push(_teman); cacheWrite(_teman); } fungsi addFriendWithCache(uint32 _friendKey) publik { teman[pesan.pengirim].push(cacheRead(_friendKey)); } function getFriends() tampilan publik kembali (alamat[] memori) { kembalikan teman[pesan.pengirim];} } Listing 3: Contoh kontrak yang mewarisi cache alamat. Kontrak tersebut mendukung cache sekitar 4 miliar (232) alamat, dan menambahkan satu byte akan menghasilkan sekitar 1 triliun (240). 4.2.2. Mengoptimalkan penyimpanan: filter Bloom Pada StarkNet ada beberapa teknik untuk meminimalkan penggunaan penyimpanan. Jika tidak perlu menjamin ketersediaan data asli maka cukup untuk menyimpan hash on-chain-nya: ini adalah mekanisme yang digunakan untuk menyimpan data untuk ERC-721 (NFT) [22], yaitu tautan IPFS yang menyelesaikan hash data jika tersedia. Untuk data yang disimpan berkali-kali, dimungkinkan untuk menggunakan pencarian tabel serupa dengan sistem cache yang diperkenalkan untuk Optimism, yang mengharuskan semua nilai disimpan setidaknya sekali. Untuk beberapa aplikasi, menyimpan semua nilai dapat dihindari dengan menggunakan filter Bloom [23, 24, 25], yaitu struktur data probabilistik yang memungkinkan seseorang mengetahui dengan pasti apakah suatu elemen tidak termasuk dalam suatu himpunan tetapi memiliki kemungkinan salah yang kecil namun tidak dapat diabaikan positif. Filter Bloom diinisialisasi sebagai array 𝑚bit di nol. Untuk menambahkan elemen, 𝑘hash berfungsi dengan distribusi acak seragam digunakan, masing-masing memetakan ke sedikit array yang diatur ke 1. Untuk memeriksa apakah suatu elemen termasuk dalam himpunan, kita jalankan fungsi 𝑘hash dan verifikasi bahwa 𝑘bit disetel ke 1. Dalam filter Bloom yang sederhana, tidak ada cara untuk membedakan apakah suatu elemen sebenarnya termasuk dalam himpunan atau merupakan positif palsu, probabilitas yang bertambah seiring dengan bertambahnya angka entri meningkat. Setelah memasukkan 𝑛elemen: P[positif palsu] = (︃ 1 - [︂ 1 −1 𝑚 ]︂𝑘𝑛)︃𝑘 ≈ (︁ 1 −𝑒−𝑘𝑛/𝑚)︁𝑘 dengan asumsi independensi probabilitas setiap set bit. Jika 𝑛elemen (dengan ukuran sembarang!) adalah diharapkan untuk disertakan dan probabilitas toleransi positif palsu adalah 𝑝, ukuran array dapat dihitung sebagai: 𝑚= −𝑛ln 𝑝 (dalam 2)2 Sedangkan jumlah fungsi hash yang optimal adalah: 𝑘= 𝑚 𝑛ln 2 Jika kita berasumsi untuk memasukkan 1000 elemen dengan toleransi 1%, ukuran array adalah 9585 bit dengan 𝑘= 6, sedangkan untuk toleransi 0.1% menjadi 14377 bit dengan 𝑘= 9. Jika sejuta elemen diharapkan untuk dimasukkan, ukuran array menjadi sekitar 1170 kB untuk 1% dan 1775 kB untuk 0,1%, dengan nilai 𝑘 yang sama, karena hanya bergantung pada 𝑝[26]. Dalam permainan di mana pemain tidak boleh ditugaskan ke lawan yang telah mereka tantang, alih-alih menyimpan daftar lawan masa lalu di penyimpanan untuk setiap pemain, kita dapat menggunakan Bloom menyaring. Risiko tidak menantang beberapa pemain seringkali dapat diterima, dan filter dapat diatur ulang secara berkala.4.3. Ethereum kompatibilitas Keuntungan utama karena kompatibel dengan EVM dan Ethereum adalah penggunaan kembali semua yang tersedia alat. Ethereum smart contracts dapat dipublikasikan di Optimism tanpa modifikasi apa pun atau audit baru. Dompet tetap kompatibel, alat pengembangan dan analisis statis, analisis umum alat, alat pengindeksan, dan oracles. Ethereum dan Soliditas memiliki sejarah panjang yang dipelajari dengan baik kerentanan, seperti serangan masuk kembali, luapan dan arus bawah, pinjaman kilat, dan oracle manipulasi. Oleh karena itu, Optimism mampu memperoleh sejumlah besar nilai dalam waktu singkat waktu. Memilih untuk mengadopsi mesin virtual yang berbeda berarti harus membangun kembali seluruh ekosistem, dengan keuntungan dari kebebasan implementasi yang lebih besar. StarkNet mengimplementasikan akun secara asli abstraksi, yang merupakan mekanisme dimana setiap akun adalah smart contract yang dapat diimplementasikan logika sewenang-wenang asalkan sesuai dengan antarmuka (maka istilah abstraksi): ini memungkinkan penggunaan skema tanda tangan digital yang berbeda, kemampuan untuk mengubah kunci pribadi menggunakan alamat yang sama, atau gunakan multisig. Komunitas Ethereum mengusulkan pengenalan ini mekanisme dengan EIP-2938 pada tahun 2020, tetapi proposal tersebut tetap basi selama lebih dari satu tahun karena pembaruan lainnya telah diberi prioritas lebih [27]. Manfaat penting lainnya yang diperoleh dari kompatibilitas adalah penggunaan kembali klien yang sudah ada: Optimism menggunakan versi geth untuk simpulnya sendiri dengan hanya ∼800 baris perbedaan, yang telah terjadi dikembangkan, diuji, dan dipelihara sejak tahun 2014. Memiliki klien yang kuat sangatlah penting dalam definisinya apa yang diterima valid atau tidak dalam jaringan. Bug dalam penerapan bukti kesalahan sistem dapat menyebabkan bukti yang salah diterima sebagai benar atau bukti yang benar untuk tidak valid blok untuk diterima sebagai salah, membahayakan sistem. Kemungkinan seperti ini serangan dapat dibatasi dengan keragaman klien yang lebih luas: Optimism dapat digunakan kembali selain mendapatkan klien Ethereum lainnya telah dikelola, dan pengembangan klien berbasis Erigon lainnya sedang dilakukan sudah berlangsung. Pada tahun 2016 masalah dalam manajemen memori geth dieksploitasi untuk a Serangan DoS dan garis pertahanan pertama adalah merekomendasikan penggunaan Parity, yang kedua terbanyak klien yang digunakan pada saat itu 5. StarkNet menghadapi masalah yang sama dengan bukti validitas, tetapi klien harus ditulis dari awal dan sistem pembuktiannya jauh lebih kompleks, dan akibatnya itu juga jauh lebih kompleks untuk memastikan kebenarannya.

บทสรุป

  1. บทสรุป Rollups เป็นโซลูชันที่มีแนวโน้มมากที่สุดที่มีอยู่ในปัจจุบันในการแก้ปัญหาความสามารถในการขยายขนาด การกระจายอำนาจ blockchains ปูทางไปสู่ยุคของโมดูลาร์ blockchains เมื่อเทียบกับ เสาหิน blockchains ทางเลือกในการพัฒนา Optimistic Rollup หรือ Validity Rollup จะแสดงไว้เป็นหลัก เป็นการแลกเปลี่ยนระหว่างความซับซ้อนและความคล่องตัว StarkNet มีข้อดีมากมาย เช่น รวดเร็ว การถอนตัว การไร้ความสามารถเชิงโครงสร้างเพื่อให้มีการเปลี่ยนสถานะที่ไม่ถูกต้อง ลดต้นทุนการทำธุรกรรมที่ ค่าใช้จ่ายของระยะเวลาการพัฒนาที่ยาวนานขึ้นและความเข้ากันไม่ได้กับ EVM ในขณะที่ Optimism มี ใช้ประโยชน์จากเศรษฐกิจแบบเครือข่ายเพื่อให้ได้ส่วนแบ่งตลาดที่สำคัญอย่างรวดเร็ว Optimism อย่างไรก็ตาม Bedrock มีการออกแบบแบบโมดูลาร์ที่ทำให้กลายเป็นสิ่งที่ใช้ได้ 5https://blog.ethereum.org/2016/09/22/ethereum-network-currently-undergoing-dos-attack

การยกเลิกในอนาคต: ปัจจุบัน Cannon ใช้ minigeth ที่คอมไพล์เป็น MIPS เพื่อพิสูจน์ข้อผิดพลาด แต่สถาปัตยกรรมเดียวกันสามารถใช้เพื่อรับวงจรและสร้างข้อพิสูจน์ความถูกต้องได้ การรวบรวมเครื่องที่ซับซ้อน เช่น EVM สำหรับสถาปัตยกรรมไมโครส่งผลให้ง่ายขึ้น วงจรที่ไม่ต้องดัดแปลงและตรวจสอบซ้ำในกรณีอัพเกรด RISC Zero คือ ก สถาปัตยกรรมไมโครที่ตรวจสอบได้พร้อมการพิสูจน์ STARK แล้วในการพัฒนาตาม RISC-V นั้น สามารถใช้เพื่อจุดประสงค์นี้เป็นทางเลือกแทน MIPS [28] แง่มุมหนึ่งที่ไม่ควรมองข้ามคือความซับซ้อนในการทำความเข้าใจวิธีการ เทคโนโลยีทำงาน จุดแข็งของ blockchains แบบดั้งเดิมคือสามารถตรวจสอบสถานะของได้ blockchain โดยไม่ไว้วางใจหน่วยงานบุคคลที่สามใดๆ อย่างไรก็ตาม ในกรณีของ StarkNet เป็นเช่นนั้น จำเป็นต้องเชื่อถือการดำเนินการเมื่อไม่สามารถตรวจสอบส่วนประกอบต่างๆ ได้ ขึ้นอยู่กับการเข้ารหัสและคณิตศาสตร์ขั้นสูง ซึ่งในขั้นต้นอาจสร้างความขัดแย้งให้กับ การนำเทคโนโลยีมาใช้ แต่เนื่องจากเครื่องมือและการใช้การพิสูจน์ความสมบูรณ์ก้าวหน้ายิ่งขึ้น นอกฟิลด์ blockchain หวังว่าปัญหานี้จะได้รับการแก้ไข

Kesimpulan

  1. Kesimpulan Rollup adalah solusi paling menjanjikan yang tersedia saat ini untuk memecahkan masalah skalabilitas blockchains yang terdesentralisasi, membuka jalan bagi era blockchains yang modular dibandingkan dengan monolitik blockchains. Pilihan untuk mengembangkan Optimistic Rollup atau Validity Rollup terutama ditampilkan sebagai trade-off antara kompleksitas dan ketangkasan. StarkNet memiliki banyak keunggulan seperti cepat penarikan, ketidakmampuan struktural untuk memiliki transisi negara yang tidak valid, biaya transaksi yang lebih rendah biaya periode pengembangan yang lebih lama dan ketidakcocokan dengan EVM, sedangkan Optimism memiliki memanfaatkan ekonomi jaringan untuk dengan cepat memperoleh pangsa pasar yang besar. Optimism Batuan dasar, bagaimanapun, memiliki desain modular yang memungkinkannya menjadi Validitas 5https://blog.ethereum.org/2016/09/22/ethereum-network-currently-undergoing-dos-attack

Rollup di masa mendatang: Cannon saat ini menggunakan minigeth yang dikompilasi ke MIPS sebagai bukti kesalahannya sistem, tetapi arsitektur yang sama dapat digunakan untuk memperoleh rangkaian dan menghasilkan bukti validitas. Mengkompilasi mesin yang kompleks seperti EVM untuk mikroarsitektur menghasilkan cara yang lebih sederhana sirkuit yang tidak perlu dimodifikasi dan diverifikasi ulang jika terjadi peningkatan. RISC Nol adalah a mikroarsitektur yang dapat diverifikasi dengan bukti STARK sudah dalam pengembangan berdasarkan RISC-V yang dapat digunakan untuk tujuan ini sebagai alternatif untuk MIPS [28]. Salah satu aspek yang tidak boleh dianggap remeh adalah kompleksitas dalam memahami cara kerja teknologi bekerja. Kekuatan blockchain tradisional adalah mampu memverifikasi keadaan blockchain tanpa mempercayai entitas pihak ketiga mana pun. Namun, dalam kasus StarkNet, itu benar perlu untuk mempercayai implementasi ketika tidak mungkin untuk memverifikasi berbagai komponen berdasarkan kriptografi dan matematika tingkat lanjut. Hal ini pada awalnya dapat menimbulkan gesekan bagi adopsi teknologi, namun seiring kemajuan alat dan penggunaan bukti integritas di luar bidang blockchain semoga masalah ini dapat teratasi.