การตีความเทคโนโลยี MetaMask Snap: การวิเคราะห์ประสบการณ์การพัฒนา ข้อจำกัดด้านความจุ ความปลอดภัย และศักยภาพทางธุรกิจ
แหล่งที่มาดั้งเดิม:LXDAO
บทความนี้เขียนร่วมโดยสมาชิกในทีมผู้เชี่ยวชาญของ LXDAO Li Damao และ Bruce เราจะเจาะลึกด้านเทคนิคของ MetaMask Snap MetaMask Snap คืออะไร? มีความสามารถทางเทคนิคอะไรบ้าง? จะมั่นใจในความปลอดภัยได้อย่างไร? ประสบการณ์การพัฒนาเป็นอย่างไรบ้าง? คำถามเหล่านี้อาจกำหนดศักยภาพในอนาคตของ MetaMask Snap
MetaMask Snap คืออะไร?
เมื่อไม่กี่วันที่ผ่านมา ConsenSys ได้ประกาศเปิดตัว MetaMask Snaps Open Beta สู่สาธารณะ MetaMask Snaps สามารถขยายขีดความสามารถของกระเป๋าเงินได้ และคุณสามารถติดตั้งแอพ (Snaps) ที่สร้างโดยนักพัฒนาบุคคลที่สามเพื่อรับฟังก์ชั่นใหม่
หาก ConsenSys สร้าง MetaMask ลงใน WeChat แล้ว Snap ก็คือแอปเพล็ต WeChat ดังนั้นเราจึงเห็นความทะเยอทะยานของ MetaMask เมื่อรวมกับขนาดของ ConsenSys และจำนวนผู้ใช้ MetaMask รูปแบบของช่องกระเป๋าเงินจะเปลี่ยนไป
ปัจจุบันทางการได้ประกาศรุ่น Snap ที่มีจำหน่าย 35 รุ่น และเปิดตัว Snap app store https://snaps.metamask.io/

รายการ Snaps บางส่วน
MetaMask Snap มีลักษณะอย่างไรจากมุมมองทางเทคนิค? ขีดจำกัดความสามารถของพวกเขามีอะไรบ้าง? ปลอดภัยไหม? ประสบการณ์การพัฒนาเป็นอย่างไรบ้าง? สิ่งเหล่านี้ทั้งหมดอาจกำหนดศักยภาพในอนาคตของ MetaMask Snap
ตั้งแต่ปีที่แล้ว LXDAO ได้ทำการวิจัยเชิงลึกเกี่ยวกับการนำ Snap ไปใช้ ปัจจุบันสมาชิกจำนวนมากได้มีส่วนร่วมในการพัฒนา Snap และมีส่วนร่วมอย่างแข็งขันในแฮ็กกาธอนที่เกี่ยวข้อง วันนี้ เราจะเจาะลึกปัญหาข้างต้นจากมุมมองทางเทคนิค และพัฒนา Snap อย่างแท้จริงเพื่อให้คุณได้สัมผัสประสบการณ์นักพัฒนา Snap
ประสบการณ์ครั้งแรกของ MetaMask Snap
ติดตั้ง MetaMask Snap
โดยปกติแล้วจะสามารถติดตั้งผ่านตลาดอย่างเป็นทางการของ MetaMask Snap หรือบนเว็บไซต์อย่างเป็นทางการของโครงการโดยตรง ยกตัวอย่าง UniPass เมื่อเข้าถึงหน้าแอปพลิเคชัน จะมีปุ่มให้คุณเชื่อมโยงไปยัง MetaMask

หลังจากคลิก Snap จะถูกติดตั้ง:

การใช้ MetaMask Snap
หลังจากการติดตั้งเสร็จสมบูรณ์คุณสามารถเริ่มใช้ผลิตภัณฑ์และฟังก์ชันที่เกี่ยวข้องได้ ในแอปพลิเคชันนี้ UniPass จะสร้างบัญชีสัญญาอัจฉริยะสำหรับคุณเพื่ออำนวยความสะดวกในการควบคุมผ่านบัญชี EOA ของ MetaMask

เมื่อคุณทำการโอน UniPass จะแสดง Snap ขึ้นมาเพื่อยืนยันกับคุณว่าคุณต้องการดำเนินการนี้กับกระเป๋าเงิน UniPass AA หรือไม่

หลังจากยืนยันผ่าน MetaMask แล้ว การดำเนินการที่เกี่ยวข้องก็สามารถดำเนินการได้ ในสถานการณ์นี้ MetaMask มีความสามารถในการควบคุมกระเป๋าเงิน UniPass AA ผ่าน Snap UniPass อนุญาตให้ผู้ใช้ใช้งานกระเป๋าเงินโดยไม่ต้องพัฒนาปลั๊กอินกระเป๋าเงิน และ MetaMask ยังสามารถใช้เพื่อแนะนำผู้ใช้ด้วยต้นทุนที่ต่ำมาก!
เราจะได้รับข้อมูลอะไรบ้างจากกระบวนการติดตั้งและการใช้งานนี้
Snap มีการควบคุมการอนุญาตที่ค่อนข้างละเอียด รวมถึงการอนุญาตในการเชื่อมโยงกระเป๋าเงิน คำขอเครือข่าย ฯลฯ การออกแบบโดยรวมยึดหลักการเข้าถึงสิทธิพิเศษน้อยที่สุด (Principle of Least Privilege) โดยคำนึงถึงความปลอดภัยเป็นอันดับแรก
จาก npm:@unipasswallet/unipass-snap คุณจะเห็นว่า Snap ใช้ NPM สำหรับการจัดการแพ็คเกจและเวอร์ชัน การรักษาความปลอดภัยจะแจ้งให้ทราบโดยละเอียดในภายหลัง
Snap มีความยืดหยุ่นสูงและสามารถพัฒนาและตัดสินใจเนื้อหาและตรรกะของการแสดงผลได้ตามความต้องการของโปรเจ็กต์ อย่างไรก็ตาม UI นั้นค่อนข้างเรียบง่ายและยังมีพื้นที่สำหรับการเพิ่มประสิทธิภาพอยู่บ้าง
ประสบการณ์ Snap นั้นเรียบง่ายและเชื่อถือได้ จนถึงระดับเบต้าและการใช้งานจริงอย่างแท้จริง
สำหรับผลิตภัณฑ์กระเป๋าสตางค์ ความปลอดภัยต้องมาก่อนเสมอ ต่อไป มาวิเคราะห์การออกแบบความปลอดภัยของ Snap กัน
Snap ปลอดภัยหรือไม่?
การวิเคราะห์รันไทม์โค้ด Snap
ตามที่กล่าวไว้ข้างต้น Snap ใช้ NPM สำหรับการจัดการแพ็คเกจและเวอร์ชัน ซึ่งแสดงให้เห็นว่า Snap เป็นแอปพลิเคชันที่ทำงานบนเว็บและ JavaScript จริงๆ ดังที่เราทุกคนรู้ดีว่าไวยากรณ์ของ JS นั้นยืดหยุ่นและฟรีมาก และอาจนำไปสู่การโจมตี เช่น XSS และฟิชชิ่งได้อย่างง่ายดาย MetaMask Snap จัดการกับความท้าทายนี้อย่างไร
หลังจากการค้นคว้าข้อมูล ไม่ใช่เรื่องยากที่จะพบว่า MetaMask ให้ทุนกับ Agoric และผสานรวม Hardened JavaScript ของทีม Agoric (หรือที่รู้จักในชื่อ Secure EcmaScript) ให้เป็นโซลูชันแซนด์บ็อกซ์ การจำลองเสมือนที่สมบูรณ์ Agoric ออกแบบ API การจำกัด JavaScript และส่งข้อเสนอร่างไปยัง TC-39 (JS Standardization Consortium) ที่: https://github.com/tc39/proposal-ses
พูดง่ายๆ ก็คือ JavaScript แบบแข็งเป็นชุดย่อยที่ปลอดภัยกว่าของ JavaScript มาตรฐาน ด้วยความช่วยเหลือของความสามารถและกลไกของ JS บางอย่าง สิทธิ์และวิธีการเรียก JS API บางอย่างจะลดลง ซึ่งจะช่วยลดความเสี่ยงบางประการได้ โดยจะสร้างแซนด์บ็อกซ์ที่ปลอดภัยสำหรับโค้ดที่เกี่ยวข้องเพื่อดำเนินการ และปฏิบัติตามหลักการของสิทธิ์ขั้นต่ำเพื่อวางแผนการควบคุมสิทธิ์อนุญาตของโค้ด

Agoric ร่วมมือกับ MetaMask เพื่อพัฒนาโครงการ LavoMoat (https://github.com/LavaMoat/lavamoat) เพื่อปรับปรุงความปลอดภัยของ Snap LavaMoat เป็นชุดเครื่องมือที่มุ่งเน้นไปที่การแก้ปัญหาความเสี่ยงด้านความปลอดภัยของการพึ่งพาภายนอกในโครงการ JS และเพิ่มข้อจำกัดใน API และตรรกะบางอย่าง
Agoric และ MetaMask ร่วมกันเปิดตัวการทดสอบการโจมตีและการป้องกันความปลอดภัยแบบกล่องดำและกล่องสีขาว และส่งออกรายงานความปลอดภัยโดยละเอียด ดังนั้นในระดับรันไทม์ของโค้ด เรามีเหตุผลที่ดีที่จะเชื่อว่า Snap ปลอดภัย
โค้ด Snap ต้องเป็นโอเพ่นซอร์สและตรวจสอบแล้ว
นอกเหนือจากการมีกระบวนการอนุญาตผู้ใช้ที่ชัดเจนและการออกแบบสิทธิ์ขั้นต่ำในการที่จะเป็น Snap ที่ได้รับการยอมรับอย่างเป็นทางการแล้ว มันจะต้องเปิดซอร์สโค้ด ด้วยพลังของชุมชน ความเป็นไปได้ที่ Snap จะนำโค้ดที่เป็นอันตรายของตัวเองมาจะลดลงอย่างมาก .
นอกจากนี้ เรายังพบว่า Snap บนเว็บไซต์อย่างเป็นทางการต้องผ่านการตรวจสอบโค้ดโดยบริษัทรักษาความปลอดภัยบุคคลที่สามก่อนที่จะเผยแพร่ สิ่งนี้ช่วยปรับปรุงความน่าเชื่อถือด้านความปลอดภัยของ Snap ได้อย่างมาก และผู้ตรวจสอบรวมถึง SlowMist ซึ่งทุกคนคุ้นเคยเป็นอย่างดี

ค้นพบความเสี่ยงด้านความปลอดภัยของ Snap แล้ว
เนื่องจากปัจจุบัน Snap ใช้การจัดการแพ็คเกจและเวอร์ชันของ NPM จึงมีความเป็นไปได้ที่จะมีการเปลี่ยนแปลงบางอย่างในระดับโค้ด และการตรวจสอบที่ไม่บังคับอาจทำให้เกิดความเสี่ยงด้านความปลอดภัย
เนื่องจาก MetaMask ไม่สามารถควบคุมการเปิดตัวเวอร์ชันของแพลตฟอร์ม NPM ได้ โปรเจ็กต์จึงสามารถออกเวอร์ชันใหม่เพื่อให้ผู้ใช้ติดตั้งได้ตลอดเวลา เนื่องจากค่าใช้จ่ายในการตรวจสอบ บริษัทตรวจสอบบัญชีจะไม่ตรวจสอบทุกเวอร์ชัน ดังนั้น สถานการณ์จะเกิดขึ้น: การเปลี่ยนแปลงในเวอร์ชันล่าสุดอาจไม่ใช่โอเพ่นซอร์สหรือการตรวจสอบ
อย่างไรก็ตาม เนื่องจากสภาพแวดล้อมการดำเนินการเป็นสภาพแวดล้อมแบบแซนด์บ็อกซ์และใช้การออกแบบสิทธิ์ขั้นต่ำ เว้นแต่ผู้ใช้จะยืนยันการเปลี่ยนแปลงสิทธิ์ใหม่ด้วยตนเอง Snap เวอร์ชันใหม่จะมีสิทธิ์เฉพาะของเวอร์ชันก่อนหน้าในการดำเนินการเท่านั้น อย่างไรก็ตาม หาก Snap ขออนุญาตมากเกินไป ก็จะยังคงก่อให้เกิดความเสี่ยง ดังนั้นคุณยังคงต้องระมัดระวังในการติดตั้งและใช้งาน Snap
ความสามารถและข้อจำกัดทางเทคนิคของ MetaMask Snap
แม้ว่า MetaMask Snap จะเปิดตัวอย่างเป็นทางการเมื่อเร็ว ๆ นี้ แต่จริงๆ แล้ว Snap ได้รับการพัฒนามาเป็นเวลา 4 ปีแล้ว! แนวคิดดั้งเดิมสำหรับ MetaMask Snap ได้รับการเผยแพร่โดย Dan Finlay เมื่อวันที่ 10 ตุลาคม 2019Medium。
การสร้างสมดุลระหว่างความปลอดภัย ความยืดหยุ่น และประสิทธิผลถือเป็นความท้าทายที่ยิ่งใหญ่ จะเห็นได้ว่า MetaMask ได้จ่ายเงินไปเป็นจำนวนมากและได้เตรียมการมากมายสำหรับวันนี้
ปัจจุบัน API หลักสามรายการเปิดอยู่:
การทำงานร่วมกัน ช่วยให้นักพัฒนาสามารถพัฒนา chain wallets อื่น ๆ ที่ใช้ MetaMask ได้
ข้อมูลเชิงลึกด้านธุรกรรมช่วยให้นักพัฒนาได้รับข้อมูลธุรกรรมก่อนที่จะเริ่มธุรกรรมของผู้ใช้ เพื่อวิเคราะห์ว่ามีความเสี่ยงในธุรกรรมหรือไม่
การแจ้งเตือนส่งข้อความถึงผู้ใช้โดยตรงผ่าน Snap (แต่ดูเหมือนว่าจะต้องรองรับเว็บไซต์ซึ่งรสชาติจืดชืดเล็กน้อย)

ต่อไปนี้เป็นการแนะนำโดยย่อเกี่ยวกับความสามารถแบบเปิดและเอฟเฟกต์เฉพาะของ MetaMask Snap เพื่อให้คุณสามารถรับรู้ได้ชัดเจนยิ่งขึ้น
ความสามารถในการแจ้งเตือน
อินเทอร์เฟซ Snap_notify สามารถแสดงการแจ้งเตือนใน MetaMask หรือเบราว์เซอร์ Snap สามารถส่งข้อความถึงผู้ใช้โดยตรงผ่านอินเทอร์เฟซนี้ ดังแสดงในรูปด้านล่าง

ความสามารถด้านข้อมูลเชิงลึกของธุรกรรม
เมื่อผู้ใช้โต้ตอบกับสัญญาอัจฉริยะ MetaMask จะทริกเกอร์เหตุการณ์ onTransaction ของ Snap MetaMask จะส่งธุรกรรมดั้งเดิมที่ไม่ได้ลงนามไปยังวิธีจัดการ onTransaction Snap สามารถส่งคืนอินเทอร์เฟซบนหน้ายืนยันรองของธุรกรรมและปรับแต่งเนื้อหาที่แสดง

ด้วยความสามารถนี้ ทำให้สามารถรับรู้ถึงฟังก์ชันต่างๆ เช่น การตรวจสอบความปลอดภัยของข้อมูลธุรกรรมและการแสดงข้อมูลที่ขยายได้
อินเทอร์เฟซการโต้ตอบและความสามารถของอินเทอร์เฟซแบบกำหนดเอง
ความสามารถของ Dialog จะทำให้ Snap สามารถป็อปอัพหน้าต่างอิสระได้โดยตรง บรรลุความสามารถที่คล้ายกับหน้าต่างป็อปอัพ Alert/Confirm/Prompt แบบดั้งเดิม (ดังที่แสดงด้านล่าง) ซึ่งใช้สำหรับการแจ้งเตือน การยืนยัน และการส่งข้อมูลตามลำดับ

คุณจะสามารถปรับแต่งอินเทอร์เฟซและการดำเนินการแบบโต้ตอบที่เรียบง่ายผ่าน Dialog เพื่อเชื่อมต่อกับ DApp ของคุณได้
ฟังก์ชั่นใดบ้างที่ไม่สามารถใช้งานได้กับ MetaMask Snap ในปัจจุบัน
เนื่องด้วยเหตุผลด้านความปลอดภัยและเหตุผลอื่นๆ ปัจจุบัน Snap จึงไม่รองรับเฟรมเวิร์กส่วนหน้าของบริษัทอื่นและมีเพียง UIKit ในจำนวนที่ค่อนข้างน้อยเท่านั้น ข้อมูลต่อไปนี้ยังคงใช้ Insight เป็นตัวอย่างเพื่อแสดงไลบรารีส่วนประกอบ UI ที่นักพัฒนาทุกคนสามารถเรียกใช้ได้

ดังแสดงในรูป ปัจจุบันมีเพียง Heading (ข้อความขนาดใหญ่), Text (ข้อความเล็ก), Panel (การ์ดและใช้ได้เพียงครั้งเดียว), Divider (เส้นแยก), Copyable (คลิกเพื่อคัดลอก) และชุดย่อยย่อยของ Markdown ( ตัวหนาและตัวเอียง) กำลังออนไลน์ ) ดังนั้นจึงดูเหมือนว่าเป็นไปไม่ได้ชั่วคราวที่จะสร้างการโต้ตอบ และเป็นไปไม่ได้ที่จะใช้ html ที่ฝังไว้เพื่อให้บรรลุการดำเนินการเชิงโต้ตอบ อย่างไรก็ตาม หลังจากที่ถามคำถามใน Discord อย่างเป็นทางการ ทางการก็อ้างว่าสิ่งเหล่านี้เป็นเพราะเหตุผลด้านความปลอดภัย และจะปล่อยในเวอร์ชันถัดไป
นอกจากนี้ เมื่อพิจารณาด้านความปลอดภัยแล้ว ยังรองรับเฉพาะวิธีการ Fetch สำหรับคำขอภายนอกเท่านั้น และไม่รองรับโปรโตคอลคำขอเพิ่มเติม เช่น WebSocket เนื่องจากข้อจำกัดด้านความปลอดภัย ความสามารถ และความเป็นส่วนตัว จึงเป็นไปไม่ได้ที่จะได้รับข้อมูลลูกค้า เช่น URL ปัจจุบันที่เรียกใช้ Snap และไม่สามารถใช้ฟังก์ชันที่สมบูรณ์และหลากหลายมากขึ้นได้
ปัญหาและข้อจำกัดเหล่านี้ส่วนใหญ่เกิดจากการพิจารณาด้านความปลอดภัย ฉันเชื่อว่าในอนาคต หลังจากตรวจสอบความปลอดภัยแล้ว จะพิจารณาสิทธิ์เพิ่มเติม
MetaMask ซึ่งให้บริการ API เหล่านี้ จริงๆ แล้วได้กลายเป็นผลิตภัณฑ์ที่คล้ายกับแพลตฟอร์มแบบเปิด ความรู้สึกนี้เหมือนกับตอนที่ WeChat เปิดตัวบัญชีทางการและมินิโปรแกรม ซึ่งทำให้ผู้คนรู้สึกว่านี่ไม่ใช่เครื่องมือแชทธรรมดาอีกต่อไป
MetaMask คาดการณ์โครงสร้างตลาดในปัจจุบันในปี 2019 นั่นคือ มีเครือข่ายสาธารณะและฝ่ายโครงการมากมาย และความต้องการกระเป๋าสตางค์ที่ปรับแต่งได้หลากหลาย แทนที่จะแต่ละฝ่ายของโครงการจำเป็นต้องพัฒนาปลั๊กอินของตนเองและผู้ใช้จำเป็นต้องติดตั้งปลั๊กอินหลายตัวในเวลาเดียวกัน การพัฒนาโดยใช้ MetaMask Snap จะดีกว่า ในบรรดา Snaps ชุดแรกที่เปิดตัว เรายังพบกระเป๋าเงินเชิงนิเวศที่ไม่ใช่ EVM อื่นๆ เช่น Sui Wallet, Solana Wallet และ Arweave Wallet ด้วยฐานผู้ใช้ที่มีอยู่ MetaMask Snap จึงมีผลกระทบอย่างมากต่อภาพรวมของกระเป๋าเงิน
ในความเป็นจริง จินตนาการของ MetaMask Snap อาจยิ่งใหญ่กว่าที่เราคาดไว้ แม้จะอยู่นอกเหนือขอบเขตของกระเป๋าเงินก็ตาม นอกจากนี้เรายังสามารถเห็นผลงานจากทีมงาน EthSign ซึ่งสร้าง KeyChain ผู้จัดการรหัสผ่านสากลโดยใช้ MetaMask Snaps รหัสผ่านในเบราว์เซอร์ทั้งหมดสามารถเข้ารหัสด้วยคีย์กระเป๋าเงินและเก็บไว้ได้ ดูแลกระเป๋าสตางค์ของคุณด้วยวิธีนี้และเก็บรหัสผ่านทั้งหมดไว้กับคุณ

Snap มีความเกี่ยวข้องกับนักพัฒนามาก ด้วย API แบบเปิด ประสบการณ์เฉพาะของนักพัฒนาเป็นอย่างไร เราอาจพัฒนา Snap ด้วยตัวเองเพื่อสัมผัสประสบการณ์ดังกล่าว
พัฒนาการทดสอบ Snap โดยตรง
แยกแยะความคิด
ดังที่เราทุกคนทราบดีว่าผู้ใช้ส่วนใหญ่ไม่ทราบจริงๆ ว่า Smart Contract ที่พวกเขาโต้ตอบด้วยนั้นคืออะไร ในกรณีส่วนใหญ่ ซึ่งส่วนใหญ่รวมถึงปัญหาต่อไปนี้:
ไม่ว่าสัญญาที่ทำการซื้อขายจะเป็นสัญญาที่ถูกแทนที่ด้วยเว็บไซต์ฟิชชิ่งหรือไม่
ไม่ว่าสัญญาที่ทำการซื้อขายจะเป็นสัญญาที่สามารถอัพเกรดได้หรือไม่
Smart Contract เป็นสัญญาที่เพิ่งใช้งานและไม่ได้รับการยืนยันจากคนจำนวนมากใช่หรือไม่?
สัญญาการทำธุรกรรมเป็นโอเพ่นซอร์สหรือไม่?
สำหรับผู้ใช้ทั่วไป เป็นไปไม่ได้เลยที่จะขอให้พวกเขาอ่านรหัสความแข็งแกร่งของสัญญาก่อนใช้งาน ในเวลานี้ เหมาะมากที่จะใช้ฟังก์ชัน Transaction Insight เพื่อใช้การวิเคราะห์สัญญาอัจฉริยะ ตัวอย่างเช่น การใช้ AI ดำเนินการตรวจสอบความปลอดภัยของสัญญาอัจฉริยะที่ค่อนข้างง่ายอาจกรองการโจมตีแบบฟิชชิ่งระดับต่ำได้ 80%
เตรียมสภาพแวดล้อมการพัฒนา
ดาวน์โหลดกระเป๋าสตางค์
ก่อนอื่นคุณต้องติดตั้ง MetaMask Flask

MetaMask Flask คือการเผยแพร่ส่วนขยาย MetaMask ที่เน้นนักพัฒนาเป็นศูนย์กลาง ซึ่งส่วนใหญ่ใช้สำหรับการแสดงตัวอย่างคุณสมบัติใหม่และการพัฒนาคุณสมบัติทดลอง โปรดทราบว่านี่เป็นเวอร์ชันสำหรับนักพัฒนาซอฟต์แวร์ของ MetaMask โปรดอย่าใช้ทุกวันและอย่านำเข้าคีย์ส่วนตัวที่คุณใช้ทุกวัน Flask ถูกใช้ที่นี่เป็นหลักเพื่ออำนวยความสะดวกในการดูตัวอย่าง Snap ที่เราพัฒนาขึ้นในท้องถิ่นและแบบเรียลไทม์
ขอแนะนำให้ปิด Little Fox Wallet และกระเป๋าเงินเบราว์เซอร์อื่นๆ ชั่วคราวหลังการติดตั้ง หรือสร้างโปรไฟล์ Chrome ใหม่เพื่อใช้งาน มิฉะนั้นจะเกิดข้อขัดแย้งขึ้น
สร้างบัญชี
หลังจากติดตั้งกระเป๋าเงินแล้ว ให้สร้างกระเป๋าเงินใหม่เหมือนกับการสร้างกระเป๋าเงิน MetaMask ตามปกติ โปรดทราบว่านี่คือกระเป๋าเงินสำหรับการทดสอบโดยเฉพาะ โปรดอย่านำเข้ากระเป๋าเงินรายวันของคุณเอง
ต่อไป เราต้องเติมเงินเหรียญทดสอบลงในกระเป๋าเงินที่สร้างขึ้นใหม่ เหรียญทดสอบสามารถรับได้ผ่าน faucet Snap ที่กล่าวถึงในบทความนี้ใช้ Goerli ดังนั้นบทความต่อไปนี้จะเน้นที่ Goerli
เริ่มต้น Snap ตามเทมเพลต
ตามเอกสารอย่างเป็นทางการ ขั้นแรกให้ใช้ @metamask/create-snap CLI เพื่อสร้างโปรเจ็กต์ Snap ใหม่ และเราใช้เทมเพลตอย่างเป็นทางการสำหรับการเริ่มต้น:

โครงสร้างไฟล์สแนป
ไฟล์หลักของ Snap อยู่ใน ./packages/snap และโครงสร้างไดเร็กทอรีไฟล์มีดังนี้

ไฟล์การกำหนดค่าของ Snap อยู่ใน snap.mainfest.json และไฟล์หลักของ Snap คือ ./src/index.ts ซึ่งกระชับมาก
เปิดใช้งานการอนุญาต
ก่อนอื่น เราต้องเปิดใช้งานการอนุญาต ก่อนอื่น เราเพิ่มสามรายการต่อไปนี้ใน snap.mainfest.json

คุณยังสามารถแก้ไขคำอธิบายและชื่อที่เสนอในไฟล์ Mainfest เพื่อแก้ไขคำอธิบายและชื่อของโปรเจ็กต์ได้
รับธุรกรรม
ต่อไป ในกรณีนี้ คุณเพียงแค่ต้องแก้ไขไฟล์ index.ts เพื่อให้ฟังก์ชันทั้งหมดสมบูรณ์ ตัวอย่างโค้ดง่ายๆ ดังนี้ สำหรับโค้ดที่สามารถทำงานได้เต็มประสิทธิภาพ โปรดไปที่: https://github.com/LidamaoHub /ข้อมูลเชิงลึก

สำหรับข้อมูลเพิ่มเติม โปรดดูเอกสารประกอบสำหรับนักพัฒนา MetaMask Snap เพื่อดำเนินการผลิตภัณฑ์ Snap ที่ซับซ้อนมากขึ้น
หลังการติดตั้ง คุณจะเห็นข้อมูลคำเตือนความเสี่ยงที่คล้ายกันสำหรับแต่ละธุรกรรม:

ในปัจจุบัน ประสบการณ์การพัฒนาของ Snap ราบรื่นมาก โดยแทบไม่พบปัญหาใด ๆ และเทมเพลตอย่างเป็นทางการก็มีมากมายและหลากหลายมาก นักพัฒนาที่มีประสบการณ์มากมายสามารถเริ่มต้นใช้งานและเริ่มพัฒนา Snaps ที่พวกเขาต้องการได้ภายในไม่กี่ชั่วโมง แต่จำเป็นต้องเปิดตัวอย่างเป็นทางการและให้บริการแก่ผู้ใช้กระแสหลัก อุปสรรคที่ใหญ่ที่สุดคือการตรวจสอบความปลอดภัย นักพัฒนาอิสระและทีมขนาดเล็กไม่ใช่ทุกคนจะมีทรัพยากรในการตรวจสอบ Snaps ของตนได้ ดังนั้นจึงคาดว่าจำนวนและความสมบูรณ์ของ Snap จะไม่เติบโตแบบก้าวกระโดดมากนักในอนาคตอันยาวนาน
การสนับสนุนนักพัฒนา
หากคุณสามารถทำตามตัวอย่างข้างต้นได้ ขอแสดงความยินดีที่ได้เป็นนักพัฒนา Snap ระดับเริ่มต้นที่มีคุณสมบัติเหมาะสม!
เจ้าหน้าที่ของ MetaMask ยังได้จัดตั้ง MetaMask Grants DAO เมื่อปีที่แล้วเพื่อสนับสนุนโครงการที่มีมูลค่าสูงในระบบนิเวศของ MetaMask ผ่านทางโครงการให้ทุน MetaMask Grants DAO เป็นโปรแกรมทดลองที่นำโดยพนักงาน ซึ่งจะมอบทุนให้กับนักพัฒนาภายนอกทั่วโลก เพื่อสร้างประสบการณ์ที่ทรงประสิทธิภาพภายในระบบนิเวศ MetaMask MetaMask อัดฉีดผลกำไรส่วนหนึ่งเข้าไปใน DAO นี้ทุกไตรมาส งบประมาณประจำปีปัจจุบันของ MetaMask Grants DAO อยู่ที่ 2.4 ล้านดอลลาร์สหรัฐ
ในปัจจุบัน โครงการใดๆ ที่สามารถเพิ่มคุณค่าให้กับระบบนิเวศของ MetaMask สามารถสมัครขอรับ MetaMask Grants DAO อย่างเป็นทางการ (MetaMask Grant) ได้ สำหรับข้อมูลเพิ่มเติม โปรดไปที่ https://metamaskgrants.org/
เป็นที่น่าสังเกตว่า LXDAO รู้สึกเป็นเกียรติที่ได้สมัครขอรับ MetaMask Grants ในปีนี้และมีส่วนร่วมในการพัฒนาโครงการที่เกี่ยวข้องและได้สร้างช่องทางการติดต่อ หากคุณเป็นสมาชิกของ LXDAO และมีแนวคิดที่เกี่ยวข้อง คุณสามารถติดต่อพวกเขาได้อย่างมีประสิทธิภาพมากขึ้นเพื่อ ส่งใบสมัครของคุณ

บทสรุป
ข้างต้น เราได้วิเคราะห์ว่า Snap คืออะไรจากมุมมองทางเทคนิค ไม่ว่าจะเป็นความปลอดภัย ข้อจำกัดด้านความสามารถ และประสบการณ์ของนักพัฒนา สรุปโดยย่อมีดังนี้:
Snap คล้ายกับแอปเพล็ต WeChat โดยเป็นการเปิด MetaMask สู่พื้นที่แห่งจินตนาการที่มากขึ้น
โดยทั่วไปแล้วการรักษาความปลอดภัยนั้นดี แต่มีความเสี่ยงอยู่บ้าง และคุณยังต้องระมัดระวังเกี่ยวกับสิทธิ์ที่มีความเสี่ยงสูง
เนื่องจากข้อควรพิจารณาด้านความปลอดภัย ขณะนี้มีความสามารถแบบเปิดไม่มากนัก แต่ก็ยังสามารถสร้าง Snap ในจินตนาการได้เพียงพอ
หลังจากขัดเกลาและทดสอบมาสี่ปี ประสบการณ์ของนักพัฒนาก็ยอดเยี่ยม อย่างไรก็ตาม เนื่องจากการพิจารณาด้านความปลอดภัย จึงมีการออกแบบกลไกไวท์ลิสต์และข้อกำหนดการตรวจสอบ คาดว่าจะไม่มี Snap จำนวนมากเกิดขึ้นในอนาคต
ปัจจุบัน MetaMask Snap ยังคงดำเนินการอย่างรวดเร็ว และฉันเชื่อว่าจะมีการเปิดการอนุญาตและความสามารถเพิ่มเติมในอนาคต หวังว่าจะมีการแนะนำกลไกที่เปิดกว้างและปลอดภัยมากขึ้น เช่น กลไกการตรวจสอบการตรวจสอบอย่างเป็นทางการของ Apple และการควบคุมเวอร์ชันที่เก็บโค้ดอย่างเป็นทางการ เพื่อให้นักพัฒนาจำนวนมากขึ้นสามารถเข้าร่วมได้ในราคาที่ต่ำ หากปัญหานี้ดีขึ้นคาดว่าในอนาคตจะมีความต้องการเพิ่มมากขึ้น จะมีตำแหน่งนักพัฒนา Snap โดยเฉพาะด้วย
ด้วยจำนวนผู้ใช้ MetaMask จำนวนมาก นักพัฒนาอิสระอาจมีโอกาสบางอย่างเช่นกัน มาดูกันว่านวัตกรรมที่ก้าวล้ำหน้าของ Snap จะนำอะไรมาบ้าง
สุดท้ายนี้ ขอขอบคุณสำหรับบทความของคุณ ผมเชื่อว่ามันจะช่วยให้ผู้คนเข้าใจสถานะการพัฒนาของ MetaMask Snap มากขึ้น


