อธิบายโมเดลการเขียนโปรแกรมของ Solana สั้นๆ: อะไรคือความแตกต่างจาก ETH?
ผู้เขียนต้นฉบับ: Foresight News, Alex Liu
Solana เป็นแพลตฟอร์มบล็อกเชนประสิทธิภาพสูงที่ออกแบบมาเพื่อรองรับ dApps ซึ่งเป็นที่รู้จักในด้านความเร็วและความสามารถในการขยายขนาด ซึ่งทำได้ผ่านกลไกที่เป็นเอกฉันท์และการออกแบบสถาปัตยกรรมที่เป็นเอกลักษณ์ บทความนี้ใช้ Ethereum เป็นวัตถุเปรียบเทียบเพื่อแนะนำคุณลักษณะของโมเดลการเขียนโปรแกรมสัญญาอัจฉริยะของ Solana โดยย่อ
สัญญาอัจฉริยะ โปรแกรมออนไลน์:
โปรแกรมที่ทำงานบน Ethereum เรียกว่าสัญญาอัจฉริยะ ซึ่งเป็นชุดของโค้ด (ฟังก์ชัน) และข้อมูล (สถานะ) ที่อยู่ในที่อยู่เฉพาะบน Ethereum (โอ้ รหัสและข้อมูลเชื่อมโยงกัน) สัญญาอัจฉริยะก็คือบัญชี Ethereum เช่นกัน เรียกว่าบัญชีสัญญา พวกเขามียอดคงเหลือและสามารถกลายเป็นวัตถุธุรกรรมได้ แต่ไม่สามารถควบคุมโดยมนุษย์ได้ และถูกปรับใช้บนเครือข่ายเพื่อทำงานเป็นโปรแกรม
รหัสปฏิบัติการที่ทำงานบน Solana เรียกว่าโปรแกรมแบบออนไลน์ และสามารถตีความคำสั่งที่ส่งไปในแต่ละธุรกรรมได้ โปรแกรมเหล่านี้สามารถนำไปใช้โดยตรงในแกนเครือข่ายในฐานะโปรแกรมเนทิฟ หรือเผยแพร่โดยใครก็ตามในรูปแบบโปรแกรม SPL
คำสั่ง: คำสั่งเป็นคำศัพท์เฉพาะสำหรับโปรแกรมบนโซลาน่าเชน โปรแกรมออนไลน์ประกอบด้วยคำสั่ง ซึ่งเป็นหน่วยที่เล็กที่สุดสำหรับการดำเนินการเฉพาะ: ธุรกรรมของ Solana แต่ละรายการจะมีคำสั่งตั้งแต่หนึ่งคำสั่งขึ้นไป คำแนะนำระบุการดำเนินการที่จะดำเนินการ รวมถึงการเรียกโปรแกรมออนไลน์เฉพาะ การส่งผ่านบัญชี รายการอินพุต และการจัดหาอาร์เรย์ไบต์ คำสั่งมีข้อจำกัดในการคำนวณ ดังนั้นโปรแกรม on-chain ควรได้รับการปรับให้เหมาะสมเพื่อใช้หน่วยการคำนวณจำนวนน้อย หรือเพื่อแยกการดำเนินการที่มีราคาแพงออกเป็นหลายคำสั่ง
โปรแกรมเนทีฟ: โปรแกรมเนทิฟที่ให้ฟังก์ชันการทำงานที่จำเป็นสำหรับโหนดการตรวจสอบ สิ่งที่มีชื่อเสียงที่สุดคือโปรแกรมระบบซึ่งจัดการการสร้างบัญชีใหม่และการโอน SOL ระหว่างสองบัญชี
โปรแกรม SPL: กำหนดชุดของกิจกรรมออนไลน์ รวมถึงการสร้าง การแลกเปลี่ยน และการยืมโทเค็น เช่นเดียวกับการสร้างกลุ่มจำนำ การบำรุงรักษาบริการแก้ไขชื่อโดเมนออนไลน์ ฯลฯ หนึ่งในนั้นคือโปรแกรม SPL Token ใช้สำหรับการดำเนินการโทเค็น ในขณะที่ Associated Token Account Program มักใช้ในการเขียนโปรแกรมอื่นๆ ที่ปรับแต่งเอง
คุณเรียกมันว่าสัญญาที่ชาญฉลาด ฉันเรียกมันว่าโปรแกรมออนไลน์ ทุกคนมีความคิดเห็นที่แตกต่างกัน แต่พวกเขาทั้งหมดอ้างถึงโค้ดที่ทำงานบนบล็อกเชน Zhang, San, Li, Si และ Wang Mazi ล้วนเป็นชื่อส่วนบุคคล และคุณภาพจำเป็นต้องได้รับการตรวจสอบในด้านอื่น ๆ
รูปแบบบัญชี การแยกส่วนข้อมูล:
เช่นเดียวกับ Ethereum Solana ยังเป็นบล็อกเชนที่ใช้รูปแบบบัญชี แต่ Solana มีรูปแบบบัญชีที่แตกต่างจาก Ethereum และจัดเก็บข้อมูลในรูปแบบที่แตกต่างกัน
ใน Solana บัญชีสามารถบันทึกข้อมูลกระเป๋าเงินและข้อมูลอื่นๆ ได้ ช่องที่กำหนดโดยบัญชี ได้แก่ Lamports (ยอดคงเหลือในบัญชี) เจ้าของ (เจ้าของบัญชี) ที่ดำเนินการได้ (ไม่ว่าจะเป็นบัญชีที่ปฏิบัติการได้) และข้อมูล (ข้อมูลที่จัดเก็บไว้ในบัญชี) แต่ละบัญชีจะกำหนดโปรแกรมให้เป็นเจ้าของเพื่อแยกแยะโปรแกรมที่บัญชีนั้นใช้เป็นที่เก็บของรัฐ โปรแกรมออนไลน์เหล่านี้เป็นแบบอ่านอย่างเดียวหรือไร้สถานะ: บัญชีโปรแกรม (บัญชีที่ปฏิบัติการได้) จะจัดเก็บเฉพาะรหัสไบต์ BPF และไม่ได้จัดเก็บสถานะใด ๆ โปรแกรมจะจัดเก็บสถานะไว้ในบัญชีอิสระอื่น ๆ (บัญชีที่ไม่สามารถดำเนินการได้) ได้แก่ การเขียนโปรแกรมของ Solana โมเดลแยกรหัสและข้อมูล

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

อย่าประมาทความแตกต่างนี้! สัญญาอัจฉริยะของ Solana โดยพื้นฐานแล้วโจมตีได้ยากกว่าบล็อกเชนที่มีโมเดลการเขียนโปรแกรมควบคู่ (เช่น Ethereum):
ใน Ethereum "เจ้าของ" ของสัญญาอัจฉริยะคือตัวแปรระดับโลกที่สอดคล้องกับสัญญาอัจฉริยะแบบหนึ่งต่อหนึ่ง ดังนั้นการเรียกใช้ฟังก์ชันอาจเปลี่ยน "เจ้าของ" ของสัญญาได้โดยตรง
ใน Solana "เจ้าของ" ของสัญญาอัจฉริยะคือข้อมูลที่เกี่ยวข้องกับบัญชี ไม่ใช่ตัวแปรร่วม บัญชีสามารถมีเจ้าของได้หลายคน แทนที่จะเชื่อมโยงแบบหนึ่งต่อหนึ่ง เพื่อใช้ประโยชน์จากช่องโหว่ด้านความปลอดภัยในสัญญาอัจฉริยะ ผู้โจมตีไม่เพียงแต่ต้องค้นหาฟังก์ชันที่เป็นปัญหาเท่านั้น แต่ยังต้องเตรียมบัญชีที่ "ถูกต้อง" เพื่อเรียกใช้ฟังก์ชันดังกล่าวด้วย ขั้นตอนนี้ไม่ใช่เรื่องง่าย เนื่องจากสัญญาอัจฉริยะของ Solana มักจะเกี่ยวข้องกับบัญชีอินพุตหลายบัญชี และจัดการความสัมพันธ์ระหว่างบัญชีเหล่านั้นผ่านข้อจำกัด (เช่น `บัญชี 1.owner==บัญชี 2.key`) กระบวนการตั้งแต่ "การเตรียมบัญชีที่ถูกต้อง" ไปจนถึง "การเปิดการโจมตี" ก็เพียงพอแล้วสำหรับเจ้าหน้าที่ตรวจสอบความปลอดภัยในการตรวจจับธุรกรรมที่น่าสงสัยในเชิงรุกที่สร้างบัญชี "ปลอม" ที่เกี่ยวข้องกับสัญญาอัจฉริยะก่อนการโจมตี
สัญญาอัจฉริยะของ Ethereum เปรียบเสมือนห้องนิรภัยที่มีรหัสผ่านเฉพาะ ตราบใดที่คุณได้รับรหัสผ่านนี้ คุณสามารถเป็นเจ้าของได้อย่างสมบูรณ์ ในขณะที่ Solana's เป็นห้องนิรภัยที่มีรหัสผ่านมากมาย แต่ถ้าคุณต้องการรับสิทธิ์ คุณไม่เพียงแต่ต้องค้นหา วิธีรับรหัสผ่าน แต่คุณต้องคิดหมายเลขที่ตรงกับรหัสผ่านเพื่อเปิดล็อคด้วย
ภาษาโปรแกรม
Rust เป็นภาษาโปรแกรมหลักสำหรับการพัฒนาสัญญาอัจฉริยะบน Solana เนื่องจากคุณสมบัติด้านประสิทธิภาพและความปลอดภัย จึงเหมาะสำหรับสภาพแวดล้อมบล็อคเชนและสัญญาอัจฉริยะที่มีความเสี่ยงสูง โซลาน่ายังรองรับภาษา C, C++ และภาษาอื่นๆ (ซึ่งไม่ธรรมดา) อีกด้วย อย่างเป็นทางการได้จัดเตรียม Rust และ C SDK เพื่อสนับสนุนการพัฒนาโปรแกรมออนไลน์ นักพัฒนาสามารถใช้เครื่องมือเพื่อคอมไพล์โปรแกรมลงในโค้ดไบต์ของ Berkley Packet Filter (BPF) (ไฟล์มีนามสกุล .so) จากนั้นปรับใช้กับโซลานาเชน และดำเนินการตรรกะของสัญญาอัจฉริยะผ่านรันไทม์สัญญาอัจฉริยะแบบขนาน Sealevel
เนื่องจากภาษา Rust นั้นยากในการเริ่มต้นและไม่ได้ปรับแต่งสำหรับการพัฒนาบล็อคเชน ข้อกำหนดหลายประการจึงจำเป็นต้องมีการคิดค้นสิ่งใหม่ ๆ ซ้ำ ๆ และความซ้ำซ้อนของโค้ด (หลายโครงการในการผลิตใช้เฟรมเวิร์ก Anchor ที่สร้างโดย Backpack และ Armani เพื่อทำให้การพัฒนาง่ายขึ้น) ภาษาโปรแกรมที่สร้างขึ้นใหม่จำนวนมากสำหรับการพัฒนาบล็อกเชนโดยเฉพาะนั้นใช้พื้นฐานจาก Rust เช่น Cairo (Starknet), Move (Sui, Aptos)

หลายโครงการในการผลิตใช้เฟรมเวิร์ก Anchor
สัญญาอัจฉริยะของ Ethereum ได้รับการพัฒนาในภาษา Solidity เป็นหลัก (ไวยากรณ์คล้ายกับจาวาสคริปต์ และไฟล์โค้ดมีนามสกุล .sol) เนื่องจากไวยากรณ์ที่ค่อนข้างเรียบง่ายและเครื่องมือการพัฒนาที่สมบูรณ์กว่า (เฟรมเวิร์ก Hardhat, Remix IDE...) โดยทั่วไปเราคิดว่าประสบการณ์การพัฒนาของ Ethereum นั้นง่ายกว่าและสดชื่นกว่า ในขณะที่การพัฒนา Solana นั้นยากกว่าในการเริ่มต้น ดังนั้นแม้ว่า Solana จะได้รับความนิยมอย่างมากในตอนนี้ แต่ในความเป็นจริงแล้ว จำนวนนักพัฒนาบน Ethereum ก็ยังมากกว่า Solana มาก
ภายใต้สภาพถนนบางประเภท รถแข่งชั้นนำจะไม่เร็วเท่ากับรถดัดแปลง Rust ก็เหมือนกับรถแข่งระดับบนสุดที่รับประกันประสิทธิภาพและความปลอดภัยของ Solana ได้อย่างมีประสิทธิภาพ อย่างไรก็ตาม ไม่ได้ออกแบบมาเพื่อพัฒนาสนามแข่งนี้สำหรับโปรแกรมออนไลน์ แต่กลับทำให้ความยากในการขับขี่ (การพัฒนา) เพิ่มขึ้นแทน การใช้โซ่สาธารณะบนพื้นฐานของ Rust และการพัฒนาภาษาที่กำหนดเองสำหรับโซ่นั้นเทียบเท่ากับการปรับเปลี่ยนรถแข่งให้เหมาะสมกับสภาพถนนมากขึ้น โซลานาเสียเปรียบที่นี่
สรุป
รูปแบบการเขียนโปรแกรมสัญญาอัจฉริยะของ Solana เป็นนวัตกรรมใหม่ โดยให้วิธีการพัฒนาสัญญาอัจฉริยะแบบไร้สัญชาติ โดยใช้ Rust เป็นภาษาการเขียนโปรแกรมหลัก และสถาปัตยกรรมที่แยกตรรกะออกจากสถานะ ให้สภาพแวดล้อมที่มีประสิทธิภาพสำหรับนักพัฒนาในการสร้างและปรับใช้สัญญาอัจฉริยะ ทำให้มั่นใจในความปลอดภัยและประสิทธิภาพ แต่การพัฒนานั้นยากกว่า ด้วยการมุ่งเน้นไปที่ปริมาณงานสูง ต้นทุนต่ำ และความสามารถในการปรับขนาด Solana ยังคงเป็นตัวเลือกปัจจุบันสำหรับนักพัฒนาที่ต้องการสร้าง dApps ที่มีประสิทธิภาพสูง
ลิงค์อ้างอิง
https://solana.com/docs
https://ethereum.org/en/developers/docs
https://www.anchor-lang.com/


