PREDA - เอวีเอ็มแบบเลียนแบบการแยกส่วนที่ไม่ต้องใช้งานพร้อมกัน

กลาง1/8/2025, 11:14:01 AM
PREDA (Parallel Relay Execution Distributed Architecture) เป็นโมเดลนวัตกรรมที่ออกแบบมาเพื่อเพิ่มประสิทธิภาพและความยืดหยุ่นของบล็อกเชน มันบรรลุการขนานเต็มรูปแบบของฟังก์ชั่นสัญญาอัจฉริยะโดยการแบ่งกระบวนการดําเนินการของสัญญาอัจฉริยะออกเป็นหลายขั้นตอนที่สามารถดําเนินการควบคู่กันได้ ขั้นตอนเหล่านี้ดําเนินการแบบอะซิงโครนัสในอินสแตนซ์ Ethereum Virtual Machine (EVM) ที่แตกต่างกัน ซึ่งจะช่วยเพิ่มกระบวนการทํางานพร้อมกันของชุดธุรกรรมให้สูงสุด

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

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

1. การแยกแยะที่เป็นอิสระ

ในการค้นหาประสิทธิภาพในเทคโนโลยีบล็อกเชน การดำเนินการขั้นตอนของสัญญาอัจฉริยะแต่ละรายได้รับความสนใจมากมาย ตามปกติ ประสิทธิภาพของสัญญาอัจฉริยะแต่ละรายถูกจำกัดโดยความสามารถของเครื่องจำลองเสมือน (EVM) เดียว แม้ว่ามีการเปิดใช้ระบบ multi-chain หรือ Layer-2 แล้ว การเสมือนจำลองพร้อมกันเสนอทางออกที่ดีมีความหวัง ทำให้ธุรกรรมของสัญญาอัจฉริยะรายเดียวสามารถดำเนินการได้พร้อมกัน ดังนั้น การใช้งาน CPU cores เพิ่มเติมเพื่อประสิทธิภาพที่ดีขึ้น

Parallel Relay-Execution Distributed Architecture (PREDA) เป็นรูปแบบการเขียนโปรแกรมแบบกระจายการทํางานเชิงขอบเขตและระดับสูงที่ออกแบบมาสําหรับสัญญาอัจฉริยะทั่วไปที่ขนานกันโดยเนื้อแท้บนระบบบล็อกเชนหลาย EVM แบบกระจาย จากมุมมองของระบบ PREDA ทําให้ EVM แบบขนานสามารถย่อยสลายได้และอะซิงโครนัสทําให้สามารถขนานกันได้เต็มรูปแบบของฟังก์ชันสัญญาและเพิ่มการทํางานพร้อมกันของชุดธุรกรรม สิ่งนี้ทําให้มั่นใจได้ว่าอินสแตนซ์ทั้งหมดของ EVM สามารถใช้งานได้เป็นส่วนใหญ่ เพื่อให้ได้ประสิทธิภาพและความสามารถในการปรับขนาดที่ดีที่สุด

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

Tx1= ธุรกรรม 1

Tx2= ธุรกรรม 2

เราสมมติว่า,

การดำเนินการของ Tx1 ต้องเปลี่ยนสถานะ A, B, C

การดำเนินการของ Tx2 ต้องเปลี่ยนสถานะ A, สถานะ D, สถานะ E

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

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

2. การประเมินผล

ธุรกรรมการโอนโทเค็น ETH ในอดีตจะถูกเล่นซ้ําเพื่อประเมิน Sei (V2), Aptos, Sui และ PREDA ตามปริมาณงานและความสามารถในการปรับขนาด โปรดทราบว่าการประเมินของเราใช้ธุรกรรมการโอนโทเค็น ETH ในอดีตในโลกแห่งความเป็นจริงแทนที่จะสร้างชุดธุรกรรมการโอนระหว่างที่อยู่แบบสุ่ม ธุรกรรมแบบสุ่มจะให้ผลการทดลองมากเกินไปมากกว่าประสิทธิภาพในกรณีคําจริงเนื่องจากธุรกรรมในโลกแห่งความเป็นจริงเกี่ยวข้องกับที่อยู่ที่เกี่ยวข้องไม่ทางใดก็ทางหนึ่งซึ่งทําให้เกิดการพึ่งพาข้อมูลจํานวนมาก

การตั้งค่าการทดลองได้แก่:

การเปรียบเทียบในรูปที่ 1 ย้ำความจำเป็นของการนำรูปแบบโปรแกรม PREDA เข้ามา เพื่อให้ได้การปรับปรุงสำคัญในประสิทธิภาพ PREDA สาธิตว่า มี TPS สูงขึ้น 3.3 เท่า ถึง 28.2 เท่า มากกว่า Aptos สำหรับการทำธุรกรรมการโอนเงินประวัติจริงบนเครือข่าย Ethereum

เนื่องจากระบบเหล่านี้ถูกนำมาใช้ในภาษาต่าง ๆ (รวมถึง Go, Rust, และ C++) และเครื่องจำลองเสมือนต่าง ๆ ทำให้เราประเมินความสามารถในการขยายขนาดของระบบต่าง ๆ โดยใช้ค่าความเร็วสัมพันธ์ต่อระบบพื้นฐานของการใช้ EVM เดียว ๆ เพื่อยกเว้นผลกระทบจากการดำเนินการของระบบที่แตกต่างกัน

รูปที่ 1 จำนวนผลลัพธ์ของการประมวลผลสัญญาอัจฉริยะการโอนโทเค็นเทียบเท่าใน TPS บน Sei, Aptos, Sui, และ PREDA

รูปที่ 2. ความเร็วสัมพันธ์สำหรับ Aptos, Sui, Sei และ PREDA สูงกว่าเส้นใต้ของตนเอง

3. โมเดลโปรแกรมมิ่ง

เพื่อให้เข้าใจ PREDA ได้ง่ายสำหรับผู้ที่คุ้นเคยกับ parallel EVM มีระบบการขนานกันสองประเภทที่พบได้ในระบบบล็อกเชน parallel EVM ในปัจจุบัน¹

  • การขนส่งแบบอิงตามความมุ่งหวังร่วมกัน ซึ่งรวมถึง Aptos, Sei (V2), และ Monad, ละเว้นความขึ้นตรงระหว่างภาวะของธุรกรรม ดำเนินการและตรวจสอบธุรกรรมพร้อมกัน และย้อนกลับธุรกรรมเพื่อการดำเนินการใหม่ในกรณีของความขัดแย้ง
  • การแบ่งแยกแบบเฉียบพลันซึ่งรวมถึง Solana (Sealevel), Sui, และ Sei (V1), ตรวจสอบสถานะที่ขึ้นอยู่กับก่อนที่จะดำเนินการทุกธุรกรรม วิเคราะห์สถานะที่ขึ้นอยู่ของพวกเขา และดำเนินการพร้อมกันเฉพาะธุรกรรมเหล่านั้นโดยไม่มีความขัดแย้ง

ทั้งสองวิธีตามโครงสร้างแบบแชร์ทุกอย่างและจัดการธุรกรรมเป็นรวมทั้งหมดในการควบคุมการแข่งขัน; ขั้นตอนทั้งหมด (เช่นการเข้าถึงสถานะสัญญาต่าง ๆ) ไม่สามารถแยกแยะได้และต้องถูกดำเนินการโดยสะท้อนเวลา@devteam_48518/crystality-the-parallel-evm-model-implementing-shared-nothing-architecture-8d82fc0a836a">Shared-nothing Architecture เพื่อขัดขวางความขึ้นตรงกันของสถานะและรับรองว่าตัวอย่างต่าง ๆ ของ EVM จะไม่เข้าถึงส่วนเดียวกันของสถานะของสัญญา ป้องกันความขัดแย้งในการเขียนอย่างสมบูรณ์

ในส่วนหลัก PREDA นำเสนอ Programmable Contract Scopes เพื่อแยกส่วนสถานะสัญญาเป็นชิ้นย่อยที่ไม่ซ้อนทับกันและสามารถแบ่งเบาๆ และ Asynchronous Functional Relay เพื่ออธิบายการสลับการกระทำของการดำเนินการใน EVM ต่าง ๆ อย่างไม่เชื่อมต่อกันได้

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

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

4. ภาษา

เราได้นำรูปแบบการเขียนโปรแกรม PREDA มาใช้งานเป็นภาษาที่คล้ายกับ C/C++ และ Javascript โดยต่อไปนี้คือฟังก์ชันการโอนโทเค็นที่แบบเรียบง่ายใน Solidity และภาษา PREDA

โค้ด Solidity ในรูปภาพ (a) มีสถานะสัญญา (balances) ที่แทนยอดเงินคงเหลือของที่อยู่ และฟังก์ชันการโอนเงินเพื่อโอนจำนวนที่ระบุของโทเค็นจากผู้ส่งธุรกรรม (msg.sender) ไปยังผู้รับ (payee)

ในการนำไปใช้ใน PREDA ที่แสดงในภาพ (b) คำสำคัญ @addressกำหนดขอบเขตสัญญาที่เป็นไปได้ ที่สถานะของสัญญาที่เป็นของตัวแปรสัญญา (ยอดคงเหลือ) ถูกแบ่งแยกตามที่อยู่ และกระจายและจัดการโดย EVMs คำสำคัญเรลเลย์ระบุการเรลเลย์ฟังก์ชันอย่างไม่ตรงเวลา

มีสามส่วนในการนำไปใช้งาน PREDA ส่วนที่ (1) คือคำสำคัญ@address กําหนดยอดคงเหลือของผู้ใช้โดยให้คําอธิบายสถานะที่ละเอียดและแยกออกจากกันได้ ยอดคงเหลือตัวแปรขอบเขตที่อยู่มีอินสแตนซ์ที่ไม่ซ้ํากันสําหรับที่อยู่ผู้ใช้แต่ละราย อินสแตนซ์ของที่อยู่ผู้ใช้ที่แตกต่างกันจะถูกเข้าถึงและดูแลโดย EVM ที่แตกต่างกันโดยไม่ทับซ้อนกัน ฟังก์ชันการโอนถูกกําหนดในขอบเขตที่อยู่เดียวกันในส่วน (2) ซึ่งเรียกใช้โดยระบุที่อยู่ของผู้ชําระเงินเป็นขอบเขตเป้าหมายเมื่อเริ่มต้นธุรกรรมการโอนโดยผู้ใช้ ในส่วน (3) ในการดําเนินการฝากเงินไปยังผู้รับเงินหลังจากการถอนเงินสําเร็จการส่งต่อจะเริ่มต้นด้วยที่อยู่ของผู้รับเงินเป็นขอบเขตเป้าหมายเพิ่มเงินไปยังยอดคงเหลือของผู้รับเงินและดําเนินการโดย EVM ที่โฮสต์อินสแตนซ์ยอดคงเหลือของที่อยู่ของผู้รับเงิน

กระแสการดำเนินการของธุรกรรมการโอนโทเค็นใน PREDA

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

  1. ระหว่างธุรกรรมที่ผู้ใช้เริ่มขึ้น: เนื่องจากสถานะที่แบ่งแยกตามที่อยู่ไม่ซ้อนทับกัน การทำธุรกรรมที่ผู้ใช้เริ่มขึ้นสามารถดำเนินการพร้อมกันโดยไม่มีข้อขัดแย้ง ตัวอย่างเช่น ในสัญญาการโอนโทเค็นที่อัปเดตสถานะของผู้จ่ายต่อที่อยู่ การทำธุรกรรมที่ผู้ใช้เริ่มขึ้นที่แตกต่างกันสามารถทำพร้อมกันได้ทั่ว EVMs
  2. ด้วยธุรกรรมรีเลย์: ในสถานการณ์ที่ Bob โอนโทเค็นไปยัง Alice และ Carol ธุรกรรมรีเลย์สําหรับการฝากเงินไปยัง Alice (จาก Bob ไปยัง Alice transfer) สามารถดําเนินการพร้อมกันกับธุรกรรมที่ผู้ใช้เริ่มต้นสําหรับการถอนเงินจาก Bob (ในการโอน Bob ถึง Carol) และการฝากเงินไปยัง Carol เฉพาะกับความสามารถในการสลายตัวของแบบจําลอง PREDA เท่านั้นที่การขนานโดยธรรมชาติในสัญญาอัจฉริยะจะสัมผัสกับระบบบล็อกเชนพื้นฐานทําให้ผู้ใช้เริ่มต้นและถ่ายทอดธุรกรรมสามารถประมวลผลในลักษณะไปป์ไลน์เพื่ออํานวยความสะดวกในการดําเนินการแบบขนาน

ถัดไปและไกลกว่า

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

ความทั่วไปของ PREDA กว้างไกลถึงการใช้งาน@addressเพื่อแยกแยะสถานะของสัญญาโดยที่อยู่ มันช่วยให้สามารถแบ่งส่วนประเภทที่กำหนดเองได้ด้วยคำสำคัญเช่น@type, ที่ชนิดสามารถเป็นชื่อประเภท Solidity พื้นฐานได้เช่น@uintนอกจากนี้ PREDA ยังสนับสนุนสถานะสัญญาที่ไม่ได้แบ่งแยกด้วย @globalโดยการแบ่งแยกการเก็บข้อมูลออกเป็นสถานะต่าง ๆ ที่แตกต่างกัน ทำให้ทุก EVM รักษารายละเอียดต่าง ๆ นี้ได้อย่างสม่ำเสมอ การแบ่งแยกสถานะนี้เพิ่มความยืดหยุ่นและประสิทธิภาพของโมเดลในสัญญาอัจฉริยะที่หลากหลาย

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

คำประกาศ:

  1. บทความนี้เป็นการโพสต์ซ้ำจาก [ Medium]. ลิขสิทธิ์เป็นของผู้เขียนต้นฉบับ [PREDA Parallel VMs] หากคุณมีข้อความคัดลอกนี้และต้องการให้ลบ โปรดติดต่อgate Learn Team. ทีมงานจะดำเนินการตอบกลับความกังวลของคุณโดยรวดเร็วตามขั้นตอนที่เกี่ยวข้อง
  2. คำประกาศรับผิดชอบ: มุมมองและความคิดเห็นที่แสดงในบทความนี้เป็นเพียงของผู้เขียนเท่านั้น และไม่เป็นที่ปรึกษาการลงทุน
  3. ทีมเรียนรู้ Gate ได้แปลบทความเป็นภาษาอื่น ๆ การคัดลอก กระจาย หรือลอกเลียนแบบบทความที่แปลนั้นถือเป็นการฝ่าฝืนห้าม

PREDA - เอวีเอ็มแบบเลียนแบบการแยกส่วนที่ไม่ต้องใช้งานพร้อมกัน

กลาง1/8/2025, 11:14:01 AM
PREDA (Parallel Relay Execution Distributed Architecture) เป็นโมเดลนวัตกรรมที่ออกแบบมาเพื่อเพิ่มประสิทธิภาพและความยืดหยุ่นของบล็อกเชน มันบรรลุการขนานเต็มรูปแบบของฟังก์ชั่นสัญญาอัจฉริยะโดยการแบ่งกระบวนการดําเนินการของสัญญาอัจฉริยะออกเป็นหลายขั้นตอนที่สามารถดําเนินการควบคู่กันได้ ขั้นตอนเหล่านี้ดําเนินการแบบอะซิงโครนัสในอินสแตนซ์ Ethereum Virtual Machine (EVM) ที่แตกต่างกัน ซึ่งจะช่วยเพิ่มกระบวนการทํางานพร้อมกันของชุดธุรกรรมให้สูงสุด

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

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

1. การแยกแยะที่เป็นอิสระ

ในการค้นหาประสิทธิภาพในเทคโนโลยีบล็อกเชน การดำเนินการขั้นตอนของสัญญาอัจฉริยะแต่ละรายได้รับความสนใจมากมาย ตามปกติ ประสิทธิภาพของสัญญาอัจฉริยะแต่ละรายถูกจำกัดโดยความสามารถของเครื่องจำลองเสมือน (EVM) เดียว แม้ว่ามีการเปิดใช้ระบบ multi-chain หรือ Layer-2 แล้ว การเสมือนจำลองพร้อมกันเสนอทางออกที่ดีมีความหวัง ทำให้ธุรกรรมของสัญญาอัจฉริยะรายเดียวสามารถดำเนินการได้พร้อมกัน ดังนั้น การใช้งาน CPU cores เพิ่มเติมเพื่อประสิทธิภาพที่ดีขึ้น

Parallel Relay-Execution Distributed Architecture (PREDA) เป็นรูปแบบการเขียนโปรแกรมแบบกระจายการทํางานเชิงขอบเขตและระดับสูงที่ออกแบบมาสําหรับสัญญาอัจฉริยะทั่วไปที่ขนานกันโดยเนื้อแท้บนระบบบล็อกเชนหลาย EVM แบบกระจาย จากมุมมองของระบบ PREDA ทําให้ EVM แบบขนานสามารถย่อยสลายได้และอะซิงโครนัสทําให้สามารถขนานกันได้เต็มรูปแบบของฟังก์ชันสัญญาและเพิ่มการทํางานพร้อมกันของชุดธุรกรรม สิ่งนี้ทําให้มั่นใจได้ว่าอินสแตนซ์ทั้งหมดของ EVM สามารถใช้งานได้เป็นส่วนใหญ่ เพื่อให้ได้ประสิทธิภาพและความสามารถในการปรับขนาดที่ดีที่สุด

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

Tx1= ธุรกรรม 1

Tx2= ธุรกรรม 2

เราสมมติว่า,

การดำเนินการของ Tx1 ต้องเปลี่ยนสถานะ A, B, C

การดำเนินการของ Tx2 ต้องเปลี่ยนสถานะ A, สถานะ D, สถานะ E

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

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

2. การประเมินผล

ธุรกรรมการโอนโทเค็น ETH ในอดีตจะถูกเล่นซ้ําเพื่อประเมิน Sei (V2), Aptos, Sui และ PREDA ตามปริมาณงานและความสามารถในการปรับขนาด โปรดทราบว่าการประเมินของเราใช้ธุรกรรมการโอนโทเค็น ETH ในอดีตในโลกแห่งความเป็นจริงแทนที่จะสร้างชุดธุรกรรมการโอนระหว่างที่อยู่แบบสุ่ม ธุรกรรมแบบสุ่มจะให้ผลการทดลองมากเกินไปมากกว่าประสิทธิภาพในกรณีคําจริงเนื่องจากธุรกรรมในโลกแห่งความเป็นจริงเกี่ยวข้องกับที่อยู่ที่เกี่ยวข้องไม่ทางใดก็ทางหนึ่งซึ่งทําให้เกิดการพึ่งพาข้อมูลจํานวนมาก

การตั้งค่าการทดลองได้แก่:

การเปรียบเทียบในรูปที่ 1 ย้ำความจำเป็นของการนำรูปแบบโปรแกรม PREDA เข้ามา เพื่อให้ได้การปรับปรุงสำคัญในประสิทธิภาพ PREDA สาธิตว่า มี TPS สูงขึ้น 3.3 เท่า ถึง 28.2 เท่า มากกว่า Aptos สำหรับการทำธุรกรรมการโอนเงินประวัติจริงบนเครือข่าย Ethereum

เนื่องจากระบบเหล่านี้ถูกนำมาใช้ในภาษาต่าง ๆ (รวมถึง Go, Rust, และ C++) และเครื่องจำลองเสมือนต่าง ๆ ทำให้เราประเมินความสามารถในการขยายขนาดของระบบต่าง ๆ โดยใช้ค่าความเร็วสัมพันธ์ต่อระบบพื้นฐานของการใช้ EVM เดียว ๆ เพื่อยกเว้นผลกระทบจากการดำเนินการของระบบที่แตกต่างกัน

รูปที่ 1 จำนวนผลลัพธ์ของการประมวลผลสัญญาอัจฉริยะการโอนโทเค็นเทียบเท่าใน TPS บน Sei, Aptos, Sui, และ PREDA

รูปที่ 2. ความเร็วสัมพันธ์สำหรับ Aptos, Sui, Sei และ PREDA สูงกว่าเส้นใต้ของตนเอง

3. โมเดลโปรแกรมมิ่ง

เพื่อให้เข้าใจ PREDA ได้ง่ายสำหรับผู้ที่คุ้นเคยกับ parallel EVM มีระบบการขนานกันสองประเภทที่พบได้ในระบบบล็อกเชน parallel EVM ในปัจจุบัน¹

  • การขนส่งแบบอิงตามความมุ่งหวังร่วมกัน ซึ่งรวมถึง Aptos, Sei (V2), และ Monad, ละเว้นความขึ้นตรงระหว่างภาวะของธุรกรรม ดำเนินการและตรวจสอบธุรกรรมพร้อมกัน และย้อนกลับธุรกรรมเพื่อการดำเนินการใหม่ในกรณีของความขัดแย้ง
  • การแบ่งแยกแบบเฉียบพลันซึ่งรวมถึง Solana (Sealevel), Sui, และ Sei (V1), ตรวจสอบสถานะที่ขึ้นอยู่กับก่อนที่จะดำเนินการทุกธุรกรรม วิเคราะห์สถานะที่ขึ้นอยู่ของพวกเขา และดำเนินการพร้อมกันเฉพาะธุรกรรมเหล่านั้นโดยไม่มีความขัดแย้ง

ทั้งสองวิธีตามโครงสร้างแบบแชร์ทุกอย่างและจัดการธุรกรรมเป็นรวมทั้งหมดในการควบคุมการแข่งขัน; ขั้นตอนทั้งหมด (เช่นการเข้าถึงสถานะสัญญาต่าง ๆ) ไม่สามารถแยกแยะได้และต้องถูกดำเนินการโดยสะท้อนเวลา@devteam_48518/crystality-the-parallel-evm-model-implementing-shared-nothing-architecture-8d82fc0a836a">Shared-nothing Architecture เพื่อขัดขวางความขึ้นตรงกันของสถานะและรับรองว่าตัวอย่างต่าง ๆ ของ EVM จะไม่เข้าถึงส่วนเดียวกันของสถานะของสัญญา ป้องกันความขัดแย้งในการเขียนอย่างสมบูรณ์

ในส่วนหลัก PREDA นำเสนอ Programmable Contract Scopes เพื่อแยกส่วนสถานะสัญญาเป็นชิ้นย่อยที่ไม่ซ้อนทับกันและสามารถแบ่งเบาๆ และ Asynchronous Functional Relay เพื่ออธิบายการสลับการกระทำของการดำเนินการใน EVM ต่าง ๆ อย่างไม่เชื่อมต่อกันได้

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

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

4. ภาษา

เราได้นำรูปแบบการเขียนโปรแกรม PREDA มาใช้งานเป็นภาษาที่คล้ายกับ C/C++ และ Javascript โดยต่อไปนี้คือฟังก์ชันการโอนโทเค็นที่แบบเรียบง่ายใน Solidity และภาษา PREDA

โค้ด Solidity ในรูปภาพ (a) มีสถานะสัญญา (balances) ที่แทนยอดเงินคงเหลือของที่อยู่ และฟังก์ชันการโอนเงินเพื่อโอนจำนวนที่ระบุของโทเค็นจากผู้ส่งธุรกรรม (msg.sender) ไปยังผู้รับ (payee)

ในการนำไปใช้ใน PREDA ที่แสดงในภาพ (b) คำสำคัญ @addressกำหนดขอบเขตสัญญาที่เป็นไปได้ ที่สถานะของสัญญาที่เป็นของตัวแปรสัญญา (ยอดคงเหลือ) ถูกแบ่งแยกตามที่อยู่ และกระจายและจัดการโดย EVMs คำสำคัญเรลเลย์ระบุการเรลเลย์ฟังก์ชันอย่างไม่ตรงเวลา

มีสามส่วนในการนำไปใช้งาน PREDA ส่วนที่ (1) คือคำสำคัญ@address กําหนดยอดคงเหลือของผู้ใช้โดยให้คําอธิบายสถานะที่ละเอียดและแยกออกจากกันได้ ยอดคงเหลือตัวแปรขอบเขตที่อยู่มีอินสแตนซ์ที่ไม่ซ้ํากันสําหรับที่อยู่ผู้ใช้แต่ละราย อินสแตนซ์ของที่อยู่ผู้ใช้ที่แตกต่างกันจะถูกเข้าถึงและดูแลโดย EVM ที่แตกต่างกันโดยไม่ทับซ้อนกัน ฟังก์ชันการโอนถูกกําหนดในขอบเขตที่อยู่เดียวกันในส่วน (2) ซึ่งเรียกใช้โดยระบุที่อยู่ของผู้ชําระเงินเป็นขอบเขตเป้าหมายเมื่อเริ่มต้นธุรกรรมการโอนโดยผู้ใช้ ในส่วน (3) ในการดําเนินการฝากเงินไปยังผู้รับเงินหลังจากการถอนเงินสําเร็จการส่งต่อจะเริ่มต้นด้วยที่อยู่ของผู้รับเงินเป็นขอบเขตเป้าหมายเพิ่มเงินไปยังยอดคงเหลือของผู้รับเงินและดําเนินการโดย EVM ที่โฮสต์อินสแตนซ์ยอดคงเหลือของที่อยู่ของผู้รับเงิน

กระแสการดำเนินการของธุรกรรมการโอนโทเค็นใน PREDA

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

  1. ระหว่างธุรกรรมที่ผู้ใช้เริ่มขึ้น: เนื่องจากสถานะที่แบ่งแยกตามที่อยู่ไม่ซ้อนทับกัน การทำธุรกรรมที่ผู้ใช้เริ่มขึ้นสามารถดำเนินการพร้อมกันโดยไม่มีข้อขัดแย้ง ตัวอย่างเช่น ในสัญญาการโอนโทเค็นที่อัปเดตสถานะของผู้จ่ายต่อที่อยู่ การทำธุรกรรมที่ผู้ใช้เริ่มขึ้นที่แตกต่างกันสามารถทำพร้อมกันได้ทั่ว EVMs
  2. ด้วยธุรกรรมรีเลย์: ในสถานการณ์ที่ Bob โอนโทเค็นไปยัง Alice และ Carol ธุรกรรมรีเลย์สําหรับการฝากเงินไปยัง Alice (จาก Bob ไปยัง Alice transfer) สามารถดําเนินการพร้อมกันกับธุรกรรมที่ผู้ใช้เริ่มต้นสําหรับการถอนเงินจาก Bob (ในการโอน Bob ถึง Carol) และการฝากเงินไปยัง Carol เฉพาะกับความสามารถในการสลายตัวของแบบจําลอง PREDA เท่านั้นที่การขนานโดยธรรมชาติในสัญญาอัจฉริยะจะสัมผัสกับระบบบล็อกเชนพื้นฐานทําให้ผู้ใช้เริ่มต้นและถ่ายทอดธุรกรรมสามารถประมวลผลในลักษณะไปป์ไลน์เพื่ออํานวยความสะดวกในการดําเนินการแบบขนาน

ถัดไปและไกลกว่า

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

ความทั่วไปของ PREDA กว้างไกลถึงการใช้งาน@addressเพื่อแยกแยะสถานะของสัญญาโดยที่อยู่ มันช่วยให้สามารถแบ่งส่วนประเภทที่กำหนดเองได้ด้วยคำสำคัญเช่น@type, ที่ชนิดสามารถเป็นชื่อประเภท Solidity พื้นฐานได้เช่น@uintนอกจากนี้ PREDA ยังสนับสนุนสถานะสัญญาที่ไม่ได้แบ่งแยกด้วย @globalโดยการแบ่งแยกการเก็บข้อมูลออกเป็นสถานะต่าง ๆ ที่แตกต่างกัน ทำให้ทุก EVM รักษารายละเอียดต่าง ๆ นี้ได้อย่างสม่ำเสมอ การแบ่งแยกสถานะนี้เพิ่มความยืดหยุ่นและประสิทธิภาพของโมเดลในสัญญาอัจฉริยะที่หลากหลาย

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

คำประกาศ:

  1. บทความนี้เป็นการโพสต์ซ้ำจาก [ Medium]. ลิขสิทธิ์เป็นของผู้เขียนต้นฉบับ [PREDA Parallel VMs] หากคุณมีข้อความคัดลอกนี้และต้องการให้ลบ โปรดติดต่อgate Learn Team. ทีมงานจะดำเนินการตอบกลับความกังวลของคุณโดยรวดเร็วตามขั้นตอนที่เกี่ยวข้อง
  2. คำประกาศรับผิดชอบ: มุมมองและความคิดเห็นที่แสดงในบทความนี้เป็นเพียงของผู้เขียนเท่านั้น และไม่เป็นที่ปรึกษาการลงทุน
  3. ทีมเรียนรู้ Gate ได้แปลบทความเป็นภาษาอื่น ๆ การคัดลอก กระจาย หรือลอกเลียนแบบบทความที่แปลนั้นถือเป็นการฝ่าฝืนห้าม
เริ่มตอนนี้
สมัครและรับรางวัล
$100
It seems that you are attempting to access our services from a Restricted Location where Gate.io is unable to provide services. We apologize for any inconvenience this may cause. Currently, the Restricted Locations include but not limited to: the United States of America, Canada, Cambodia, Cuba, Iran, North Korea and so on. For more information regarding the Restricted Locations, please refer to the User Agreement. Should you have any other questions, please contact our Customer Support Team.