Skip to main content

Command Palette

Search for a command to run...

สวัสดี Move

ทำความรู้จัก MOVE Language สำหรับ Web2 Developer

Updated
4 min read
สวัสดี Move

ทุกคนที่เป็นนักพัฒนาซอฟเเวร์ คงคุ้นชินกับภาษาต่างๆในการพัฒนาเเอพพลิเคชั่น เช่น Typescript , Golang, Python กันเป็นเรื่องปกติแล้วใช่ม๊าา เช่น

  • เว็บแอป: เราเขียน API ด้วย Express (Node.js) หรือ Spring (Java) ต่อกับ Database แล้วส่ง JSON ให้ frontend

  • ระบบสมาชิก (Authentication/Authorization): มีการ login, JWT, session, role-based access ที่เราคุมได้หมด

  • Business Logic: จะเขียน rule การคิดเงิน, การจัดการ order, การคำนวณส่วนลด ฯลฯ ก็แค่เพิ่ม logic เข้าไปใน backend

  • Database: ทุกอย่างสุดท้ายจบลงที่ row/column ใน SQL หรือ document ใน MongoDB

  • Deployment: เราเลือกว่าจะ deploy บน AWS, GCP หรือ DigitalOcean จะ scale server ยังไงก็อยู่ที่เรา

แต่รู้ไหมว่าในโลกของ Blockchain ภาษาหลักในการพัฒนาสิ่งที่เรียกว่า Smart Contract นั้น จะเป็นอีกโลกนึง แล้ว Smart contract คืออะไรละ? ต่างจาก สิ่งที่ทุกวันนี้เราเขียน Web application หรือ Backend services ยังไงกันนะ? เอาเเบบไม่ยาวเกินไป Smart contract คือชุดของโปรเเกรมที่ถูกติดตั้งบนระบบของ blockchain สามารถทำงานได้ด้วยตัวมันเองตามเงื่อนไขที่กำหนดเอาไว้ โดยไม่ต้องมีตัวกลาง เอาให้เห็นภาพกันอีกนิดนึด

ในระบบธนาคารเวลาเราโอนเงิน

  • ใน Web 2.0 → คุณจะต้องเก็บยอดหรือรายการลงในฐานข้อมูลใช่ม่ะ แล้วก็ต้องเขียนโปรเเกรมเพื่อเรียกดูข้อมูล หรือเวลาจะโอนเงินก็ต้องทำผ่าน API ที่มี server เป็นตัวกลาง

  • ใน Web 3.0 → คุณเขียน smart contract บอกว่า ยอดเงินของใครเท่าไหร่ วิธีการโอนเงิน แล้ว deploy บน blockchain เวลาเราจะเรียกดูยอดคงเหลือ หรือจะทำธุรกรรม ก็สามารถทำได้ทันที โดยไม่ต้อผ่านตัวกล่าว เเละยังสามารถตรวจสอบข้อมูลเหล่านั้นได้ตลอดเวลาอีกทีด้วย

ซึ่งภาษาที่ใช้สำหรับการพัฒนา Smart contract ก็จะมี Solidity (EVM เช่น Ethereum), Rust (Solana), Move ซึ่งจะเป็นพระเอกที่เราจะพูดถึงในวันนี้

Move คืออะไร

Move เป็นภาษาโปรแกรมที่ถูกออกแบบมาเพื่อการพัฒนา Smart Contract บน Blockchain โดยเริ่มต้นจาก Libra/Diem ของ Facebook/Meta และปัจจุบันถูกนำไปใช้ในหลาย Blockchain เช่น Aptos และ Sui จุดเด่นของ Move คือการสร้าง “Resource-Oriented Programming” หรือแนวคิดที่ให้ทรัพยากรดิจิทัล (เช่น Token, NFT) มีความปลอดภัยเหมือนกับการถือครองสินทรัพย์จริง ๆ ไม่สามารถคัดลอก ลบ หรือสร้างซ้ำโดยไม่ได้ตั้งใจ

ทำไมต้อง Move

จุดเด่น

  • ปลอดภัยกว่า Solidity: Move ออกแบบมาเพื่อลดปัญหาการเขียนโค้ดผิดพลาดที่มักเกิดใน Solidity เช่น การ Re-entrancy Attack หรือ Overflow

  • Resource-Oriented: การจัดการ Asset เป็นของจริง (First-class) ไม่เหมือนตัวเลขใน Database ลดความเสี่ยงเรื่องการ Duplicate

  • เข้าใจง่ายสำหรับ Developer ที่เคยทำ Web2: Syntax คล้าย Rust/C จึงไม่ยากสำหรับคนที่คุ้นกับภาษา typed language

  • ทดสอบง่าย: โค้ด Move ถูกแยกเป็นโมดูล ทำให้เขียน test และ reuse code ได้ชัดเจน

จุดด้อย

  • Ecosystem ยังเล็ก เมื่อเทียบกับ Solidity ที่มี DeFi/NFT/DAO Tools ครบวงจร

  • Learning Curve ใหม่ เพราะแนวคิด Resource-Oriented ไม่เหมือนกับการเขียนโปรแกรมทั่วไป

  • เครื่องมือยังไม่หลากหลาย เมื่อเทียบกับ Ethereum Ecosystem ที่มีทั้ง Hardhat, Foundry, Truffle

Move ต่างจาก Solidity ยังไง

  • การจัดการ Asset: Solidity ใช้ตัวเลข (uint) แทน Token balance แต่ Move มอง Asset เป็น Resource จริง ๆ ไม่สามารถ Duplicate ได้

  • ความปลอดภัยโดย Design: Move ป้องกัน Error หลายอย่างตั้งแต่ Compile-time ในขณะที่ Solidity ต้องใช้ Audit/Library เสริม

  • การเรียนรู้: Solidity ใกล้เคียงกับ JavaScript มาก (คน Web2 ที่เป็น JS dev จะเรียนรู้ได้ไว) แต่ Move คล้าย Rust ที่ strict กว่า ทำให้ปลอดภัยแต่ต้องใช้เวลาเรียนรู้

คุณสมบัติSolidity (Ethereum)Move (Aptos, Sui)
Asset ModelBalance ใน uintResource-Oriented
ความปลอดภัยอาศัย Audit/LibBuilt-in Safety
ความนิยมสูง (DeFi/NFT ecosystem ใหญ่)กำลังเติบโต
รูปแบบของ Syntaxคล้าย JSคล้าย Rust/C
เครื่องมือในการพัฒนาHardhat, Foundry, OpenZeppelinMove CLI, SDK กำลังพัฒนา

Object-Oriented Blockchain คืออะไร?

นี้คือหนึ่งในแนวคิดใหม่ที่เกิดขึ้นบน Blockchain ที่ใช้ Move คือ Object-Oriented Blockchain ซึ่งถูกนำมาใช้ใน Sui Blockchain นั้นจึงทำให้ Move แตกต่างจากภาษา Smart Contract อื่นๆ (อย่าง Solidity)

แนวคิดหลัก

แทนที่ทุกอย่างจะถูกเก็บเป็น บัญชี + ตัวเลข (balance) แบบใน Ethereum, Sui ใช้โมเดล Object ซึ่งคล้ายกับแนวคิดของ OOP (Object-Oriented Programming) คุ้นๆกันใช่ไหม

  • Object = Resource: แต่ละ Token, NFT หรือแม้แต่ Smart Contract instance จะถูกมองเป็น Object ที่มี state และ owner ชัดเจน

  • Object ID: แต่ละ Object มี ID เฉพาะ ไม่ซ้ำกัน (เหมือน primary key ใน database)

  • Ownership & Transfer: การโอนย้าย Asset = การเปลี่ยน owner ของ Object ไปยัง address ใหม่

  • Composable: Object สามารถซ้อนกันได้ เช่น เกมสามารถสร้าง “ตัวละคร” ที่เป็น Object และเก็บ “Item” ที่เป็น Object ภายในได้อีก

จุดเด่น

  • การประมวลผลแบบขนาน (Parallel Execution): เพราะ Object แต่ละตัวไม่แชร์ state กัน จึงสามารถทำธุรกรรมพร้อมกันได้ (TPS หรือ จำนวนธุรกรรมต่อวินาทีสูง)

  • ชัดเจนเรื่องสิทธิ์ความเป็นเจ้าของ (Ownership): ง่ายต่อการเขียน DApp ที่มี NFT, เกม หรือ RWA เพราะ Object เป็นตัวแทนสินทรัพย์จริง

  • ใกล้เคียง OOP สำหรับ Web2 Developer: นักพัฒนา Web2 ที่คุ้นกับ Class/Object จะเข้าใจโมเดลนี้ได้เร็ว

จุดด้อย

  • แนวคิดใหม่ ต้องเปลี่ยนมุมมอง: จาก Account-Based → Object-Based

  • Ecosystem ยังเล็กกว่า Ethereum: Tools และ Lib สำหรับ Object-Oriented ยังมีไม่มาก

  • ความซับซ้อนของการจัดการ Object: ต้องออกแบบระบบเก็บ, อ้างอิง และ Transfer Object ให้ดี ไม่งั้นจะทำงานยุ่งยาก

มาดูตัวอย่างกันดีกว่า

Solidity (Ethereum Model)

// Balance = ตัวเลขใน mapping
mapping(address => uint) balances;

function transfer(address to, uint amount) public {
    require(balances[msg.sender] >= amount);
    balances[msg.sender] -= amount;
    balances[to] += amount;
}

Move (Sui Object-Oriented Model)

module example::coin {
    struct Coin has key {
        id: UID,          // Object ID
        value: u64,       // จำนวนเงิน
        owner: address,   // เจ้าของ
    }
    public entry fun transfer(coin: Coin, to: address): Coin {
        // เปลี่ยนเจ้าของ Object
        Coin { id: coin.id, value: coin.value, owner: to }
    }
}

จะเห็นได้ว่า ในโมเดลของ Sui นั้น Coin แต่ละเหรียญคือ Object จริง ๆ ไม่ใช่แค่เลข balance ใน mapping

นอกจากนี้ยังมีส่วนอื่นๆที่น่าสนใจอีกด้วยนะ

  • Move มี Formal Verification ทำให้สามารถตรวจสอบ Smart Contract เชิงคณิตศาสตร์ได้ ลดความเสี่ยงจากบัค

  • Move กำลังได้รับความนิยมใน Blockchain รุ่นใหม่ที่เน้น Performance และ Security เช่น Aptos (Parallel Execution) และ Sui (Object-Oriented Blockchain)

ทำไม Web2 Developer ควรเริ่มเรียน Move ตอนนี้

ถ้าคุณเป็น Web2 Developer ที่คุ้นกับภาษาจำพวก JavaScript, Java, Python หรือแม้แต่ Rust การก้าวเข้าสู่โลก Web3 ด้วย Move Language จะเป็นโอกาสที่เหมาะ เพราะ Move ไม่ได้เป็นแค่ภาษาเขียน Smart Contract ธรรมดา แต่ถูกออกแบบมาเพื่อแก้จุดอ่อนที่เราเห็นใน Ethereum และ Solidity มาอย่างยาวนาน

  • ปลอดภัยกว่า: Resource-Oriented ทำให้ Asset บนบล็อกเชนถูกจัดการเหมือน “ของจริง” ไม่มีการ duplicate หรือสูญหายง่าย ๆ

  • ใกล้เคียง OOP: ถ้าคุณเคยเขียน Class/Object ใน Web2 การเรียนรู้ Object-Oriented Blockchain ของ Sui จะทำให้คุณรู้สึกว่าโค้ด Smart Contract ไม่ได้ต่างจากการออกแบบระบบ Web app ที่คุณคุ้นเคย

  • อนาคตของ Blockchain รุ่นใหม่: Move กำลังถูกใช้ใน Blockchain ที่เน้น performance และ security เช่น Aptos และ Sui ซึ่งกำลังดึงดูดนักพัฒนาและนักลงทุนมากขึ้นเรื่อย ๆ

  • First-Mover Advantage: Solidity Dev มีเยอะแล้ว แต่ Move Dev ยังมีน้อยมาก — การเรียนรู้ตอนนี้ทำให้คุณได้เปรียบในตลาดงาน และเปิดโอกาสสร้าง Product ที่แตกต่างได้ก่อนใคร

สรุปสั้นเลยๆนะ ถ้าคุณเป็น Web2 Developer ที่อยากก้าวเข้าสู่ Web3 ด้วยภาษาใหม่ที่ทั้งปลอดภัย เข้าใจง่าย และกำลังเติบโต Move คือภาษาที่ควรเริ่มต้นตอนนี้เลย เราสิ้นสุดการเกริ่นเกี่ยวกับ Move เพียงเท่านี้เพราะต่อไปนี้ ต่อไปต่อจากนี้ เราจะดำดิ่งไปกับการเขียนโค๊ดละ ตัดเล็บรอได้เลย

By Gang | ContributionDAO