Một vài ngày trước, ConsenSys đã thông báo ra mắt công chúng MetaMask Snaps Open Beta. MetaMask Snaps về cơ bản là các plugin giúp mở rộng khả năng của ví MetaMask. Những “Snaps” này là những ứng dụng do bên thứ ba phát triển và có thể được cài đặt để bổ sung các chức năng mới.
Nếu chúng ta so sánh sự chuyển đổi MetaMask của ConsenSys thành WeChat, thì Snap có thể được coi là Chương trình WeChat Mini. Kết quả là, rõ ràng là MetaMask, với tham vọng của mình, kết hợp với quy mô của ConsenSys và cơ sở người dùng của MetaMask, sẽ thay đổi cục diện của lĩnh vực ví.
Trang web chính thức đã liệt kê 35 Snap có sẵn và ra mắt Cửa hàng ứng dụng Snap: https://snaps.metamask.io/.
Danh sách một phần của Snaps
Vậy MetaMask Snaps trông như thế nào từ góc độ kỹ thuật? Khả năng và hạn chế của họ là gì? Chúng có an toàn không? Trải nghiệm của nhà phát triển như thế nào? Tất cả những yếu tố này có thể xác định tiềm năng trong tương lai của MetaMask Snaps.
Bắt đầu từ năm ngoái, LXDAO đã tham gia sâu vào việc nghiên cứu triển khai Snaps. Một số thành viên đã tham gia phát triển Snap và tham gia các cuộc thi hackathon liên quan. Hôm nay, chúng ta sẽ đi sâu vào những câu hỏi này từ góc độ kỹ thuật và thậm chí phát triển Snap để mang đến cho bạn trải nghiệm thực tế của nhà phát triển.
Nói chung, bạn có thể cài đặt Snaps từ thị trường MetaMask Snap chính thức hoặc trực tiếp từ trang web của dự án. Ví dụ: với UniPass, khi bạn truy cập trang ứng dụng, sẽ có một nút để kết nối MetaMask của bạn.
Nhấp vào nó sẽ bắt đầu cài đặt Snap:
Sau khi cài đặt, bạn có thể bắt đầu sử dụng sản phẩm và các tính năng của nó. Trong trường hợp này, UniPass sẽ tạo một tài khoản hợp đồng thông minh cho bạn mà bạn có thể kiểm soát thông qua MetaMask EOA (Tài khoản thuộc sở hữu bên ngoài) của mình.
Khi bạn bắt đầu chuyển tiền, UniPass sẽ kích hoạt cửa sổ bật lên Snap để xác nhận xem bạn có muốn thực hiện thao tác cho ví UniPass AA hay không.
Sau khi xác nhận thông qua MetaMask, bạn có thể tiến hành giao dịch. Trong trường hợp này, MetaMask giành quyền kiểm soát ví UniPass AA thông qua Snap, loại bỏ nhu cầu UniPass phải phát triển plugin ví của riêng mình. Điều này cũng cho phép người dùng tham gia với chi phí thấp thông qua MetaMask.
Chúng tôi có thể thu thập thông tin chi tiết nào từ quá trình cài đặt và sử dụng này?
Bảo mật luôn được ưu tiên khi nói đến các sản phẩm ví. Hãy đi sâu vào thiết kế bảo mật của Snaps.
Snaps dựa trên NPM, ngụ ý chúng là các ứng dụng web và JavaScript. Như chúng ta biết, JavaScript rất linh hoạt nhưng dễ bị tấn công như XSS và lừa đảo. Vậy MetaMask Snap giải quyết những thách thức này như thế nào?
Sau khi nghiên cứu, chúng tôi phát hiện ra rằng MetaMask đã tài trợ và tích hợp Hardened JavaScript (hoặc Secure EcmaScript) của Agoric như một giải pháp hộp cát “ảo hóa hoàn toàn”. Agoric đã soạn thảo API hạn chế JavaScript và gửi đề xuất dự thảo tới TC-39: đề xuất TC-39.
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. Bằng cách điều chỉnh một số khả năng của JavaScript và hạn chế lệnh gọi API, nó sẽ giảm thiểu nhiều rủi ro khác nhau. Nó tạo ra một hộp cát an toàn để thực thi mã và tuân theo “Nguyên tắc đặc quyền tối thiểu” trong việc lập kế hoạch cấp phép mã.
Để biết thêm chi tiết kỹ thuật cụ thể về Hardened JavaScript, vui lòng tham khảo: https://tvcutsem.github.io/assets/HardenedJS_BlueLava2022.pdf.
Agoric và MetaMask đã đồng phát triển LavaMoat (https://github.com/LavaMoat/lavamoat) dự án tăng cường tính bảo mật của Snaps. LavaMoat chủ yếu 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 JavaScript.
Cả Agoric và MetaMask đều đã trải qua các cuộc kiểm tra bảo mật hộp đen và hộp trắng và đã công bố các báo cáo bảo mật chi tiết. (Thêm chi tiết: https://agoric.com/blog/technology/purple-teaming-how-metamask-and-agoric-hunted-bugs-to-harden-javascript). Do đó, ở cấp độ thực thi mã, chúng tôi có nhiều lý do để tin rằng Snaps an toàn.
Ngoài ủy quyền người dùng rõ ràng và thiết kế ít đặc quyền nhất, để được công nhận chính thức, Snaps phải có nguồn mở, giảm khả năng xảy ra mã độc. Chúng tôi cũng quan sát thấy rằng các Snap được liệt kê trên trang web chính thức đã trải qua quá trình kiểm tra bảo mật của bên thứ ba, điều này càng nâng cao độ tin cậy của chúng.
Hiện tại, Snaps được quản lý dựa trên các gói và phiên bản NPM. NPM là một công cụ quản lý gói được sử dụng rộng rãi để Phát triển Web, cho phép các nhà phát triển và nhóm dự án phát hành các gói và mã mới một cách độc lập.
MetaMask không kiểm soát việc phát hành phiên bản trên nền tảng NPM. Có khả năng những thay đổi trong phiên bản mới nhất có thể không có nguồn mở hoặc được kiểm tra, phải không?
Sau khi được làm rõ chính thức, tất cả các thay đổi đối với phiên bản gói NPM cần phải được nhóm chính thức xem xét và thêm vào danh sách trắng trước khi chúng có thể được cài đặt. Do đó, ngay cả khi nhóm dự án phát hành gói NPM mới, người dùng cũng không thể cài đặt gói này cho đến khi nó được liệt kê chính thức. Cách làm này chắc chắn sẽ làm tăng chi phí cập nhật các phiên bản Snap nhưng thực sự là giải pháp an toàn nhất. Nó phản ánh triết lý thiết kế của MetaMask Snap là ưu tiên bảo mật hơn tất cả.
MetaMask Snap mới được công bố chính thức gần đây nhưng thực tế nó đã được phát triển hơn 4 năm! Ý tưởng ban đầu về MetaMask Snap được Dan Finlay phát hành vào ngày 10 tháng 10 năm 2019 trên Medium. Bài viết trung bình.
Cân bằng giữa bảo mật, tính linh hoạt và hiệu quả là một thách thức đáng kể. Rõ ràng là MetaMask đã đầu tư rất nhiều nguồn lực và sự chuẩn bị cho nỗ lực này.
Hiện tại, ba API chính chủ yếu được đưa ra:
Dưới đây là phần giới thiệu ngắn gọn về các khả năng và hiệu ứng cụ thể được mở bởi MetaMask Snap, nhằm giúp bạn hiểu rõ hơn.
Giao diện Snap_notify có thể hiển thị thông báo trong MetaMask hoặc trình duyệt. Snaps 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ư trong hình bên dưới.
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 chuyển giao dịch thô chưa được ký sang phương thức xử lý onTransaction. Sau đó, Snaps có thể trả về giao diện trên trang xác nhận phụ của giao dịch, tùy chỉnh nội dung hiển thị.
Thông qua khả năng này, các tính năng như kiểm tra an toàn thông tin giao dịch và hiển thị thông tin mở rộng có thể được thực hiện.
Khả năng Hộp thoại cho phép Snaps bật trực tiếp một cửa sổ riêng biệt, tương tự như các hộp thoại Cảnh báo/Xác nhận/Nhắc truyền thống. Chúng được sử dụng để nhắc nhở, xác nhận và gửi thông tin tương ứng.
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 để tích hợp với DApp của mình.
Vì lý do bảo mật, Snap hiện không hỗ trợ khung giao diện người dùng của bên thứ ba và chỉ cung cấp UIKit hạn chế. Ở đây, chúng tôi vẫn sử dụng Insight làm ví dụ, giới thiệu thư viện thành phần UI có sẵn cho nhà phát triển.
Như được hiển thị trong hình ảnh, các tính năng hiện tại bao gồm Tiêu đề (văn bản lớn), Văn bản (văn bản nhỏ), Bảng điều khiển (thẻ sử dụng một lần), Bộ chia, Có thể sao chép (nhấp để sao chép) và một tập hợp con các tính năng Markdown (in đậm và in nghiêng). Do đó, khả năng tương tác dường như tạm thời không thể đạt được và không thể sử dụng HTML nhúng cho các tương tác. Tuy nhiên, sau khi đặt câu hỏi trong Discord chính thức, họ cho biết những hạn chế này là vì lý do bảo mật và có thể được nới lỏng trong các phiên bản sắp tới.
Hơn nữa, vì lý do bảo mật, các yêu cầu bên ngoài chỉ được hỗ trợ thông qua phương thức Tìm nạp và không hỗ trợ các giao thức yêu cầu bổ sung như WebSocket. Do các giới hạn về bảo mật, khả năng và quyền riêng tư, bạn cũng không thể truy cập thông tin khách hàng, chẳng hạn như URL hiện tại đã kích hoạt Snap, khiến việc triển khai nhiều tính năng hơn trở nên khó khăn.
Hầu hết các vấn đề này đều xuất phát từ những lo ngại về an ninh. Chúng tôi tin rằng khi bảo mật được xác thực theo thời gian thì sẽ có nhiều quyền hơn được cấp.
Với sự ra đời của các API này, MetaMask về cơ bản đã phát triển thành một sản phẩm nền tảng mở. Cảm giác này giống như khi WeChat ra mắt Tài khoản chính thức và các chương trình nhỏ, chuyển đổi từ một công cụ trò chuyện đơn thuần.
Trở lại năm 2019, MetaMask đã thấy trước bối cảnh thị trường hiện tại với nhiều chuỗi công khai, các bên tham gia dự án và các yêu cầu về ví tùy chỉnh. Thay vì mỗi dự án phát triển plugin riêng và người dùng phải cài đặt nhiều plugin, việc phát triển dựa trên MetaMask Snap sẽ hiệu quả hơn. Trong đợt Snaps đầu tiên, chúng tôi đã thấy các ví từ các hệ sinh thái khác ngoài EVM, 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ẽ tác động đáng kể đến bối cảnh ví.
Trên thực tế, tiềm năng của MetaMask Snap có thể còn lớn hơn chúng ta tưởng tượng, vượt ra ngoài phạm vi ví. Chúng ta cũng có thể thấy những nỗ lực từ nhóm EthSign, những người đã tạo ra một trình quản lý mật khẩu phổ quát có tên KeyChain dựa trên MetaMask Snaps. Tất cả mật khẩu trình duyệt có thể được mã hóa và lưu trữ bằng khóa ví. Bằng cách bảo mật ví của mình, về cơ bản bạn đang bảo mật tất cả mật khẩu của mình.
Ngoài ra còn có một sáng tạo từ nhóm Web3MQ. Web3MQ là mạng chuyển tiếp truyền thông phi tập trung hiệu suất cao. Web3MQ Snap sẽ đóng vai trò là ứng dụng khách để hỗ trợ tương tác tin nhắn, thông báo, cảnh báo và chức năng đẩy. Nó sẽ tích hợp với các DApp khác được kết nối với Web3MQ, chẳng hạn như các công cụ trò chuyện hoặc trò chơi dựa trên blockchain, cùng với các ứng dụng khác. Với sự trợ giúp của Web3MQ Snap, các tin nhắn và cập nhật sẽ được tự động gửi tới người dùng Metamask Snap, loại bỏ nhu cầu ủy quyền bổ sung cho người dùng. Điều này thiết lập một kết nối không tin cậy giữa người dùng và giữa người dùng và ứng dụng.
Snaps lấy nhà phát triển làm trung tâm. Với API mở, trải nghiệm của nhà phát triển thế nào? Hãy cùng đi sâu vào việc tạo Snap để tìm hiểu.
Điều nổi tiếng là hầu hết người dùng thường không biết các hợp đồng thông minh mà họ đang tương tác, bao gồm các mối quan tâm sau:
Đối với người dùng bình thường, việc mong đợi họ xem lại quy tắc vững chắc của hợp đồng trước mỗi hoạt động là một yêu cầu cao. Tình huống này lý tưởng cho tính năng Giao dịch hiểu biết sâu sắc để phân tích các hợp đồng thông minh, chẳng hạn như sử dụng AI để kiểm tra bảo mật sơ bộ, có thể lọc ra 80% các cuộc tấn công lừa đảo cơ bản.
Cài đặt ví
Đầu tiên, cài đặt MetaMask Flask.
MetaMask Flask là phiên bản 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 các tính năng mới và phát triển chức năng thử nghiệm. Hãy nhớ rằng, nó dành cho sự phát triển chứ không phải để sử dụng hàng ngày. Không nhập khóa riêng sử dụng hàng ngày của bạn. Chúng tôi chủ yếu sử dụng Flask ở đây để xem trước Snap được phát triển tại địa phương của chúng tôi.
Bạn nên tạm thời vô hiệu hóa ví MetaMask thông thường của mình và các ví trình duyệt khác sau khi cài đặt hoặc tạo hồ sơ Chrome mới để tránh xung đột.
Sau khi cài đặt ví, hãy tạo một ví mới giống như ví MetaMask thông thường. Đây là ví thử nghiệm, vì vậy đừng nhập ví sử dụng hàng ngày của bạn.
Tiếp theo, chúng ta cần gửi một số đồng tiền thử nghiệm vào ví mới tạo, có thể lấy được thông qua vòi. Snap được thảo luận trong bài viết này sử dụng Goerli nên nội dung sau sẽ chủ yếu tập trung vào Goerli.
Để khởi tạo Snap dựa trên mẫu, hãy làm theo tài liệu chính thức. Đầu tiên, sử dụng CLI @metamask/create-snap để tạo dự án Snap mới. Đồng thời, chúng tôi sẽ khởi tạo bằng mẫu chính thức:
sợi tạo @metamask/snap giao dịch-insights-snap && cd giao dịch-insights-snap
Các tệp Snap chính nằm trong ./packages/snap. Cấu trúc thư mục là:
Tệp cấu hình của Snap nằm trong snap.mainfest.json
, và phần chính của Snap nằm trong ./src/index.ts
, khá ngắn gọn.
Đầu tiên, kích hoạt quyền. Thêm ba dòng sau vào snap.mainfest.json
:
jsonSao chép mã
“Quyền ban đầu”: {
“endowment:transaction-insight”: {}, // Thông tin chi tiết về giao dịch
“tài trợ:ethereum-provider”: {}, // Truy cập vào RPC
“tài sản: truy cập mạng”: {} //
Trong tệp kê khai, bạn cũng có thể cập nhật description
và proposedName
để sửa đổi mô tả và tên của dự án.
Đối với bản demo này, tất cả những gì cần làm là sửa đổi tệp index.ts để hoàn thành tất cả các chức năng. Dưới đây là một đoạn mã đơn giản. Để có mã có thể chạy hoàn chỉnh, vui lòng truy cập: https://github.com/LidamaoHub/insights.
tsxSao chép mã
nhập { OnTransactionHandler, OnRpcRequestHandler } từ ' @metamask/snaps-types';
nhập { heading, panel, text, copyable, divider } từ ' @metamask/snaps-ui';
xuất const onTransaction: OnTransactionHandler = async ({ transaction }) => {
// transaction
bao gồm các giá trị to
(địa chỉ hợp đồng) và data
(dữ liệu tương tác)
// Mã ví dụ để lấy thông tin Kiểm tra cho hợp đồng bên dưới
thông tin const = đang chờ tìm nạp(http://contract-info.audit.dev/?address=${transaction.to}
);
// Dưới đây là mã mẫu giao diện người dùng
trở lại {
nội dung: [
text(
`${info.riskList.length} mục rủi ro`,
),
tiêu đề(`${info.riskList.length ? 'Risk List' : ''}`),
...info.riskList.map((item, i) => text(`${i + 1} ${item.text}`)),
Divider(),
text(
`Thêm thông tin kiểm tra từ url sau`,
),
có thể sao chép(
`https://contract- info.audit.dev/mm${info.token}`,
)
]
};
};
Để biết thêm các tính năng chuyên sâu, hãy tham khảo Tài liệu dành cho nhà phát triển MetaMask Snap.
Sau khi cài đặt, mọi giao dịch của bạn sẽ hiển thị các cảnh báo rủi ro tương tự:
Trải nghiệm phát triển với Snaps hiện khá suôn sẻ, có rất ít vấn đề. 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ó kinh nghiệm thường có thể bắt đầu và phát triển Snap theo yêu cầu của họ trong vòng vài giờ. Tuy nhiên, nút thắt lớn nhất đối với các bản phát hành chính thức phục vụ đối tượng phổ thông 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 hoặc nhóm nhỏ đều có đủ tài nguyên để tiến hành kiểm tra Snap của họ. Do đó, dự kiến số lượng và sự đa dạng của Snaps sẽ không tăng trưởng bùng nổ trong một thời gian đáng kể.
Nếu bạn có thể thực hiện thành công ví dụ trên, xin chúc mừng, bạn là nhà phát triển mới bắt đầu sử dụng Snap đủ tiêu chuẩn!
Năm ngoái, MetaMask đã chính thức ra mắt MetaMask Grants DAO để tài trợ cho các dự án có giá trị cao trong hệ sinh thái MetaMask. Đây là một sáng kiến thử nghiệm do nhân viên điều hành, nhằm mục đích cung cấp các khoản tài trợ cho các nhà phát triển bên ngoài toàn cầu để xây dựng những trải nghiệm có tác động mạnh mẽ trong hệ sinh thái MetaMask. Một phần lợi nhuận hàng quý của MetaMask được chuyển vào DAO này và ngân sách hàng năm hiện tại của nó là 2,4 triệu USD.
Bất kỳ dự án nào làm phong phú hệ sinh thái MetaMask đều có thể đăng ký Tài trợ MetaMask chính thức từ DAO Tài trợ MetaMask. Để 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ự khi được nộp đơn xin và nhận được tài trợ từ MetaMask trong năm nay, đồng thời đã tích cực tham gia phát triển các dự án liên quan, đóng góp cho hệ sinh thái MetaMask!
Chúng tôi đã mổ xẻ Snap là gì từ góc độ kỹ thuật, các cân nhắc về bảo mật, các hạn chế và trải nghiệm của nhà phát triển. Tóm tắt:
Hiện tại, MetaMask Snap vẫn đang trong quá trình phát triển nhanh chóng. Người ta dự đoán rằng nhiều quyền và khả năng hơn sẽ được mở ra trong tương lai. Có hy vọng về việc giới thiệu một cơ chế mở nhưng an toàn hơn, chẳng hạn như hệ thống kiểm tra chi phí thấp an toàn và không cần xin phép, để cho phép nhiều nhà phát triển hơn tham gia với chi phí thấp hơn. Nếu vấn đề này được giải quyết, nhu cầu có thể sẽ tăng vọt trong tương lai. Thậm chí có thể xuất hiện các vị trí nhà phát triển Snap chuyên dụng.
Tận dụng cơ sở người dùng khổng lồ của MetaMask, các nhà phát triển độc lập cũng có thể tìm thấy những cơ hội độc đáo. Chúng ta hãy chú ý theo dõi những cải tiến mang tính thay đổi trò chơi tiếp theo mà Snaps sẽ mang đến.
Cuối cùng xin cảm ơn bài viết của bạn. Tôi tin rằng nó sẽ góp phần đáng kể vào việc nâng cao nhận thức về tình trạng hiện tại của MetaMask Snaps.
Vui lòng tiếp tục theo dõi Twitterhttps://twitter.com/LXDAO_Officialcủa chúng tôi: @lxdao_official . Chúng tôi sẽ triển khai thêm nhiều nội dung liên quan đến MetaMask Snap như hội thảo, vì vậy hãy chú ý theo dõi!
Một vài ngày trước, ConsenSys đã thông báo ra mắt công chúng MetaMask Snaps Open Beta. MetaMask Snaps về cơ bản là các plugin giúp mở rộng khả năng của ví MetaMask. Những “Snaps” này là những ứng dụng do bên thứ ba phát triển và có thể được cài đặt để bổ sung các chức năng mới.
Nếu chúng ta so sánh sự chuyển đổi MetaMask của ConsenSys thành WeChat, thì Snap có thể được coi là Chương trình WeChat Mini. Kết quả là, rõ ràng là MetaMask, với tham vọng của mình, kết hợp với quy mô của ConsenSys và cơ sở người dùng của MetaMask, sẽ thay đổi cục diện của lĩnh vực ví.
Trang web chính thức đã liệt kê 35 Snap có sẵn và ra mắt Cửa hàng ứng dụng Snap: https://snaps.metamask.io/.
Danh sách một phần của Snaps
Vậy MetaMask Snaps trông như thế nào từ góc độ kỹ thuật? Khả năng và hạn chế của họ là gì? Chúng có an toàn không? Trải nghiệm của nhà phát triển như thế nào? Tất cả những yếu tố này có thể xác định tiềm năng trong tương lai của MetaMask Snaps.
Bắt đầu từ năm ngoái, LXDAO đã tham gia sâu vào việc nghiên cứu triển khai Snaps. Một số thành viên đã tham gia phát triển Snap và tham gia các cuộc thi hackathon liên quan. Hôm nay, chúng ta sẽ đi sâu vào những câu hỏi này từ góc độ kỹ thuật và thậm chí phát triển Snap để mang đến cho bạn trải nghiệm thực tế của nhà phát triển.
Nói chung, bạn có thể cài đặt Snaps từ thị trường MetaMask Snap chính thức hoặc trực tiếp từ trang web của dự án. Ví dụ: với UniPass, khi bạn truy cập trang ứng dụng, sẽ có một nút để kết nối MetaMask của bạn.
Nhấp vào nó sẽ bắt đầu cài đặt Snap:
Sau khi cài đặt, bạn có thể bắt đầu sử dụng sản phẩm và các tính năng của nó. Trong trường hợp này, UniPass sẽ tạo một tài khoản hợp đồng thông minh cho bạn mà bạn có thể kiểm soát thông qua MetaMask EOA (Tài khoản thuộc sở hữu bên ngoài) của mình.
Khi bạn bắt đầu chuyển tiền, UniPass sẽ kích hoạt cửa sổ bật lên Snap để xác nhận xem bạn có muốn thực hiện thao tác cho ví UniPass AA hay không.
Sau khi xác nhận thông qua MetaMask, bạn có thể tiến hành giao dịch. Trong trường hợp này, MetaMask giành quyền kiểm soát ví UniPass AA thông qua Snap, loại bỏ nhu cầu UniPass phải phát triển plugin ví của riêng mình. Điều này cũng cho phép người dùng tham gia với chi phí thấp thông qua MetaMask.
Chúng tôi có thể thu thập thông tin chi tiết nào từ quá trình cài đặt và sử dụng này?
Bảo mật luôn được ưu tiên khi nói đến các sản phẩm ví. Hãy đi sâu vào thiết kế bảo mật của Snaps.
Snaps dựa trên NPM, ngụ ý chúng là các ứng dụng web và JavaScript. Như chúng ta biết, JavaScript rất linh hoạt nhưng dễ bị tấn công như XSS và lừa đảo. Vậy MetaMask Snap giải quyết những thách thức này như thế nào?
Sau khi nghiên cứu, chúng tôi phát hiện ra rằng MetaMask đã tài trợ và tích hợp Hardened JavaScript (hoặc Secure EcmaScript) của Agoric như một giải pháp hộp cát “ảo hóa hoàn toàn”. Agoric đã soạn thảo API hạn chế JavaScript và gửi đề xuất dự thảo tới TC-39: đề xuất TC-39.
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. Bằng cách điều chỉnh một số khả năng của JavaScript và hạn chế lệnh gọi API, nó sẽ giảm thiểu nhiều rủi ro khác nhau. Nó tạo ra một hộp cát an toàn để thực thi mã và tuân theo “Nguyên tắc đặc quyền tối thiểu” trong việc lập kế hoạch cấp phép mã.
Để biết thêm chi tiết kỹ thuật cụ thể về Hardened JavaScript, vui lòng tham khảo: https://tvcutsem.github.io/assets/HardenedJS_BlueLava2022.pdf.
Agoric và MetaMask đã đồng phát triển LavaMoat (https://github.com/LavaMoat/lavamoat) dự án tăng cường tính bảo mật của Snaps. LavaMoat chủ yếu 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 JavaScript.
Cả Agoric và MetaMask đều đã trải qua các cuộc kiểm tra bảo mật hộp đen và hộp trắng và đã công bố các báo cáo bảo mật chi tiết. (Thêm chi tiết: https://agoric.com/blog/technology/purple-teaming-how-metamask-and-agoric-hunted-bugs-to-harden-javascript). Do đó, ở cấp độ thực thi mã, chúng tôi có nhiều lý do để tin rằng Snaps an toàn.
Ngoài ủy quyền người dùng rõ ràng và thiết kế ít đặc quyền nhất, để được công nhận chính thức, Snaps phải có nguồn mở, giảm khả năng xảy ra mã độc. Chúng tôi cũng quan sát thấy rằng các Snap được liệt kê trên trang web chính thức đã trải qua quá trình kiểm tra bảo mật của bên thứ ba, điều này càng nâng cao độ tin cậy của chúng.
Hiện tại, Snaps được quản lý dựa trên các gói và phiên bản NPM. NPM là một công cụ quản lý gói được sử dụng rộng rãi để Phát triển Web, cho phép các nhà phát triển và nhóm dự án phát hành các gói và mã mới một cách độc lập.
MetaMask không kiểm soát việc phát hành phiên bản trên nền tảng NPM. Có khả năng những thay đổi trong phiên bản mới nhất có thể không có nguồn mở hoặc được kiểm tra, phải không?
Sau khi được làm rõ chính thức, tất cả các thay đổi đối với phiên bản gói NPM cần phải được nhóm chính thức xem xét và thêm vào danh sách trắng trước khi chúng có thể được cài đặt. Do đó, ngay cả khi nhóm dự án phát hành gói NPM mới, người dùng cũng không thể cài đặt gói này cho đến khi nó được liệt kê chính thức. Cách làm này chắc chắn sẽ làm tăng chi phí cập nhật các phiên bản Snap nhưng thực sự là giải pháp an toàn nhất. Nó phản ánh triết lý thiết kế của MetaMask Snap là ưu tiên bảo mật hơn tất cả.
MetaMask Snap mới được công bố chính thức gần đây nhưng thực tế nó đã được phát triển hơn 4 năm! Ý tưởng ban đầu về MetaMask Snap được Dan Finlay phát hành vào ngày 10 tháng 10 năm 2019 trên Medium. Bài viết trung bình.
Cân bằng giữa bảo mật, tính linh hoạt và hiệu quả là một thách thức đáng kể. Rõ ràng là MetaMask đã đầu tư rất nhiều nguồn lực và sự chuẩn bị cho nỗ lực này.
Hiện tại, ba API chính chủ yếu được đưa ra:
Dưới đây là phần giới thiệu ngắn gọn về các khả năng và hiệu ứng cụ thể được mở bởi MetaMask Snap, nhằm giúp bạn hiểu rõ hơn.
Giao diện Snap_notify có thể hiển thị thông báo trong MetaMask hoặc trình duyệt. Snaps 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ư trong hình bên dưới.
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 chuyển giao dịch thô chưa được ký sang phương thức xử lý onTransaction. Sau đó, Snaps có thể trả về giao diện trên trang xác nhận phụ của giao dịch, tùy chỉnh nội dung hiển thị.
Thông qua khả năng này, các tính năng như kiểm tra an toàn thông tin giao dịch và hiển thị thông tin mở rộng có thể được thực hiện.
Khả năng Hộp thoại cho phép Snaps bật trực tiếp một cửa sổ riêng biệt, tương tự như các hộp thoại Cảnh báo/Xác nhận/Nhắc truyền thống. Chúng được sử dụng để nhắc nhở, xác nhận và gửi thông tin tương ứng.
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 để tích hợp với DApp của mình.
Vì lý do bảo mật, Snap hiện không hỗ trợ khung giao diện người dùng của bên thứ ba và chỉ cung cấp UIKit hạn chế. Ở đây, chúng tôi vẫn sử dụng Insight làm ví dụ, giới thiệu thư viện thành phần UI có sẵn cho nhà phát triển.
Như được hiển thị trong hình ảnh, các tính năng hiện tại bao gồm Tiêu đề (văn bản lớn), Văn bản (văn bản nhỏ), Bảng điều khiển (thẻ sử dụng một lần), Bộ chia, Có thể sao chép (nhấp để sao chép) và một tập hợp con các tính năng Markdown (in đậm và in nghiêng). Do đó, khả năng tương tác dường như tạm thời không thể đạt được và không thể sử dụng HTML nhúng cho các tương tác. Tuy nhiên, sau khi đặt câu hỏi trong Discord chính thức, họ cho biết những hạn chế này là vì lý do bảo mật và có thể được nới lỏng trong các phiên bản sắp tới.
Hơn nữa, vì lý do bảo mật, các yêu cầu bên ngoài chỉ được hỗ trợ thông qua phương thức Tìm nạp và không hỗ trợ các giao thức yêu cầu bổ sung như WebSocket. Do các giới hạn về bảo mật, khả năng và quyền riêng tư, bạn cũng không thể truy cập thông tin khách hàng, chẳng hạn như URL hiện tại đã kích hoạt Snap, khiến việc triển khai nhiều tính năng hơn trở nên khó khăn.
Hầu hết các vấn đề này đều xuất phát từ những lo ngại về an ninh. Chúng tôi tin rằng khi bảo mật được xác thực theo thời gian thì sẽ có nhiều quyền hơn được cấp.
Với sự ra đời của các API này, MetaMask về cơ bản đã phát triển thành một sản phẩm nền tảng mở. Cảm giác này giống như khi WeChat ra mắt Tài khoản chính thức và các chương trình nhỏ, chuyển đổi từ một công cụ trò chuyện đơn thuần.
Trở lại năm 2019, MetaMask đã thấy trước bối cảnh thị trường hiện tại với nhiều chuỗi công khai, các bên tham gia dự án và các yêu cầu về ví tùy chỉnh. Thay vì mỗi dự án phát triển plugin riêng và người dùng phải cài đặt nhiều plugin, việc phát triển dựa trên MetaMask Snap sẽ hiệu quả hơn. Trong đợt Snaps đầu tiên, chúng tôi đã thấy các ví từ các hệ sinh thái khác ngoài EVM, 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ẽ tác động đáng kể đến bối cảnh ví.
Trên thực tế, tiềm năng của MetaMask Snap có thể còn lớn hơn chúng ta tưởng tượng, vượt ra ngoài phạm vi ví. Chúng ta cũng có thể thấy những nỗ lực từ nhóm EthSign, những người đã tạo ra một trình quản lý mật khẩu phổ quát có tên KeyChain dựa trên MetaMask Snaps. Tất cả mật khẩu trình duyệt có thể được mã hóa và lưu trữ bằng khóa ví. Bằng cách bảo mật ví của mình, về cơ bản bạn đang bảo mật tất cả mật khẩu của mình.
Ngoài ra còn có một sáng tạo từ nhóm Web3MQ. Web3MQ là mạng chuyển tiếp truyền thông phi tập trung hiệu suất cao. Web3MQ Snap sẽ đóng vai trò là ứng dụng khách để hỗ trợ tương tác tin nhắn, thông báo, cảnh báo và chức năng đẩy. Nó sẽ tích hợp với các DApp khác được kết nối với Web3MQ, chẳng hạn như các công cụ trò chuyện hoặc trò chơi dựa trên blockchain, cùng với các ứng dụng khác. Với sự trợ giúp của Web3MQ Snap, các tin nhắn và cập nhật sẽ được tự động gửi tới người dùng Metamask Snap, loại bỏ nhu cầu ủy quyền bổ sung cho người dùng. Điều này thiết lập một kết nối không tin cậy giữa người dùng và giữa người dùng và ứng dụng.
Snaps lấy nhà phát triển làm trung tâm. Với API mở, trải nghiệm của nhà phát triển thế nào? Hãy cùng đi sâu vào việc tạo Snap để tìm hiểu.
Điều nổi tiếng là hầu hết người dùng thường không biết các hợp đồng thông minh mà họ đang tương tác, bao gồm các mối quan tâm sau:
Đối với người dùng bình thường, việc mong đợi họ xem lại quy tắc vững chắc của hợp đồng trước mỗi hoạt động là một yêu cầu cao. Tình huống này lý tưởng cho tính năng Giao dịch hiểu biết sâu sắc để phân tích các hợp đồng thông minh, chẳng hạn như sử dụng AI để kiểm tra bảo mật sơ bộ, có thể lọc ra 80% các cuộc tấn công lừa đảo cơ bản.
Cài đặt ví
Đầu tiên, cài đặt MetaMask Flask.
MetaMask Flask là phiên bản 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 các tính năng mới và phát triển chức năng thử nghiệm. Hãy nhớ rằng, nó dành cho sự phát triển chứ không phải để sử dụng hàng ngày. Không nhập khóa riêng sử dụng hàng ngày của bạn. Chúng tôi chủ yếu sử dụng Flask ở đây để xem trước Snap được phát triển tại địa phương của chúng tôi.
Bạn nên tạm thời vô hiệu hóa ví MetaMask thông thường của mình và các ví trình duyệt khác sau khi cài đặt hoặc tạo hồ sơ Chrome mới để tránh xung đột.
Sau khi cài đặt ví, hãy tạo một ví mới giống như ví MetaMask thông thường. Đây là ví thử nghiệm, vì vậy đừng nhập ví sử dụng hàng ngày của bạn.
Tiếp theo, chúng ta cần gửi một số đồng tiền thử nghiệm vào ví mới tạo, có thể lấy được thông qua vòi. Snap được thảo luận trong bài viết này sử dụng Goerli nên nội dung sau sẽ chủ yếu tập trung vào Goerli.
Để khởi tạo Snap dựa trên mẫu, hãy làm theo tài liệu chính thức. Đầu tiên, sử dụng CLI @metamask/create-snap để tạo dự án Snap mới. Đồng thời, chúng tôi sẽ khởi tạo bằng mẫu chính thức:
sợi tạo @metamask/snap giao dịch-insights-snap && cd giao dịch-insights-snap
Các tệp Snap chính nằm trong ./packages/snap. Cấu trúc thư mục là:
Tệp cấu hình của Snap nằm trong snap.mainfest.json
, và phần chính của Snap nằm trong ./src/index.ts
, khá ngắn gọn.
Đầu tiên, kích hoạt quyền. Thêm ba dòng sau vào snap.mainfest.json
:
jsonSao chép mã
“Quyền ban đầu”: {
“endowment:transaction-insight”: {}, // Thông tin chi tiết về giao dịch
“tài trợ:ethereum-provider”: {}, // Truy cập vào RPC
“tài sản: truy cập mạng”: {} //
Trong tệp kê khai, bạn cũng có thể cập nhật description
và proposedName
để sửa đổi mô tả và tên của dự án.
Đối với bản demo này, tất cả những gì cần làm là sửa đổi tệp index.ts để hoàn thành tất cả các chức năng. Dưới đây là một đoạn mã đơn giản. Để có mã có thể chạy hoàn chỉnh, vui lòng truy cập: https://github.com/LidamaoHub/insights.
tsxSao chép mã
nhập { OnTransactionHandler, OnRpcRequestHandler } từ ' @metamask/snaps-types';
nhập { heading, panel, text, copyable, divider } từ ' @metamask/snaps-ui';
xuất const onTransaction: OnTransactionHandler = async ({ transaction }) => {
// transaction
bao gồm các giá trị to
(địa chỉ hợp đồng) và data
(dữ liệu tương tác)
// Mã ví dụ để lấy thông tin Kiểm tra cho hợp đồng bên dưới
thông tin const = đang chờ tìm nạp(http://contract-info.audit.dev/?address=${transaction.to}
);
// Dưới đây là mã mẫu giao diện người dùng
trở lại {
nội dung: [
text(
`${info.riskList.length} mục rủi ro`,
),
tiêu đề(`${info.riskList.length ? 'Risk List' : ''}`),
...info.riskList.map((item, i) => text(`${i + 1} ${item.text}`)),
Divider(),
text(
`Thêm thông tin kiểm tra từ url sau`,
),
có thể sao chép(
`https://contract- info.audit.dev/mm${info.token}`,
)
]
};
};
Để biết thêm các tính năng chuyên sâu, hãy tham khảo Tài liệu dành cho nhà phát triển MetaMask Snap.
Sau khi cài đặt, mọi giao dịch của bạn sẽ hiển thị các cảnh báo rủi ro tương tự:
Trải nghiệm phát triển với Snaps hiện khá suôn sẻ, có rất ít vấn đề. 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ó kinh nghiệm thường có thể bắt đầu và phát triển Snap theo yêu cầu của họ trong vòng vài giờ. Tuy nhiên, nút thắt lớn nhất đối với các bản phát hành chính thức phục vụ đối tượng phổ thông 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 hoặc nhóm nhỏ đều có đủ tài nguyên để tiến hành kiểm tra Snap của họ. Do đó, dự kiến số lượng và sự đa dạng của Snaps sẽ không tăng trưởng bùng nổ trong một thời gian đáng kể.
Nếu bạn có thể thực hiện thành công ví dụ trên, xin chúc mừng, bạn là nhà phát triển mới bắt đầu sử dụng Snap đủ tiêu chuẩn!
Năm ngoái, MetaMask đã chính thức ra mắt MetaMask Grants DAO để tài trợ cho các dự án có giá trị cao trong hệ sinh thái MetaMask. Đây là một sáng kiến thử nghiệm do nhân viên điều hành, nhằm mục đích cung cấp các khoản tài trợ cho các nhà phát triển bên ngoài toàn cầu để xây dựng những trải nghiệm có tác động mạnh mẽ trong hệ sinh thái MetaMask. Một phần lợi nhuận hàng quý của MetaMask được chuyển vào DAO này và ngân sách hàng năm hiện tại của nó là 2,4 triệu USD.
Bất kỳ dự án nào làm phong phú hệ sinh thái MetaMask đều có thể đăng ký Tài trợ MetaMask chính thức từ DAO Tài trợ MetaMask. Để 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ự khi được nộp đơn xin và nhận được tài trợ từ MetaMask trong năm nay, đồng thời đã tích cực tham gia phát triển các dự án liên quan, đóng góp cho hệ sinh thái MetaMask!
Chúng tôi đã mổ xẻ Snap là gì từ góc độ kỹ thuật, các cân nhắc về bảo mật, các hạn chế và trải nghiệm của nhà phát triển. Tóm tắt:
Hiện tại, MetaMask Snap vẫn đang trong quá trình phát triển nhanh chóng. Người ta dự đoán rằng nhiều quyền và khả năng hơn sẽ được mở ra trong tương lai. Có hy vọng về việc giới thiệu một cơ chế mở nhưng an toàn hơn, chẳng hạn như hệ thống kiểm tra chi phí thấp an toàn và không cần xin phép, để cho phép nhiều nhà phát triển hơn tham gia với chi phí thấp hơn. Nếu vấn đề này được giải quyết, nhu cầu có thể sẽ tăng vọt trong tương lai. Thậm chí có thể xuất hiện các vị trí nhà phát triển Snap chuyên dụng.
Tận dụng cơ sở người dùng khổng lồ của MetaMask, các nhà phát triển độc lập cũng có thể tìm thấy những cơ hội độc đáo. Chúng ta hãy chú ý theo dõi những cải tiến mang tính thay đổi trò chơi tiếp theo mà Snaps sẽ mang đến.
Cuối cùng xin cảm ơn bài viết của bạn. Tôi tin rằng nó sẽ góp phần đáng kể vào việc nâng cao nhận thức về tình trạng hiện tại của MetaMask Snaps.
Vui lòng tiếp tục theo dõi Twitterhttps://twitter.com/LXDAO_Officialcủa chúng tôi: @lxdao_official . Chúng tôi sẽ triển khai thêm nhiều nội dung liên quan đến MetaMask Snap như hội thảo, vì vậy hãy chú ý theo dõi!