ส่งต่อชื่อเดิม '小学生也能看懂!Solana 的编程模型,究竟和 ETH 有啥区别?'
Solana เป็นแพลตฟอร์มบล็อกเชนประสิทธิภาพสูงที่ออกแบบมาเพื่อรองรับ dApps มันเป็นที่รู้จักในด้านความเร็วและความสามารถในการปรับขนาดซึ่งทําได้ผ่านกลไกฉันทามติที่เป็นเอกลักษณ์และการออกแบบสถาปัตยกรรม บทความนี้ใช้ Ethereum เป็นวัตถุเปรียบเทียบเพื่อแนะนําลักษณะของรูปแบบการเขียนโปรแกรมสัญญาอัจฉริยะของ Solana โดยสังเขป
โปรแกรมที่ทํางานบน Ethereum เรียกว่า smart contracts ชุดรหัส (ฟังก์ชัน) ที่อยู่เฉพาะบน Ethereum และข้อมูล (state) (โอ้รหัสและข้อมูลเป็นคู่กัน) สัญญาอัจฉริยะยังเป็นบัญชี Ethereum ซึ่งเรียกว่าบัญชีสัญญา พวกเขามียอดคงเหลือและสามารถกลายเป็นวัตถุธุรกรรมได้ แต่มนุษย์ไม่สามารถควบคุมได้และถูกปรับใช้บนเครือข่ายเพื่อเรียกใช้เป็นโปรแกรม
รหัสปฏิบัติการที่ทํางานบน Solana เรียกว่าโปรแกรมแบบ on-chain และสามารถตีความคําสั่งที่ส่งในแต่ละธุรกรรมได้ โปรแกรมเหล่านี้สามารถปรับใช้โดยตรงกับแกนเครือข่ายเป็นโปรแกรมเนทีฟหรือเผยแพร่โดยทุกคนเป็นโปรแกรม SPL
คุณเรียกพวกเขาว่าสัญญาอัจฉริยะฉันเรียกพวกเขาว่าโปรแกรมออนเชน คําศัพท์ที่แตกต่างกัน แต่ทั้งคู่อ้างถึงรหัสที่ทํางานบนบล็อกเชน เช่นเดียวกับอลิซบ๊อบและจอห์นเป็นชื่อทั้งหมดและคุณสมบัติที่แท้จริงของพวกเขาจะต้องได้รับการประเมินโดยด้านอื่น ๆ
คล้ายกับ Ethereum Solana ยังเป็นบล็อกเชนตามรูปแบบบัญชี แต่ Solana ให้รูปแบบบัญชีที่แตกต่างจาก Ethereum และจัดเก็บข้อมูลในรูปแบบต่างๆ
ใน Solana บัญชีสามารถบันทึกข้อมูลกระเป๋าเงินและข้อมูลอื่น ๆ ฟิลด์ที่กําหนดโดยบัญชี ได้แก่ Lamports (ยอดคงเหลือในบัญชี) เจ้าของ (เจ้าของบัญชี) Executable (ไม่ว่าจะเป็นบัญชีปฏิบัติการ) และข้อมูล (ข้อมูลที่เก็บไว้ในบัญชี) แต่ละบัญชีจะกําหนดโปรแกรมเป็นเจ้าของเพื่อแยกแยะว่าโปรแกรมใดที่บัญชีถูกใช้เป็นที่เก็บของรัฐ โปรแกรมแบบ on-chain เหล่านี้เป็นแบบอ่านอย่างเดียวหรือไม่มีสถานะ: บัญชีโปรแกรม (บัญชีปฏิบัติการ) จะเก็บเฉพาะ BPF bytecode และไม่จัดเก็บสถานะใด ๆ โปรแกรมจะจัดเก็บสถานะในบัญชีอิสระอื่น ๆ (บัญชีที่ไม่สามารถปฏิบัติการได้) นั่นคือรูปแบบการเขียนโปรแกรมของ Solana แยกรหัสและข้อมูล
บัญชี Ethereum ส่วนใหญ่เป็นการอ้างอิงถึงสถานะ EVM สัญญาอัจฉริยะไม่เพียง แต่มีตรรกะของรหัส แต่ยังต้องจัดเก็บข้อมูลผู้ใช้ด้วย นี่มักถือเป็นข้อบกพร่องในการออกแบบที่เหลือจากประวัติศาสตร์ของ EVM
อย่าประมาทความแตกต่างนี้! สัญญาอัจฉริยะของ Solana นั้นท้าทายกว่าในการโจมตีเมื่อเทียบกับบล็อกเชนที่มีรูปแบบการเขียนโปรแกรมคู่เช่น Ethereum
ใน Ethereum "เจ้าของ" สัญญาอัจฉริยะเป็นตัวแปรระดับโลกที่สอดคล้องกับสัญญาอัจฉริยะแบบตัวต่อตัว ดังนั้นการเรียกฟังก์ชันอาจเปลี่ยน "เจ้าของ" ของสัญญาโดยตรง
อย่างไรก็ตามใน Solana "เจ้าของ" ของสัญญาอัจฉริยะคือข้อมูลที่เกี่ยวข้องกับบัญชีมากกว่าตัวแปรส่วนกลาง บัญชีสามารถมีเจ้าของได้หลายคนแทนที่จะเป็นการเชื่อมโยงแบบตัวต่อตัว สําหรับผู้โจมตีที่จะใช้ประโยชน์จากช่องโหว่ด้านความปลอดภัยในสัญญาอัจฉริยะพวกเขาไม่เพียง แต่ต้องค้นหาฟังก์ชันที่มีปัญหา แต่ยังต้องเตรียมบัญชี "ถูกต้อง" เพื่อเรียกฟังก์ชันนั้น ขั้นตอนนี้ไม่ใช่เรื่องง่ายเนื่องจากสัญญาอัจฉริยะของ Solana มักเกี่ยวข้องกับบัญชีอินพุตหลายบัญชีและจัดการความสัมพันธ์ผ่านข้อจํากัด (เช่น account1.owner == account2.key) กระบวนการจาก "การเตรียมบัญชีที่ถูกต้อง" ไปจนถึง "การเปิดตัวการโจมตี" ช่วยให้เจ้าหน้าที่ตรวจสอบความปลอดภัยมีเวลาเพียงพอในการตรวจจับธุรกรรมที่น่าสงสัยที่เกี่ยวข้องกับการสร้างบัญชี "ปลอม" ที่เกี่ยวข้องกับสัญญาอัจฉริยะก่อนที่จะเกิดการโจมตี
สัญญาอัจฉริยะของ Ethereum เป็นเหมือนห้องนิรภัยที่ใช้รหัสผ่านเฉพาะเมื่อคุณได้รับรหัสผ่านนี้คุณจะได้รับความเป็นเจ้าของเต็มรูปแบบ ในทางตรงกันข้ามสัญญาอัจฉริยะของ Solana เป็นเหมือนห้องนิรภัยที่มีรหัสผ่านมากมาย ในการเข้าถึงคุณไม่เพียง แต่ต้องได้รับรหัสผ่าน แต่ยังต้องหารหัสผ่านที่สอดคล้องกับล็อคที่จะเปิด
Rust เป็นภาษาการเขียนโปรแกรมหลักสําหรับการพัฒนาสัญญาอัจฉริยะบน Solana เนื่องจากคุณสมบัติด้านประสิทธิภาพและความปลอดภัยจึงเหมาะสําหรับสภาพแวดล้อมที่มีความเสี่ยงสูงของบล็อกเชนและสัญญาอัจฉริยะ Solana ยังรองรับ C, C ++ และภาษาอื่น ๆ (ผิดปกติมาก) SDK อย่างเป็นทางการสําหรับ Rust และ C มีไว้เพื่อสนับสนุนการพัฒนาโปรแกรมแบบ on-chain นักพัฒนาสามารถใช้เครื่องมือในการคอมไพล์โปรแกรมลงใน Berkley Packet Filter (BPF) bytecode (ไฟล์มีนามสกุล. so) จากนั้นปรับใช้กับห่วงโซ่ Solana และดําเนินการตรรกะของสัญญาอัจฉริยะผ่านรันไทม์สัญญาอัจฉริยะแบบขนาน Sealevel
เนื่องจากภาษา Rust นั้นยากที่จะเริ่มต้นและไม่ได้ปรับแต่งสําหรับการพัฒนาบล็อกเชนข้อกําหนดจํานวนมากจึงต้องสร้างวงล้อและรหัสซ้ําซ้อนใหม่ (หลายโครงการในการผลิตใช้เฟรมเวิร์ก Anchor ที่สร้างโดย Armani ผู้ร่วมสร้างกระเป๋าเป้สะพายหลังเพื่อลดความซับซ้อนของการพัฒนา) ภาษาการเขียนโปรแกรมที่สร้างขึ้นใหม่จํานวนมากที่อุทิศให้กับการพัฒนาบล็อกเชนนั้นขึ้นอยู่กับ Rust เช่น Cairo (Starknet), Move (Sui, Aptos)
หลายโครงการในการผลิตใช้เฟรมเวิร์ก Anchor
สัญญาอัจฉริยะ Ethereum ส่วนใหญ่ได้รับการพัฒนาในภาษา Solidity (ไวยากรณ์คล้ายกับจาวาสคริปต์และไฟล์โค้ดมีนามสกุล. sol) เนื่องจากไวยากรณ์ที่ค่อนข้างง่ายและเครื่องมือการพัฒนาที่เป็นผู้ใหญ่มากขึ้น (Hardhat framework, Remix IDE ... ) โดยทั่วไปเราคิดว่าประสบการณ์การพัฒนาของ Ethereum นั้นง่ายกว่าและสดชื่นกว่าในขณะที่การพัฒนา Solana นั้นยากที่จะเริ่มต้น ดังนั้นแม้ว่า Solana จะได้รับความนิยมอย่างมากในตอนนี้ แต่ในความเป็นจริงจํานวนนักพัฒนาบน Ethereum ยังคงมากกว่า Solana
ภายใต้สภาพถนนบางอย่างรถแข่งชั้นนําจะไม่เร็วเท่ากับรถดัดแปลง สนิมเป็นเหมือนรถแข่งระดับบนสุดซึ่งรับประกันประสิทธิภาพและความปลอดภัยของ Solana ได้อย่างมีประสิทธิภาพ อย่างไรก็ตามมันไม่ได้ออกแบบมาเพื่อพัฒนาแทร็กนี้สําหรับโปรแกรมออนเชน แต่ทําให้เกิดความยากลําบากในการขับขี่ (การพัฒนา) เพิ่มขึ้น การใช้โซ่สาธารณะตาม Rust และการพัฒนาภาษาที่กําหนดเองสําหรับโซ่นั้นเทียบเท่ากับการปรับเปลี่ยนรถแข่งเพื่อให้เหมาะสมกับสภาพถนนมากขึ้น Solana เสียเปรียบที่นี่
รูปแบบการเขียนโปรแกรมสัญญาอัจฉริยะของ Solana เป็นนวัตกรรมใหม่ นําเสนอแนวทางแบบไร้สัญชาติในการพัฒนาสัญญาอัจฉริยะโดยใช้ Rust เป็นภาษาการเขียนโปรแกรมหลักและสถาปัตยกรรมที่แยกตรรกะออกจากสถานะ สิ่งนี้ทําให้นักพัฒนามีสภาพแวดล้อมที่แข็งแกร่งสําหรับการสร้างและปรับใช้สัญญาอัจฉริยะเพื่อให้มั่นใจในความปลอดภัยและประสิทธิภาพแม้ว่าจะก่อให้เกิดความยากลําบากในการพัฒนาที่สูงขึ้น Solana มุ่งเน้นไปที่ปริมาณงานสูงต้นทุนต่ําและความสามารถในการปรับขนาดทําให้เป็นตัวเลือกที่เหมาะสําหรับนักพัฒนาที่ต้องการสร้าง dApps ประสิทธิภาพสูง
ส่งต่อชื่อเดิม '小学生也能看懂!Solana 的编程模型,究竟和 ETH 有啥区别?'
Solana เป็นแพลตฟอร์มบล็อกเชนประสิทธิภาพสูงที่ออกแบบมาเพื่อรองรับ dApps มันเป็นที่รู้จักในด้านความเร็วและความสามารถในการปรับขนาดซึ่งทําได้ผ่านกลไกฉันทามติที่เป็นเอกลักษณ์และการออกแบบสถาปัตยกรรม บทความนี้ใช้ Ethereum เป็นวัตถุเปรียบเทียบเพื่อแนะนําลักษณะของรูปแบบการเขียนโปรแกรมสัญญาอัจฉริยะของ Solana โดยสังเขป
โปรแกรมที่ทํางานบน Ethereum เรียกว่า smart contracts ชุดรหัส (ฟังก์ชัน) ที่อยู่เฉพาะบน Ethereum และข้อมูล (state) (โอ้รหัสและข้อมูลเป็นคู่กัน) สัญญาอัจฉริยะยังเป็นบัญชี Ethereum ซึ่งเรียกว่าบัญชีสัญญา พวกเขามียอดคงเหลือและสามารถกลายเป็นวัตถุธุรกรรมได้ แต่มนุษย์ไม่สามารถควบคุมได้และถูกปรับใช้บนเครือข่ายเพื่อเรียกใช้เป็นโปรแกรม
รหัสปฏิบัติการที่ทํางานบน Solana เรียกว่าโปรแกรมแบบ on-chain และสามารถตีความคําสั่งที่ส่งในแต่ละธุรกรรมได้ โปรแกรมเหล่านี้สามารถปรับใช้โดยตรงกับแกนเครือข่ายเป็นโปรแกรมเนทีฟหรือเผยแพร่โดยทุกคนเป็นโปรแกรม SPL
คุณเรียกพวกเขาว่าสัญญาอัจฉริยะฉันเรียกพวกเขาว่าโปรแกรมออนเชน คําศัพท์ที่แตกต่างกัน แต่ทั้งคู่อ้างถึงรหัสที่ทํางานบนบล็อกเชน เช่นเดียวกับอลิซบ๊อบและจอห์นเป็นชื่อทั้งหมดและคุณสมบัติที่แท้จริงของพวกเขาจะต้องได้รับการประเมินโดยด้านอื่น ๆ
คล้ายกับ Ethereum Solana ยังเป็นบล็อกเชนตามรูปแบบบัญชี แต่ Solana ให้รูปแบบบัญชีที่แตกต่างจาก Ethereum และจัดเก็บข้อมูลในรูปแบบต่างๆ
ใน Solana บัญชีสามารถบันทึกข้อมูลกระเป๋าเงินและข้อมูลอื่น ๆ ฟิลด์ที่กําหนดโดยบัญชี ได้แก่ Lamports (ยอดคงเหลือในบัญชี) เจ้าของ (เจ้าของบัญชี) Executable (ไม่ว่าจะเป็นบัญชีปฏิบัติการ) และข้อมูล (ข้อมูลที่เก็บไว้ในบัญชี) แต่ละบัญชีจะกําหนดโปรแกรมเป็นเจ้าของเพื่อแยกแยะว่าโปรแกรมใดที่บัญชีถูกใช้เป็นที่เก็บของรัฐ โปรแกรมแบบ on-chain เหล่านี้เป็นแบบอ่านอย่างเดียวหรือไม่มีสถานะ: บัญชีโปรแกรม (บัญชีปฏิบัติการ) จะเก็บเฉพาะ BPF bytecode และไม่จัดเก็บสถานะใด ๆ โปรแกรมจะจัดเก็บสถานะในบัญชีอิสระอื่น ๆ (บัญชีที่ไม่สามารถปฏิบัติการได้) นั่นคือรูปแบบการเขียนโปรแกรมของ Solana แยกรหัสและข้อมูล
บัญชี Ethereum ส่วนใหญ่เป็นการอ้างอิงถึงสถานะ EVM สัญญาอัจฉริยะไม่เพียง แต่มีตรรกะของรหัส แต่ยังต้องจัดเก็บข้อมูลผู้ใช้ด้วย นี่มักถือเป็นข้อบกพร่องในการออกแบบที่เหลือจากประวัติศาสตร์ของ EVM
อย่าประมาทความแตกต่างนี้! สัญญาอัจฉริยะของ Solana นั้นท้าทายกว่าในการโจมตีเมื่อเทียบกับบล็อกเชนที่มีรูปแบบการเขียนโปรแกรมคู่เช่น Ethereum
ใน Ethereum "เจ้าของ" สัญญาอัจฉริยะเป็นตัวแปรระดับโลกที่สอดคล้องกับสัญญาอัจฉริยะแบบตัวต่อตัว ดังนั้นการเรียกฟังก์ชันอาจเปลี่ยน "เจ้าของ" ของสัญญาโดยตรง
อย่างไรก็ตามใน Solana "เจ้าของ" ของสัญญาอัจฉริยะคือข้อมูลที่เกี่ยวข้องกับบัญชีมากกว่าตัวแปรส่วนกลาง บัญชีสามารถมีเจ้าของได้หลายคนแทนที่จะเป็นการเชื่อมโยงแบบตัวต่อตัว สําหรับผู้โจมตีที่จะใช้ประโยชน์จากช่องโหว่ด้านความปลอดภัยในสัญญาอัจฉริยะพวกเขาไม่เพียง แต่ต้องค้นหาฟังก์ชันที่มีปัญหา แต่ยังต้องเตรียมบัญชี "ถูกต้อง" เพื่อเรียกฟังก์ชันนั้น ขั้นตอนนี้ไม่ใช่เรื่องง่ายเนื่องจากสัญญาอัจฉริยะของ Solana มักเกี่ยวข้องกับบัญชีอินพุตหลายบัญชีและจัดการความสัมพันธ์ผ่านข้อจํากัด (เช่น account1.owner == account2.key) กระบวนการจาก "การเตรียมบัญชีที่ถูกต้อง" ไปจนถึง "การเปิดตัวการโจมตี" ช่วยให้เจ้าหน้าที่ตรวจสอบความปลอดภัยมีเวลาเพียงพอในการตรวจจับธุรกรรมที่น่าสงสัยที่เกี่ยวข้องกับการสร้างบัญชี "ปลอม" ที่เกี่ยวข้องกับสัญญาอัจฉริยะก่อนที่จะเกิดการโจมตี
สัญญาอัจฉริยะของ Ethereum เป็นเหมือนห้องนิรภัยที่ใช้รหัสผ่านเฉพาะเมื่อคุณได้รับรหัสผ่านนี้คุณจะได้รับความเป็นเจ้าของเต็มรูปแบบ ในทางตรงกันข้ามสัญญาอัจฉริยะของ Solana เป็นเหมือนห้องนิรภัยที่มีรหัสผ่านมากมาย ในการเข้าถึงคุณไม่เพียง แต่ต้องได้รับรหัสผ่าน แต่ยังต้องหารหัสผ่านที่สอดคล้องกับล็อคที่จะเปิด
Rust เป็นภาษาการเขียนโปรแกรมหลักสําหรับการพัฒนาสัญญาอัจฉริยะบน Solana เนื่องจากคุณสมบัติด้านประสิทธิภาพและความปลอดภัยจึงเหมาะสําหรับสภาพแวดล้อมที่มีความเสี่ยงสูงของบล็อกเชนและสัญญาอัจฉริยะ Solana ยังรองรับ C, C ++ และภาษาอื่น ๆ (ผิดปกติมาก) SDK อย่างเป็นทางการสําหรับ Rust และ C มีไว้เพื่อสนับสนุนการพัฒนาโปรแกรมแบบ on-chain นักพัฒนาสามารถใช้เครื่องมือในการคอมไพล์โปรแกรมลงใน Berkley Packet Filter (BPF) bytecode (ไฟล์มีนามสกุล. so) จากนั้นปรับใช้กับห่วงโซ่ Solana และดําเนินการตรรกะของสัญญาอัจฉริยะผ่านรันไทม์สัญญาอัจฉริยะแบบขนาน Sealevel
เนื่องจากภาษา Rust นั้นยากที่จะเริ่มต้นและไม่ได้ปรับแต่งสําหรับการพัฒนาบล็อกเชนข้อกําหนดจํานวนมากจึงต้องสร้างวงล้อและรหัสซ้ําซ้อนใหม่ (หลายโครงการในการผลิตใช้เฟรมเวิร์ก Anchor ที่สร้างโดย Armani ผู้ร่วมสร้างกระเป๋าเป้สะพายหลังเพื่อลดความซับซ้อนของการพัฒนา) ภาษาการเขียนโปรแกรมที่สร้างขึ้นใหม่จํานวนมากที่อุทิศให้กับการพัฒนาบล็อกเชนนั้นขึ้นอยู่กับ Rust เช่น Cairo (Starknet), Move (Sui, Aptos)
หลายโครงการในการผลิตใช้เฟรมเวิร์ก Anchor
สัญญาอัจฉริยะ Ethereum ส่วนใหญ่ได้รับการพัฒนาในภาษา Solidity (ไวยากรณ์คล้ายกับจาวาสคริปต์และไฟล์โค้ดมีนามสกุล. sol) เนื่องจากไวยากรณ์ที่ค่อนข้างง่ายและเครื่องมือการพัฒนาที่เป็นผู้ใหญ่มากขึ้น (Hardhat framework, Remix IDE ... ) โดยทั่วไปเราคิดว่าประสบการณ์การพัฒนาของ Ethereum นั้นง่ายกว่าและสดชื่นกว่าในขณะที่การพัฒนา Solana นั้นยากที่จะเริ่มต้น ดังนั้นแม้ว่า Solana จะได้รับความนิยมอย่างมากในตอนนี้ แต่ในความเป็นจริงจํานวนนักพัฒนาบน Ethereum ยังคงมากกว่า Solana
ภายใต้สภาพถนนบางอย่างรถแข่งชั้นนําจะไม่เร็วเท่ากับรถดัดแปลง สนิมเป็นเหมือนรถแข่งระดับบนสุดซึ่งรับประกันประสิทธิภาพและความปลอดภัยของ Solana ได้อย่างมีประสิทธิภาพ อย่างไรก็ตามมันไม่ได้ออกแบบมาเพื่อพัฒนาแทร็กนี้สําหรับโปรแกรมออนเชน แต่ทําให้เกิดความยากลําบากในการขับขี่ (การพัฒนา) เพิ่มขึ้น การใช้โซ่สาธารณะตาม Rust และการพัฒนาภาษาที่กําหนดเองสําหรับโซ่นั้นเทียบเท่ากับการปรับเปลี่ยนรถแข่งเพื่อให้เหมาะสมกับสภาพถนนมากขึ้น Solana เสียเปรียบที่นี่
รูปแบบการเขียนโปรแกรมสัญญาอัจฉริยะของ Solana เป็นนวัตกรรมใหม่ นําเสนอแนวทางแบบไร้สัญชาติในการพัฒนาสัญญาอัจฉริยะโดยใช้ Rust เป็นภาษาการเขียนโปรแกรมหลักและสถาปัตยกรรมที่แยกตรรกะออกจากสถานะ สิ่งนี้ทําให้นักพัฒนามีสภาพแวดล้อมที่แข็งแกร่งสําหรับการสร้างและปรับใช้สัญญาอัจฉริยะเพื่อให้มั่นใจในความปลอดภัยและประสิทธิภาพแม้ว่าจะก่อให้เกิดความยากลําบากในการพัฒนาที่สูงขึ้น Solana มุ่งเน้นไปที่ปริมาณงานสูงต้นทุนต่ําและความสามารถในการปรับขนาดทําให้เป็นตัวเลือกที่เหมาะสําหรับนักพัฒนาที่ต้องการสร้าง dApps ประสิทธิภาพสูง