Diễn giải công nghệ MetaMask Snap: phân tích kinh nghiệm phát triển, hạn chế về năng lực, bảo mật và tiềm năng kinh doanh
Nguồn chính thức:LXDAO
Bài viết này do các thành viên nhóm chuyên gia LXDAO là Li Damao và Bruce đồng viết. Chúng tôi sẽ đi sâu vào các khía cạnh kỹ thuật của MetaMask Snap. MetaMask Snap là gì? Nó có khả năng kỹ thuật gì? Làm thế nào để đảm bảo an toàn? Kinh nghiệm phát triển thế nào? Những câu hỏi này có thể xác định tiềm năng trong tương lai của MetaMask Snap.
MetaMask Snap là gì?
Một vài ngày trước ConsenSys đã công bố ra mắt MetaMask Snaps Open Beta tới công chúng. MetaMask Snaps có thể mở rộng khả năng của ví và bạn có thể cài đặt ứng dụng (Snaps) do nhà phát triển bên thứ ba tạo để có được chức năng mới.
Nếu ConsenSys tích hợp MetaMask vào WeChat thì Snap là một applet của WeChat. Do đó, chúng ta có thể thấy tham vọng của MetaMask, kết hợp với quy mô của ConsenSys và số lượng người dùng MetaMask, mô hình của trường ví sẽ thay đổi.
Hiện tại, quan chức này đã công bố 35 mẫu Snap có sẵn và phát hành cửa hàng ứng dụng Snap https://snaps.metamask.io/.

Danh sách một số Snaps
Vậy chính xác thì MetaMask Snap trông như thế nào từ góc độ kỹ thuật? Những hạn chế về khả năng của họ là gì? Nó có an toàn không? Kinh nghiệm phát triển thế nào? Tất cả những điều này có thể quyết định tiềm năng trong tương lai của MetaMask Snap.
Kể từ năm ngoái, LXDAO đã tiến hành nghiên cứu chuyên sâu về việc triển khai Snap, hiện tại, nhiều thành viên đã tham gia phát triển Snap và tích cực tham gia các hackathons liên quan. Hôm nay, chúng tôi sẽ đi sâu vào các vấn đề trên từ góc độ kỹ thuật và thực sự phát triển Snap để cho phép bạn trải nghiệm trải nghiệm của nhà phát triển Snap.
Trải nghiệm đầu tiên về MetaMask Snap
Cài đặt MetaMask Snap
Nó thường có thể được cài đặt thông qua thị trường chính thức của MetaMask Snap hoặc trực tiếp trên trang web chính thức của dự án. Lấy UniPass làm ví dụ, khi truy cập vào trang ứng dụng, một nút sẽ được cung cấp để cho phép bạn liên kết với MetaMask.

Sau khi click vào Snap sẽ được cài đặt:

Sử dụng MetaMask Snap
Sau khi cài đặt hoàn tất, bạn có thể bắt đầu sử dụng các sản phẩm và chức năng tương ứng. Trong ứng dụng này, UniPass tạo một tài khoản hợp đồng thông minh để bạn dễ dàng kiểm soát thông qua tài khoản EOA của MetaMask.

Khi bạn thực hiện chuyển khoản, UniPass sẽ bật lên Snap để xác nhận với bạn xem bạn có muốn thực hiện thao tác này trên ví UniPass AA hay không.

Sau khi xác nhận thông qua MetaMask, các hoạt động liên quan có thể được thực hiện. Trong kịch bản này, MetaMask có khả năng kiểm soát ví UniPass AA thông qua Snap. UniPass cho phép người dùng vận hành ví mà không cần phát triển plug-in ví và MetaMask cũng có thể được sử dụng để giới thiệu cho người dùng với chi phí rất thấp!
Chúng tôi có thể nhận được thông tin gì từ quá trình cài đặt và sử dụng này?
Snap có khả năng kiểm soát quyền tương đối chi tiết, thậm chí bao gồm các quyền liên kết ví, yêu cầu mạng, v.v. Thiết kế tổng thể dựa trên nguyên tắc truy cập đặc quyền tối thiểu (Principle of Least Privilege), đặt sự an toàn lên hàng đầu.
Từ npm:@unipasswallet/unipass-snap bạn có thể thấy rằng Snap dựa trên NPM để quản lý gói và phiên bản. Bảo mật sẽ được giới thiệu chi tiết sau.
Snap rất linh hoạt và có thể phát triển và quyết định nội dung cũng như logic của màn hình theo nhu cầu của dự án. Tuy nhiên, giao diện người dùng tương đối đơn giản và có một số chỗ cần tối ưu hóa.
Trải nghiệm Snap rất đơn giản và đáng tin cậy, thực sự đạt đến cấp độ beta và sản xuất.
Đối với một sản phẩm ví, bảo mật luôn được đặt lên hàng đầu. Tiếp theo, hãy cùng phân tích thiết kế bảo mật của Snap.
Snap có an toàn không?
Phân tích thời gian chạy mã Snap
Như đã đề cập ở trên, Snap dựa trên NPM để quản lý gói và phiên bản, điều này cho thấy Snap thực sự là một ứng dụng dựa trên Web và JavaScript. Như chúng ta đã biết, cú pháp của JS rất linh hoạt và miễn phí, nó có thể dễ dàng dẫn đến các cuộc tấn công như XSS và lừa đảo. MetaMask Snap giải quyết thách thức này như thế nào?
Sau một số nghiên cứu, không khó để phát hiện ra rằng MetaMask tài trợ cho Agoric và tích hợp sâu Hardened JavaScript (còn được gọi là Secure EcmaScript) của nhóm Agoric như giải pháp hộp cát ảo hóa hoàn chỉnh. Agoric đã thiết kế API hạn chế JavaScript và gửi đề xuất Dự thảo tới TC-39 (Hiệp hội Tiêu chuẩn hóa JS) tại: https://github.com/tc39/proposal-ses.
Nói một cách đơn giản, Hardened JavaScript là một tập hợp con an toàn hơn của JavaScript tiêu chuẩn. Với sự trợ giúp của một số khả năng và cơ chế JS, một số quyền và phương thức gọi API JS sẽ bị giảm bớt, do đó giảm được một số rủi ro. Nó tạo ra một hộp cát an toàn để mã tương ứng thực thi và tuân theo Nguyên tắc đặc quyền tối thiểu để lập kế hoạch kiểm soát quyền mã.

Agoric đã cộng tác với MetaMask để phát triển dự án LavoMoat (https://github.com/LavaMoat/lavamoat) nhằm nâng cao tính bảo mật của Snap. LavaMoat là một bộ công cụ tập trung vào việc giải quyết các rủi ro bảo mật của các phần phụ thuộc bên ngoài trong các dự án JS và bổ sung các hạn chế đối với một số API và logic.
Agoric và MetaMask cùng nhau triển khai các thử nghiệm phòng thủ và tấn công bảo mật hộp đen và hộp trắng, đồng thời đưa ra các báo cáo bảo mật chi tiết. Vì vậy, ở cấp độ thời gian chạy mã, chúng tôi có lý do chính đáng để tin rằng Snap an toàn.
Mã Snap phải là mã nguồn mở và đã được kiểm tra
Ngoài việc có quy trình ủy quyền người dùng rõ ràng và thiết kế đặc quyền tối thiểu, để trở thành một Snap được công nhận chính thức, nó phải có mã nguồn mở. Thông qua sức mạnh của cộng đồng, khả năng Snap mang mã độc của chính mình sẽ giảm đi rất nhiều.
Ngoài ra, chúng tôi cũng nhận thấy rằng Snap trên trang web chính thức phải trải qua quá trình kiểm tra mã bởi một công ty bảo mật bên thứ ba trước khi được phát hành. Điều này cải thiện đáng kể độ tin cậy về bảo mật của Snap và các kiểm toán viên bao gồm SlowMist, điều mà mọi người đều rất quen thuộc.

Rủi ro bảo mật Snap được phát hiện cho đến nay
Vì Snap hiện dựa trên quản lý phiên bản và gói của NPM nên có khả năng xảy ra một số thay đổi nhất định ở cấp mã và việc kiểm tra không bắt buộc có thể gây ra một số rủi ro bảo mật nhất định.
Vì MetaMask không thể kiểm soát việc phát hành phiên bản của nền tảng NPM nên dự án có thể phát hành phiên bản mới bất cứ lúc nào để người dùng cài đặt. Do tốn kém chi phí kiểm toán nên công ty kiểm toán sẽ không kiểm toán mọi phiên bản nên sẽ phát sinh tình huống: những thay đổi trong phiên bản mới nhất có thể không phải là mã nguồn mở hoặc chưa được kiểm toán.
Tuy nhiên, do môi trường thực thi là môi trường hộp cát và sử dụng thiết kế quyền tối thiểu, trừ khi người dùng xác nhận các thay đổi quyền mới theo cách thủ công, phiên bản Snap mới sẽ chỉ có các quyền của phiên bản trước để thực hiện các thao tác. Tuy nhiên, nếu một Snap yêu cầu quá nhiều quyền vẫn sẽ gây ra rủi ro nên bạn vẫn cần cảnh giác khi cài đặt và sử dụng Snap.
Khả năng và hạn chế kỹ thuật của MetaMask Snap
Mặc dù MetaMask Snap mới được công bố chính thức gần đây nhưng thực tế Snap đã được phát triển được 4 năm! Ý tưởng ban đầu về MetaMask Snap được Dan Finlay công bố vào ngày 10 tháng 10 năm 2019.Medium。
Cân bằng giữa bảo mật, linh hoạt và hiệu quả là một thách thức rất lớn, cũng có thể thấy MetaMask đã chi rất nhiều tiền và chuẩn bị rất nhiều cho ngày này.
Hiện tại, ba API chính đang mở:
Khả năng tương tác, cho phép các nhà phát triển phát triển các ví chuỗi khác dựa trên MetaMask
Thông tin chi tiết về giao dịch cho phép nhà phát triển lấy dữ liệu giao dịch trước khi giao dịch của người dùng được bắt đầu để phân tích xem có rủi ro trong giao dịch hay không.
Thông báo, đẩy tin nhắn trực tiếp tới người dùng thông qua Snap (nhưng hình như cái này cần hỗ trợ website, hơi vô vị)

Sau đây là phần giới thiệu ngắn gọn về các khả năng và tác dụng mở cụ thể của MetaMask Snap, để các bạn có cái nhìn sinh động hơn.
Khả năng thông báo thông báo
Giao diện Snap_notify có thể hiển thị thông báo trong MetaMask hoặc trình duyệt. Snap có thể gửi tin nhắn trực tiếp tới người dùng thông qua giao diện này, như thể hiện trong hình bên dưới

Khả năng hiểu biết về giao dịch
Khi người dùng tương tác với hợp đồng thông minh, MetaMask sẽ kích hoạt sự kiện onTransaction của Snap. MetaMask sẽ chuyển giao dịch gốc chưa được ký sang phương thức xử lý onTransaction. Snap có thể trả về giao diện trên trang xác nhận phụ của giao dịch và tùy chỉnh nội dung hiển thị. .

Thông qua khả năng này, các chức năng như kiểm tra bảo mật thông tin giao dịch và hiển thị thông tin mở rộng có thể được thực hiện.
Giao diện hộp thoại và khả năng giao diện tùy chỉnh
Khả năng Hộp thoại sẽ cho phép Snap bật lên trực tiếp một cửa sổ độc lập, đạt được các khả năng tương tự như các cửa sổ bật lên Cảnh báo/Xác nhận/Nhắc nhở truyền thống (như hiển thị bên dưới), tương ứng được sử dụng để nhắc nhở, xác nhận và gửi thông tin.

Thông qua Dialog, bạn sẽ có thể tùy chỉnh các giao diện và thao tác tương tác đơn giản để kết nối với DApp của mình.
Những chức năng nào hiện không có sẵn với MetaMask Snap?
Vì lý do bảo mật và các lý do khác, Snap hiện không hỗ trợ các framework front-end của bên thứ ba và chỉ cung cấp một số lượng UIKit tương đối nhỏ, sau đây vẫn sử dụng Insight làm ví dụ để hiển thị các thư viện thành phần UI mà tất cả các nhà phát triển đều có thể gọi.

Như trong hình, hiện tại chỉ có Heading (văn bản lớn), Text (văn bản nhỏ), Panel (thẻ và chỉ dùng được một lần), Divider (tách dòng), Copyable (click để sao chép) và một tập con nhỏ của Markdown ( in đậm và in nghiêng) là trực tuyến), vì vậy có vẻ như tạm thời không thể xây dựng khả năng tương tác và không thể sử dụng html nhúng để đạt được các hoạt động tương tác. Tuy nhiên, sau khi đặt câu hỏi trong Discord chính thức, quan chức này khẳng định rằng đây là vì lý do bảo mật và sẽ được phát hành trong phiên bản tiếp theo.
Ngoài ra, cũng dựa trên các cân nhắc về bảo mật, chỉ có phương thức Tìm nạp được hỗ trợ cho các yêu cầu bên ngoài và các giao thức yêu cầu khác như WebSocket không được hỗ trợ. Do các hạn chế về bảo mật, khả năng và quyền riêng tư, cũng không thể lấy được thông tin khách hàng, chẳng hạn như URL hiện tại gợi lên Snap và không thể triển khai các chức năng phong phú và đa dạng hơn.
Hầu hết những vấn đề và hạn chế này là do những cân nhắc về bảo mật, tôi tin rằng trong tương lai, sau khi xác minh bảo mật, nhiều quyền hơn sẽ được xem xét.
MetaMask, nơi cung cấp các API này, đã thực sự trở thành một sản phẩm tương tự như một nền tảng mở. Cảm giác này giống như khi WeChat tung ra các tài khoản chính thức và các chương trình nhỏ, ngay lập tức khiến mọi người cảm thấy nó không còn là một công cụ trò chuyện đơn giản nữa.
MetaMask dự đoán cấu trúc thị trường ngày nay vào năm 2019, tức là có nhiều chuỗi công khai và các bên dự án cũng như các nhu cầu về ví tùy chỉnh khác nhau. Thay vì mỗi bên dự án cần phát triển plug-in riêng và người dùng cần cài đặt nhiều plug-in cùng lúc, tốt hơn hết bạn nên phát triển dựa trên MetaMask Snap. Trong số đợt Snaps đầu tiên được phát hành, chúng tôi cũng tìm thấy các ví sinh thái không phải EVM khác như Ví Sui, Ví Solana và Ví Arweave. Với cơ sở người dùng hiện có, MetaMask Snap chắc chắn sẽ có tác động đáng kể đến bối cảnh ví.
Trên thực tế, trí tưởng tượng của MetaMask Snap có thể lớn hơn chúng ta mong đợi, thậm chí vượt ra ngoài phạm vi ví. Chúng ta cũng có thể thấy công việc của nhóm EthSign, nhóm tạo ra KeyChain quản lý mật khẩu phổ quát dựa trên MetaMask Snaps. Mật khẩu trong tất cả các trình duyệt có thể được mã hóa bằng khóa ví và được lưu trữ. Hãy chăm sóc ví của bạn thật tốt theo cách này và giữ tất cả mật khẩu bên mình.

Snap rất phù hợp với các nhà phát triển. Với API mở, trải nghiệm cụ thể của nhà phát triển như thế nào? Chúng ta cũng có thể tự mình phát triển Snap để trải nghiệm nó.
Phát triển thử nghiệm Snap trực tiếp
Sắp xếp ý tưởng
Như chúng ta đã biết, hầu hết người dùng đều không thực sự biết hợp đồng thông minh mà họ đang tương tác là gì trong hầu hết các trường hợp, chủ yếu bao gồm các vấn đề sau:
Liệu hợp đồng đang được giao dịch có phải là hợp đồng được thay thế bởi một trang web lừa đảo hay không
Liệu hợp đồng đang được giao dịch có phải là hợp đồng có thể nâng cấp hay không
Hợp đồng thông minh có phải là hợp đồng mới được triển khai và chưa được nhiều người xác minh?
Hợp đồng giao dịch có phải là nguồn mở không?
Đối với người dùng thông thường, việc yêu cầu họ đọc mã hợp đồng trước khi vận hành lại càng không thể. Tại thời điểm này, thực sự rất phù hợp khi sử dụng chức năng Transaction Insight để thực hiện một số phân tích hợp đồng thông minh. Ví dụ: sử dụng AI để tiến hành kiểm tra bảo mật tương đối đơn giản đối với các hợp đồng thông minh có thể lọc ra 80% các cuộc tấn công lừa đảo cấp độ thấp.
Chuẩn bị môi trường phát triển
Tải ví xuống
Đầu tiên bạn cần cài đặt MetaMask Flask

MetaMask Flask là bản phân phối tiện ích mở rộng MetaMask lấy nhà phát triển làm trung tâm, chủ yếu được sử dụng để xem trước tính năng mới và phát triển tính năng thử nghiệm. Lưu ý rằng đây là phiên bản dành cho nhà phát triển của MetaMask. Vui lòng không sử dụng nó hàng ngày và không nhập khóa riêng mà bạn sử dụng hàng ngày. Flask được sử dụng ở đây chủ yếu để hỗ trợ việc xem trước cục bộ và thời gian thực của Snap mà chúng tôi đã phát triển.
Bạn nên tạm thời đóng Ví Little Fox và các ví trình duyệt khác sau khi cài đặt hoặc tạo Hồ sơ Chrome mới để sử dụng, nếu không sẽ xảy ra xung đột.
tạo tài khoản
Sau khi cài đặt ví, hãy tạo một ví mới giống như tạo ví MetaMask thông thường. Xin lưu ý rằng đây là ví dành riêng cho thử nghiệm. Vui lòng không nhập ví hàng ngày của riêng bạn.
Tiếp theo, chúng ta cần nạp một số coin thử nghiệm vào ví mới tạo, các coin thử nghiệm có thể nhận được thông qua vòi. Snap được đề cập trong bài viết này sử dụng Goerli nên bài viết sau sẽ tập trung vào Goerli.
Khởi tạo Snap dựa trên mẫu
Theo tài liệu chính thức, trước tiên hãy sử dụng CLI @metamask/create-snap để tạo dự án Snap mới và chúng tôi sử dụng mẫu chính thức để khởi tạo:

Cấu trúc tập tin đính kèm
Các file chính của Snap nằm trong ./packages/snap và cấu trúc thư mục file như sau

Tệp cấu hình của Snap được đặt trong snap.mainfest.json và tệp chính của Snap là ./src/index.ts, rất ngắn gọn.
Bật quyền
Đầu tiên chúng ta cần kích hoạt quyền. Đầu tiên chúng ta thêm ba mục sau vào snap.mainfest.json

Bạn cũng có thể sửa đổi mô tả và Tên đề xuất trong tệp Mainfest để sửa đổi mô tả và tên của dự án.
Nhận giao dịch
Tiếp theo, trong trường hợp này, bạn chỉ cần sửa đổi tệp index.ts để hoàn thành tất cả các chức năng. Ví dụ mã đơn giản như sau. Để biết mã có thể chạy đầy đủ, vui lòng truy cập: https://github.com/LidamaoHub /thông tin chi tiết.

Để biết thêm thông tin, vui lòng tham khảo tài liệu dành cho nhà phát triển MetaMask Snap để hoàn thiện các sản phẩm Snap phức tạp hơn.
Sau khi cài đặt, bạn sẽ thấy thông tin cảnh báo rủi ro tương tự cho mỗi giao dịch:

Hiện tại, quá trình phát triển của Snap rất mượt mà, hầu như không gặp phải vấn đề gì, các mẫu chính thức cũng rất phong phú và đa dạng. Các nhà phát triển có nhiều kinh nghiệm thường có thể bắt đầu và bắt đầu phát triển các Snap mà họ cần trong vòng vài giờ. Nhưng nó cần phải được phát hành chính thức và cung cấp cho người dùng phổ thông.Trở ngại lớn nhất sẽ là kiểm tra bảo mật. Không phải tất cả các nhà phát triển độc lập và nhóm nhỏ đều có đủ tài nguyên để kiểm tra Snap của họ. Vì vậy, có thể kỳ vọng rằng số lượng và sự phong phú của Snap sẽ không có mức tăng trưởng bùng nổ quá lớn trong thời gian dài trong tương lai.
Hỗ trợ nhà phát triển
Nếu bạn có thể xem qua các ví dụ trên, xin chúc mừng bạn đã trở thành nhà phát triển cấp đầu vào đủ điều kiện của Snap!
Các quan chức của MetaMask cũng đã thành lập MetaMask Grants DAO vào năm ngoái để tài trợ cho các dự án có giá trị cao trong hệ sinh thái MetaMask thông qua một chương trình tài trợ. MetaMask Grants DAO là một chương trình thử nghiệm do nhân viên lãnh đạo nhằm trao các khoản tài trợ cho các nhà phát triển bên ngoài trên khắp thế giới để xây dựng những trải nghiệm có tác động mạnh mẽ trong hệ sinh thái MetaMask. MetaMask bơm một phần lợi nhuận của mình vào DAO này mỗi quý. Ngân sách hàng năm hiện tại của MetaMask Grants DAO là 2,4 triệu USD.
Hiện tại, bất kỳ dự án nào có thể làm phong phú hệ sinh thái MetaMask đều có thể đăng ký MetaMask Grants DAO (MetaMask Grant) chính thức. Để biết thêm thông tin, vui lòng truy cập https://metamaskgrants.org/.
Điều đáng nói là LXDAO rất vinh dự được đăng ký MetaMask Grants trong năm nay và tham gia phát triển các dự án liên quan, đồng thời đã thiết lập kênh liên hệ, nếu bạn là thành viên của LXDAO và có ý tưởng liên quan, bạn có thể liên hệ với họ hiệu quả hơn để nộp đơn của bạn.

Phần kết luận
Ở trên, chúng tôi đã phân tích Snap là gì từ góc độ kỹ thuật, liệu nó có an toàn hay không, các hạn chế về khả năng và kinh nghiệm của nhà phát triển. Một bản tóm tắt ngắn gọn như sau:
Snap tương tự như ứng dụng WeChat, mở ra cho MetaMask một không gian tưởng tượng phong phú hơn.
Bảo mật nhìn chung là tốt nhưng vẫn có những rủi ro nhất định và bạn vẫn cần cảnh giác với các quyền có mức độ rủi ro cao.
Do cân nhắc về bảo mật nên hiện tại không có nhiều khả năng mở nhưng vẫn có thể tạo ra đủ Snap giàu trí tưởng tượng.
Sau bốn năm đánh bóng và thử nghiệm, trải nghiệm của nhà phát triển là tuyệt vời, tuy nhiên, do cân nhắc về bảo mật, cơ chế danh sách trắng và các yêu cầu kiểm tra đã được thiết kế, có thể dự đoán rằng sẽ không có số lượng lớn Snaps xuất hiện trong tương lai.
Hiện tại, MetaMask Snap vẫn đang được lặp lại nhanh chóng và tôi tin rằng sẽ có nhiều quyền và khả năng hơn được mở ra trong tương lai. Hy vọng rằng các cơ chế mở và an toàn hơn có thể được giới thiệu, chẳng hạn như cơ chế đánh giá Kiểm toán chính thức của Apple và kiểm soát phiên bản kho lưu trữ mã chính thức, để nhiều nhà phát triển hơn có thể tham gia với chi phí thấp. Nếu vấn đề này được cải thiện, có thể dự đoán rằng nhu cầu trong tương lai sẽ rất lớn. Thậm chí sẽ có các vị trí dành riêng cho nhà phát triển Snap.
Với số lượng người dùng MetaMask khổng lồ, các nhà phát triển độc lập cũng có thể có những cơ hội nhất định. Hãy cùng chờ xem Snap mang đến cải tiến đột phá nào tiếp theo nhé.
Cuối cùng, cảm ơn bài viết của bạn, tôi tin rằng nó sẽ giúp nhiều người hiểu hơn về tình trạng phát triển của MetaMask Snap.


