บทความนี้เป็นบทความแปลจาก Xangle ซึ่งเป็นพาร์ทเนอร์ของ Cryptomind ซึ่งถูกเขียน ณ วันที่ 17 ตุลาคม 2023
เกริ่นนำ
ในโลกของ Web 3 การสร้าง user experience ที่ดีเป็นเรื่องสำคัญที่สุดเลยก็ว่าได้ ซึ่งจากมุมมองนี้บล็อกเชนที่ใช้สร้าง dApp มีความสำคัญน้อยกว่าความสามารถในการทำงานร่วมกัน ซึ่งทำให้ผู้ใช้ได้รับประสบการณ์ที่ดีจากการใช้บล็อกเชน ในปีช่วง 2021 และ 2022 มีการถกเถียงกันระหว่าง Monolithic และ Multi-chain โดยเฉพาะการเกิดใหม่ของบล็อกเชนอย่าง Solana และ Luna ซึ่งมาในช่วงระยะเวลาสั้นๆ และตอนนี้ก็มี Sui, Aptos ที่มาใหม่และดึงดูดความสนใจของนักลงทุนได้เป็นอย่างมาก
บทความนี้จะเป็นการเจาะลึกเกี่ยวกับ Aptos โดยเจาะลึกภาษา Move และ MoveVM ของ Aptos โดยจะเปรียบเทียบกับทั้ง Solidity/EVM และ Rust/WASM
Aptos คืออะไร
Aptos เป็นบบล็อกเชน Layer 1 โดยเป็นทีมที่เคยทำ Diem (เดิมชื่อ Libra) ที่เป็นโปรเจกต์บล็อกเชนของ Meta (อดีต Facebook) โดยทั้ง 2 โปรเจกต์นี้จะใช้ภาษา Move ในการสร้าง Dapps ซึ่งมีจุดเด่นด้าน Scalability และ Safety
ภาษา Move คืออะไร
ภาษา Move เกิดขึ้นมาได้อย่างไร
ในช่วงแรกทีม Diem พบข้อจำกัดในการพัฒนา Dapps โดยการใช้ภาษา Solidity อยู่ 2 ปัญหาด้วยกันดังนี้
- ภาษา Solidity จะมีจุดอ่อนและสามารถถูกโจมตีได้โดยการ reentrancy attacks และ double-spending attacks
- ภาษา Solidity ไม่สามารถประมวลผลธุรกรรมแบบ parallel ได้ทำให้มีคอขวดเรื่องการ Scalability
ด้วยเหตุนี้ทำให้ทีมได้ทำการสร้างภาษา Move ขึ้นมา โดยได้รับอิทธิพลมาจากภาษา Rust ซึ่งแม้ว่า Rust จะเป็นภาษาที่ยอดเยี่ยม แต่หากนำมาเขียน smart contract จะทำให้โค้ดมีความยาว โดย Aptos ยังคงรักษาภาษา Move แบบดั้งเดิมไว้ แต่ Sui ได้นำภาษาไปพัฒนาต่อจนออกมาเป็นภาษา Sui Move
*reentrancy attacks คือ การโจมตี smart contract ที่มีช่องโหว่ เพื่อทำการดูดเงินออกจาก smart contract ที่มีเงินล็อคอยู่
Features ต่างๆของภาษา Move/MoveVM
Move/MoveVM มีการออกแบบที่เน้นไปในเรื่องของความปลอดภัย และ สามารถประมวลผลธุรกรรมแบบ parallel ได้ ซึ่งจะทำให้มี Scalability สูง และ ช่วยลดช่องโหว่ที่บล็อกเชนจะถูกโจมตีได้
โดย Aptos ใช้ประโยชน์จากการตรวจสอบอย่างเป็นทางการผ่าน Move Prover เพื่อตรวจสอบความปลอดภัยของ smart contract ทำให้สามารถป้องกันการโจมตีแบบ reentrancy attacks และ double-spending attacks ซึ่งแตกต่างจากบล็อกเชนอื่นๆที่ต้องอาศัย consensus algorithms เพื่อป้องกันการโจมตี
ขอบคุณภาพจาก https://xangle.io/en/research/detail/1550
มากไปกว่านั้น MoveVM ใช้ static dispatch ในการเรียกใช้งานฟังก์ชั่นต่างๆ เพื่อป้องกัน reentrancy attacks จากการเรียกใช้งานฟังก์ชั่นต่างๆได้ แตกต่างจาก Ethereum Virtual Machine (EVM) ที่ใช้ dynamic dispatch โดยในเรื่องจังหวะเวลาของการเรียกใช้ฟังก์ชั่นภายในลำดับการทำงานของโปรแกรม ซึ่งโดยทั่วไปจะดำเนินการดังนี้ Compile → Link → Load → Run → Terminate ซึ่ง Static dispatch เรียกใช้ฟังก์ชันในเวลา Compile ซึ่งช่วยให้ smart contract ผ่านขั้นตอนการตรวจสอบข้อผิดพลาดเบื้องต้น ด้วยเหตุนี้ ใน MoveVM smart contract จึงเข้าสู่ขั้นตอนการตรวจสอบตั้งแต่เนิ่นๆ และป้องกัน reentrancy attacks ได้อย่างมีประสิทธิภาพ
ส่วนเรื่องประมวลผลธุรกรรมแบบ parallel ช่วยให้มีความ Scalability ค่อนข้างสูง โดย MoveVM ใช้ Block-STM (Block-Level Software Transactional Memory) เพื่อกระจายข้อมูลธุรกรรมไปในหลายๆเธรดเพื่อทำการประมวลผลธุรกรรมแบบ parallel
เปรียบเทียบภาษา Move กับภาษาอื่นๆ
Move vs. Solidity
Move/MoveVM สร้างขึ้นมาเพื่อแก้ไขข้อจำกัดของ Solidity ซึ่งตัวภาษา Move มีความปลอดภัยกว่า และ Scalability สูงกว่า ซึ่งจะเห็นได้ว่า Solidity/EVM เคยมีการถูกโจมตีแบบ reentrancy attacks อยู่หลายครั้งบน DeFi protocol ต่างๆ หรือแม้กระทั่งเหตุการณ์ The DAO ของ Ethereum ในปี 2016
ขอบคุณภาพจาก https://xangle.io/en/research/detail/1550
อย่างที่ได้มีการกล่าวไปในข้างต้น Move/MoveVM ถูกออกแบบมาเพื่อให้สามารถ scalability ได้ ซึ่งในทางทฤษฎีแล้วสามารถรองรับธุรกรรมได้ถึงจำนวน 160,000 TPS เลยทีเดียว ด้วยการประมวลผลแบบ parallel ช่วยจำกัดคอขวดเรื่องการ scale ที่เป็นปัญหาได้
Move vs. Rust
ภาษา Move นั้นมีต้นแบบมาจากภาษา Rust ที่มีจุดเด่นเรื่องความปลอดภัย และ ประสิทธิภาพที่สูง โดยความแตกต่างระหว่าง Move และ Rust คือ Rust ถูกออกแบบมาเพื่อใช้ในการเขียนโปรแกรมทั่วไปเพื่อใช้งานในวงกว้าง ส่วนภาษา Move จะถูกออกแบบมาเพื่อเขียน smart contract โดยเฉพาะ ทำให้การเขียน smart contract ด้วยภาษา Rust อาจส่งผลให้โค้ดยาวและซับซ้อนมากขึ้น แต่ Move ถูกออกแบบมาโดยเฉพาะทำให้โค้ดกระชับและซับซ้อนน้อยลงในการเขียน smart contract
Aptos Move vs. Sui Move
Aptos Move และ Sui Move นั้นมีความคล้ายคลึงกันเป็นอย่างมาก และใช้ Move Prover เพื่อตรวจสอบความถูกต้องของ smart contract เหมือนกัน แต่ความแตกต่างคือ Sui Move ได้มีการนำไปพัฒนาต่อยอด แต่ Aptos Move เลือกที่จะคงความดั้งเดิมไว้
โดยถึงแม้ทั้งคู่จะรองรับการประมวลผลธุรกรรมแบบ parallel ก็ตาม แต่วิธีนั้นต่างกันคือ
- Aptos : ใช้ Block-STM เพื่อกระจายข้อมูลธุรกรรมไปในหลายๆเธรดเพื่อทำการประมวลผลธุรกรรมแบบ parallel
- Sui : ใช้ Directed Acyclic Graph (DAG) เพื่อจัดเก็บธุรกรรม โดย DAG จะสามารถแยกธุรกรรมที่เชื่อมโยงกันได้ ช่วยให้สามารถประมวลผลธุรกรรมแบบ parallel ได้
วิธีการป้องกันการโจมตี reentrancy attacks จะเป็นดังนี้
- Aptos : ใช้ Static Dispatch เพื่อตรวจสอบสถานะของ smart contract ก่อนทำการ execute
- Sui : จะใช้การอัปเดทสถานะของ smart contract เพียงครั้งเดียวในระหว่างที่ทำการ execute เพื่อป้องกันการถูกโจมตี
ขอบคุณภาพจาก https://medium.com/@kklas/smart-contract-development-move-vs-rust-4d8f84754a8f
Next Step: สร้าง Developer Ecosystem ให้แข็งแกร่ง และ Killer Dapps
ถึงแม้ภาษา Move จะฟังดูน่าสนใจ และ มีจุดเด่นมากมาย แต่ยังมีเรื่องท้าทาย Aptos ecosystem อยู่บ้างดังนี้
- Adoption ของการใช้ภาษา Move นั้นยังน้อยกว่า Solidity อยู่มาก ซึ่งด้วยความที่ Solidity เกิดมายาวนานกว่า ทำให้มีเครื่องมือ หรือ มีการสอนใช้งานต่างๆ นั้นเป็นที่แพร่หลายกว่ามาก โดย Solidity developer community มีประมาณ 200,000 คน ซึ่งถือว่าเป็นจำนวน developer community ที่สูงมาก
- ยังไม่มี Killer Dapps ที่มาสร้างอยู่บน Aptos หากเปรียบเทียบกับ Dapps บน Ethereum หรือ Arbitrum ที่เป็นที่รู้จักวงกว้างในหมู่ผู้ใช้งานมากกว่า และ TVL ก็ยังคงตามหลัง Layer 2 อยู่มากพอสมควร
Aptos Foundation ก็รับรู้ถึงความท้าทายนี้ และ ให้ความสำคัญกับการพัฒนาเครื่องมือเพื่อให้ developer ทำงานง่ายมากยิ่งขึ้น เพื่อกระตุ้นให้มี developer มาพัฒนา Dapps บน Aptos มากยิ่งขึ้น
เรื่องที่สำคัญไม่แพ้กันก็คือเรื่อง Partnership โดยมีการร่วมมือกับบริษัทที่มีชื่อเสียงเช่น NBCUniversal, Microsoft, Google, Netmarble(Marblex), Neowiz, และ Chingari เป็นต้น และก็มีการอัปเกรด AIP-41 ที่จะมีการปรับใช้ระบบ Onchain Randomness เพื่อลดต้นทุนจากการใช้ VRF ของ Chainlink ทำให้สร้างความได้เปรียบเรื่องต้นทุนให้กับบริษัทเกมต่างๆที่จะสร้างบน Aptos ให้มีค่าใช้จ่ายที่ถูกลง
สรุป
ภาษา Move/MoveVM ของ Aptos ถือเป็นภาษาเขียนโปรแกรมที่มีศักยภาพสูง เมื่อเปรียบเทียบกับตัวอื่นๆ ซึ่งจุดประสงค์คือการสร้างขึ้นเพื่อสร้างภาษา smart contract ที่มีประสิทธิภาพ แต่แน่นอนว่าในแง่ของจำนวน Developer ก็ยังคงตามหลัง Solidity อยู่มาก และ TVL กับ Dapps ต่างๆก็ยังมีไม่มาก เพราะตัว Aptos พึ่งพัฒนามาได้ประมาณ 1 ปีเท่านั้น ภาษานี้จะถูกสร้างขึ้นมาจากทีมที่มีชื่อเสียงจึงยังเป็นที่จับตามองเป็นอย่างมาก
อ่านบทความอื่นเพิ่มเติมได้ที่นี้ https://cryptomind.group/research/