คำอธิบายสั้นๆ ของโมเดลการเขียนโปรแกรม Solana: แตกต่างจาก ETH อย่างไร?
ผู้เขียนต้นฉบับ: Foresight News, Alex Liu
Solana เป็นแพลตฟอร์มบล็อคเชนประสิทธิภาพสูงที่ออกแบบมาเพื่อรองรับ dApps ซึ่งเป็นที่รู้จักในเรื่องความเร็วและความสามารถในการปรับขนาด ซึ่งทำได้โดยใช้กลไกฉันทามติและการออกแบบสถาปัตยกรรมที่ไม่เหมือนใคร บทความนี้ใช้ Ethereum เป็นวัตถุเปรียบเทียบเพื่อแนะนำลักษณะเฉพาะของโมเดลการเขียนโปรแกรมสัญญาอัจฉริยะของ Solana อย่างย่อๆ
สัญญาอัจฉริยะ โปรแกรมบนเชน:
โปรแกรมที่ทำงานบน Ethereum เรียกว่าสัญญาอัจฉริยะ ซึ่งเป็นชุดรหัส (ฟังก์ชัน) และข้อมูล (สถานะ) ที่อยู่ที่อยู่ที่เจาะจงบน Ethereum (โอ้ ไม่ รหัสและข้อมูลเชื่อมโยงกัน) สัญญาอัจฉริยะยังเป็นบัญชี Ethereum ที่เรียกว่าบัญชีสัญญา ซึ่งมียอดคงเหลือและสามารถซื้อขายได้ แต่ไม่สามารถถูกจัดการโดยมนุษย์ได้ และจะถูกวางไว้บนเครือข่ายเพื่อทำงานเป็นโปรแกรม
โค้ดปฏิบัติการที่ทำงานบน Solana เรียกว่าโปรแกรมออนเชน ซึ่งแปลความหมายคำสั่งที่ส่งในแต่ละธุรกรรม โปรแกรมเหล่านี้สามารถนำไปใช้กับแกนหลักของเครือข่ายโดยตรงในรูปแบบโปรแกรมเนทีฟ หรือเผยแพร่โดยใครก็ได้ในรูปแบบโปรแกรม SPL
- คำแนะนำ: คำแนะนำเป็นคำศัพท์พิเศษสำหรับโปรแกรมบนเครือข่าย Solana โปรแกรมบนเครือข่ายประกอบด้วยคำสั่ง ซึ่งเป็นหน่วยที่เล็กที่สุดสำหรับการดำเนินการเฉพาะ: ธุรกรรม Solana แต่ละรายการจะมีคำสั่งหนึ่งรายการขึ้นไป คำสั่งจะระบุการดำเนินการที่จะดำเนินการ รวมถึงการเรียกใช้โปรแกรมบนเครือข่ายเฉพาะ การส่งบัญชี รายการอินพุต และการให้ไบต์อาร์เรย์ คำสั่งมีข้อจำกัดในการคำนวณ ดังนั้นโปรแกรมบนเครือข่ายจึงควรได้รับการปรับให้เหมาะสมเพื่อใช้หน่วยการคำนวณจำนวนเล็กน้อย หรือแยกการดำเนินการที่มีค่าใช้จ่ายสูงออกเป็นคำสั่งหลายคำสั่ง
- โปรแกรมดั้งเดิม: โปรแกรมดั้งเดิมที่จัดเตรียมฟังก์ชันต่างๆ ที่จำเป็นสำหรับโหนดการยืนยัน โปรแกรมที่มีชื่อเสียงที่สุดคือโปรแกรมระบบ ซึ่งรับผิดชอบในการจัดการการสร้างบัญชีใหม่และการโอน SOL ระหว่างสองบัญชี
- โปรแกรม SPL: กำหนดชุดกิจกรรมบนเชน ซึ่งรวมถึงการสร้าง การแลกเปลี่ยน การให้ยืม การสร้างกลุ่มสเตกกิ้ง การบำรุงรักษาบริการการแก้ไขชื่อโดเมนบนเชน ฯลฯ ในจำนวนนี้ โปรแกรม SPL Token ใช้สำหรับการดำเนินการโทเค็น ในขณะที่โปรแกรมบัญชีโทเค็นที่เกี่ยวข้อง มักใช้ในการเขียนโปรแกรมที่กำหนดเองอื่นๆ
คุณเรียกมันว่าสัญญาอัจฉริยะ ฉันเรียกมันว่าโปรแกรมลูกโซ่ ทุกคนมีคำศัพท์ที่แตกต่างกัน แต่ทั้งหมดนั้นหมายถึงโค้ดที่ทำงานบนบล็อคเชน จางซาน หลี่ซี และหวางหม่าจื่อ เป็นชื่อบุคคลทั้งหมด คุณภาพของพวกเขายังต้องได้รับการตรวจสอบในแง่มุมอื่นๆ
รูปแบบบัญชีและการแยกข้อมูล:
คล้ายกับ Ethereum Solana ก็เป็นบล็อคเชนที่ใช้รูปแบบบัญชี แต่ Solana มีรูปแบบบัญชีที่แตกต่างจาก Ethereum และจัดเก็บข้อมูลในลักษณะที่แตกต่างกัน
ใน Solana บัญชีสามารถจัดเก็บข้อมูลกระเป๋าเงินและข้อมูลอื่นๆ ได้ ฟิลด์ที่กำหนดโดยบัญชี ได้แก่ Lamports (ยอดคงเหลือในบัญชี) เจ้าของ (เจ้าของบัญชี) ผู้ปฏิบัติการ (บัญชีที่สามารถปฏิบัติการได้หรือไม่) และข้อมูล (ข้อมูลที่จัดเก็บในบัญชี) แต่ละบัญชีจะระบุโปรแกรมเป็นเจ้าของเพื่อแยกแยะว่าบัญชีใดถูกใช้เป็นที่เก็บสถานะ โปรแกรมบนเชนเหล่านี้เป็นแบบอ่านอย่างเดียวหรือไม่มีสถานะ บัญชีโปรแกรม (บัญชีที่ปฏิบัติการได้) จะจัดเก็บเฉพาะไบต์โค้ด BPF เท่านั้นและไม่จัดเก็บสถานะใดๆ โปรแกรมจะจัดเก็บสถานะในบัญชีอิสระอื่นๆ (บัญชีที่ไม่สามารถปฏิบัติการได้) นั่นคือ โมเดลการเขียนโปรแกรมของ Solana จะแยกโค้ดและข้อมูลออกจากกัน
บัญชี Ethereum อ้างอิงถึงสถานะของ EVM เป็นหลัก และสัญญาอัจฉริยะมีทั้งตรรกะของโค้ดและความจำเป็นในการจัดเก็บข้อมูลผู้ใช้ ซึ่งโดยทั่วไปแล้วถือเป็นข้อบกพร่องด้านการออกแบบที่หลงเหลือมาจากประวัติของ EVM
อย่าประมาทความแตกต่างนี้! สัญญาอัจฉริยะของ Solana นั้นยากต่อการโจมตีมากกว่าบล็อคเชนที่มีโมเดลการเขียนโปรแกรมแบบคู่กันเช่น Ethereum:
ใน Ethereum เจ้าของสัญญาอัจฉริยะคือตัวแปรทั่วโลกที่สอดคล้องกับสัญญาอัจฉริยะทีละรายการ ดังนั้นการเรียกใช้ฟังก์ชันอาจเปลี่ยนเจ้าของสัญญาได้โดยตรง
ในโซลานา เจ้าของสัญญาอัจฉริยะคือข้อมูลที่เกี่ยวข้องกับบัญชี ไม่ใช่ตัวแปรทั่วโลก บัญชีสามารถมีเจ้าของได้หลายคน แทนที่จะเป็นการเชื่อมโยงแบบหนึ่งต่อหนึ่ง ผู้โจมตีจะใช้ประโยชน์จากช่องโหว่ด้านความปลอดภัยในสัญญาอัจฉริยะได้ก็ต่อเมื่อไม่เพียงแค่ค้นหาฟังก์ชันที่มีปัญหาเท่านั้น แต่ยังต้องเตรียมบัญชีที่ถูกต้องเพื่อเรียกใช้ฟังก์ชันนั้นด้วย ขั้นตอนนี้ไม่ใช่เรื่องง่าย เนื่องจากสัญญาอัจฉริยะของโซลานาโดยทั่วไปจะเกี่ยวข้องกับบัญชีอินพุตหลายบัญชีและจัดการความสัมพันธ์ระหว่างบัญชีเหล่านั้นผ่านข้อจำกัด (เช่น `account 1.owner==account 2.key`) กระบวนการตั้งแต่เตรียมบัญชีที่ถูกต้องจนถึงการเปิดตัวการโจมตีนั้นเพียงพอสำหรับการตรวจสอบความปลอดภัยในการตรวจจับธุรกรรมที่น่าสงสัยที่สร้างบัญชีปลอมที่เชื่อมโยงกับสัญญาอัจฉริยะก่อนการโจมตี
สัญญาอัจฉริยะของ Ethereum เปรียบเสมือนตู้เซฟที่มีรหัสผ่านเฉพาะตัว ตราบใดที่คุณได้รับรหัสผ่าน คุณก็มีสิทธิ์เป็นเจ้าของโดยสมบูรณ์ Solana เป็นตู้เซฟที่มีรหัสผ่านมากมาย แต่ในการขออนุญาต คุณไม่เพียงต้องหาวิธีรับรหัสผ่านเท่านั้น แต่ยังต้องค้นหาหมายเลขที่ตรงกับรหัสผ่านก่อนจึงจะไขกุญแจได้
ภาษาการเขียนโปรแกรม
Rust เป็นภาษาโปรแกรมหลักสำหรับการพัฒนาสัญญาอัจฉริยะบน Solana เนื่องจากมีคุณสมบัติด้านประสิทธิภาพและความปลอดภัย จึงเหมาะสำหรับสภาพแวดล้อมที่มีความเสี่ยงสูงของบล็อคเชนและสัญญาอัจฉริยะ Solana ยังรองรับ C, C++ และภาษาอื่นๆ (ไม่ค่อยพบเห็นบ่อยนัก) SDK อย่างเป็นทางการสำหรับ Rust และ C จัดทำขึ้นเพื่อรองรับการพัฒนาโปรแกรมบนเชน นักพัฒนาสามารถใช้เครื่องมือในการคอมไพล์โปรแกรมเป็นไบต์โค้ด Berkley Packet Filter (BPF) (ไฟล์ที่มีนามสกุล .so) จากนั้นจึงปรับใช้กับเชน Solana และดำเนินการตามตรรกะของสัญญาอัจฉริยะผ่านรันไทม์สัญญาอัจฉริยะแบบคู่ขนานของ Sealevel
เนื่องจากภาษา Rust นั้นเรียนรู้ได้ยากและไม่ได้ถูกปรับแต่งมาเพื่อการพัฒนาบล็อคเชน ความต้องการมากมายจึงต้องมีการคิดค้นใหม่และเขียนโค้ดซ้ำซ้อน (โปรเจ็กต์จำนวนมากในการผลิตใช้กรอบงาน Anchor ที่สร้างขึ้นโดย Armani ผู้ร่วมก่อตั้ง Backpack เพื่อลดความซับซ้อนในการพัฒนา) ภาษาโปรแกรมใหม่ๆ มากมายที่สร้างขึ้นเพื่อการพัฒนาบล็อคเชนนั้นอิงจาก Rust เช่น Cairo (Starknet) และ Move (Sui, Aptos)
โปรเจ็กต์จำนวนมากในการผลิตใช้กรอบงาน Anchor
สัญญาอัจฉริยะของ Ethereum ได้รับการพัฒนาส่วนใหญ่ใน Solidity (รูปแบบประโยคคล้ายกับ javascript และไฟล์โค้ดมีนามสกุล .sol) เนื่องจากรูปแบบประโยคค่อนข้างเรียบง่ายและเครื่องมือพัฒนาที่ครบถ้วนสมบูรณ์กว่า (Hardhat framework, Remix IDE…) เราจึงมักคิดว่าประสบการณ์การพัฒนา Ethereum นั้นง่ายกว่าและสดใหม่กว่า ในขณะที่การพัฒนา Solana นั้นเริ่มต้นได้ยาก ดังนั้น แม้ว่า Solana จะได้รับความนิยมอย่างมากในขณะนี้ แต่ในความเป็นจริง จำนวนนักพัฒนา Ethereum ยังคงมากกว่า Solana มาก
ภายใต้สภาพถนนบางประเภท รถแข่งระดับสูงไม่สามารถวิ่งได้เร็วเท่ารถที่ปรับแต่งมา Rust เปรียบเสมือนรถแข่งระดับสูงที่รับประกันประสิทธิภาพและความปลอดภัยของ Solana ได้อย่างมีประสิทธิภาพ อย่างไรก็ตาม ไม่ได้รับการออกแบบมาเพื่อการพัฒนาโปรแกรมบนเครือข่าย ซึ่งทำให้การขับเคลื่อน (การพัฒนา) ยากขึ้น การใช้เครือข่ายสาธารณะที่อิงตาม Rust และปรับแต่งภาษาสำหรับการพัฒนาบนเครือข่ายนั้นเทียบเท่ากับการปรับแต่งรถแข่งให้ปรับให้เข้ากับสภาพถนนได้ดีขึ้น Solana เสียเปรียบในเรื่องนี้
สรุป
โมเดลการเขียนโปรแกรมสัญญาอัจฉริยะของ Solanas ถือเป็นนวัตกรรมใหม่ โดยนำเสนอวิธีการพัฒนาสัญญาอัจฉริยะแบบไร้สถานะ ใช้ Rust เป็นภาษาการเขียนโปรแกรมหลัก และมีสถาปัตยกรรมที่แยกตรรกะออกจากสถานะ มอบสภาพแวดล้อมอันทรงพลังสำหรับนักพัฒนาในการสร้างและใช้งานสัญญาอัจฉริยะ ช่วยให้มั่นใจถึงความปลอดภัยและประสิทธิภาพการทำงาน แต่การพัฒนานั้นค่อนข้างยาก Solana มุ่งเน้นที่ปริมาณงานสูง ต้นทุนต่ำ และความสามารถในการปรับขนาด และยังคงเป็นตัวเลือกที่เหมาะสำหรับนักพัฒนาที่ต้องการสร้าง dApps ประสิทธิภาพสูง
ลิงค์อ้างอิง
https://solana.com/docs
https://ethereum.org/en/developers/docs
https://www.anchor-lang.com/
บทความนี้มีที่มาจากอินเทอร์เน็ต: คำอธิบายสั้นๆ เกี่ยวกับโมเดลการเขียนโปรแกรมของ Solana: มีความแตกต่างจาก ETH อย่างไร?
ผู้เขียนดั้งเดิม: @Web3 Mario บทนำ: เมื่อวานนี้ ฉันบังเอิญได้ยินจากเพื่อนว่าเขาได้รับผลตอบแทนจากการลงทุนจำนวนมากในด้านการจารึก BTC ซึ่งกระตุ้นความคิดของผู้เขียนในการก้าวเข้าสู่ความว่างเปล่าอย่างมาก ฉันวิตกกังวลเป็นเวลาสองวันติดต่อกัน ซึ่งเป็นเรื่องน่าละอายจริงๆ เมื่อนึกขึ้นได้ว่าสถาปัตยกรรมทางเทคนิคของ Ordinals เพิ่งเปิดตัวไปก่อนหน้านี้ ผู้เขียนจึงศึกษาเอกสารที่เกี่ยวข้อง แต่ในฐานะนักพัฒนา ฉันค่อนข้างไม่พอใจกับแนวทางทางเทคนิคนี้ ในเวลานั้น ฉันตัดสินว่านี่เป็นเพียงการย้อนกลับของเทคโนโลยีการเข้ารหัส เพราะแนวคิดการออกแบบดูเหมือนจะคล้ายกับโครงการ altcoin ที่อยู่ห่างไกลอย่าง Color Coin นั่นคือ วิธีการใช้สถาปัตยกรรมทางเทคนิคของ BTC เพื่อออกโทเค็นอิสระ แต่ความแตกต่างคือ Ordinals ไม่ได้...