Gate.io
Learn Cryptocurrency & Blockchain

EVM (Ethereum Virtual Machine) คืออะไร?

มือใหม่Nov 21, 2022
EVM เป็นเลเยอร์ที่เป็นนามธรรมระหว่างรหัสและโฮสต์ที่ทำหน้าที่เป็นการรับประกันเพื่อรักษาการทำงานที่ราบรื่นของ Ethereum EVM คืออะไร? หลักการและกรณีการใช้งานทั่วไปของ EVM คืออะไร มาเจาะลึกกัน
 EVM (Ethereum Virtual Machine) คืออะไร?

แนะนำสกุลเงิน

EVM เป็นเลเยอร์ที่เป็นนามธรรมระหว่างรหัสและโฮสต์ที่ทำหน้าที่เป็นการรับประกันเพื่อรักษาการทำงานที่ราบรื่นของ Ethereum EVM คืออะไร? หลักการและกรณีการใช้งานทั่วไปของ EVM คืออะไร มาเจาะลึกกัน

ในฐานะที่เป็น blockchain ที่ได้รับความนิยมสูงสุดในปัจจุบัน Ethereum ให้บริการแอพพลิเคชั่นกระจายอำนาจที่หลากหลายแก่ผู้ใช้ เป็นคำที่กล่าวถึงบ่อยที่สุดเมื่อผู้คนพูดถึง DeFi, NFT เป็นต้น และ EVM ซึ่งเป็นส่วนสำคัญของ Ethereum ยังดึงดูดความสนใจของผู้คนอย่างมาก แล้วความสัมพันธ์ระหว่าง EVM กับ Ethereum คืออะไร?

EVM คืออะไร?

EVM ย่อมาจากเครื่องเสมือน Ethereum ตามที่กำหนดโดย Ethereum EVM คือสภาพแวดล้อมรันไทม์ที่บัญชี Ethereum และสัญญาอัจฉริยะทั้งหมดอยู่บนเครือข่าย Ethereum

EVM มีอยู่เป็นเอนทิตีเดียวที่ดูแลโดยคอมพิวเตอร์ที่เชื่อมต่อทั้งหมดซึ่งรันไคลเอนต์ Ethereum เป็นสิ่งที่กำหนดกฎสำหรับการคำนวณสถานะที่ถูกต้องใหม่จากบล็อกหนึ่งไปยังอีกบล็อกหนึ่ง

EVM ทำงานอย่างไร

หลักการเบื้องหลัง EVM

แทนที่จะเป็นบัญชีแยกประเภทแบบกระจายเช่น Bitcoin Ethereum เป็นเครื่องสถานะแบบกระจาย การเปลี่ยนแปลงจากการบล็อกเป็นการบล็อกแสดงถึงการอัปเดตสถานะของบัญชีและยอดคงเหลือทั้งหมดบน Ethereum การอัปเดตจะคำนวณตามรหัสของสัญญาโดย EVM


รูป: https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf

EVM เป็นเครื่องเสมือนที่ใช้สแต็กและดำเนินการทั้งหมดโดยตรงในสแต็ก เมื่อสัญญาอัจฉริยะถูกคอมไพล์เป็นไบต์โค้ด EVM จะดำเนินการตามไบต์โค้ด รวมถึงการดึงตัวแปรจากหน่วยความจำและเพิ่มลงในสแต็ก คำนวณตัวแปรในสแต็ก และจัดเก็บตัวแปรลงในหน่วยความจำ เป็นต้น

มีการจัดเก็บข้อมูลหลักสองประเภทใน EVM: หน่วยความจำและที่เก็บข้อมูล ตัวแปรในการจัดเก็บจะถูกเก็บไว้บน Ethereum อย่างถาวรหลังจากดำเนินการตามสัญญา ในขณะที่ตัวแปรในหน่วยความจำจะอยู่ชั่วคราวในขณะที่โค้ดกำลังดำเนินการบน EVM

ยกตัวอย่างการเรียกสัญญา เราเขียนสัญญากับ Solidity รวบรวมข้อมูลเมตาผ่านคอมไพเลอร์ และเผยแพร่บน Ethereum เมื่อเราต้องปรับปรุงสถานะของสัญญา เราจำเป็นต้องเรียกสัญญา อย่างไรก็ตาม ทั้ง OS และ Windows ไม่สามารถเรียกใช้สัญญาอัจฉริยะได้โดยตรง จำเป็นต้องใช้ EVM เพื่อจัดเตรียมสภาพแวดล้อมการทำงานสำหรับสัญญาอัจฉริยะ ขั้นตอนเฉพาะมีดังนี้: ขั้นแรก EVM จะค้นหารหัสสัญญาที่จัดเก็บไว้ใน Ethereum ผ่านที่อยู่ของสัญญา จากนั้น สภาพแวดล้อมการดำเนินการจะถูกสร้างขึ้น ในที่สุด เนื้อหาสัญญาจะถูกแปลงเป็น bytecode และใส่ลงใน EVM เพื่อดำเนินการ ผลลัพธ์ที่ได้รับจากการดำเนินการจะถูกจัดเก็บเป็นสถานะล่าสุดในบล็อกถัดไป ซึ่งจะทำให้กระบวนการอัพเดตสถานะเสร็จสมบูรณ์

รูป: https://cnodejs.org/topic/5aeecba802591040485bab2a

การใช้งาน EVM
ปัจจุบัน ลูกค้า Ethereum ทั้งหมดมีการใช้งาน EVM Ethereum ได้เปิดตัวซอร์สโค้ดของภาษาโปรแกรมหลายภาษา เช่น Python, C++, js, Go เป็นต้น เพื่อใช้งานฟังก์ชัน EVM ช่วยให้ผู้ใช้เข้าใจหลักการของ EVM ได้สะดวกยิ่งขึ้น

Py-EVM - ไพธอน: https://github.com/ethereum/py-evm
evmone - C++: https://github.com/ethereum/evmone
Ethereumjs - vm - JavaScript: https://github.com/ethereumjs/ ethereumjs-monorepo
eEVM - C++: https://github.com/microsoft/eevm
Hyperledger Burrow - ไป: https://github.com/hyperledger/burrow

องค์ประกอบหลักของ EVM

สัญญาอัจฉริยะ

สัญญาอัจฉริยะคือรหัสที่ทำงานเฉพาะบน EVM ไม่สามารถเปลี่ยนแปลงได้เมื่อปรับใช้แล้ว Ethereum กำหนด ปรับเปลี่ยน และจัดเก็บสถานะผ่านสัญญาอัจฉริยะเพื่อให้ได้แอปพลิเคชั่นแบบกระจายอำนาจที่หลากหลาย EVM ทำหน้าที่เป็นสภาพแวดล้อมที่สามารถเรียกใช้สัญญาอัจฉริยะได้ ซึ่งคล้ายกับความสัมพันธ์ระหว่างทางหลวงกับรถยนต์

ค่าน้ำมัน

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

ความแข็งแกร่งและ Opcode

สัญญาอัจฉริยะของ Ethereum เขียนขึ้นใน Solidity และรวบรวมเป็น bytecode ก่อนดำเนินการบน EVM Bytecode มี opcodes หรือรหัสการดำเนินการ EVM มี 144 opcodes แต่ละอันมีฟังก์ชันการทำงานเฉพาะ ซึ่งทำให้ EVM Turing สมบูรณ์ สามารถแก้ปัญหาการคำนวณได้ทุกประเภท Solidity และ Opcodes ทำให้เราสามารถเขียน smart contracts ที่ซับซ้อนและนำฟังก์ชันที่หลากหลายไปใช้บน EVM ได้ จึงทำให้ผู้ใช้มี dApps ที่หลากหลาย

คุณสมบัติของ EVM

มุ่งมั่น

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

โหมดหลักประกันตายตัว

EVM เป็นเหมือนแซนด์บ็อกซ์แยกที่โค้ดทำงาน กระบวนการทำงานจะไม่เป็นอันตรายต่อซอฟต์แวร์/ฮาร์ดแวร์ของคอมพิวเตอร์และไม่ส่งผลกระทบต่อโปรโตคอลพื้นฐานของ Ethereum การแยก EVM ป้องกันแฮ็กเกอร์จากการโจมตีเครื่องที่เรียกใช้ EVM และยังป้องกันโปรโตคอลพื้นฐานของ Ethereum จากการถูกดัดแปลง ทำหน้าที่เป็นหลักประกันที่รักษาความปลอดภัย Ethereum

สิ้นสุด

กระบวนการรันโค้ด EVM อาจถูกขัดจังหวะ หากผู้ใช้เรียกใช้รหัสผิด เช่น การวนซ้ำไม่สิ้นสุด กลไกแก๊สสามารถปรับใช้เพื่อยุติกระบวนการดำเนินการ เพื่อป้องกันไม่ให้รหัสดังกล่าวครอบครองพลังการประมวลผลอย่างไม่มีกำหนด ก่อนดำเนินการโค้ดบน EVM ควรตั้งค่าขีดจำกัดบนของก๊าซล่วงหน้า เมื่อน้ำมันหมด รหัสจะหยุดทำงาน และสถานะจะถูกย้อนกลับโดยไม่มีการอัพเดทใด ๆ ในห่วงโซ่

ความเข้ากันได้ของ EVM

เมื่อผู้ใช้เพิ่มขึ้น Ethereum Mainnet ประสบปัญหามากมาย เช่น เครือข่ายแออัดและค่าธรรมเนียมน้ำมันสูง จำกัดเฉพาะการออกแบบของ Ethereum ปัญหาเหล่านี้ไม่สามารถแก้ไขได้อย่างสิ้นเชิง

ในช่วงไม่กี่ปีที่ผ่านมา มีเครือข่ายสาธารณะใหม่ๆ มากมายที่มีค่าธรรมเนียมน้ำมันต่ำกว่าและเครือข่ายที่เร็วกว่า และเครือข่ายเลเยอร์ 2 ที่ออกแบบมาเพื่อปรับขนาด Ethereum เชนเหล่านี้เป็นเชนสัญญาอัจฉริยะทั้งหมด ซึ่งกล่าวกันว่ามีการออกแบบพื้นฐานที่ดีกว่าและอาจใช้เพื่อสร้าง dApps ที่หลากหลาย

เครือข่ายเหล่านี้รองรับความต้องการส่วนเกินของระบบนิเวศ Ethereum และท้าทายสถานะที่โดดเด่นของ Ethereum จำเป็นหรือไม่ที่คู่หู Ethereum จะต้องเข้ากันได้กับ EVM? เกี่ยวกับความแตกต่างนี้ เชนเหล่านี้แบ่งออกเป็นสองประเภท: เชนที่เข้ากันได้กับ EVM และเชนที่ไม่ใช่ EVM

เครือข่ายสาธารณะที่เข้ากันได้กับ EVM

เมื่อเร็ว ๆ นี้ เชนสาธารณะ Layer 1 ผุดขึ้นมาทีละอัน แม้ว่าการสร้างระบบนิเวศแบบออนไลน์ที่ทำงานคู่ขนานกับ Ethereum ขึ้นมาใหม่จะสามารถเอาชนะข้อบกพร่องที่มีอยู่ของ Ethereum ได้ แต่ก็ต้องใช้ทรัพยากรบุคคลจำนวนมากในการสร้างระบบนิเวศที่สมบูรณ์และพัฒนา dApp ตั้งแต่เริ่มต้น การขาดโปรแกรมเมอร์ที่มีคุณสมบัติเป็นอุปสรรคต่อการเติบโตของระบบนิเวศเครือข่ายสาธารณะใหม่ สำหรับห่วงโซ่สาธารณะที่มีระบบนิเวศที่ยังไม่ได้รับการพัฒนา จะเป็นการยากที่จะดึงดูดผู้ใช้จาก Ethereum ภายในระยะเวลาสั้นๆ

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

อย่างไรก็ตาม ความเข้ากันได้ของ EVM นั้นมาพร้อมกับปัญหาบางอย่างอย่างหลีกเลี่ยงไม่ได้ ห่วงโซ่ที่เข้ากันได้กับ EVM จำนวนมากถูกจำกัดให้อยู่ในกฎของ EVM พบปัญหาเกี่ยวกับวิธีการบรรลุนวัตกรรมโดยไม่ต้องทำให้เป็นเนื้อเดียวกัน อย่างไรก็ตาม สายโซ่ที่ไม่ใช่ EVM สามารถทำลายกฎเหล่านี้และพัฒนากฎชุดใหม่ได้ตั้งแต่เริ่มต้น ซึ่งจะเป็นการสร้างนวัตกรรมโดยพื้นฐาน

ในปัจจุบันเชนสาธารณะกระแสหลักมากกว่า 70% เข้ากันได้กับ EVM เช่น BSC, Avalanche, Fantom, Tron, Celo เป็นต้น คงไม่ใช่เรื่องยากสำหรับนักพัฒนาที่จะพัฒนา dApps หรือปรับใช้แอพ Ethereum บนเชนเหล่านี้เพื่อประสิทธิภาพที่สูงขึ้นและค่าธรรมเนียมน้ำมันที่ลดลง ด้วยเหตุนี้จึงเป็นการปรับปรุงประสบการณ์ของผู้ใช้

เชนสาธารณะอื่น ๆ บางตัวไม่ใช่ EVM แต่ได้พัฒนาเครื่องเสมือนของตนเอง เช่น Sol, Terra เป็นต้น แม้ว่าจะไม่รองรับ EVM แต่เชนเหล่านี้ได้ดึงดูดกลุ่มผู้ใช้และสถาบันที่ภักดีด้วยการออกแบบที่เป็นนวัตกรรมใหม่และประสิทธิภาพบนเชนที่ยอดเยี่ยม ตัวอย่างเช่น เกมบล็อกเชนสองเกมอย่าง Step N และ Let me speak ซึ่งได้รับความนิยมไปทั่วโลกเมื่อเร็วๆ นี้ มีพื้นฐานมาจาก Sol chain และดึงดูดแฟนๆ ที่กระตือรือร้นจากทั่วโลกให้เข้าร่วม

โดยเฉพาะอย่างยิ่ง เชนที่เข้ากันได้กับ EVM สามารถอยู่ร่วมกับเชนที่ไม่ใช่ EVM ได้ เชนที่ไม่ใช่ EVM บางตัวก็เริ่มเข้ากันได้กับ EVM กระบวนการบรรลุสิ่งนี้จะลำบากเนื่องจากต้องใช้ความพยายามอย่างมากในการแก้ไขโค้ด ตัวอย่างนี้คือ Sol ที่เปิดตัว Neon ซึ่งอนุญาตให้นักพัฒนาสร้าง dApps บน EVM

รูป: ความเข้ากันได้ของ EVM ของเครือข่ายสาธารณะ

โซ่เลเยอร์ 2 เข้ากันได้กับ EVM

ในฐานะโซลูชันการปรับสเกลของ Ethereum เลเยอร์ 2 เป็นส่วนเสริมของ Ethereum แทนที่จะเป็นคู่แข่ง เชนเลเยอร์ 2 นั้นรองรับ EVM ได้ทั้งหมด โดยมีระดับความเข้ากันได้ที่สูงกว่าเลเยอร์ 1 เพื่อให้เลเยอร์ 2 เข้ากันได้กับ EVM เรามีสองโซลูชัน: ความเข้ากันได้ของ EVM และการเทียบเท่า EVM

เชนเลเยอร์ 2 รุ่นแรกรองรับ EVM ซึ่งคล้ายกับความเข้ากันได้ของ EVM ของเชนเลเยอร์ 1 สัญญาอัจฉริยะบน Ethereum Layer 1 สามารถใช้งานบน Layer 2 ได้โดยทำการปรับเปลี่ยนบางอย่าง ตัวอย่างเช่น Unipig ที่เปิดตัวโดย Optimism เป็นการสร้างโค้ด Uniswap ใหม่ทั้งหมด ถือว่าเป็น Uniswap บนเลเยอร์ 2

มีข้อจำกัดบางประการสำหรับความเข้ากันได้ของ EVM เมื่อพัฒนาสัญญาอัจฉริยะบนห่วงโซ่ที่เข้ากันได้กับ EVM เครื่องมือและเฟรมเวิร์กการพัฒนาที่ใช้ EVM บางอย่างอาจไม่พร้อมใช้งาน นอกจากนี้ สำหรับสัญญาอัจฉริยะที่เดิมจัดอยู่ในเลเยอร์ 1 นักพัฒนายังคงต้องทำการปรับเปลี่ยนบางอย่างเพื่อให้สัญญาอัจฉริยะสามารถทำงานได้อย่างราบรื่นบนบล็อกเชนที่เข้ากันได้กับ EVM

ความเท่าเทียมกันของ EVM มีจุดมุ่งหมายเพื่อให้นักพัฒนาได้รับประสบการณ์เดียวกันเมื่อพัฒนาสัญญาอัจฉริยะบนเลเยอร์ 2 เช่นเดียวกับบน Ethereum Layer 1 สิ่งนี้มีประโยชน์อย่างมากต่อนักพัฒนา Layer2 ปรับปรุงประสิทธิภาพการพัฒนาให้ดียิ่งขึ้น และช่วยประหยัดค่าใช้จ่ายในการพัฒนาและการบำรุงรักษาโค้ดบนพื้นฐานของความเข้ากันได้ของ EVM

ในปัจจุบัน โซลูชันเลเยอร์ 2 กระแสหลัก เช่น Artbitrum, Optimism และ Metis บรรลุผลเทียบเท่า EVM แล้ว ความเท่าเทียมกันของ EVM สามารถถ่ายโอนคุณลักษณะของ Ethereum ไปยังเลเยอร์ 2 ได้ดีขึ้น เพื่อลดต้นทุนการพัฒนาและการย้ายข้อมูลที่เกิดจากการปรับขนาด ความเท่าเทียมกันของ EVM นั้นคาดว่าจะกลายเป็นมาตรฐานกระแสหลักของเลเยอร์ 2 ในอนาคต และโซลูชันเลเยอร์ 2 จำนวนมากจะมีการแข่งขันที่รุนแรงเกี่ยวกับความเท่าเทียมกันของ EVM

บทสรุป

EVM เป็นแกนหลักที่ทำให้ Ethereum ทำงาน ด้วยการจัดตั้งการครอบงำของ Ethereum เชนสาธารณะที่สำคัญและเชนเลเยอร์ 2 ได้ปฏิบัติตามหรือเข้ากันได้กับแนวคิดการออกแบบพื้นฐานของ EVM ดังนั้น EVM จึงมีผลกระทบอย่างมากต่อบล็อกเชนทั้งหมด EVM เองนั้นมาพร้อมกับปัญหามากมาย ทำให้โซ่ใหม่เข้ากันได้กับ EVM ได้ยาก อย่างไรก็ตาม ผู้พัฒนายังคงทำงานอย่างหนักเพื่อปรับปรุง ซึ่งอำนวยความสะดวกอย่างมากในการเกิดขึ้นของเครือข่ายสาธารณะอื่นๆ อีกมากมาย

ผู้เขียน: Pigfly
นักแปล: Binyu
ผู้ตรวจทาน: Edward, Ashley, Cecilia
* ข้อมูลนี้ไม่ได้มีวัตถุประสงค์เป็นคำแนะนำทางการเงินหรือคำแนะนำอื่นใดที่ Gate.io เสนอหรือรับรอง
* บทความนี้ไม่สามารถทำซ้ำ ส่งต่อ หรือคัดลอกโดยไม่อ้างอิงถึง Gate.io การฝ่าฝืนเป็นการละเมิดพระราชบัญญัติลิขสิทธิ์และอาจถูกดำเนินการทางกฎหมาย