เมื่อไม่กี่วันที่ผ่านมา ConsenSys ได้ประกาศเปิดตัว MetaMask Snaps Open Beta ต่อสาธารณะ MetaMask Snaps เป็นปลั๊กอินที่ขยายขีดความสามารถของกระเป๋าเงิน MetaMask “Snaps” เหล่านี้เป็นแอปที่พัฒนาโดยบุคคลที่สามซึ่งสามารถติดตั้งเพื่อเพิ่มฟังก์ชันการทำงานใหม่ๆ ได้
หากเราเปรียบเทียบการเปลี่ยนแปลง MetaMask กับ WeChat ของ ConsenSys Snap ก็อาจถูกมองว่าเป็น WeChat Mini Program เป็นผลให้เห็นได้ชัดว่า MetaMask ด้วยความทะเยอทะยานเมื่อรวมกับขนาดของ ConsenSys และฐานผู้ใช้ของ MetaMask จะเปลี่ยนภูมิทัศน์ของภาคกระเป๋าสตางค์
เว็บไซต์อย่างเป็นทางการได้แสดงรายการ Snaps ที่มีอยู่แล้ว 35 รายการและเปิดตัว Snap App Store: https://snaps.metamask.io/
รายการ Snaps บางส่วน
MetaMask Snaps เป็นอย่างไรจากมุมมองทางเทคนิค? ความสามารถและข้อจำกัดของพวกเขามีอะไรบ้าง? พวกเขาปลอดภัยหรือไม่? ประสบการณ์ของนักพัฒนาเป็นอย่างไร? ปัจจัยทั้งหมดเหล่านี้สามารถกำหนดศักยภาพในอนาคตของ MetaMask Snaps ได้
ตั้งแต่ปีที่แล้ว LXDAO มีส่วนร่วมอย่างลึกซึ้งในการค้นคว้าการนำ Snaps ไปใช้ สมาชิกหลายคนมีส่วนร่วมในการพัฒนา Snap และมีส่วนร่วมในแฮ็กกาธอนที่เกี่ยวข้อง วันนี้ เราจะเจาะลึกคำถามเหล่านี้จากมุมมองทางเทคนิค หรือแม้แต่พัฒนา Snap เพื่อมอบประสบการณ์ตรงให้กับนักพัฒนา
โดยทั่วไปคุณจะติดตั้ง Snaps ได้จากตลาด MetaMask Snap อย่างเป็นทางการ หรือจากเว็บไซต์ของโครงการโดยตรง ตัวอย่างเช่น ด้วย UniPass เมื่อคุณไปที่หน้าแอป จะมีปุ่มสำหรับเชื่อมต่อ MetaMask ของคุณ
การคลิกจะเป็นการเริ่มการติดตั้ง Snap:
เมื่อติดตั้งแล้ว คุณสามารถเริ่มใช้งานผลิตภัณฑ์และฟีเจอร์ของผลิตภัณฑ์ได้ ในกรณีนี้ UniPass จะสร้างบัญชีสัญญาอัจฉริยะให้กับคุณ ซึ่งคุณสามารถควบคุมผ่าน MetaMask EOA (บัญชีที่เป็นเจ้าของภายนอก)
เมื่อคุณเริ่มต้นการถ่ายโอน UniPass จะเรียกใช้ป๊อปอัป Snap เพื่อยืนยันว่าคุณต้องการดำเนินการกับกระเป๋าเงิน UniPass AA หรือไม่
หลังจากยืนยันผ่าน MetaMask แล้ว คุณสามารถดำเนินการธุรกรรมต่อได้ ในสถานการณ์นี้ MetaMask จะสามารถควบคุมกระเป๋าเงิน UniPass AA ผ่าน Snap ได้ โดยไม่จำเป็นต้องใช้ UniPass ในการพัฒนาปลั๊กอินกระเป๋าเงินของตัวเอง นอกจากนี้ยังช่วยให้ผู้ใช้เริ่มต้นใช้งานด้วยต้นทุนต่ำผ่าน MetaMask
เราสามารถรวบรวมข้อมูลเชิงลึกอะไรบ้างจากกระบวนการติดตั้งและการใช้งานนี้
ความปลอดภัยมีความสำคัญเหนือกว่าเสมอเมื่อพูดถึงผลิตภัณฑ์กระเป๋าเงิน เรามาเจาะลึกการออกแบบความปลอดภัยของ Snaps กันดีกว่า
Snaps ขึ้นอยู่กับ NPM ซึ่งหมายความว่าเป็นแอปพลิเคชันเว็บและ JavaScript ดังที่เราทราบ JavaScript มีความยืดหยุ่นสูงแต่เสี่ยงต่อการถูกโจมตี เช่น XSS และฟิชชิ่ง MetaMask Snap จะรับมือกับความท้าทายเหล่านี้ได้อย่างไร
จากการค้นคว้า เราพบว่า MetaMask ได้ให้ทุนและผสานรวม Hardened JavaScript (หรือ Secure EcmaScript) ของ Agoric ให้เป็นโซลูชันแซนด์บ็อกซ์ "เสมือนจริงเต็มรูปแบบ" Agoric ได้ร่าง API การจำกัด JavaScript และส่งร่างข้อเสนอไปยัง TC-39: ข้อเสนอ TC-39
กล่าวง่ายๆ ก็คือ JavaScript แบบแข็งเป็นชุดย่อยที่ปลอดภัยกว่าของ JavaScript มาตรฐาน การปรับความสามารถบางอย่างของ JavaScript และการจำกัดการเรียก API ช่วยลดความเสี่ยงต่างๆ โดยจะสร้างแซนด์บ็อกซ์ที่ปลอดภัยสำหรับการรันโค้ดและปฏิบัติตาม “หลักการของสิทธิพิเศษน้อยที่สุด” ในการวางแผนการอนุญาตโค้ด
สำหรับข้อมูลเฉพาะทางเทคนิคโดยละเอียดเพิ่มเติมเกี่ยวกับ Hardened JavaScript โปรดดูที่: https://tvcutsem.github.io/assets/HardenedJS_BlueLava2022.pdf
Agoric และ MetaMask ได้ร่วมกันพัฒนา LavaMoat (https://github.com/LavaMoat/lavamoat) โครงการเพื่อเพิ่มความปลอดภัยของ Snaps LavaMoat เน้นถึงความเสี่ยงด้านความปลอดภัยของการพึ่งพาภายนอกในโครงการ JavaScript เป็นหลัก
ทั้ง Agoric และ MetaMask ผ่านการทดสอบความปลอดภัยแบบกล่องดำและกล่องขาวและได้เผยแพร่รายงานความปลอดภัยโดยละเอียด (รายละเอียดเพิ่มเติม: https://agoric.com/blog/technology/purple-teaming-how-metamask-and-agoric-hunted-bugs-to-harden-javascript) ดังนั้น ในระดับการเรียกใช้โค้ด เรามีเหตุผลเพียงพอที่จะเชื่อว่า Snaps มีความปลอดภัย
นอกเหนือจากการอนุญาตผู้ใช้อย่างชัดเจนและการออกแบบสิทธิ์ขั้นต่ำ เพื่อให้ได้รับการยอมรับอย่างเป็นทางการ Snaps จะต้องเป็นโอเพ่นซอร์ส เพื่อลดโอกาสที่จะเกิดโค้ดที่เป็นอันตราย นอกจากนี้เรายังสังเกตเห็นว่า Snaps ที่แสดงบนเว็บไซต์อย่างเป็นทางการได้ผ่านการตรวจสอบความปลอดภัยจากบุคคลที่สาม ซึ่งช่วยเพิ่มความน่าเชื่อถืออีกด้วย
ปัจจุบัน Snaps ได้รับการจัดการตามแพ็คเกจ NPM และการกำหนดเวอร์ชัน NPM เป็นเครื่องมือการจัดการแพ็คเกจที่ใช้กันอย่างแพร่หลายสำหรับการพัฒนาเว็บ ช่วยให้นักพัฒนาและทีมงานโครงการสามารถเผยแพร่แพ็คเกจและโค้ดใหม่ได้อย่างอิสระ
MetaMask ไม่สามารถควบคุมการเผยแพร่เวอร์ชันบนแพลตฟอร์ม NPM มีความเป็นไปได้ที่การเปลี่ยนแปลงเวอร์ชันล่าสุดอาจไม่ได้รับโอเพ่นซอร์สหรือตรวจสอบใช่ไหม
เมื่อมีการชี้แจงอย่างเป็นทางการ การเปลี่ยนแปลงเวอร์ชันแพ็คเกจ NPM ทั้งหมดจะต้องได้รับการตรวจสอบโดยทีมงานอย่างเป็นทางการ และเพิ่มลงในรายการที่อนุญาตก่อนจึงจะสามารถติดตั้งได้ ดังนั้น แม้ว่าทีมงานโครงการจะออกแพ็คเกจ NPM ใหม่ แต่ผู้ใช้ก็ไม่สามารถติดตั้งได้จนกว่าจะมีการระบุไว้อย่างเป็นทางการ วิธีการนี้จะเพิ่มค่าใช้จ่ายในการอัปเดตเวอร์ชัน Snap อย่างไม่ต้องสงสัย แต่เป็นวิธีแก้ปัญหาที่ปลอดภัยที่สุด มันสะท้อนถึงปรัชญาการออกแบบของ MetaMask Snap ที่ให้ความสำคัญกับความปลอดภัยเหนือสิ่งอื่นใด
MetaMask Snap เพิ่งประกาศอย่างเป็นทางการ แต่จริงๆ แล้วได้รับการพัฒนามานานกว่าสี่ปีแล้ว! แนวคิดเริ่มต้นของ MetaMask Snap เปิดตัวโดย Dan Finlay เมื่อวันที่ 10 ตุลาคม 2019 บนสื่อ บทความขนาดกลาง
การสร้างสมดุลระหว่างความปลอดภัย ความยืดหยุ่น และประสิทธิภาพถือเป็นความท้าทายที่สำคัญ เห็นได้ชัดว่า MetaMask ได้ลงทุนทรัพยากรจำนวนมากและการเตรียมพร้อมสำหรับความพยายามนี้
ปัจจุบัน API หลักสามรายการถูกเปิดเผยเป็นหลัก:
ด้านล่างนี้เป็นคำแนะนำโดยย่อเกี่ยวกับความสามารถและเอฟเฟกต์เฉพาะที่เปิดโดย MetaMask Snap เพื่อให้คุณเข้าใจได้ชัดเจนยิ่งขึ้น
อินเทอร์เฟซ Snap_notify สามารถแสดงการแจ้งเตือนภายใน MetaMask หรือเบราว์เซอร์ Snaps สามารถส่งข้อความโดยตรงถึงผู้ใช้ผ่านอินเทอร์เฟซนี้ ดังที่แสดงในภาพด้านล่าง
เมื่อผู้ใช้โต้ตอบกับสัญญาอัจฉริยะ MetaMask จะทริกเกอร์เหตุการณ์ onTransaction ของ Snap MetaMask ส่งผ่านธุรกรรมดิบที่ไม่ได้ลงนามไปยังวิธีตัวจัดการ onTransaction Snaps สามารถส่งคืนอินเทอร์เฟซบนหน้ายืนยันรองของธุรกรรม โดยปรับแต่งเนื้อหาที่แสดง
ด้วยความสามารถนี้ จึงสามารถรับรู้ถึงคุณสมบัติต่างๆ เช่น การตรวจสอบข้อมูลธุรกรรมอย่างปลอดภัย และการแสดงข้อมูลที่ขยายเพิ่มเติมได้
ความสามารถของ Dialog ช่วยให้ Snaps ปรากฏขึ้นในหน้าต่างแยกต่างหากได้โดยตรง คล้ายกับกล่องโต้ตอบ Alert/Confirm/Prompt แบบดั้งเดิม สิ่งเหล่านี้ใช้สำหรับการแจ้งเตือน การยืนยัน และการส่งข้อมูลตามลำดับ
คุณจะสามารถปรับแต่งอินเทอร์เฟซและการดำเนินการแบบโต้ตอบที่เรียบง่ายผ่าน Dialog เพื่อรวมเข้ากับ DApp ของคุณได้
เนื่องจากเหตุผลด้านความปลอดภัย ปัจจุบัน Snap จึงไม่รองรับเฟรมเวิร์กส่วนหน้าของบุคคลที่สาม และมีเพียง UIKit ที่จำกัดเท่านั้น ที่นี่ เรายังคงใช้ Insight เป็นตัวอย่าง โดยจัดแสดงไลบรารีส่วนประกอบ UI สำหรับนักพัฒนา
ดังที่แสดงในภาพ คุณสมบัติปัจจุบัน ได้แก่ ส่วนหัว (ข้อความขนาดใหญ่), ข้อความ (ข้อความขนาดเล็ก), แผง (การ์ดแบบใช้ครั้งเดียว), ตัวแบ่ง, คัดลอกได้ (คลิกเพื่อคัดลอก) และชุดย่อยของคุณสมบัติ Markdown (ตัวหนาและ ตัวเอียง). ดังนั้น ความสามารถเชิงโต้ตอบจึงดูเหมือนไม่สามารถทำได้ชั่วคราว และ HTML ที่ฝังไว้ไม่สามารถใช้สำหรับการโต้ตอบได้ อย่างไรก็ตาม หลังจากตั้งคำถามใน Discord อย่างเป็นทางการ พวกเขาระบุว่าข้อจำกัดเหล่านี้มีไว้เพื่อเหตุผลด้านความปลอดภัย และอาจมีการผ่อนคลายในเวอร์ชันที่กำลังจะมาถึง
นอกจากนี้ เพื่อเหตุผลด้านความปลอดภัย คำขอภายนอกได้รับการสนับสนุนผ่านวิธี Fetch เท่านั้น และไม่รองรับโปรโตคอลคำขอเพิ่มเติม เช่น WebSocket เนื่องจากข้อจำกัดด้านความปลอดภัย ความสามารถ และความเป็นส่วนตัว จึงไม่สามารถเข้าถึงข้อมูลลูกค้าได้ เช่น URL ปัจจุบันที่เรียกใช้ Snap ทำให้การนำคุณสมบัติต่างๆ ไปใช้ให้กว้างขึ้นเป็นเรื่องที่ท้าทาย
ปัญหาเหล่านี้ส่วนใหญ่เกิดจากข้อกังวลด้านความปลอดภัย เราเชื่อว่าเมื่อการรักษาความปลอดภัยได้รับการตรวจสอบเมื่อเวลาผ่านไป จะมีการให้สิทธิ์อนุญาตมากขึ้น
ด้วยการเปิดตัว API เหล่านี้ MetaMask ได้พัฒนาไปสู่ผลิตภัณฑ์แพลตฟอร์มเปิดเป็นหลัก รู้สึกคล้ายกับตอนที่ WeChat เปิดตัวบัญชีอย่างเป็นทางการและมินิโปรแกรม โดยเปลี่ยนจากเครื่องมือแชทเพียงอย่างเดียว
ย้อนกลับไปในปี 2019 MetaMask ได้คาดการณ์ภาพรวมของตลาดในปัจจุบันด้วยเครือข่ายสาธารณะ ฝ่ายโครงการ และข้อกำหนดกระเป๋าเงินแบบกำหนดเองมากมาย แทนที่จะแต่ละโปรเจ็กต์จะพัฒนาปลั๊กอินของตัวเองและผู้ใช้ต้องติดตั้งปลั๊กอินหลายตัว การพัฒนาโดยใช้ MetaMask Snap จะมีประสิทธิภาพมากกว่า ในชุดแรกของ Snaps เราเห็นกระเป๋าเงินจากระบบนิเวศอื่นที่ไม่ใช่ EVM เช่น Sui Wallet, Solana Wallet และ Arweave Wallet ด้วยฐานผู้ใช้ที่มีอยู่ MetaMask Snap จึงส่งผลกระทบอย่างมากต่อภาพรวมของกระเป๋าเงิน
ในความเป็นจริง ศักยภาพของ MetaMask Snap อาจยิ่งใหญ่กว่าที่เราจินตนาการ ขยายไปไกลกว่าแค่กระเป๋าเงิน นอกจากนี้เรายังเห็นความพยายามจากทีม EthSign ผู้สร้างเครื่องมือจัดการรหัสผ่านสากลที่เรียกว่า KeyChain โดยใช้ MetaMask Snaps รหัสผ่านเบราว์เซอร์ทั้งหมดสามารถเข้ารหัสและจัดเก็บได้โดยใช้รหัสกระเป๋าเงิน การรักษาความปลอดภัยให้กับกระเป๋าเงินของคุณ ถือเป็นการรักษาความปลอดภัยให้กับรหัสผ่านทั้งหมดของคุณ
นอกจากนี้ยังมีการสร้างจากทีม Web3MQ Web3MQ เป็นเครือข่ายถ่ายทอดการสื่อสารแบบกระจายอำนาจประสิทธิภาพสูง Web3MQ Snap จะทำหน้าที่เป็นไคลเอ็นต์เพื่ออำนวยความสะดวกในการโต้ตอบข้อความ การแจ้งเตือน การเตือน และฟังก์ชันพุช มันจะทำงานร่วมกับ DApps อื่นๆ ที่เชื่อมต่อกับ Web3MQ เช่น เครื่องมือแชทหรือเกมที่ใช้บล็อกเชน และอื่นๆ อีกมากมาย ด้วยความช่วยเหลือของ Web3MQ Snap ข้อความและการอัปเดตจะถูกส่งไปยังผู้ใช้ Metamask Snap โดยอัตโนมัติ ทำให้ไม่จำเป็นต้องมีการอนุญาตผู้ใช้เพิ่มเติม สิ่งนี้จะสร้างการเชื่อมต่อที่ไม่น่าเชื่อถือระหว่างผู้ใช้และระหว่างผู้ใช้กับแอปพลิเคชัน
Snaps ให้ความสำคัญกับนักพัฒนาเป็นอย่างมาก ด้วย Open API ประสบการณ์ของนักพัฒนาเป็นอย่างไร มาดำดิ่งสู่การสร้าง Snap เพื่อหาคำตอบกัน
เป็นที่ทราบกันดีว่าผู้ใช้ส่วนใหญ่มักไม่ทราบสัญญาอัจฉริยะที่พวกเขากำลังโต้ตอบอยู่ รวมถึงข้อกังวลต่อไปนี้:
สำหรับผู้ใช้ทั่วไป การคาดหวังให้พวกเขาตรวจสอบรหัสสัญญาที่มั่นคงก่อนการดำเนินการทุกครั้งถือเป็นคำสั่งที่สูง สถานการณ์นี้เหมาะอย่างยิ่งสำหรับฟีเจอร์ Transaction Insight เพื่อวิเคราะห์สัญญาอัจฉริยะ เช่น การใช้ AI สำหรับการตรวจสอบความปลอดภัยเบื้องต้น ซึ่งอาจกรองการโจมตีแบบฟิชชิ่งพื้นฐานได้ถึง 80%
การติดตั้งกระเป๋าสตางค์
ขั้นแรก ติดตั้ง MetaMask Flask
MetaMask Flask เป็นส่วนขยาย MetaMask เวอร์ชันที่เน้นนักพัฒนาเป็นหลัก ซึ่งส่วนใหญ่ใช้สำหรับการดูตัวอย่างคุณสมบัติใหม่และการพัฒนาฟังก์ชันการทำงานเชิงทดลอง จำไว้ว่ามีไว้เพื่อการพัฒนา ไม่ใช่เพื่อใช้ในชีวิตประจำวัน อย่านำเข้าคีย์ส่วนตัวที่ใช้ประจำวันของคุณ เราใช้ Flask ที่นี่เพื่อดูตัวอย่าง Snap ที่พัฒนาในท้องถิ่นของเราเป็นหลัก
ขอแนะนำให้ปิดการใช้งานกระเป๋าเงิน MetaMask ปกติและกระเป๋าเงินเบราว์เซอร์อื่น ๆ ชั่วคราวหลังจากติดตั้งหรือสร้างโปรไฟล์ Chrome ใหม่เพื่อหลีกเลี่ยงความขัดแย้ง
หลังจากติดตั้งกระเป๋าสตางค์แล้ว ให้สร้างกระเป๋าสตางค์ใหม่เหมือนกับกระเป๋าสตางค์ MetaMask ทั่วไป นี่คือกระเป๋าเงินทดสอบ ดังนั้นอย่านำเข้ากระเป๋าเงินที่ใช้ประจำวันของคุณ
ต่อไป เราต้องฝากเหรียญทดสอบบางส่วนลงในกระเป๋าเงินที่สร้างขึ้นใหม่ ซึ่งสามารถรับได้ผ่าน faucets Snap ที่กล่าวถึงในบทความนี้ใช้ Goerli ดังนั้นเนื้อหาต่อไปนี้จะเน้นที่ Goerli เป็นหลัก
หากต้องการเริ่มต้น Snap ตามเทมเพลต ให้ปฏิบัติตามเอกสารประกอบอย่างเป็นทางการ ขั้นแรก ให้ใช้ @metamask/create-snap CLI เพื่อสร้างโปรเจ็กต์ Snap ใหม่ ในเวลาเดียวกัน เราจะเริ่มต้นโดยใช้เทมเพลตอย่างเป็นทางการ:
เส้นด้ายสร้าง @metamask/snap ธุรกรรมinsights-snap && cd ธุรกรรมinsights-snap
ไฟล์ Snap หลักจะอยู่ใน ./packages/snap โครงสร้างไดเร็กทอรีคือ:
ไฟล์การกำหนดค่าของ Snap อยู่ใน snap.mainfest.json
และเนื้อหาหลักของ Snap อยู่ใน ./src/index.ts
ซึ่งค่อนข้างกระชับ
ขั้นแรก ให้เปิดใช้งานการอนุญาต เพิ่มสามบรรทัดต่อไปนี้ใน snap.mainfest.json
:
รหัส jsonCopy
“สิทธิ์เริ่มต้น”: {
“endowment:transaction-insight”: {}, // ข้อมูลเชิงลึกเกี่ยวกับธุรกรรม
“endowment:ethereum-provider”: {}, // เข้าถึง RPC
“การบริจาค: การเข้าถึงเครือข่าย”: {} //
ในไฟล์ Manifest คุณยังสามารถอัปเดต description
และ proposedName
เพื่อแก้ไขคำอธิบายและชื่อของโปรเจ็กต์ได้
สำหรับการสาธิตนี้ สิ่งที่คุณต้องทำก็แค่แก้ไขไฟล์ index.ts เพื่อให้ฟังก์ชันการทำงานทั้งหมดสมบูรณ์ ด้านล่างนี้คือข้อมูลโค้ดแบบง่าย สำหรับโค้ดที่รันได้ทั้งหมด โปรดไปที่: https://github.com/LidamaoHub/insights
รหัส tsxCopy
นำเข้า { OnTransactionHandler, OnRpcRequestHandler } จาก ' @metamask/snaps-types';
นำเข้า { heading, panel, text, copyable, divider } จาก ' @metamask/snaps-ui';
ส่งออก const บนธุรกรรม: OnTransactionHandler = async ({ transaction }) => {
// transaction
ประกอบด้วยค่า to
(ที่อยู่สัญญา) และ data
(ข้อมูลการโต้ตอบ)
// ตัวอย่างโค้ดเพื่อดึงข้อมูลการตรวจสอบสำหรับสัญญาด้านล่าง
ข้อมูล const = รอการดึงข้อมูล (http://contract-info.audit.dev/?address=${transaction.to}
);
// ด้านล่างนี้คือโค้ดตัวอย่าง UI
กลับ {
เนื้อหา: [
ข้อความ (
`${info.riskList.length} รายการความเสี่ยง`,
),
หัวข้อ (`${info.riskList.length ? 'Risk List' : ''}`),
...info.riskList.map((รายการ, i) => text(`${i + 1} ${item.text}`)),
ตัวแบ่ง (),
ข้อความ (
`ข้อมูลการตรวจสอบเพิ่มเติมจาก url ต่อไปนี้`,
),
คัดลอกได้ (
`https://contract- info.audit.dev/mm${info.token}`,
)
]
};
};
สำหรับคุณสมบัติเชิงลึกเพิ่มเติม โปรดดู เอกสารประกอบสำหรับนักพัฒนา MetaMask Snap
หลังการติดตั้ง ทุกธุรกรรมของคุณจะแสดงการแจ้งเตือนความเสี่ยงที่คล้ายกัน:
ประสบการณ์การพัฒนา Snaps ในปัจจุบันค่อนข้างราบรื่น โดยมีปัญหาน้อยมาก เทมเพลตอย่างเป็นทางการยังอุดมสมบูรณ์และหลากหลายอีกด้วย นักพัฒนาที่มีประสบการณ์มักจะเริ่มต้นและพัฒนา Snap ที่ต้องการได้ภายในไม่กี่ชั่วโมง อย่างไรก็ตาม ปัญหาคอขวดที่ใหญ่ที่สุดสำหรับการเผยแพร่อย่างเป็นทางการซึ่งรองรับผู้ชมกระแสหลักคือการตรวจสอบความปลอดภัย นักพัฒนาอิสระหรือทีมขนาดเล็กไม่ใช่ทุกคนจะมีทรัพยากรในการดำเนินการตรวจสอบ Snaps ของตนได้ ดังนั้นจึงคาดว่าปริมาณและความหลากหลายของ Snaps จะไม่เติบโตอย่างรวดเร็วเป็นเวลานาน
หากคุณสามารถดำเนินการตามตัวอย่างข้างต้นได้สำเร็จ ยินดีด้วย คุณเป็นนักพัฒนา Snap ระดับเริ่มต้นที่มีคุณสมบัติเหมาะสม!
เมื่อปีที่แล้ว MetaMask ได้เปิดตัว MetaMask Grants DAO อย่างเป็นทางการเพื่อสนับสนุนโครงการที่มีมูลค่าสูงภายในระบบนิเวศของ MetaMask เป็นโครงการริเริ่มเชิงทดลองที่ขับเคลื่อนโดยพนักงาน โดยมีเป้าหมายเพื่อมอบทุนสนับสนุนให้กับนักพัฒนาภายนอกทั่วโลก เพื่อสร้างประสบการณ์ที่ทรงประสิทธิภาพภายในระบบนิเวศ MetaMask ผลกำไรรายไตรมาสส่วนหนึ่งของ MetaMask ถูกส่งไปยัง DAO นี้ และงบประมาณประจำปีปัจจุบันอยู่ที่ 2.4 ล้านดอลลาร์
โครงการใดก็ตามที่เสริมสร้างระบบนิเวศ MetaMask สามารถสมัครขอรับ MetaMask Grants อย่างเป็นทางการจาก MetaMask Grants DAO ได้ สำหรับข้อมูลเพิ่มเติม โปรดไปที่ https://metamaskgrants.org/
เป็นที่น่าสังเกตว่า LXDAO รู้สึกเป็นเกียรติที่ได้สมัครและได้รับทุนสนับสนุนจาก MetaMask ในปีนี้ และได้มีส่วนร่วมอย่างแข็งขันในการพัฒนาโครงการที่เกี่ยวข้อง ซึ่งมีส่วนสนับสนุนระบบนิเวศของ MetaMask!
เราได้แยกแยะว่า Snap คืออะไรจากมุมมองทางเทคนิค ข้อควรพิจารณาด้านความปลอดภัย ข้อจำกัด และประสบการณ์ของนักพัฒนา สรุป:
ปัจจุบัน MetaMask Snap ยังอยู่ระหว่างการทำซ้ำอย่างรวดเร็ว คาดว่าจะมีการเปิดใช้สิทธิ์และความสามารถเพิ่มเติมในอนาคต มีความหวังว่าจะมีการเปิดตัวกลไกที่เปิดกว้างแต่มีความปลอดภัยมากขึ้น เช่น ระบบตรวจสอบต้นทุนต่ำที่ปลอดภัยและไม่ได้รับอนุญาต เพื่อให้นักพัฒนาสามารถเข้าร่วมได้มากขึ้นด้วยต้นทุนที่ต่ำลง หากปัญหานี้ได้รับการแก้ไข ก็อาจมีความต้องการเพิ่มขึ้นในอนาคต อาจมีตำแหน่งนักพัฒนา Snap โดยเฉพาะด้วยซ้ำ
นักพัฒนาอินดี้อาจค้นพบโอกาสพิเศษด้วยการใช้ประโยชน์จากฐานผู้ใช้จำนวนมหาศาลของ MetaMask เรามาจับตาดูนวัตกรรมที่เปลี่ยนแปลงเกมครั้งต่อไปที่ Snaps จะนำมาไว้บนโต๊ะ
สุดท้ายนี้ขอขอบคุณสำหรับบทความของคุณ ฉันเชื่อว่าสิ่งนี้จะช่วยสร้างความตระหนักรู้เกี่ยวกับสถานะปัจจุบันของ MetaMask Snaps ได้อย่างมาก
โปรดติดตาม Twitter ของเราต่อไป:https://twitter.com/LXDAO_Official@lxdao_official เราจะเผยแพร่เนื้อหาที่เกี่ยวข้องกับ MetaMask Snap เพิ่มเติม เช่น เวิร์กชอป ดังนั้นโปรดคอยติดตาม!
เมื่อไม่กี่วันที่ผ่านมา ConsenSys ได้ประกาศเปิดตัว MetaMask Snaps Open Beta ต่อสาธารณะ MetaMask Snaps เป็นปลั๊กอินที่ขยายขีดความสามารถของกระเป๋าเงิน MetaMask “Snaps” เหล่านี้เป็นแอปที่พัฒนาโดยบุคคลที่สามซึ่งสามารถติดตั้งเพื่อเพิ่มฟังก์ชันการทำงานใหม่ๆ ได้
หากเราเปรียบเทียบการเปลี่ยนแปลง MetaMask กับ WeChat ของ ConsenSys Snap ก็อาจถูกมองว่าเป็น WeChat Mini Program เป็นผลให้เห็นได้ชัดว่า MetaMask ด้วยความทะเยอทะยานเมื่อรวมกับขนาดของ ConsenSys และฐานผู้ใช้ของ MetaMask จะเปลี่ยนภูมิทัศน์ของภาคกระเป๋าสตางค์
เว็บไซต์อย่างเป็นทางการได้แสดงรายการ Snaps ที่มีอยู่แล้ว 35 รายการและเปิดตัว Snap App Store: https://snaps.metamask.io/
รายการ Snaps บางส่วน
MetaMask Snaps เป็นอย่างไรจากมุมมองทางเทคนิค? ความสามารถและข้อจำกัดของพวกเขามีอะไรบ้าง? พวกเขาปลอดภัยหรือไม่? ประสบการณ์ของนักพัฒนาเป็นอย่างไร? ปัจจัยทั้งหมดเหล่านี้สามารถกำหนดศักยภาพในอนาคตของ MetaMask Snaps ได้
ตั้งแต่ปีที่แล้ว LXDAO มีส่วนร่วมอย่างลึกซึ้งในการค้นคว้าการนำ Snaps ไปใช้ สมาชิกหลายคนมีส่วนร่วมในการพัฒนา Snap และมีส่วนร่วมในแฮ็กกาธอนที่เกี่ยวข้อง วันนี้ เราจะเจาะลึกคำถามเหล่านี้จากมุมมองทางเทคนิค หรือแม้แต่พัฒนา Snap เพื่อมอบประสบการณ์ตรงให้กับนักพัฒนา
โดยทั่วไปคุณจะติดตั้ง Snaps ได้จากตลาด MetaMask Snap อย่างเป็นทางการ หรือจากเว็บไซต์ของโครงการโดยตรง ตัวอย่างเช่น ด้วย UniPass เมื่อคุณไปที่หน้าแอป จะมีปุ่มสำหรับเชื่อมต่อ MetaMask ของคุณ
การคลิกจะเป็นการเริ่มการติดตั้ง Snap:
เมื่อติดตั้งแล้ว คุณสามารถเริ่มใช้งานผลิตภัณฑ์และฟีเจอร์ของผลิตภัณฑ์ได้ ในกรณีนี้ UniPass จะสร้างบัญชีสัญญาอัจฉริยะให้กับคุณ ซึ่งคุณสามารถควบคุมผ่าน MetaMask EOA (บัญชีที่เป็นเจ้าของภายนอก)
เมื่อคุณเริ่มต้นการถ่ายโอน UniPass จะเรียกใช้ป๊อปอัป Snap เพื่อยืนยันว่าคุณต้องการดำเนินการกับกระเป๋าเงิน UniPass AA หรือไม่
หลังจากยืนยันผ่าน MetaMask แล้ว คุณสามารถดำเนินการธุรกรรมต่อได้ ในสถานการณ์นี้ MetaMask จะสามารถควบคุมกระเป๋าเงิน UniPass AA ผ่าน Snap ได้ โดยไม่จำเป็นต้องใช้ UniPass ในการพัฒนาปลั๊กอินกระเป๋าเงินของตัวเอง นอกจากนี้ยังช่วยให้ผู้ใช้เริ่มต้นใช้งานด้วยต้นทุนต่ำผ่าน MetaMask
เราสามารถรวบรวมข้อมูลเชิงลึกอะไรบ้างจากกระบวนการติดตั้งและการใช้งานนี้
ความปลอดภัยมีความสำคัญเหนือกว่าเสมอเมื่อพูดถึงผลิตภัณฑ์กระเป๋าเงิน เรามาเจาะลึกการออกแบบความปลอดภัยของ Snaps กันดีกว่า
Snaps ขึ้นอยู่กับ NPM ซึ่งหมายความว่าเป็นแอปพลิเคชันเว็บและ JavaScript ดังที่เราทราบ JavaScript มีความยืดหยุ่นสูงแต่เสี่ยงต่อการถูกโจมตี เช่น XSS และฟิชชิ่ง MetaMask Snap จะรับมือกับความท้าทายเหล่านี้ได้อย่างไร
จากการค้นคว้า เราพบว่า MetaMask ได้ให้ทุนและผสานรวม Hardened JavaScript (หรือ Secure EcmaScript) ของ Agoric ให้เป็นโซลูชันแซนด์บ็อกซ์ "เสมือนจริงเต็มรูปแบบ" Agoric ได้ร่าง API การจำกัด JavaScript และส่งร่างข้อเสนอไปยัง TC-39: ข้อเสนอ TC-39
กล่าวง่ายๆ ก็คือ JavaScript แบบแข็งเป็นชุดย่อยที่ปลอดภัยกว่าของ JavaScript มาตรฐาน การปรับความสามารถบางอย่างของ JavaScript และการจำกัดการเรียก API ช่วยลดความเสี่ยงต่างๆ โดยจะสร้างแซนด์บ็อกซ์ที่ปลอดภัยสำหรับการรันโค้ดและปฏิบัติตาม “หลักการของสิทธิพิเศษน้อยที่สุด” ในการวางแผนการอนุญาตโค้ด
สำหรับข้อมูลเฉพาะทางเทคนิคโดยละเอียดเพิ่มเติมเกี่ยวกับ Hardened JavaScript โปรดดูที่: https://tvcutsem.github.io/assets/HardenedJS_BlueLava2022.pdf
Agoric และ MetaMask ได้ร่วมกันพัฒนา LavaMoat (https://github.com/LavaMoat/lavamoat) โครงการเพื่อเพิ่มความปลอดภัยของ Snaps LavaMoat เน้นถึงความเสี่ยงด้านความปลอดภัยของการพึ่งพาภายนอกในโครงการ JavaScript เป็นหลัก
ทั้ง Agoric และ MetaMask ผ่านการทดสอบความปลอดภัยแบบกล่องดำและกล่องขาวและได้เผยแพร่รายงานความปลอดภัยโดยละเอียด (รายละเอียดเพิ่มเติม: https://agoric.com/blog/technology/purple-teaming-how-metamask-and-agoric-hunted-bugs-to-harden-javascript) ดังนั้น ในระดับการเรียกใช้โค้ด เรามีเหตุผลเพียงพอที่จะเชื่อว่า Snaps มีความปลอดภัย
นอกเหนือจากการอนุญาตผู้ใช้อย่างชัดเจนและการออกแบบสิทธิ์ขั้นต่ำ เพื่อให้ได้รับการยอมรับอย่างเป็นทางการ Snaps จะต้องเป็นโอเพ่นซอร์ส เพื่อลดโอกาสที่จะเกิดโค้ดที่เป็นอันตราย นอกจากนี้เรายังสังเกตเห็นว่า Snaps ที่แสดงบนเว็บไซต์อย่างเป็นทางการได้ผ่านการตรวจสอบความปลอดภัยจากบุคคลที่สาม ซึ่งช่วยเพิ่มความน่าเชื่อถืออีกด้วย
ปัจจุบัน Snaps ได้รับการจัดการตามแพ็คเกจ NPM และการกำหนดเวอร์ชัน NPM เป็นเครื่องมือการจัดการแพ็คเกจที่ใช้กันอย่างแพร่หลายสำหรับการพัฒนาเว็บ ช่วยให้นักพัฒนาและทีมงานโครงการสามารถเผยแพร่แพ็คเกจและโค้ดใหม่ได้อย่างอิสระ
MetaMask ไม่สามารถควบคุมการเผยแพร่เวอร์ชันบนแพลตฟอร์ม NPM มีความเป็นไปได้ที่การเปลี่ยนแปลงเวอร์ชันล่าสุดอาจไม่ได้รับโอเพ่นซอร์สหรือตรวจสอบใช่ไหม
เมื่อมีการชี้แจงอย่างเป็นทางการ การเปลี่ยนแปลงเวอร์ชันแพ็คเกจ NPM ทั้งหมดจะต้องได้รับการตรวจสอบโดยทีมงานอย่างเป็นทางการ และเพิ่มลงในรายการที่อนุญาตก่อนจึงจะสามารถติดตั้งได้ ดังนั้น แม้ว่าทีมงานโครงการจะออกแพ็คเกจ NPM ใหม่ แต่ผู้ใช้ก็ไม่สามารถติดตั้งได้จนกว่าจะมีการระบุไว้อย่างเป็นทางการ วิธีการนี้จะเพิ่มค่าใช้จ่ายในการอัปเดตเวอร์ชัน Snap อย่างไม่ต้องสงสัย แต่เป็นวิธีแก้ปัญหาที่ปลอดภัยที่สุด มันสะท้อนถึงปรัชญาการออกแบบของ MetaMask Snap ที่ให้ความสำคัญกับความปลอดภัยเหนือสิ่งอื่นใด
MetaMask Snap เพิ่งประกาศอย่างเป็นทางการ แต่จริงๆ แล้วได้รับการพัฒนามานานกว่าสี่ปีแล้ว! แนวคิดเริ่มต้นของ MetaMask Snap เปิดตัวโดย Dan Finlay เมื่อวันที่ 10 ตุลาคม 2019 บนสื่อ บทความขนาดกลาง
การสร้างสมดุลระหว่างความปลอดภัย ความยืดหยุ่น และประสิทธิภาพถือเป็นความท้าทายที่สำคัญ เห็นได้ชัดว่า MetaMask ได้ลงทุนทรัพยากรจำนวนมากและการเตรียมพร้อมสำหรับความพยายามนี้
ปัจจุบัน API หลักสามรายการถูกเปิดเผยเป็นหลัก:
ด้านล่างนี้เป็นคำแนะนำโดยย่อเกี่ยวกับความสามารถและเอฟเฟกต์เฉพาะที่เปิดโดย MetaMask Snap เพื่อให้คุณเข้าใจได้ชัดเจนยิ่งขึ้น
อินเทอร์เฟซ Snap_notify สามารถแสดงการแจ้งเตือนภายใน MetaMask หรือเบราว์เซอร์ Snaps สามารถส่งข้อความโดยตรงถึงผู้ใช้ผ่านอินเทอร์เฟซนี้ ดังที่แสดงในภาพด้านล่าง
เมื่อผู้ใช้โต้ตอบกับสัญญาอัจฉริยะ MetaMask จะทริกเกอร์เหตุการณ์ onTransaction ของ Snap MetaMask ส่งผ่านธุรกรรมดิบที่ไม่ได้ลงนามไปยังวิธีตัวจัดการ onTransaction Snaps สามารถส่งคืนอินเทอร์เฟซบนหน้ายืนยันรองของธุรกรรม โดยปรับแต่งเนื้อหาที่แสดง
ด้วยความสามารถนี้ จึงสามารถรับรู้ถึงคุณสมบัติต่างๆ เช่น การตรวจสอบข้อมูลธุรกรรมอย่างปลอดภัย และการแสดงข้อมูลที่ขยายเพิ่มเติมได้
ความสามารถของ Dialog ช่วยให้ Snaps ปรากฏขึ้นในหน้าต่างแยกต่างหากได้โดยตรง คล้ายกับกล่องโต้ตอบ Alert/Confirm/Prompt แบบดั้งเดิม สิ่งเหล่านี้ใช้สำหรับการแจ้งเตือน การยืนยัน และการส่งข้อมูลตามลำดับ
คุณจะสามารถปรับแต่งอินเทอร์เฟซและการดำเนินการแบบโต้ตอบที่เรียบง่ายผ่าน Dialog เพื่อรวมเข้ากับ DApp ของคุณได้
เนื่องจากเหตุผลด้านความปลอดภัย ปัจจุบัน Snap จึงไม่รองรับเฟรมเวิร์กส่วนหน้าของบุคคลที่สาม และมีเพียง UIKit ที่จำกัดเท่านั้น ที่นี่ เรายังคงใช้ Insight เป็นตัวอย่าง โดยจัดแสดงไลบรารีส่วนประกอบ UI สำหรับนักพัฒนา
ดังที่แสดงในภาพ คุณสมบัติปัจจุบัน ได้แก่ ส่วนหัว (ข้อความขนาดใหญ่), ข้อความ (ข้อความขนาดเล็ก), แผง (การ์ดแบบใช้ครั้งเดียว), ตัวแบ่ง, คัดลอกได้ (คลิกเพื่อคัดลอก) และชุดย่อยของคุณสมบัติ Markdown (ตัวหนาและ ตัวเอียง). ดังนั้น ความสามารถเชิงโต้ตอบจึงดูเหมือนไม่สามารถทำได้ชั่วคราว และ HTML ที่ฝังไว้ไม่สามารถใช้สำหรับการโต้ตอบได้ อย่างไรก็ตาม หลังจากตั้งคำถามใน Discord อย่างเป็นทางการ พวกเขาระบุว่าข้อจำกัดเหล่านี้มีไว้เพื่อเหตุผลด้านความปลอดภัย และอาจมีการผ่อนคลายในเวอร์ชันที่กำลังจะมาถึง
นอกจากนี้ เพื่อเหตุผลด้านความปลอดภัย คำขอภายนอกได้รับการสนับสนุนผ่านวิธี Fetch เท่านั้น และไม่รองรับโปรโตคอลคำขอเพิ่มเติม เช่น WebSocket เนื่องจากข้อจำกัดด้านความปลอดภัย ความสามารถ และความเป็นส่วนตัว จึงไม่สามารถเข้าถึงข้อมูลลูกค้าได้ เช่น URL ปัจจุบันที่เรียกใช้ Snap ทำให้การนำคุณสมบัติต่างๆ ไปใช้ให้กว้างขึ้นเป็นเรื่องที่ท้าทาย
ปัญหาเหล่านี้ส่วนใหญ่เกิดจากข้อกังวลด้านความปลอดภัย เราเชื่อว่าเมื่อการรักษาความปลอดภัยได้รับการตรวจสอบเมื่อเวลาผ่านไป จะมีการให้สิทธิ์อนุญาตมากขึ้น
ด้วยการเปิดตัว API เหล่านี้ MetaMask ได้พัฒนาไปสู่ผลิตภัณฑ์แพลตฟอร์มเปิดเป็นหลัก รู้สึกคล้ายกับตอนที่ WeChat เปิดตัวบัญชีอย่างเป็นทางการและมินิโปรแกรม โดยเปลี่ยนจากเครื่องมือแชทเพียงอย่างเดียว
ย้อนกลับไปในปี 2019 MetaMask ได้คาดการณ์ภาพรวมของตลาดในปัจจุบันด้วยเครือข่ายสาธารณะ ฝ่ายโครงการ และข้อกำหนดกระเป๋าเงินแบบกำหนดเองมากมาย แทนที่จะแต่ละโปรเจ็กต์จะพัฒนาปลั๊กอินของตัวเองและผู้ใช้ต้องติดตั้งปลั๊กอินหลายตัว การพัฒนาโดยใช้ MetaMask Snap จะมีประสิทธิภาพมากกว่า ในชุดแรกของ Snaps เราเห็นกระเป๋าเงินจากระบบนิเวศอื่นที่ไม่ใช่ EVM เช่น Sui Wallet, Solana Wallet และ Arweave Wallet ด้วยฐานผู้ใช้ที่มีอยู่ MetaMask Snap จึงส่งผลกระทบอย่างมากต่อภาพรวมของกระเป๋าเงิน
ในความเป็นจริง ศักยภาพของ MetaMask Snap อาจยิ่งใหญ่กว่าที่เราจินตนาการ ขยายไปไกลกว่าแค่กระเป๋าเงิน นอกจากนี้เรายังเห็นความพยายามจากทีม EthSign ผู้สร้างเครื่องมือจัดการรหัสผ่านสากลที่เรียกว่า KeyChain โดยใช้ MetaMask Snaps รหัสผ่านเบราว์เซอร์ทั้งหมดสามารถเข้ารหัสและจัดเก็บได้โดยใช้รหัสกระเป๋าเงิน การรักษาความปลอดภัยให้กับกระเป๋าเงินของคุณ ถือเป็นการรักษาความปลอดภัยให้กับรหัสผ่านทั้งหมดของคุณ
นอกจากนี้ยังมีการสร้างจากทีม Web3MQ Web3MQ เป็นเครือข่ายถ่ายทอดการสื่อสารแบบกระจายอำนาจประสิทธิภาพสูง Web3MQ Snap จะทำหน้าที่เป็นไคลเอ็นต์เพื่ออำนวยความสะดวกในการโต้ตอบข้อความ การแจ้งเตือน การเตือน และฟังก์ชันพุช มันจะทำงานร่วมกับ DApps อื่นๆ ที่เชื่อมต่อกับ Web3MQ เช่น เครื่องมือแชทหรือเกมที่ใช้บล็อกเชน และอื่นๆ อีกมากมาย ด้วยความช่วยเหลือของ Web3MQ Snap ข้อความและการอัปเดตจะถูกส่งไปยังผู้ใช้ Metamask Snap โดยอัตโนมัติ ทำให้ไม่จำเป็นต้องมีการอนุญาตผู้ใช้เพิ่มเติม สิ่งนี้จะสร้างการเชื่อมต่อที่ไม่น่าเชื่อถือระหว่างผู้ใช้และระหว่างผู้ใช้กับแอปพลิเคชัน
Snaps ให้ความสำคัญกับนักพัฒนาเป็นอย่างมาก ด้วย Open API ประสบการณ์ของนักพัฒนาเป็นอย่างไร มาดำดิ่งสู่การสร้าง Snap เพื่อหาคำตอบกัน
เป็นที่ทราบกันดีว่าผู้ใช้ส่วนใหญ่มักไม่ทราบสัญญาอัจฉริยะที่พวกเขากำลังโต้ตอบอยู่ รวมถึงข้อกังวลต่อไปนี้:
สำหรับผู้ใช้ทั่วไป การคาดหวังให้พวกเขาตรวจสอบรหัสสัญญาที่มั่นคงก่อนการดำเนินการทุกครั้งถือเป็นคำสั่งที่สูง สถานการณ์นี้เหมาะอย่างยิ่งสำหรับฟีเจอร์ Transaction Insight เพื่อวิเคราะห์สัญญาอัจฉริยะ เช่น การใช้ AI สำหรับการตรวจสอบความปลอดภัยเบื้องต้น ซึ่งอาจกรองการโจมตีแบบฟิชชิ่งพื้นฐานได้ถึง 80%
การติดตั้งกระเป๋าสตางค์
ขั้นแรก ติดตั้ง MetaMask Flask
MetaMask Flask เป็นส่วนขยาย MetaMask เวอร์ชันที่เน้นนักพัฒนาเป็นหลัก ซึ่งส่วนใหญ่ใช้สำหรับการดูตัวอย่างคุณสมบัติใหม่และการพัฒนาฟังก์ชันการทำงานเชิงทดลอง จำไว้ว่ามีไว้เพื่อการพัฒนา ไม่ใช่เพื่อใช้ในชีวิตประจำวัน อย่านำเข้าคีย์ส่วนตัวที่ใช้ประจำวันของคุณ เราใช้ Flask ที่นี่เพื่อดูตัวอย่าง Snap ที่พัฒนาในท้องถิ่นของเราเป็นหลัก
ขอแนะนำให้ปิดการใช้งานกระเป๋าเงิน MetaMask ปกติและกระเป๋าเงินเบราว์เซอร์อื่น ๆ ชั่วคราวหลังจากติดตั้งหรือสร้างโปรไฟล์ Chrome ใหม่เพื่อหลีกเลี่ยงความขัดแย้ง
หลังจากติดตั้งกระเป๋าสตางค์แล้ว ให้สร้างกระเป๋าสตางค์ใหม่เหมือนกับกระเป๋าสตางค์ MetaMask ทั่วไป นี่คือกระเป๋าเงินทดสอบ ดังนั้นอย่านำเข้ากระเป๋าเงินที่ใช้ประจำวันของคุณ
ต่อไป เราต้องฝากเหรียญทดสอบบางส่วนลงในกระเป๋าเงินที่สร้างขึ้นใหม่ ซึ่งสามารถรับได้ผ่าน faucets Snap ที่กล่าวถึงในบทความนี้ใช้ Goerli ดังนั้นเนื้อหาต่อไปนี้จะเน้นที่ Goerli เป็นหลัก
หากต้องการเริ่มต้น Snap ตามเทมเพลต ให้ปฏิบัติตามเอกสารประกอบอย่างเป็นทางการ ขั้นแรก ให้ใช้ @metamask/create-snap CLI เพื่อสร้างโปรเจ็กต์ Snap ใหม่ ในเวลาเดียวกัน เราจะเริ่มต้นโดยใช้เทมเพลตอย่างเป็นทางการ:
เส้นด้ายสร้าง @metamask/snap ธุรกรรมinsights-snap && cd ธุรกรรมinsights-snap
ไฟล์ Snap หลักจะอยู่ใน ./packages/snap โครงสร้างไดเร็กทอรีคือ:
ไฟล์การกำหนดค่าของ Snap อยู่ใน snap.mainfest.json
และเนื้อหาหลักของ Snap อยู่ใน ./src/index.ts
ซึ่งค่อนข้างกระชับ
ขั้นแรก ให้เปิดใช้งานการอนุญาต เพิ่มสามบรรทัดต่อไปนี้ใน snap.mainfest.json
:
รหัส jsonCopy
“สิทธิ์เริ่มต้น”: {
“endowment:transaction-insight”: {}, // ข้อมูลเชิงลึกเกี่ยวกับธุรกรรม
“endowment:ethereum-provider”: {}, // เข้าถึง RPC
“การบริจาค: การเข้าถึงเครือข่าย”: {} //
ในไฟล์ Manifest คุณยังสามารถอัปเดต description
และ proposedName
เพื่อแก้ไขคำอธิบายและชื่อของโปรเจ็กต์ได้
สำหรับการสาธิตนี้ สิ่งที่คุณต้องทำก็แค่แก้ไขไฟล์ index.ts เพื่อให้ฟังก์ชันการทำงานทั้งหมดสมบูรณ์ ด้านล่างนี้คือข้อมูลโค้ดแบบง่าย สำหรับโค้ดที่รันได้ทั้งหมด โปรดไปที่: https://github.com/LidamaoHub/insights
รหัส tsxCopy
นำเข้า { OnTransactionHandler, OnRpcRequestHandler } จาก ' @metamask/snaps-types';
นำเข้า { heading, panel, text, copyable, divider } จาก ' @metamask/snaps-ui';
ส่งออก const บนธุรกรรม: OnTransactionHandler = async ({ transaction }) => {
// transaction
ประกอบด้วยค่า to
(ที่อยู่สัญญา) และ data
(ข้อมูลการโต้ตอบ)
// ตัวอย่างโค้ดเพื่อดึงข้อมูลการตรวจสอบสำหรับสัญญาด้านล่าง
ข้อมูล const = รอการดึงข้อมูล (http://contract-info.audit.dev/?address=${transaction.to}
);
// ด้านล่างนี้คือโค้ดตัวอย่าง UI
กลับ {
เนื้อหา: [
ข้อความ (
`${info.riskList.length} รายการความเสี่ยง`,
),
หัวข้อ (`${info.riskList.length ? 'Risk List' : ''}`),
...info.riskList.map((รายการ, i) => text(`${i + 1} ${item.text}`)),
ตัวแบ่ง (),
ข้อความ (
`ข้อมูลการตรวจสอบเพิ่มเติมจาก url ต่อไปนี้`,
),
คัดลอกได้ (
`https://contract- info.audit.dev/mm${info.token}`,
)
]
};
};
สำหรับคุณสมบัติเชิงลึกเพิ่มเติม โปรดดู เอกสารประกอบสำหรับนักพัฒนา MetaMask Snap
หลังการติดตั้ง ทุกธุรกรรมของคุณจะแสดงการแจ้งเตือนความเสี่ยงที่คล้ายกัน:
ประสบการณ์การพัฒนา Snaps ในปัจจุบันค่อนข้างราบรื่น โดยมีปัญหาน้อยมาก เทมเพลตอย่างเป็นทางการยังอุดมสมบูรณ์และหลากหลายอีกด้วย นักพัฒนาที่มีประสบการณ์มักจะเริ่มต้นและพัฒนา Snap ที่ต้องการได้ภายในไม่กี่ชั่วโมง อย่างไรก็ตาม ปัญหาคอขวดที่ใหญ่ที่สุดสำหรับการเผยแพร่อย่างเป็นทางการซึ่งรองรับผู้ชมกระแสหลักคือการตรวจสอบความปลอดภัย นักพัฒนาอิสระหรือทีมขนาดเล็กไม่ใช่ทุกคนจะมีทรัพยากรในการดำเนินการตรวจสอบ Snaps ของตนได้ ดังนั้นจึงคาดว่าปริมาณและความหลากหลายของ Snaps จะไม่เติบโตอย่างรวดเร็วเป็นเวลานาน
หากคุณสามารถดำเนินการตามตัวอย่างข้างต้นได้สำเร็จ ยินดีด้วย คุณเป็นนักพัฒนา Snap ระดับเริ่มต้นที่มีคุณสมบัติเหมาะสม!
เมื่อปีที่แล้ว MetaMask ได้เปิดตัว MetaMask Grants DAO อย่างเป็นทางการเพื่อสนับสนุนโครงการที่มีมูลค่าสูงภายในระบบนิเวศของ MetaMask เป็นโครงการริเริ่มเชิงทดลองที่ขับเคลื่อนโดยพนักงาน โดยมีเป้าหมายเพื่อมอบทุนสนับสนุนให้กับนักพัฒนาภายนอกทั่วโลก เพื่อสร้างประสบการณ์ที่ทรงประสิทธิภาพภายในระบบนิเวศ MetaMask ผลกำไรรายไตรมาสส่วนหนึ่งของ MetaMask ถูกส่งไปยัง DAO นี้ และงบประมาณประจำปีปัจจุบันอยู่ที่ 2.4 ล้านดอลลาร์
โครงการใดก็ตามที่เสริมสร้างระบบนิเวศ MetaMask สามารถสมัครขอรับ MetaMask Grants อย่างเป็นทางการจาก MetaMask Grants DAO ได้ สำหรับข้อมูลเพิ่มเติม โปรดไปที่ https://metamaskgrants.org/
เป็นที่น่าสังเกตว่า LXDAO รู้สึกเป็นเกียรติที่ได้สมัครและได้รับทุนสนับสนุนจาก MetaMask ในปีนี้ และได้มีส่วนร่วมอย่างแข็งขันในการพัฒนาโครงการที่เกี่ยวข้อง ซึ่งมีส่วนสนับสนุนระบบนิเวศของ MetaMask!
เราได้แยกแยะว่า Snap คืออะไรจากมุมมองทางเทคนิค ข้อควรพิจารณาด้านความปลอดภัย ข้อจำกัด และประสบการณ์ของนักพัฒนา สรุป:
ปัจจุบัน MetaMask Snap ยังอยู่ระหว่างการทำซ้ำอย่างรวดเร็ว คาดว่าจะมีการเปิดใช้สิทธิ์และความสามารถเพิ่มเติมในอนาคต มีความหวังว่าจะมีการเปิดตัวกลไกที่เปิดกว้างแต่มีความปลอดภัยมากขึ้น เช่น ระบบตรวจสอบต้นทุนต่ำที่ปลอดภัยและไม่ได้รับอนุญาต เพื่อให้นักพัฒนาสามารถเข้าร่วมได้มากขึ้นด้วยต้นทุนที่ต่ำลง หากปัญหานี้ได้รับการแก้ไข ก็อาจมีความต้องการเพิ่มขึ้นในอนาคต อาจมีตำแหน่งนักพัฒนา Snap โดยเฉพาะด้วยซ้ำ
นักพัฒนาอินดี้อาจค้นพบโอกาสพิเศษด้วยการใช้ประโยชน์จากฐานผู้ใช้จำนวนมหาศาลของ MetaMask เรามาจับตาดูนวัตกรรมที่เปลี่ยนแปลงเกมครั้งต่อไปที่ Snaps จะนำมาไว้บนโต๊ะ
สุดท้ายนี้ขอขอบคุณสำหรับบทความของคุณ ฉันเชื่อว่าสิ่งนี้จะช่วยสร้างความตระหนักรู้เกี่ยวกับสถานะปัจจุบันของ MetaMask Snaps ได้อย่างมาก
โปรดติดตาม Twitter ของเราต่อไป:https://twitter.com/LXDAO_Official@lxdao_official เราจะเผยแพร่เนื้อหาที่เกี่ยวข้องกับ MetaMask Snap เพิ่มเติม เช่น เวิร์กชอป ดังนั้นโปรดคอยติดตาม!