ข้างล่างนี้คือคำอธิบายอย่างละเอียดเกี่ยวกับ Polkadot1, Polkadot2, และวิธีที่พวกเขาพัฒนาเป็น JAM (สำหรับรายละเอียดเพิ่มเติมดูที่: https://www.navalmanack.com/almanack-of-naval-ravikant/how-to-think-clearly). บทความนี้มุ่งเน้นไปที่ผู้อ่านด้านเทคนิคโดยเฉพาะอย่างยิ่งผู้ที่อาจไม่คุ้นเคยมากับ Polkadot แต่มีความรู้เกี่ยวกับระบบบล็อกเชนบ้าง และมีโอกาสที่จะรู้จักเทคโนโลยีจากระบบนิวกับอื่น
ฉันเชื่อว่าบทความนี้เป็นสิ่งที่ดีก่อนที่จะอ่าน JAM Gray Paper (สำหรับข้อมูลเพิ่มเติมดูที่: https://graypaper.com/)
บทความนี้สันนิษฐานว่าผู้อ่านมีความรู้เรื่องแนวคิดต่อไปนี้:
เรามาทบทวนคุณลักษณะที่น่าประทับใจที่สุดของ Polkadot1 ก่อน
ปัจจุบันเรากำลังพูดถึงเครือข่ายชั้นที่ 1 ที่เป็นเจ้าภาพของเครือข่าย "บล็อกเชน" ชั้นที่ 2 อื่น ๆ โดยคล้ายกับ Polkadot และ Ethereum ดังนั้นคำว่า Layer 2 และ Parachain สามารถใช้แทนกันได้
ปัญหาหลักของความสามารถในการขยายของบล็อกเชนสามารถเข้าใจได้โดยการเรียงเป็นว่า: มีชุดของผู้ตรวจสอบที่ใช้เศรษฐศาสตร์ของการพิสูจน์โอนแบบสถานะ ทำให้การดำเนินการของรหัสบางอย่างเป็นไปได้ โดยค่าเริ่มต้น ผู้ตรวจสอบเหล่านี้ต้องทำการดำเนินการแบบใหม่ทั้งหมดของกัน ถ้าเราตรวจสอบแล้วว่าผู้ตรวจสอบทุกคนจะต้องทำการดำเนินการทุกอย่างเสมอ ระบบทั้งหมดยังคงไม่สามารถขยายได้
โปรดทราบว่า ตราบเท่าที่หลักการของการทำงานซ้ำอย่างแน่นอนยังคงเปลี่ยนแปลงไม่ไป การเพิ่มจำนวนผู้ตรวจสอบในโมเดลนี้จริงๆ แล้วไม่ทำให้ประสิทธิภาพของระบบดียิ่งขึ้น
นี้แสดงให้เห็นถึงบล็อกเชนแบบโมโนลิทิก (ต่างจากบล็อกเชนแบบชาร์ด) ผู้ตรวจสอบเครือข่ายทั้งหมดจะประมวลผลข้อมูลนำเข้า (เช่น บล็อก) ทีละอัน ในระบบเช่นนี้ ถ้าเลเยอร์ 1 ต้องการเป็นโฮสต์เพิ่มเลเยอร์ 2 แล้ว ผู้ตรวจสอบทั้งหมดจะต้องทำการประมวลผลงานของเลเยอร์ 2 ทั้งหมดอีกครั้ง โดยชัดเจนว่าวิธีนี้ไม่สามารถมีประสิทธิภาพ
Optimistic rollups address this issue by only re-executing (fraud proofs) when fraud is claimed. SNARK-based Rollups address this issue by leveraging the fact that the cost of validating SNARK proofs is significantly lower than the cost of generating them, thereby allowing all validators to efficiently verify SNARK proofs. For more details, refer to the “Appendix: Scalability Space Diagram.”
วิธีการแก้ปัญหาอย่างตรงไปตรงมาสำหรับการแบ่งชาร์ด คือการแบ่งชุดผู้ตรวจสอบเป็นชุดย่อยเล็ก ๆ และทำให้ชุดย่อยเหล่านี้รันบล็อกเลเยอร์ 2 ซ้ำอีกครั้ง ปัญหาที่เกิดขึ้นกับวิธีการเช่นนี้คือ เรากำลังแบ่งชาร์ดทั้งการดำเนินการและความปลอดภัยทางเศรษฐกิจของเครือข่าย แบบโซลูชันเลเยอร์ 2 ดังกล่าวมีความปลอดภัยต่ำกว่าเลเยอร์ 1 และความปลอดภัยลดลงต่อไปเมื่อเราแบ่งชุดผู้ตรวจสอบเป็นชุดย่อยมากขึ้น
ในขณะที่ optimistic rollups ที่ต้นแบบมีค่าใช้จ่ายในการทำงานใหม่ไม่สามารถหลีกเลี่ยงได้เสมอ Polkadot ถูกออกแบบมาพร้อมกับการทำงานแชร์ ซึ่งช่วยให้ส่วนหนึ่งของผู้ตรวจสอบสามารถที่จะทำงานใหม่บล็อก Layer 2 ในขณะที่ยังมีหลักฐานทางคริปโทเศียรที่เพียงพอต่อเครือข่ายทั้งหมดเพื่อพิสูจน์ว่าบล็อก Layer 2 เป็นปลอดภัยเท่าเทียมกับการที่ชุดตรวจสอบทั้งหมดได้ทำงานใหม่ นี่เป็นผลมาจากการใช้กลไกที่ใหม่ (และเร็วๆ นี้ได้รับการตีพิมพ์เป็นทางการ) ที่รู้จักกันดีว่า ELVES (สำหรับรายละเอียดเพิ่มเติม ดูที่: https://eprint.iacr.org/2024/961)
ในสรุป ELVES สามารถมองเป็นกลไก "suspicious rollups" ผ่านรอบหลาย ๆ รอบของ validators ที่สอบถาม validators คนอื่น ๆ ว่าบล็อก Layer 2 ที่กำหนดไว้ถูกต้องหรือไม่ เราสามารถยืนยันได้ด้วยความน่าจะเป็นสูงว่าความถูกต้องของบล็อก ในกรณีของข้อพิพาท ชุด validators เต็มรูปแบบก็จะเข้ามาในทันที ผู้ก่อตั้ง Polkadot Rob Habermeier ได้อธิบายอย่างละเอียดในบทความ (สำหรับข้อมูลเพิ่มเติม ดูที่: https://polkadot.com/blog/polkadot-v1-0-sharding-and-economic-security#approval-checking-and-finality)
ELVES ทำให้ Polkadot สามารถมีการดำเนินการแบ่งชั้นและความปลอดภัยที่ใช้ร่วมกัน 2 คุณสมบัติที่เรียกว่าไม่สามารถใช้ร่วมกันได้ก่อนหน้านี้ นี่คือความสำเร็จทางเทคนิคหลักของ Polkadot1 ในเรื่องของการขยายขอบเขต
ตอนนี้เรามาดูไปข้างหน้ากับการอุปมาของ "Core" กันบ้าง บล็อกเชนการดำเนินการแบบ Sharded คล้ายกับ CPU: เช่นเดียวกับ CPU ที่สามารถมีหลาย Core ที่ดำเนินการคำสั่งพร้อมกัน Polkadot สามารถประมวลผลบล็อกชั้นที่ 2 พร้อมกัน นี่คือเหตุผลที่ชั้นที่ 2 บน Polkadot เรียกว่า parachain และสภาพแวดล้อมที่สับสนที่ Validator ย่อยมีการดำเนินการทำซ้ำบล็อกชั้นที่ 2 เดียวกันเรียกว่า "core" แต่ละ core สามารถถูกจัดแยกออกเป็น "กลุ่มของ Validator ที่ร่วมมือ"
คุณสามารถคิดว่าบล็อกเชนแบบโมโนลิติกจะประมวลผลบล็อกเดียวในเวลาเดียวกัน ในขณะที่ Polkadot จะประมวลผลทั้งบล็อกเชนส่งข้อมูลและบล็อกพาราเชนสำหรับแต่ละคอร์ในช่วงเวลาเดียวกัน
จนถึงตอนนี้เราได้พูดถึงความสามารถในการขยายขนาดและการดำเนินการแบบ sharded ที่ Polkadot มีเสนอแล้วเท่านั้น สำคัญที่ต้องระบุคือว่าแต่ละชิ้นกระจายของ Polkadot นั้นจริง ๆ แล้วเป็นแอปพลิเคชันที่แตกต่างกันอย่างสมบูรณ์ นี้ทำได้โดยผ่าน metaprotocol ที่เก็บเป็น bytecode: protocol ที่เก็บคำจำกัดของบล็อกเชนเองเป็น bytecode ในสถานะของมัน ใน Polkadot 1.0 WASM ถูกใช้เป็น bytecode ที่เลือกใช้ ในขณะที่ใน JAM PVM/RISC-V ถูกนำมาใช้งาน
นี่คือเหตุผลที่ Polkadot ถูกอ้างถึงว่าเป็นบล็อกเชนที่แบ่งชิ้นเป็นส่วนต่าง ๆ (สำหรับรายละเอียดเพิ่มเติม ดูที่: https://x.com/kianenigma/status/1790763921600606259) ทุกชั้น Layer 2 เป็นแอปพลิเคชันที่แตกต่างอย่างสมบูรณ์
สิ่งสําคัญอย่างหนึ่งของ Polkadot2 คือการทําให้การใช้คอร์มีความยืดหยุ่นมากขึ้น ในรูปแบบ Polkadot ดั้งเดิมระยะเวลาการเช่าหลักอยู่ในช่วง 6 เดือนถึง 2 ปีซึ่งเหมาะกับองค์กรที่อุดมด้วยทรัพยากร แต่เป็นไปได้น้อยกว่าสําหรับทีมขนาดเล็ก คุณสมบัติที่ช่วยให้แกน Polkadot สามารถใช้งานได้อย่างยืดหยุ่นมากขึ้นเรียกว่า "Agile Coretime" (สําหรับรายละเอียดเพิ่มเติมโปรดดู: https://polkadot.com/agile-coretime) ในโหมดนี้ เงื่อนไขสัญญาเช่าหลักสามารถเริ่มต้นตั้งแต่บล็อกเดียวหรือนานถึงหนึ่งเดือน พร้อมที่จะมีราคาสูงสุดสำหรับผู้ที่ต้องการเช่าในระยะเวลายาว
คุณลักษณะอื่น ๆ ของ Polkadot 2 กำลังถูกเปิดเผยเรื่อย ๆ ขณะที่การสนทนาของเรากำลังก้าวหน้า ดังนั้นไม่จำเป็นต้องอธิบายเพิ่มเติมที่นี่
เพื่อเข้าใจ JAM ควรเข้าใจก่อนว่าเกิดอะไรขึ้นเมื่อบล็อก Layer 2 เข้าสู่ Polkadot core ครั้งแรก ดังนี้คืออธิบายอย่างง่าย
โปรดจำไว้ว่าซอร์สประกอบไปด้วยกลุ่มของผู้ตรวจสอบหลักๆ ดังนั้นเมื่อเราพูดว่า "ข้อมูลถูกส่งไปยังซอร์ส" หมายความว่าข้อมูลถูกส่งไปยังกลุ่มผู้ตรวจสอบเหล่านี้
บล็อก Layer 2 พร้อมกับส่วนหนึ่งของสถานะของ Layer 2 นั้นถูกส่งไปยังแกน. ข้อมูลนี้ประกอบด้วยข้อมูลทั้งหมดที่ต้องใช้ในการดำเนินการบล็อก Layer 2
ส่วนหนึ่งของผู้ตรวจสอบความถูกต้องของระบบจะทำการรันบล็อกชั้นที่ 2 อีกครั้งและดำเนินการต่อไปกับงานที่เกี่ยวข้องกับการตกลง
ผู้ตรวจสอบแกนหลักเหล่านี้จะให้ข้อมูลที่ถูกดำเนินการใหม่ให้กับผู้ตรวจสอบคนอื่นนอกเหนือจากแกนหลัก ตามกฎ ELVES ผู้ตรวจสอบเหล่านี้อาจตัดสินใจว่าจะดำเนินการใหม่บล็อกชั้นที่ 2 หรือไม่ โดยต้องใช้ข้อมูลนี้เพื่อดำเนินการ
สำคัญที่จะระบุว่า ตอนนี้ทุกการดำเนินการเหล่านี้กำลังเกิดขึ้นนอกบล็อก Polkadot หลักและฟังก์ชันการเปลี่ยนสถานะ ทุกอย่างเกิดขึ้นภายในคอร์และชั้นข้อมูลที่สามารถใช้ได้
จากนี้เราสามารถสำรวจหลาย ๆ การดำเนินงานสำคัญที่ Polkadot กำลังดำเนินการ
เข้าใจสิ่งนี้เป็นพื้นฐานสำหรับเข้าใจ JAM นี่คือสรุป:
ด้วยความเข้าใจนี้ เราสามารถนำเสนอ JAM ได้แล้ว
JAM เป็นโปรโตคอลใหม่ที่ได้รับแรงบันดาลจากการออกแบบของ Polkadot และเป็นไปตามมาตรฐานอย่างเต็มที่ โดยมีเป้าหมายที่จะแทนที่ Polkadot relay chain และทำให้การใช้งานหลักเป็นไปอย่างเต็มที่และไม่จำกัด
สร้างบน Polkadot 2, JAM มุ่งเน้นทำให้การสร้าง Layer 2s บนระบบหลักเป็นไปอย่างง่ายขึ้น มอบความยืดหยุ่นมากกว่าโมเดล agile-coretime
นี่เป็นการบรรลุผลโดยส่วนใหญ่โดยการเปิดเผยสามแนวคิดหลักที่ได้ถูกพูดถึงไว้ก่อนหน้านี้ให้แก่นักพัฒนา: การดำเนินการบนเชน, การดำเนินการในคอร์, และเลเยอร์ DA
กล่าวอีกอย่างคือ ใน JAM, นักพัฒนาสามารถ:
นี่เป็นภาพรวมพื้นฐานของวัตถุประสงค์ของ JAM โดยไม่ต้องบอกว่ามีการทำให้ง่ายลงมาก และโปรโตคอลน่าจะพัฒนาต่อไป
ด้วยความเข้าใจที่มีรากฐานนี้ เราสามารถลึกอย่างละเอียดเกี่ยวกับ JAM ในบทต่อไป
ใน JAM สิ่งที่เคยถูกเรียกว่าชั้นที่ 2 หรือพาราเชน ตอนนี้ถูกเรียกว่าบริการ, และสิ่งที่เคยถูกอ้างถึงเป็นบล็อกหรือธุรกรรมตอนนี้ถูกเรียกว่างานหรืองานแพ็คเกจ. โดยเฉพาะอย่างยิ่ง รายการงานเป็นของบริการ และ แพ็คเกจงานคือการรวบรวมของรายการงาน คำศัพท์เหล่านี้ถูกออกแบบโดยตั้งใจให้ครอบคลุมกรณีการใช้งานที่หลากหลายเกินไปจากกรณีการใช้งานบล็อกเชน/Layer 2
บริการถูกอธิบายโดยจุดเข้าถึงสามจุด ซึ่งสองจุดคือ fn refine() และ fn accumulate() จุดแรกอธิบายถึงบริการที่ทำในระหว่างการประมวลผลในภายใน และจุดที่สองอธิบายถึงการทำงานขณะการประมวลผลบนเชน
สุดท้ายชื่อของจุดเข้านี้เป็นเหตุผลที่โปรโตคอลเรียกว่า JAM (Join Accumulate Machine)เข้าร่วม หมายถึง fn refine()
, ซึ่งเป็นช่วงเวลาที่ทุกๆ คอร์ของ Polkadot ประมวลผลงานมากมายพร้อมกันในบริการต่างๆ หลายอัน หลังจากข้อมูลถูกประมวลผลแล้ว มันก็ย้ายไปสู่ขั้นตอนถัดไปสะสมหมายถึงกระบวนการที่สะสมผลลัพธ์ทั้งหมดเข้าสู่สถานะ JAM หลัก ซึ่งเกิดขึ้นในช่วงเวลาการดำเนินการบนเชน
รายการที่ทำงานสามารถระบุโค้ดที่พวกเขา execute ได้อย่างแม่นยำในคอร์และบนเชื่อมโยงได้อย่างไร และจากที่ไหนพวกเขาอ่านหรือเขียนเนื้อหาใน Distributed Data Lake ได้
การตรวจสอบเอกสารที่มีอยู่เกี่ยวกับ XCM (ภาษาที่ Polkadot เลือกสำหรับการสื่อสารระหว่างพาราเชน) การสื่อสารทั้งหมดเป็นแบบไม่เชื่อมต่อ (สำหรับรายละเอียดเพิ่มเติม ดูที่ที่นี่). นี่หมายความว่าเมื่อส่งข้อความแล้ว คุณไม่สามารถรอคำตอบได้ การสื่อสารแบบไม่เกี่ยวข้องเป็นอาการของความไม่สอดคล้องในระบบ และเป็นหนึ่งในข้อเสียหลักของระบบที่แบ่งแยกอย่างถาวร เช่น Polkadot 1, Polkadot 2, และระบบนิเวศ Layer 2 ของ Ethereum ที่มีอยู่
อย่างไรก็ตาม ตามที่อธิบายไว้ในส่วน 2.4 ของกระดาษสีเทา, ระบบที่สมบูรณ์แบบที่ยังคงเป็นระบบที่เป็นสม่ำเสมอสำหรับผู้เช่าทุกคนสามารถขยายได้เพียงอย่างใดๆ โดยไม่เสียจากความสามารถในการใช้งานทั่วไป การเข้าถึงหรือความทนทาน
นี่คือที่ JAM โดดเด่น: โดยการนำเสนอคุณลักษณะหลายรูปแบบ JAM บรรลุสถานะกลางที่ใหม่ที่รู้จักกันว่าเป็นระบบที่มีความสอดคล้องบางส่วน ในระบบนี้ ระบบย่อยที่สื่อสารบ่อยสามารถสร้างสภาพแวดล้อมที่สอดคล้องกันกับกันโดยไม่บังคับให้ระบบทั้งหมดเป็นสม่ำเสมอ นี่เป็นการอธิบายที่ดีที่สุดจากดร. กาวิน วูดผู้เขียนกระดาษสีเทาในการสัมภาษณ์https://www.youtube.com/watch?t=1378&v=O3kRAVBTkfs&embeds_referring_euri=https%3A%2F%2Fblog.kianenigma.nl%2F&source_ve_path=OTY3MTQ
วิธีอื่น ๆ ในการเข้าใจสิ่งนี้คือการมอง Polkadot/JAM เป็นระบบที่ถูกแบ่งเป็นชั้น โดยที่ขอบเขตระหว่างชั้นเหล่านี้เป็นสิ่งที่เปลี่ยนไปอย่างยืดหยุ่นและถูกกำหนดไว้โดยเชิงพลวัต
Polkadot มีการแบ่งแยกและหลากหลายอย่างอยู่เสมอ
ตอนนี้มันไม่เพียงแต่ถูกแบ่งพิเศษและแตกต่างกัน แต่ขอบเขตของชาร์ดเหล่านี้สามารถกำหนดได้อย่างยืดหยุ่น - สิ่งที่ Gavin Wood อ้างถึงว่าเป็นระบบ 'semi-consistent' ในทวีตของเขาและกระดาษสีเทา (โปรดดู: https://x.com/gavofyork?ref_src=twsrc%5Etfw、https://graypaper.com/)
มีลักษณะหลายอย่างทำให้สถานะที่เป็นไปได้นี้เป็นไปได้:
สำคัญที่จะระบุว่าในขณะที่ความสามารถเหล่านี้เป็นไปได้ภายใน JAM แต่ไม่ได้บังคับที่ระดับโปรโตคอล ดังนั้น บางอินเตอร์เฟซเป็นทฤษฎีเป็นไม่เช่นเดียวกันแต่สามารถทำงานแบบซิงโครนัสในปฏิบัติได้เนื่องจากการนำเสนอที่ซับซ้อนและสาระสำคัญ CorePlay ซึ่งจะถูกพูดถึงในส่วนถัดไป เป็นตัวอย่างของปรากฎการณ์นี้
ในส่วนนี้จะแนะนำ CorePlay ซึ่งเป็นแนวคิดการทดลองในสภาพแวดล้อม JAM ซึ่งสามารถบรรยายได้ว่าเป็นรูปแบบโปรแกรมสมาร์ทคอนแทร็คใหม่ ณ เวลาที่เขียน CorePlay ยังไม่ได้ถูกกำหนดอย่างเต็มที่และยังคงเป็นแนวคิดที่อยู่ในระดับสมมติ
เพื่อเข้าใจ CorePlay เราต้องแนะนำเครื่องจำลองเสมือน (VM) ที่ถูกเลือกโดย JAM: PVM
PVM เป็นรายละเอียดสำคัญในทั้ง JAM และ CorePlay รายละเอียดระดับต่ำของ PVM อยู่เหนือขอบเขตของเอกสารนี้และดีที่สุดที่จะอธิบายโดยผู้เชี่ยวชาญด้านโดเมนใน Graypaper อย่างไรก็ตาม สำหรับคำอธิบายนี้เราจะเน้นที่บางคุณสมบัติสำคัญของ PVM
ส่วนหลังสำคัญอย่างยิ่งสำหรับ CorePlay
CorePlay เป็นตัวอย่างของวิธีที่ JAM's flexible primitives สามารถใช้ในการสร้างสภาพแวดล้อมสัญญาฉลาดที่เป็นซิงโครนัสและมีขยายตัวได้ด้วยอินเตอร์เฟซการเขียนโปรแกรมที่ยืดหยุ่นมาก CorePlay предложенияว่า สัญญาฉลาดที่ขึ้นอยู่กับนักแสดง ควรถูกติดตั้งโดยตรงบน JAM cores ทำให้พวกเขาได้รับประโยชน์จากอินเตอร์เฟซการเขียนโปรแกรมแบบซิงโครนัส นักพัฒนาสามารถเขียนสัญญาฉลาดเหมือนกับว่าพวกเขาเป็นฟังก์ชัน main() อย่างง่ายๆ โดยใช้นิพจน์เช่น let result = other_coreplay_actor(data).await?เพื่อสื่อสาร ถ้านักแสดงคอร์เพลย์คนอื่นอยู่บนคอร์ JAM เดียวกันในบล็อกเดียวกัน การเรียกนี้เป็นการเรียกที่เป็นพร้อมกัน หากอยู่บนคอร์อื่น นักแสดงจะถูกระงับและดำเนินการต่อในบล็อก JAM ถัดไป สิ่งนี้เป็นไปได้ด้วย JAM services, การจัดงานที่ยืดหยุ่นของพวกเขา และความสามารถของ PVM
ในที่สุด เรามาสรุปเหตุผลหลักที่ JAM เข้ากันได้อย่างสมบูรณ์กับ Polkadot ได้ เกี่ยวกับผลิตภัณฑ์ปัจจุบันของ Polkadot คือ parachains ที่มี agile-coretime ซึ่งยังคงต่อเนื่องใน JAM บริการที่ถูกนำไปใช้งานเป็นอันดับแรกใน JAM จะเป็น CoreChains หรือ Parachains ซึ่งทำให้ parachains แบบ Polkadot-2 ที่มีอยู่สามารถทำงานบน JAM
บริการเพิ่มเติมสามารถนำไปใช้บน JAM และบริการ CoreChains ที่มีอยู่สามารถสื่อสารกับพวกเขา อย่างไรก็ตาม ผลิตภัณฑ์ปัจจุบันของ Polkadot จะยังคงมั่นคง แค่เปิดรับประตูใหม่สำหรับทีม Parachain ที่มีอยู่
ส่วนใหญ่ของเอกสารนี้กล่าวถึงประสิทธิภาพในแง่มุมของการแบ่งชาร์ดในการดำเนินการ อย่างไรก็ตาม เรายังสามารถสำรวจปัญหานี้จากมุมมองของการแบ่งชาร์ดข้อมูลได้ด้วย น่าสนใจที่เราพบว่าสิ่งนี้คล้ายกับโมเดลที่มีความสอดคล้องบางส่วนที่กล่าวถึงไว้ก่อนหน้านี้ โดยหลักการแล้ว ระบบที่สอดคล้องอย่างสมบูรณ์นั้นเป็นที่เหนือกว่า แต่ไม่สามารถขยายขนาดได้ ในขณะที่ระบบที่ไม่สอดคล้องอย่างสมบูรณ์มีประสิทธิภาพในการขยายขนาดได้ดี แต่ไม่ได้ถูกเลือกตั้ง JAM ด้วยโมเดลที่มีความสอดคล้องบางส่วน นำเสนอทางเลือกใหม่
JAM นำเสนอสิ่งที่เกินกว่าตัวเลือกสองตัวนี้: มันช่วยให้นักพัฒนาสามารถเผยแพร่ข้อมูลอย่างสมบูรณ์ไปยังชั้นข้อมูล JAM DA ซึ่งทำหน้าที่เป็นพื้นที่กลางระหว่างข้อมูล on-chain และ off-chain แอปพลิเคชันใหม่สามารถสร้างขึ้นโดยใช้ชั้น DA เพื่อข้อมูลส่วนมากของพวกเขาในขณะที่เฉพาะข้อมูลสำคัญที่สุดจะถูกบันทึกไว้ในสถานะ JAM
ส่วนนี้จะกลับมาพิจารณามุมมองของเราเกี่ยวกับความสามารถในการขยายของบล็อกเชนซึ่งก็ได้ถูกพูดถึงในเกรย์เปเปอร์ ถึงแม้จะนำเสนอที่นี่ในรูปแบบที่กระชับกว่า
การขยายขอบเขตของบล็อกเชนส่วนใหญ่จะปฏิบัติตามวิธีการ传统จากระบบกระจาย: การขยายแนวตั้งและการขยายแนวนอน
การเพิ่มมาตราส่วนในแนวตั้งคือสิ่งที่แพลตฟอร์มเช่น Solana ให้ความสำคัญกับการเพิ่มประสิทธิภาพของการทำงานโดยการปรับปรุงทั้งโค้ดและฮาร์ดแวร์ให้สูงสุด
การขยายขนาดแนวนอนเป็นกลยุทธ์ที่ Ethereum และ Polkadot นำมาใช้: ลดภาระงานที่แต่ละผู้เข้าร่วมต้องจัดการ ในระบบกระจายแบบดั้งเดิม สิ่งนี้ถูกบรรจุไว้โดยการเพิ่มเครื่องคัดลอกเพิ่มเติม ในบล็อกเชน “คอมพิวเตอร์” คือเครือข่ายทั้งหมดของผู้ตรวจสอบ โดยการแบ่งงานให้พวกเขา (เช่น ELVES ทำ) หรือลดหน้าที่ของพวกเขาให้มีความหวัง (เช่นใน Optimistic Rollups) เราลดภาระงานสำหรับเซ็ตผู้ตรวจสอบทั้งหมดลง ซึ่งทำให้การขยายขนาดแนวนอนเป็นไปได้
ในบล็อกเชน การขยายมิติแนวนอนสามารถเปรียบเสมือนกับ "การลดจำนวนเครื่องที่ต้องดำเนินการทุก ๆ กระบวนการ"
สรุป:
ส่วนนี้เรียกตามคำอุปมาของ Rob Habermeier จาก Sub0 2023: Polkadot: Kernel/Userland | Sub0 2023 - YouTube (see: https://www.youtube.com/watch?v=15aXYvVMxlw) เปิดตัว JAM ในฐานะการอัปเกรดสำหรับ Polkadot: การอัปเดตเคอร์เนลบนฮาร์ดแวร์เดียวกัน
ในคอมพิวเตอร์ปกติ เราสามารถแบ่งสแต็กทั้งหมดเป็นสามส่วน:
ใน Polkadot ฮาร์ดแวร์—โครงสร้างหลักที่ให้บริการคำนวณและความพร้อมในการใช้ข้อมูล—เป็นเสมอ โดยที่เคยกล่าวถึงก่อนหน้านี้
ใน Polkadot, kernel ประกอบด้วยส่วนหลักสองส่วนจนถึงปัจจุบัน:
ทั้งสองอยู่ใน Polkadot’s Relay Chain
แอปพลิเคชันในพื้นที่ผู้ใช้ในทางตรงข้ามก็คือ parachains ตัวเอง โทเคนเชื้อเพลิงของพวกเขา และทุกสิ่งที่สร้างขึ้นบนพวกเขา
เราสามารถมองเห็นกระบวนการนี้ได้ดังนี้:
Polkadot ฝันถึงการย้ายฟังก์ชันหลักเพิ่มเติมไปยังผู้ใช้หลักของตน - พาราเชน นี่คือเป้าหมายของ Minimal Relay RFC อย่างแน่นอน (สำหรับรายละเอียดเพิ่มเติม ดูที่Minimal Relay RFC)
นี่หมายความว่าโพลคาดอทเรลเลย์เชนจะเกี่ยวข้องเพียงในการ提供โปรโตคอลพาราเชนเท่านั้น ซึ่งจะทำให้พื้นที่ของเคอร์เนลลดลงบ้าง
เมื่อโครงสร้างนี้ถูกนำมาใช้ จะง่ายขึ้นในการมองเห็นว่าการย้าย JAM จะเป็นอย่างไร การย้าย JAM จะลดพื้นที่ของ kernel ของ Polkadot ลงอย่างมีนัยสำคัญ ทำให้มีความหลากหลายมากขึ้น อีกทั้งโปรโตคอล Parachains จะย้ายไปยัง user space เนื่องจากมันเป็นหนึ่งในวิธีเดียวที่สามารถสร้างแอปพลิเคชันบนส่วนสำคัญ (ฮาร์ดแวร์) เดียวกันและ kernel (JAM)
นี่ยังเสริมความแข็งแกร่งของเหตุผลที่ JAM เป็นทางเลือกสำหรับ Polkadot Relay Chain ไม่ใช่สำหรับ parachains ครับ
กล่าวอีกอย่างคือ เราสามารถมองการย้าย JAM เป็นการอัพเกรดเคอร์เนล ฮาร์ดแวร์พื้นฐานยังคงเหมือนเดิม และเนื้อหาของเคอร์เนลเก่ามีการย้ายไปยังพื้นที่ผู้ใช้เพื่อทำให้ระบบง่ายขึ้น
ข้างล่างนี้คือคำอธิบายอย่างละเอียดเกี่ยวกับ Polkadot1, Polkadot2, และวิธีที่พวกเขาพัฒนาเป็น JAM (สำหรับรายละเอียดเพิ่มเติมดูที่: https://www.navalmanack.com/almanack-of-naval-ravikant/how-to-think-clearly). บทความนี้มุ่งเน้นไปที่ผู้อ่านด้านเทคนิคโดยเฉพาะอย่างยิ่งผู้ที่อาจไม่คุ้นเคยมากับ Polkadot แต่มีความรู้เกี่ยวกับระบบบล็อกเชนบ้าง และมีโอกาสที่จะรู้จักเทคโนโลยีจากระบบนิวกับอื่น
ฉันเชื่อว่าบทความนี้เป็นสิ่งที่ดีก่อนที่จะอ่าน JAM Gray Paper (สำหรับข้อมูลเพิ่มเติมดูที่: https://graypaper.com/)
บทความนี้สันนิษฐานว่าผู้อ่านมีความรู้เรื่องแนวคิดต่อไปนี้:
เรามาทบทวนคุณลักษณะที่น่าประทับใจที่สุดของ Polkadot1 ก่อน
ปัจจุบันเรากำลังพูดถึงเครือข่ายชั้นที่ 1 ที่เป็นเจ้าภาพของเครือข่าย "บล็อกเชน" ชั้นที่ 2 อื่น ๆ โดยคล้ายกับ Polkadot และ Ethereum ดังนั้นคำว่า Layer 2 และ Parachain สามารถใช้แทนกันได้
ปัญหาหลักของความสามารถในการขยายของบล็อกเชนสามารถเข้าใจได้โดยการเรียงเป็นว่า: มีชุดของผู้ตรวจสอบที่ใช้เศรษฐศาสตร์ของการพิสูจน์โอนแบบสถานะ ทำให้การดำเนินการของรหัสบางอย่างเป็นไปได้ โดยค่าเริ่มต้น ผู้ตรวจสอบเหล่านี้ต้องทำการดำเนินการแบบใหม่ทั้งหมดของกัน ถ้าเราตรวจสอบแล้วว่าผู้ตรวจสอบทุกคนจะต้องทำการดำเนินการทุกอย่างเสมอ ระบบทั้งหมดยังคงไม่สามารถขยายได้
โปรดทราบว่า ตราบเท่าที่หลักการของการทำงานซ้ำอย่างแน่นอนยังคงเปลี่ยนแปลงไม่ไป การเพิ่มจำนวนผู้ตรวจสอบในโมเดลนี้จริงๆ แล้วไม่ทำให้ประสิทธิภาพของระบบดียิ่งขึ้น
นี้แสดงให้เห็นถึงบล็อกเชนแบบโมโนลิทิก (ต่างจากบล็อกเชนแบบชาร์ด) ผู้ตรวจสอบเครือข่ายทั้งหมดจะประมวลผลข้อมูลนำเข้า (เช่น บล็อก) ทีละอัน ในระบบเช่นนี้ ถ้าเลเยอร์ 1 ต้องการเป็นโฮสต์เพิ่มเลเยอร์ 2 แล้ว ผู้ตรวจสอบทั้งหมดจะต้องทำการประมวลผลงานของเลเยอร์ 2 ทั้งหมดอีกครั้ง โดยชัดเจนว่าวิธีนี้ไม่สามารถมีประสิทธิภาพ
Optimistic rollups address this issue by only re-executing (fraud proofs) when fraud is claimed. SNARK-based Rollups address this issue by leveraging the fact that the cost of validating SNARK proofs is significantly lower than the cost of generating them, thereby allowing all validators to efficiently verify SNARK proofs. For more details, refer to the “Appendix: Scalability Space Diagram.”
วิธีการแก้ปัญหาอย่างตรงไปตรงมาสำหรับการแบ่งชาร์ด คือการแบ่งชุดผู้ตรวจสอบเป็นชุดย่อยเล็ก ๆ และทำให้ชุดย่อยเหล่านี้รันบล็อกเลเยอร์ 2 ซ้ำอีกครั้ง ปัญหาที่เกิดขึ้นกับวิธีการเช่นนี้คือ เรากำลังแบ่งชาร์ดทั้งการดำเนินการและความปลอดภัยทางเศรษฐกิจของเครือข่าย แบบโซลูชันเลเยอร์ 2 ดังกล่าวมีความปลอดภัยต่ำกว่าเลเยอร์ 1 และความปลอดภัยลดลงต่อไปเมื่อเราแบ่งชุดผู้ตรวจสอบเป็นชุดย่อยมากขึ้น
ในขณะที่ optimistic rollups ที่ต้นแบบมีค่าใช้จ่ายในการทำงานใหม่ไม่สามารถหลีกเลี่ยงได้เสมอ Polkadot ถูกออกแบบมาพร้อมกับการทำงานแชร์ ซึ่งช่วยให้ส่วนหนึ่งของผู้ตรวจสอบสามารถที่จะทำงานใหม่บล็อก Layer 2 ในขณะที่ยังมีหลักฐานทางคริปโทเศียรที่เพียงพอต่อเครือข่ายทั้งหมดเพื่อพิสูจน์ว่าบล็อก Layer 2 เป็นปลอดภัยเท่าเทียมกับการที่ชุดตรวจสอบทั้งหมดได้ทำงานใหม่ นี่เป็นผลมาจากการใช้กลไกที่ใหม่ (และเร็วๆ นี้ได้รับการตีพิมพ์เป็นทางการ) ที่รู้จักกันดีว่า ELVES (สำหรับรายละเอียดเพิ่มเติม ดูที่: https://eprint.iacr.org/2024/961)
ในสรุป ELVES สามารถมองเป็นกลไก "suspicious rollups" ผ่านรอบหลาย ๆ รอบของ validators ที่สอบถาม validators คนอื่น ๆ ว่าบล็อก Layer 2 ที่กำหนดไว้ถูกต้องหรือไม่ เราสามารถยืนยันได้ด้วยความน่าจะเป็นสูงว่าความถูกต้องของบล็อก ในกรณีของข้อพิพาท ชุด validators เต็มรูปแบบก็จะเข้ามาในทันที ผู้ก่อตั้ง Polkadot Rob Habermeier ได้อธิบายอย่างละเอียดในบทความ (สำหรับข้อมูลเพิ่มเติม ดูที่: https://polkadot.com/blog/polkadot-v1-0-sharding-and-economic-security#approval-checking-and-finality)
ELVES ทำให้ Polkadot สามารถมีการดำเนินการแบ่งชั้นและความปลอดภัยที่ใช้ร่วมกัน 2 คุณสมบัติที่เรียกว่าไม่สามารถใช้ร่วมกันได้ก่อนหน้านี้ นี่คือความสำเร็จทางเทคนิคหลักของ Polkadot1 ในเรื่องของการขยายขอบเขต
ตอนนี้เรามาดูไปข้างหน้ากับการอุปมาของ "Core" กันบ้าง บล็อกเชนการดำเนินการแบบ Sharded คล้ายกับ CPU: เช่นเดียวกับ CPU ที่สามารถมีหลาย Core ที่ดำเนินการคำสั่งพร้อมกัน Polkadot สามารถประมวลผลบล็อกชั้นที่ 2 พร้อมกัน นี่คือเหตุผลที่ชั้นที่ 2 บน Polkadot เรียกว่า parachain และสภาพแวดล้อมที่สับสนที่ Validator ย่อยมีการดำเนินการทำซ้ำบล็อกชั้นที่ 2 เดียวกันเรียกว่า "core" แต่ละ core สามารถถูกจัดแยกออกเป็น "กลุ่มของ Validator ที่ร่วมมือ"
คุณสามารถคิดว่าบล็อกเชนแบบโมโนลิติกจะประมวลผลบล็อกเดียวในเวลาเดียวกัน ในขณะที่ Polkadot จะประมวลผลทั้งบล็อกเชนส่งข้อมูลและบล็อกพาราเชนสำหรับแต่ละคอร์ในช่วงเวลาเดียวกัน
จนถึงตอนนี้เราได้พูดถึงความสามารถในการขยายขนาดและการดำเนินการแบบ sharded ที่ Polkadot มีเสนอแล้วเท่านั้น สำคัญที่ต้องระบุคือว่าแต่ละชิ้นกระจายของ Polkadot นั้นจริง ๆ แล้วเป็นแอปพลิเคชันที่แตกต่างกันอย่างสมบูรณ์ นี้ทำได้โดยผ่าน metaprotocol ที่เก็บเป็น bytecode: protocol ที่เก็บคำจำกัดของบล็อกเชนเองเป็น bytecode ในสถานะของมัน ใน Polkadot 1.0 WASM ถูกใช้เป็น bytecode ที่เลือกใช้ ในขณะที่ใน JAM PVM/RISC-V ถูกนำมาใช้งาน
นี่คือเหตุผลที่ Polkadot ถูกอ้างถึงว่าเป็นบล็อกเชนที่แบ่งชิ้นเป็นส่วนต่าง ๆ (สำหรับรายละเอียดเพิ่มเติม ดูที่: https://x.com/kianenigma/status/1790763921600606259) ทุกชั้น Layer 2 เป็นแอปพลิเคชันที่แตกต่างอย่างสมบูรณ์
สิ่งสําคัญอย่างหนึ่งของ Polkadot2 คือการทําให้การใช้คอร์มีความยืดหยุ่นมากขึ้น ในรูปแบบ Polkadot ดั้งเดิมระยะเวลาการเช่าหลักอยู่ในช่วง 6 เดือนถึง 2 ปีซึ่งเหมาะกับองค์กรที่อุดมด้วยทรัพยากร แต่เป็นไปได้น้อยกว่าสําหรับทีมขนาดเล็ก คุณสมบัติที่ช่วยให้แกน Polkadot สามารถใช้งานได้อย่างยืดหยุ่นมากขึ้นเรียกว่า "Agile Coretime" (สําหรับรายละเอียดเพิ่มเติมโปรดดู: https://polkadot.com/agile-coretime) ในโหมดนี้ เงื่อนไขสัญญาเช่าหลักสามารถเริ่มต้นตั้งแต่บล็อกเดียวหรือนานถึงหนึ่งเดือน พร้อมที่จะมีราคาสูงสุดสำหรับผู้ที่ต้องการเช่าในระยะเวลายาว
คุณลักษณะอื่น ๆ ของ Polkadot 2 กำลังถูกเปิดเผยเรื่อย ๆ ขณะที่การสนทนาของเรากำลังก้าวหน้า ดังนั้นไม่จำเป็นต้องอธิบายเพิ่มเติมที่นี่
เพื่อเข้าใจ JAM ควรเข้าใจก่อนว่าเกิดอะไรขึ้นเมื่อบล็อก Layer 2 เข้าสู่ Polkadot core ครั้งแรก ดังนี้คืออธิบายอย่างง่าย
โปรดจำไว้ว่าซอร์สประกอบไปด้วยกลุ่มของผู้ตรวจสอบหลักๆ ดังนั้นเมื่อเราพูดว่า "ข้อมูลถูกส่งไปยังซอร์ส" หมายความว่าข้อมูลถูกส่งไปยังกลุ่มผู้ตรวจสอบเหล่านี้
บล็อก Layer 2 พร้อมกับส่วนหนึ่งของสถานะของ Layer 2 นั้นถูกส่งไปยังแกน. ข้อมูลนี้ประกอบด้วยข้อมูลทั้งหมดที่ต้องใช้ในการดำเนินการบล็อก Layer 2
ส่วนหนึ่งของผู้ตรวจสอบความถูกต้องของระบบจะทำการรันบล็อกชั้นที่ 2 อีกครั้งและดำเนินการต่อไปกับงานที่เกี่ยวข้องกับการตกลง
ผู้ตรวจสอบแกนหลักเหล่านี้จะให้ข้อมูลที่ถูกดำเนินการใหม่ให้กับผู้ตรวจสอบคนอื่นนอกเหนือจากแกนหลัก ตามกฎ ELVES ผู้ตรวจสอบเหล่านี้อาจตัดสินใจว่าจะดำเนินการใหม่บล็อกชั้นที่ 2 หรือไม่ โดยต้องใช้ข้อมูลนี้เพื่อดำเนินการ
สำคัญที่จะระบุว่า ตอนนี้ทุกการดำเนินการเหล่านี้กำลังเกิดขึ้นนอกบล็อก Polkadot หลักและฟังก์ชันการเปลี่ยนสถานะ ทุกอย่างเกิดขึ้นภายในคอร์และชั้นข้อมูลที่สามารถใช้ได้
จากนี้เราสามารถสำรวจหลาย ๆ การดำเนินงานสำคัญที่ Polkadot กำลังดำเนินการ
เข้าใจสิ่งนี้เป็นพื้นฐานสำหรับเข้าใจ JAM นี่คือสรุป:
ด้วยความเข้าใจนี้ เราสามารถนำเสนอ JAM ได้แล้ว
JAM เป็นโปรโตคอลใหม่ที่ได้รับแรงบันดาลจากการออกแบบของ Polkadot และเป็นไปตามมาตรฐานอย่างเต็มที่ โดยมีเป้าหมายที่จะแทนที่ Polkadot relay chain และทำให้การใช้งานหลักเป็นไปอย่างเต็มที่และไม่จำกัด
สร้างบน Polkadot 2, JAM มุ่งเน้นทำให้การสร้าง Layer 2s บนระบบหลักเป็นไปอย่างง่ายขึ้น มอบความยืดหยุ่นมากกว่าโมเดล agile-coretime
นี่เป็นการบรรลุผลโดยส่วนใหญ่โดยการเปิดเผยสามแนวคิดหลักที่ได้ถูกพูดถึงไว้ก่อนหน้านี้ให้แก่นักพัฒนา: การดำเนินการบนเชน, การดำเนินการในคอร์, และเลเยอร์ DA
กล่าวอีกอย่างคือ ใน JAM, นักพัฒนาสามารถ:
นี่เป็นภาพรวมพื้นฐานของวัตถุประสงค์ของ JAM โดยไม่ต้องบอกว่ามีการทำให้ง่ายลงมาก และโปรโตคอลน่าจะพัฒนาต่อไป
ด้วยความเข้าใจที่มีรากฐานนี้ เราสามารถลึกอย่างละเอียดเกี่ยวกับ JAM ในบทต่อไป
ใน JAM สิ่งที่เคยถูกเรียกว่าชั้นที่ 2 หรือพาราเชน ตอนนี้ถูกเรียกว่าบริการ, และสิ่งที่เคยถูกอ้างถึงเป็นบล็อกหรือธุรกรรมตอนนี้ถูกเรียกว่างานหรืองานแพ็คเกจ. โดยเฉพาะอย่างยิ่ง รายการงานเป็นของบริการ และ แพ็คเกจงานคือการรวบรวมของรายการงาน คำศัพท์เหล่านี้ถูกออกแบบโดยตั้งใจให้ครอบคลุมกรณีการใช้งานที่หลากหลายเกินไปจากกรณีการใช้งานบล็อกเชน/Layer 2
บริการถูกอธิบายโดยจุดเข้าถึงสามจุด ซึ่งสองจุดคือ fn refine() และ fn accumulate() จุดแรกอธิบายถึงบริการที่ทำในระหว่างการประมวลผลในภายใน และจุดที่สองอธิบายถึงการทำงานขณะการประมวลผลบนเชน
สุดท้ายชื่อของจุดเข้านี้เป็นเหตุผลที่โปรโตคอลเรียกว่า JAM (Join Accumulate Machine)เข้าร่วม หมายถึง fn refine()
, ซึ่งเป็นช่วงเวลาที่ทุกๆ คอร์ของ Polkadot ประมวลผลงานมากมายพร้อมกันในบริการต่างๆ หลายอัน หลังจากข้อมูลถูกประมวลผลแล้ว มันก็ย้ายไปสู่ขั้นตอนถัดไปสะสมหมายถึงกระบวนการที่สะสมผลลัพธ์ทั้งหมดเข้าสู่สถานะ JAM หลัก ซึ่งเกิดขึ้นในช่วงเวลาการดำเนินการบนเชน
รายการที่ทำงานสามารถระบุโค้ดที่พวกเขา execute ได้อย่างแม่นยำในคอร์และบนเชื่อมโยงได้อย่างไร และจากที่ไหนพวกเขาอ่านหรือเขียนเนื้อหาใน Distributed Data Lake ได้
การตรวจสอบเอกสารที่มีอยู่เกี่ยวกับ XCM (ภาษาที่ Polkadot เลือกสำหรับการสื่อสารระหว่างพาราเชน) การสื่อสารทั้งหมดเป็นแบบไม่เชื่อมต่อ (สำหรับรายละเอียดเพิ่มเติม ดูที่ที่นี่). นี่หมายความว่าเมื่อส่งข้อความแล้ว คุณไม่สามารถรอคำตอบได้ การสื่อสารแบบไม่เกี่ยวข้องเป็นอาการของความไม่สอดคล้องในระบบ และเป็นหนึ่งในข้อเสียหลักของระบบที่แบ่งแยกอย่างถาวร เช่น Polkadot 1, Polkadot 2, และระบบนิเวศ Layer 2 ของ Ethereum ที่มีอยู่
อย่างไรก็ตาม ตามที่อธิบายไว้ในส่วน 2.4 ของกระดาษสีเทา, ระบบที่สมบูรณ์แบบที่ยังคงเป็นระบบที่เป็นสม่ำเสมอสำหรับผู้เช่าทุกคนสามารถขยายได้เพียงอย่างใดๆ โดยไม่เสียจากความสามารถในการใช้งานทั่วไป การเข้าถึงหรือความทนทาน
นี่คือที่ JAM โดดเด่น: โดยการนำเสนอคุณลักษณะหลายรูปแบบ JAM บรรลุสถานะกลางที่ใหม่ที่รู้จักกันว่าเป็นระบบที่มีความสอดคล้องบางส่วน ในระบบนี้ ระบบย่อยที่สื่อสารบ่อยสามารถสร้างสภาพแวดล้อมที่สอดคล้องกันกับกันโดยไม่บังคับให้ระบบทั้งหมดเป็นสม่ำเสมอ นี่เป็นการอธิบายที่ดีที่สุดจากดร. กาวิน วูดผู้เขียนกระดาษสีเทาในการสัมภาษณ์https://www.youtube.com/watch?t=1378&v=O3kRAVBTkfs&embeds_referring_euri=https%3A%2F%2Fblog.kianenigma.nl%2F&source_ve_path=OTY3MTQ
วิธีอื่น ๆ ในการเข้าใจสิ่งนี้คือการมอง Polkadot/JAM เป็นระบบที่ถูกแบ่งเป็นชั้น โดยที่ขอบเขตระหว่างชั้นเหล่านี้เป็นสิ่งที่เปลี่ยนไปอย่างยืดหยุ่นและถูกกำหนดไว้โดยเชิงพลวัต
Polkadot มีการแบ่งแยกและหลากหลายอย่างอยู่เสมอ
ตอนนี้มันไม่เพียงแต่ถูกแบ่งพิเศษและแตกต่างกัน แต่ขอบเขตของชาร์ดเหล่านี้สามารถกำหนดได้อย่างยืดหยุ่น - สิ่งที่ Gavin Wood อ้างถึงว่าเป็นระบบ 'semi-consistent' ในทวีตของเขาและกระดาษสีเทา (โปรดดู: https://x.com/gavofyork?ref_src=twsrc%5Etfw、https://graypaper.com/)
มีลักษณะหลายอย่างทำให้สถานะที่เป็นไปได้นี้เป็นไปได้:
สำคัญที่จะระบุว่าในขณะที่ความสามารถเหล่านี้เป็นไปได้ภายใน JAM แต่ไม่ได้บังคับที่ระดับโปรโตคอล ดังนั้น บางอินเตอร์เฟซเป็นทฤษฎีเป็นไม่เช่นเดียวกันแต่สามารถทำงานแบบซิงโครนัสในปฏิบัติได้เนื่องจากการนำเสนอที่ซับซ้อนและสาระสำคัญ CorePlay ซึ่งจะถูกพูดถึงในส่วนถัดไป เป็นตัวอย่างของปรากฎการณ์นี้
ในส่วนนี้จะแนะนำ CorePlay ซึ่งเป็นแนวคิดการทดลองในสภาพแวดล้อม JAM ซึ่งสามารถบรรยายได้ว่าเป็นรูปแบบโปรแกรมสมาร์ทคอนแทร็คใหม่ ณ เวลาที่เขียน CorePlay ยังไม่ได้ถูกกำหนดอย่างเต็มที่และยังคงเป็นแนวคิดที่อยู่ในระดับสมมติ
เพื่อเข้าใจ CorePlay เราต้องแนะนำเครื่องจำลองเสมือน (VM) ที่ถูกเลือกโดย JAM: PVM
PVM เป็นรายละเอียดสำคัญในทั้ง JAM และ CorePlay รายละเอียดระดับต่ำของ PVM อยู่เหนือขอบเขตของเอกสารนี้และดีที่สุดที่จะอธิบายโดยผู้เชี่ยวชาญด้านโดเมนใน Graypaper อย่างไรก็ตาม สำหรับคำอธิบายนี้เราจะเน้นที่บางคุณสมบัติสำคัญของ PVM
ส่วนหลังสำคัญอย่างยิ่งสำหรับ CorePlay
CorePlay เป็นตัวอย่างของวิธีที่ JAM's flexible primitives สามารถใช้ในการสร้างสภาพแวดล้อมสัญญาฉลาดที่เป็นซิงโครนัสและมีขยายตัวได้ด้วยอินเตอร์เฟซการเขียนโปรแกรมที่ยืดหยุ่นมาก CorePlay предложенияว่า สัญญาฉลาดที่ขึ้นอยู่กับนักแสดง ควรถูกติดตั้งโดยตรงบน JAM cores ทำให้พวกเขาได้รับประโยชน์จากอินเตอร์เฟซการเขียนโปรแกรมแบบซิงโครนัส นักพัฒนาสามารถเขียนสัญญาฉลาดเหมือนกับว่าพวกเขาเป็นฟังก์ชัน main() อย่างง่ายๆ โดยใช้นิพจน์เช่น let result = other_coreplay_actor(data).await?เพื่อสื่อสาร ถ้านักแสดงคอร์เพลย์คนอื่นอยู่บนคอร์ JAM เดียวกันในบล็อกเดียวกัน การเรียกนี้เป็นการเรียกที่เป็นพร้อมกัน หากอยู่บนคอร์อื่น นักแสดงจะถูกระงับและดำเนินการต่อในบล็อก JAM ถัดไป สิ่งนี้เป็นไปได้ด้วย JAM services, การจัดงานที่ยืดหยุ่นของพวกเขา และความสามารถของ PVM
ในที่สุด เรามาสรุปเหตุผลหลักที่ JAM เข้ากันได้อย่างสมบูรณ์กับ Polkadot ได้ เกี่ยวกับผลิตภัณฑ์ปัจจุบันของ Polkadot คือ parachains ที่มี agile-coretime ซึ่งยังคงต่อเนื่องใน JAM บริการที่ถูกนำไปใช้งานเป็นอันดับแรกใน JAM จะเป็น CoreChains หรือ Parachains ซึ่งทำให้ parachains แบบ Polkadot-2 ที่มีอยู่สามารถทำงานบน JAM
บริการเพิ่มเติมสามารถนำไปใช้บน JAM และบริการ CoreChains ที่มีอยู่สามารถสื่อสารกับพวกเขา อย่างไรก็ตาม ผลิตภัณฑ์ปัจจุบันของ Polkadot จะยังคงมั่นคง แค่เปิดรับประตูใหม่สำหรับทีม Parachain ที่มีอยู่
ส่วนใหญ่ของเอกสารนี้กล่าวถึงประสิทธิภาพในแง่มุมของการแบ่งชาร์ดในการดำเนินการ อย่างไรก็ตาม เรายังสามารถสำรวจปัญหานี้จากมุมมองของการแบ่งชาร์ดข้อมูลได้ด้วย น่าสนใจที่เราพบว่าสิ่งนี้คล้ายกับโมเดลที่มีความสอดคล้องบางส่วนที่กล่าวถึงไว้ก่อนหน้านี้ โดยหลักการแล้ว ระบบที่สอดคล้องอย่างสมบูรณ์นั้นเป็นที่เหนือกว่า แต่ไม่สามารถขยายขนาดได้ ในขณะที่ระบบที่ไม่สอดคล้องอย่างสมบูรณ์มีประสิทธิภาพในการขยายขนาดได้ดี แต่ไม่ได้ถูกเลือกตั้ง JAM ด้วยโมเดลที่มีความสอดคล้องบางส่วน นำเสนอทางเลือกใหม่
JAM นำเสนอสิ่งที่เกินกว่าตัวเลือกสองตัวนี้: มันช่วยให้นักพัฒนาสามารถเผยแพร่ข้อมูลอย่างสมบูรณ์ไปยังชั้นข้อมูล JAM DA ซึ่งทำหน้าที่เป็นพื้นที่กลางระหว่างข้อมูล on-chain และ off-chain แอปพลิเคชันใหม่สามารถสร้างขึ้นโดยใช้ชั้น DA เพื่อข้อมูลส่วนมากของพวกเขาในขณะที่เฉพาะข้อมูลสำคัญที่สุดจะถูกบันทึกไว้ในสถานะ JAM
ส่วนนี้จะกลับมาพิจารณามุมมองของเราเกี่ยวกับความสามารถในการขยายของบล็อกเชนซึ่งก็ได้ถูกพูดถึงในเกรย์เปเปอร์ ถึงแม้จะนำเสนอที่นี่ในรูปแบบที่กระชับกว่า
การขยายขอบเขตของบล็อกเชนส่วนใหญ่จะปฏิบัติตามวิธีการ传统จากระบบกระจาย: การขยายแนวตั้งและการขยายแนวนอน
การเพิ่มมาตราส่วนในแนวตั้งคือสิ่งที่แพลตฟอร์มเช่น Solana ให้ความสำคัญกับการเพิ่มประสิทธิภาพของการทำงานโดยการปรับปรุงทั้งโค้ดและฮาร์ดแวร์ให้สูงสุด
การขยายขนาดแนวนอนเป็นกลยุทธ์ที่ Ethereum และ Polkadot นำมาใช้: ลดภาระงานที่แต่ละผู้เข้าร่วมต้องจัดการ ในระบบกระจายแบบดั้งเดิม สิ่งนี้ถูกบรรจุไว้โดยการเพิ่มเครื่องคัดลอกเพิ่มเติม ในบล็อกเชน “คอมพิวเตอร์” คือเครือข่ายทั้งหมดของผู้ตรวจสอบ โดยการแบ่งงานให้พวกเขา (เช่น ELVES ทำ) หรือลดหน้าที่ของพวกเขาให้มีความหวัง (เช่นใน Optimistic Rollups) เราลดภาระงานสำหรับเซ็ตผู้ตรวจสอบทั้งหมดลง ซึ่งทำให้การขยายขนาดแนวนอนเป็นไปได้
ในบล็อกเชน การขยายมิติแนวนอนสามารถเปรียบเสมือนกับ "การลดจำนวนเครื่องที่ต้องดำเนินการทุก ๆ กระบวนการ"
สรุป:
ส่วนนี้เรียกตามคำอุปมาของ Rob Habermeier จาก Sub0 2023: Polkadot: Kernel/Userland | Sub0 2023 - YouTube (see: https://www.youtube.com/watch?v=15aXYvVMxlw) เปิดตัว JAM ในฐานะการอัปเกรดสำหรับ Polkadot: การอัปเดตเคอร์เนลบนฮาร์ดแวร์เดียวกัน
ในคอมพิวเตอร์ปกติ เราสามารถแบ่งสแต็กทั้งหมดเป็นสามส่วน:
ใน Polkadot ฮาร์ดแวร์—โครงสร้างหลักที่ให้บริการคำนวณและความพร้อมในการใช้ข้อมูล—เป็นเสมอ โดยที่เคยกล่าวถึงก่อนหน้านี้
ใน Polkadot, kernel ประกอบด้วยส่วนหลักสองส่วนจนถึงปัจจุบัน:
ทั้งสองอยู่ใน Polkadot’s Relay Chain
แอปพลิเคชันในพื้นที่ผู้ใช้ในทางตรงข้ามก็คือ parachains ตัวเอง โทเคนเชื้อเพลิงของพวกเขา และทุกสิ่งที่สร้างขึ้นบนพวกเขา
เราสามารถมองเห็นกระบวนการนี้ได้ดังนี้:
Polkadot ฝันถึงการย้ายฟังก์ชันหลักเพิ่มเติมไปยังผู้ใช้หลักของตน - พาราเชน นี่คือเป้าหมายของ Minimal Relay RFC อย่างแน่นอน (สำหรับรายละเอียดเพิ่มเติม ดูที่Minimal Relay RFC)
นี่หมายความว่าโพลคาดอทเรลเลย์เชนจะเกี่ยวข้องเพียงในการ提供โปรโตคอลพาราเชนเท่านั้น ซึ่งจะทำให้พื้นที่ของเคอร์เนลลดลงบ้าง
เมื่อโครงสร้างนี้ถูกนำมาใช้ จะง่ายขึ้นในการมองเห็นว่าการย้าย JAM จะเป็นอย่างไร การย้าย JAM จะลดพื้นที่ของ kernel ของ Polkadot ลงอย่างมีนัยสำคัญ ทำให้มีความหลากหลายมากขึ้น อีกทั้งโปรโตคอล Parachains จะย้ายไปยัง user space เนื่องจากมันเป็นหนึ่งในวิธีเดียวที่สามารถสร้างแอปพลิเคชันบนส่วนสำคัญ (ฮาร์ดแวร์) เดียวกันและ kernel (JAM)
นี่ยังเสริมความแข็งแกร่งของเหตุผลที่ JAM เป็นทางเลือกสำหรับ Polkadot Relay Chain ไม่ใช่สำหรับ parachains ครับ
กล่าวอีกอย่างคือ เราสามารถมองการย้าย JAM เป็นการอัพเกรดเคอร์เนล ฮาร์ดแวร์พื้นฐานยังคงเหมือนเดิม และเนื้อหาของเคอร์เนลเก่ามีการย้ายไปยังพื้นที่ผู้ใช้เพื่อทำให้ระบบง่ายขึ้น