Beberapa hari yang lalu, ConsenSys mengumumkan peluncuran MetaMask Snaps Open Beta ke publik. MetaMask Snaps pada dasarnya adalah plugin yang memperluas kemampuan dompet MetaMask. “Snaps” ini adalah aplikasi yang dikembangkan oleh pihak ketiga yang dapat diinstal untuk menambah fungsi baru.
Jika kita membandingkan transformasi MetaMask dengan WeChat yang dilakukan ConsenSys, maka Snap dapat dilihat sebagai Program Mini WeChat. Hasilnya, menjadi jelas bahwa MetaMask, dengan ambisinya, dikombinasikan dengan skala ConsenSys dan basis pengguna MetaMask, akan mengubah lanskap sektor dompet.
Situs web resminya telah mencantumkan 35 Snap yang tersedia dan meluncurkan Snap App Store: https://snaps.metamask.io/.
Daftar Sebagian Snap
Jadi, seperti apa MetaMask Snaps dari sudut pandang teknis? Apa kemampuan dan keterbatasan mereka? Apakah mereka aman? Seperti apa pengalaman pengembangnya? Semua faktor ini dapat menentukan potensi MetaMask Snaps di masa depan.
Mulai tahun lalu, LXDAO telah terlibat secara mendalam dalam penelitian penerapan Snaps. Beberapa anggota telah terlibat dalam pengembangan Snap dan berpartisipasi dalam hackathon terkait. Hari ini, kami akan mempelajari pertanyaan-pertanyaan ini dari sudut pandang teknis dan bahkan mengembangkan Snap untuk memberi Anda pengalaman langsung sebagai pengembang.
Biasanya Anda dapat menginstal Snaps dari pasar resmi MetaMask Snap, atau langsung dari situs web proyek. Misalnya, dengan UniPass, setelah Anda mengunjungi halaman aplikasi, akan ada tombol untuk menghubungkan MetaMask Anda.
Mengkliknya memulai instalasi Snap:
Setelah terinstal, Anda dapat mulai menggunakan produk dan fitur-fiturnya. Dalam hal ini, UniPass akan membuatkan akun kontrak pintar untuk Anda, yang dapat Anda kendalikan melalui MetaMask EOA (Akun Milik Eksternal) Anda.
Saat Anda memulai transfer, UniPass memicu pop-up Snap untuk mengonfirmasi apakah Anda ingin menjalankan operasi untuk dompet UniPass AA.
Setelah konfirmasi melalui MetaMask, Anda dapat melanjutkan transaksi. Dalam skenario ini, MetaMask memperoleh kendali atas dompet UniPass AA melalui Snap, sehingga menghilangkan kebutuhan UniPass untuk mengembangkan plugin dompetnya sendiri. Hal ini juga memungkinkan orientasi pengguna berbiaya rendah melalui MetaMask.
Wawasan Apa yang Dapat Kami Kumpulkan dari Proses Instalasi dan Penggunaan Ini?
Keamanan selalu diutamakan dalam produk dompet. Mari selidiki desain keamanan Snaps.
Snaps didasarkan pada NPM, yang menyiratkan bahwa itu adalah aplikasi web dan JavaScript. Seperti yang kita ketahui, JavaScript sangat fleksibel namun rentan terhadap serangan seperti XSS dan phishing. Jadi bagaimana MetaMask Snap mengatasi tantangan ini?
Setelah melakukan penelitian, kami menemukan bahwa MetaMask telah mendanai dan mengintegrasikan Hardened JavaScript (atau Secure EcmaScript) milik Agoric sebagai solusi sandboxing yang “tervirtualisasi sepenuhnya”. Agoric telah menyusun API pembatasan JavaScript dan mengirimkan rancangan proposal ke TC-39: Proposal TC-39.
Secara sederhana, Hardened JavaScript adalah subset JavaScript standar yang lebih aman. Dengan menyesuaikan beberapa kemampuan JavaScript dan membatasi panggilan API, hal ini mengurangi berbagai risiko. Ini menciptakan kotak pasir yang aman untuk mengeksekusi kode dan mengikuti “Prinsip Hak Istimewa Terkecil” dalam merencanakan izin kode.
Untuk spesifikasi teknis lebih rinci tentang Hardened JavaScript, silakan merujuk ke: https://tvcutsem.github.io/assets/HardenedJS_BlueLava2022.pdf.
Agoric dan MetaMask telah bersama-sama mengembangkan LavaMoat (https://github.com/LavaMoat/lavamoat) proyek untuk meningkatkan keamanan Snaps. LavaMoat terutama mengatasi risiko keamanan dari ketergantungan eksternal dalam proyek JavaScript.
Baik Agoric maupun MetaMask telah menjalani pengujian keamanan kotak hitam dan kotak putih serta telah menerbitkan laporan keamanan terperinci. (Detail lebih lanjut: https://agoric.com/blog/technology/purple-teaming-how-metamask-and-agoric-hunted-bugs-to-harden-javascript). Oleh karena itu, pada tingkat eksekusi kode, kami memiliki banyak alasan untuk meyakini bahwa Snaps aman.
Terlepas dari otorisasi pengguna yang eksplisit dan desain dengan hak paling rendah, agar dapat diakui secara resmi, Snaps harus bersumber terbuka, sehingga mengurangi kemungkinan kode berbahaya. Kami juga mengamati bahwa Snap yang terdaftar di situs web resmi telah menjalani audit keamanan pihak ketiga, sehingga semakin meningkatkan kredibilitasnya.
Saat ini, Snaps dikelola berdasarkan paket dan versi NPM. NPM adalah alat manajemen paket yang banyak digunakan untuk Pengembangan Web, memungkinkan pengembang dan tim proyek merilis paket dan kode baru secara mandiri.
MetaMask tidak memiliki kendali atas rilis versi pada platform NPM. Ada kemungkinan bahwa perubahan versi terbaru tidak bersumber terbuka atau diaudit, bukan?
Setelah klarifikasi resmi, semua perubahan pada versi paket NPM perlu ditinjau oleh tim resmi dan ditambahkan ke daftar putih sebelum dapat diinstal. Oleh karena itu, meskipun tim proyek merilis paket NPM baru, paket tersebut tidak dapat diinstal oleh pengguna hingga paket tersebut terdaftar secara resmi. Pendekatan ini tidak diragukan lagi meningkatkan biaya pembaruan versi Snap tetapi memang merupakan solusi paling aman. Ini mencerminkan filosofi desain MetaMask Snap yang memprioritaskan keamanan di atas segalanya.
MetaMask Snap baru-baru ini diumumkan secara resmi, namun sebenarnya telah dikembangkan selama lebih dari empat tahun! Konsep awal MetaMask Snap dirilis oleh Dan Finlay pada 10 Oktober 2019 di Medium. Artikel Sedang.
Menyeimbangkan keamanan, fleksibilitas, dan efisiensi merupakan tantangan yang signifikan. Jelas bahwa MetaMask telah menginvestasikan banyak sumber daya dan persiapan dalam upaya ini.
Saat ini, ada tiga API utama yang paling banyak diekspos:
Di bawah ini adalah pengenalan singkat tentang kemampuan dan efek spesifik yang dibuka oleh MetaMask Snap, untuk memberi Anda pemahaman yang lebih jelas.
Antarmuka Snap_notify dapat menampilkan notifikasi dalam MetaMask atau browser. Snaps dapat mengirim pesan langsung ke pengguna melalui antarmuka ini, seperti yang ditunjukkan pada gambar di bawah.
Saat pengguna berinteraksi dengan kontrak pintar, MetaMask memicu peristiwa onTransaction Snap. MetaMask meneruskan transaksi mentah yang tidak ditandatangani ke metode pengendali onTransaction. Snaps kemudian dapat mengembalikan antarmuka pada halaman konfirmasi sekunder transaksi, menyesuaikan konten yang ditampilkan.
Melalui kemampuan ini, fitur-fitur seperti audit informasi transaksi yang aman dan tampilan informasi yang diperluas dapat diwujudkan.
Kemampuan Dialog memungkinkan Snaps untuk memunculkan jendela terpisah secara langsung, mirip dengan kotak dialog Peringatan/Konfirmasi/Prompt tradisional. Ini masing-masing digunakan untuk pengingat, konfirmasi, dan pengiriman informasi.
Melalui Dialog, Anda akan dapat menyesuaikan antarmuka dan operasi interaktif sederhana untuk diintegrasikan dengan DApp Anda.
Karena alasan keamanan, Snap saat ini tidak mendukung kerangka kerja frontend pihak ketiga dan hanya menyediakan UIKit terbatas. Di sini, kami masih menggunakan Insight sebagai contoh, menampilkan pustaka komponen UI yang tersedia untuk pengembang.
Seperti yang ditunjukkan pada gambar, fitur saat ini mencakup Judul (teks besar), Teks (teks kecil), Panel (kartu sekali pakai), Pembagi, Dapat Disalin (klik untuk menyalin), dan subset fitur Penurunan Harga (tebal dan miring). Oleh karena itu, kemampuan interaktif tampaknya tidak dapat dicapai untuk sementara, dan HTML yang disematkan tidak dapat digunakan untuk interaksi. Namun, setelah mengajukan pertanyaan di Discord resmi, mereka menyatakan batasan ini adalah untuk alasan keamanan dan mungkin akan dilonggarkan di versi mendatang.
Selain itu, demi alasan keamanan, permintaan eksternal hanya didukung melalui metode Ambil dan tidak mendukung protokol permintaan tambahan seperti WebSocket. Karena keterbatasan keamanan, kemampuan, dan privasi, informasi klien juga tidak dapat diakses, seperti URL saat ini yang memicu Snap, sehingga menyulitkan penerapan fitur yang lebih luas.
Sebagian besar masalah ini berasal dari masalah keamanan. Kami yakin seiring dengan validasi keamanan dari waktu ke waktu, lebih banyak izin akan diberikan.
Dengan diperkenalkannya API ini, MetaMask pada dasarnya telah berevolusi menjadi produk platform terbuka. Rasanya mirip dengan saat WeChat meluncurkan Akun Resmi dan program Mininya, yang bertransformasi dari sekadar alat obrolan.
Pada tahun 2019, MetaMask telah meramalkan lanskap pasar saat ini dengan berbagai jaringan publik, pihak proyek, dan persyaratan dompet khusus. Daripada setiap proyek mengembangkan pluginnya sendiri dan pengguna harus menginstal beberapa plugin, akan lebih efisien jika mengembangkan berdasarkan MetaMask Snap. Pada Snaps gelombang pertama, kami melihat dompet dari ekosistem selain EVM, seperti Sui Wallet, Solana Wallet, dan Arweave Wallet. Mengingat basis pengguna yang ada, MetaMask Snap pasti akan memberikan dampak signifikan pada lanskap dompet.
Faktanya, potensi MetaMask Snap mungkin lebih besar dari yang kita bayangkan, lebih dari sekadar dompet. Kita juga dapat melihat upaya dari tim EthSign, yang menciptakan pengelola kata sandi universal yang disebut KeyChain berdasarkan MetaMask Snaps. Semua kata sandi browser dapat dienkripsi dan disimpan menggunakan kunci dompet. Dengan mengamankan dompet Anda, pada dasarnya Anda mengamankan semua kata sandi Anda.
Ada juga kreasi dari tim Web3MQ. Web3MQ adalah jaringan relai komunikasi terdesentralisasi berkinerja tinggi. Snap Web3MQ akan berfungsi sebagai kliennya untuk memfasilitasi interaksi pesan, pemberitahuan, peringatan, dan fungsi push. Ini akan berintegrasi dengan DApps lain yang terhubung ke Web3MQ, seperti alat obrolan atau game berbasis blockchain, dan lain-lain. Dengan bantuan Web3MQ Snap, pesan dan pembaruan akan secara otomatis dikirim ke pengguna Metamask Snap, sehingga menghilangkan kebutuhan otorisasi pengguna tambahan. Hal ini menciptakan koneksi yang tidak dapat dipercaya antara pengguna dan antara pengguna dan aplikasi.
Snaps sangat berpusat pada pengembang. Dengan API terbuka, bagaimana pengalaman pengembang? Mari selami cara membuat Snap untuk mencari tahu.
Sudah diketahui bahwa sebagian besar pengguna sering kali tidak mengetahui kontrak pintar yang mereka gunakan, termasuk masalah berikut:
Bagi pengguna rata-rata, mengharapkan mereka untuk meninjau kode soliditas kontrak sebelum setiap operasi adalah hal yang sulit. Situasi ini ideal untuk fitur Transaction Insight untuk menganalisis kontrak pintar, seperti menggunakan AI untuk audit keamanan awal, yang mungkin menyaring 80% serangan phishing dasar.
Pemasangan Dompet
Pertama, instal MetaMask Flask.
MetaMask Flask adalah versi ekstensi MetaMask yang berpusat pada pengembang, terutama digunakan untuk melihat pratinjau fitur baru dan pengembangan fungsi eksperimental. Ingat, ini untuk pengembangan, bukan untuk penggunaan sehari-hari. Jangan impor kunci pribadi Anda yang digunakan sehari-hari. Kami menggunakan Flask di sini terutama untuk melihat pratinjau Snap yang kami kembangkan secara lokal.
Disarankan untuk menonaktifkan sementara dompet MetaMask reguler Anda dan dompet browser lainnya setelah memasang atau membuat profil Chrome baru untuk menghindari konflik.
Setelah memasang dompet, buat yang baru seperti dompet MetaMask biasa. Ini adalah dompet percobaan, jadi jangan impor dompet penggunaan sehari-hari Anda.
Selanjutnya, kita perlu menyetor beberapa koin uji ke dalam dompet yang baru dibuat, yang dapat diperoleh melalui faucet. Snap yang dibahas dalam artikel ini menggunakan Goerli, jadi konten berikut akan fokus pada Goerli.
Untuk menginisialisasi Snap berdasarkan templat, ikuti dokumentasi resmi. Pertama, gunakan CLI @metamask/create-snap untuk membuat proyek Snap baru. Pada saat yang sama, kami akan melakukan inisialisasi menggunakan templat resmi:
benang buat @metamask/snap wawasan-transaksi-snap && cd wawasan-transaksi-snap
File Snap utama ada di ./packages/snap. Struktur direktorinya adalah:
File konfigurasi Snap ada di snap.mainfest.json
, dan bagian utama Snap ada di ./src/index.ts
, yang cukup ringkas.
Pertama, aktifkan izin. Tambahkan tiga baris berikut ke snap.mainfest.json
:
jsonSalin kode
“Izin awal”: {
“endowment:transaction-insight”: {}, // Wawasan transaksi
“endowment:ethereum-provider”: {}, // Akses ke RPC
“dana abadi:akses jaringan”: {} //
Dalam file manifes, Anda juga dapat memperbarui description
dan proposedName
untuk mengubah deskripsi dan nama proyek.
Untuk demo ini, yang diperlukan hanyalah memodifikasi file index.ts untuk menyelesaikan semua fungsi. Di bawah ini adalah cuplikan kode yang disederhanakan. Untuk kode lengkap yang dapat dijalankan, silakan kunjungi: https://github.com/LidamaoHub/insights.
tsxSalin kode
impor { OnTransactionHandler, OnRpcRequestHandler } dari ' @metamask/snaps-types';
impor { heading, panel, text, copyable, divider } dari ' @metamask/snaps-ui';
ekspor const onTransaction: OnTransactionHandler = async ({ transaction }) => {
// transaction
mencakup nilai seperti to
(alamat kontrak) dan data
(data interaksi)
// Contoh kode untuk mengambil informasi Audit untuk kontrak di bawah ini
const info = menunggu pengambilan(http://contract-info.audit.dev/?address=${transaction.to}
);
// Di bawah ini adalah contoh kode UI
kembali {
isi: [
teks(
`${info.riskList.length} item risiko`,
),
judul(`${info.riskList.length ? 'Risk List' : ''}`),
...info.riskList.map((item, i) => teks(`${i + 1} ${item.text}`)),
pembagi(),
teks(
`Info audit lebih lanjut dari url berikut`,
),
dapat disalin(
`https://kontrak- info.audit.dev/mm${info.token}`,
)
]
};
};
Untuk fitur yang lebih mendalam, lihat Dokumentasi Pengembang Snap MetaMask.
Setelah instalasi, setiap transaksi Anda akan menampilkan peringatan risiko serupa:
Pengalaman pengembangan dengan Snaps saat ini cukup lancar, dengan sedikit masalah. Templat resminya juga kaya dan beragam. Pengembang berpengalaman biasanya dapat memulai dan mengembangkan Snap yang mereka perlukan dalam beberapa jam. Namun, hambatan terbesar dalam rilis resmi yang ditujukan untuk khalayak umum adalah audit keamanan. Tidak semua pengembang independen atau tim kecil memiliki sumber daya untuk melakukan audit terhadap Snap mereka. Oleh karena itu, kuantitas dan keragaman Snap diperkirakan tidak akan mengalami pertumbuhan eksplosif dalam jangka waktu yang lama.
Jika Anda berhasil menjalankan contoh di atas, selamat, Anda adalah pengembang pemula Snap yang memenuhi syarat!
Tahun lalu, MetaMask secara resmi meluncurkan MetaMask Grants DAO untuk mendanai proyek bernilai tinggi dalam ekosistem MetaMask. Ini adalah inisiatif eksperimental yang digerakkan oleh karyawan, yang bertujuan untuk menawarkan hibah kepada pengembang eksternal global untuk membangun pengalaman yang berdampak dalam ekosistem MetaMask. Sebagian dari keuntungan triwulanan MetaMask disalurkan ke DAO ini, dan anggaran tahunannya saat ini mencapai $2,4 juta.
Proyek apa pun yang memperkaya ekosistem MetaMask dapat mengajukan permohonan Hibah MetaMask resmi dari MetaMask Grants DAO. Untuk informasi lebih lanjut, silakan kunjungi https://metamaskgrants.org/.
Perlu disebutkan bahwa LXDAO merasa terhormat telah mengajukan dan menerima hibah dari MetaMask tahun ini, dan telah secara aktif berpartisipasi dalam pengembangan proyek terkait, berkontribusi pada ekosistem MetaMask!
Kami telah membedah Snap dari sudut pandang teknis, pertimbangan keamanannya, batasannya, dan pengalaman pengembangnya. Kesimpulan:
Saat ini MetaMask Snap masih menjalani iterasi cepat. Diperkirakan akan ada lebih banyak izin dan kemampuan yang terbuka di masa mendatang. Ada harapan untuk diperkenalkannya mekanisme yang lebih terbuka namun aman, seperti sistem audit berbiaya rendah yang aman dan tanpa izin, sehingga memungkinkan lebih banyak pengembang untuk berpartisipasi dengan biaya lebih rendah. Jika masalah ini diatasi, diperkirakan akan terjadi lonjakan permintaan di masa depan. Bahkan mungkin akan muncul posisi khusus pengembang Snap.
Dengan memanfaatkan basis pengguna MetaMask yang sangat besar, pengembang indie juga dapat menemukan peluang unik. Mari kita nantikan inovasi terobosan berikutnya yang akan dihadirkan Snaps.
Terakhir, terima kasih atas artikel Anda. Saya yakin hal ini akan berkontribusi secara signifikan dalam meningkatkan kesadaran tentang kondisi MetaMask Snaps saat ini.
Silakan terus ikuti Twitter kami:https://twitter.com/LXDAO_Official@lxdao_official . Kami akan meluncurkan lebih banyak konten terkait MetaMask Snap seperti lokakarya, jadi pantau terus!
Beberapa hari yang lalu, ConsenSys mengumumkan peluncuran MetaMask Snaps Open Beta ke publik. MetaMask Snaps pada dasarnya adalah plugin yang memperluas kemampuan dompet MetaMask. “Snaps” ini adalah aplikasi yang dikembangkan oleh pihak ketiga yang dapat diinstal untuk menambah fungsi baru.
Jika kita membandingkan transformasi MetaMask dengan WeChat yang dilakukan ConsenSys, maka Snap dapat dilihat sebagai Program Mini WeChat. Hasilnya, menjadi jelas bahwa MetaMask, dengan ambisinya, dikombinasikan dengan skala ConsenSys dan basis pengguna MetaMask, akan mengubah lanskap sektor dompet.
Situs web resminya telah mencantumkan 35 Snap yang tersedia dan meluncurkan Snap App Store: https://snaps.metamask.io/.
Daftar Sebagian Snap
Jadi, seperti apa MetaMask Snaps dari sudut pandang teknis? Apa kemampuan dan keterbatasan mereka? Apakah mereka aman? Seperti apa pengalaman pengembangnya? Semua faktor ini dapat menentukan potensi MetaMask Snaps di masa depan.
Mulai tahun lalu, LXDAO telah terlibat secara mendalam dalam penelitian penerapan Snaps. Beberapa anggota telah terlibat dalam pengembangan Snap dan berpartisipasi dalam hackathon terkait. Hari ini, kami akan mempelajari pertanyaan-pertanyaan ini dari sudut pandang teknis dan bahkan mengembangkan Snap untuk memberi Anda pengalaman langsung sebagai pengembang.
Biasanya Anda dapat menginstal Snaps dari pasar resmi MetaMask Snap, atau langsung dari situs web proyek. Misalnya, dengan UniPass, setelah Anda mengunjungi halaman aplikasi, akan ada tombol untuk menghubungkan MetaMask Anda.
Mengkliknya memulai instalasi Snap:
Setelah terinstal, Anda dapat mulai menggunakan produk dan fitur-fiturnya. Dalam hal ini, UniPass akan membuatkan akun kontrak pintar untuk Anda, yang dapat Anda kendalikan melalui MetaMask EOA (Akun Milik Eksternal) Anda.
Saat Anda memulai transfer, UniPass memicu pop-up Snap untuk mengonfirmasi apakah Anda ingin menjalankan operasi untuk dompet UniPass AA.
Setelah konfirmasi melalui MetaMask, Anda dapat melanjutkan transaksi. Dalam skenario ini, MetaMask memperoleh kendali atas dompet UniPass AA melalui Snap, sehingga menghilangkan kebutuhan UniPass untuk mengembangkan plugin dompetnya sendiri. Hal ini juga memungkinkan orientasi pengguna berbiaya rendah melalui MetaMask.
Wawasan Apa yang Dapat Kami Kumpulkan dari Proses Instalasi dan Penggunaan Ini?
Keamanan selalu diutamakan dalam produk dompet. Mari selidiki desain keamanan Snaps.
Snaps didasarkan pada NPM, yang menyiratkan bahwa itu adalah aplikasi web dan JavaScript. Seperti yang kita ketahui, JavaScript sangat fleksibel namun rentan terhadap serangan seperti XSS dan phishing. Jadi bagaimana MetaMask Snap mengatasi tantangan ini?
Setelah melakukan penelitian, kami menemukan bahwa MetaMask telah mendanai dan mengintegrasikan Hardened JavaScript (atau Secure EcmaScript) milik Agoric sebagai solusi sandboxing yang “tervirtualisasi sepenuhnya”. Agoric telah menyusun API pembatasan JavaScript dan mengirimkan rancangan proposal ke TC-39: Proposal TC-39.
Secara sederhana, Hardened JavaScript adalah subset JavaScript standar yang lebih aman. Dengan menyesuaikan beberapa kemampuan JavaScript dan membatasi panggilan API, hal ini mengurangi berbagai risiko. Ini menciptakan kotak pasir yang aman untuk mengeksekusi kode dan mengikuti “Prinsip Hak Istimewa Terkecil” dalam merencanakan izin kode.
Untuk spesifikasi teknis lebih rinci tentang Hardened JavaScript, silakan merujuk ke: https://tvcutsem.github.io/assets/HardenedJS_BlueLava2022.pdf.
Agoric dan MetaMask telah bersama-sama mengembangkan LavaMoat (https://github.com/LavaMoat/lavamoat) proyek untuk meningkatkan keamanan Snaps. LavaMoat terutama mengatasi risiko keamanan dari ketergantungan eksternal dalam proyek JavaScript.
Baik Agoric maupun MetaMask telah menjalani pengujian keamanan kotak hitam dan kotak putih serta telah menerbitkan laporan keamanan terperinci. (Detail lebih lanjut: https://agoric.com/blog/technology/purple-teaming-how-metamask-and-agoric-hunted-bugs-to-harden-javascript). Oleh karena itu, pada tingkat eksekusi kode, kami memiliki banyak alasan untuk meyakini bahwa Snaps aman.
Terlepas dari otorisasi pengguna yang eksplisit dan desain dengan hak paling rendah, agar dapat diakui secara resmi, Snaps harus bersumber terbuka, sehingga mengurangi kemungkinan kode berbahaya. Kami juga mengamati bahwa Snap yang terdaftar di situs web resmi telah menjalani audit keamanan pihak ketiga, sehingga semakin meningkatkan kredibilitasnya.
Saat ini, Snaps dikelola berdasarkan paket dan versi NPM. NPM adalah alat manajemen paket yang banyak digunakan untuk Pengembangan Web, memungkinkan pengembang dan tim proyek merilis paket dan kode baru secara mandiri.
MetaMask tidak memiliki kendali atas rilis versi pada platform NPM. Ada kemungkinan bahwa perubahan versi terbaru tidak bersumber terbuka atau diaudit, bukan?
Setelah klarifikasi resmi, semua perubahan pada versi paket NPM perlu ditinjau oleh tim resmi dan ditambahkan ke daftar putih sebelum dapat diinstal. Oleh karena itu, meskipun tim proyek merilis paket NPM baru, paket tersebut tidak dapat diinstal oleh pengguna hingga paket tersebut terdaftar secara resmi. Pendekatan ini tidak diragukan lagi meningkatkan biaya pembaruan versi Snap tetapi memang merupakan solusi paling aman. Ini mencerminkan filosofi desain MetaMask Snap yang memprioritaskan keamanan di atas segalanya.
MetaMask Snap baru-baru ini diumumkan secara resmi, namun sebenarnya telah dikembangkan selama lebih dari empat tahun! Konsep awal MetaMask Snap dirilis oleh Dan Finlay pada 10 Oktober 2019 di Medium. Artikel Sedang.
Menyeimbangkan keamanan, fleksibilitas, dan efisiensi merupakan tantangan yang signifikan. Jelas bahwa MetaMask telah menginvestasikan banyak sumber daya dan persiapan dalam upaya ini.
Saat ini, ada tiga API utama yang paling banyak diekspos:
Di bawah ini adalah pengenalan singkat tentang kemampuan dan efek spesifik yang dibuka oleh MetaMask Snap, untuk memberi Anda pemahaman yang lebih jelas.
Antarmuka Snap_notify dapat menampilkan notifikasi dalam MetaMask atau browser. Snaps dapat mengirim pesan langsung ke pengguna melalui antarmuka ini, seperti yang ditunjukkan pada gambar di bawah.
Saat pengguna berinteraksi dengan kontrak pintar, MetaMask memicu peristiwa onTransaction Snap. MetaMask meneruskan transaksi mentah yang tidak ditandatangani ke metode pengendali onTransaction. Snaps kemudian dapat mengembalikan antarmuka pada halaman konfirmasi sekunder transaksi, menyesuaikan konten yang ditampilkan.
Melalui kemampuan ini, fitur-fitur seperti audit informasi transaksi yang aman dan tampilan informasi yang diperluas dapat diwujudkan.
Kemampuan Dialog memungkinkan Snaps untuk memunculkan jendela terpisah secara langsung, mirip dengan kotak dialog Peringatan/Konfirmasi/Prompt tradisional. Ini masing-masing digunakan untuk pengingat, konfirmasi, dan pengiriman informasi.
Melalui Dialog, Anda akan dapat menyesuaikan antarmuka dan operasi interaktif sederhana untuk diintegrasikan dengan DApp Anda.
Karena alasan keamanan, Snap saat ini tidak mendukung kerangka kerja frontend pihak ketiga dan hanya menyediakan UIKit terbatas. Di sini, kami masih menggunakan Insight sebagai contoh, menampilkan pustaka komponen UI yang tersedia untuk pengembang.
Seperti yang ditunjukkan pada gambar, fitur saat ini mencakup Judul (teks besar), Teks (teks kecil), Panel (kartu sekali pakai), Pembagi, Dapat Disalin (klik untuk menyalin), dan subset fitur Penurunan Harga (tebal dan miring). Oleh karena itu, kemampuan interaktif tampaknya tidak dapat dicapai untuk sementara, dan HTML yang disematkan tidak dapat digunakan untuk interaksi. Namun, setelah mengajukan pertanyaan di Discord resmi, mereka menyatakan batasan ini adalah untuk alasan keamanan dan mungkin akan dilonggarkan di versi mendatang.
Selain itu, demi alasan keamanan, permintaan eksternal hanya didukung melalui metode Ambil dan tidak mendukung protokol permintaan tambahan seperti WebSocket. Karena keterbatasan keamanan, kemampuan, dan privasi, informasi klien juga tidak dapat diakses, seperti URL saat ini yang memicu Snap, sehingga menyulitkan penerapan fitur yang lebih luas.
Sebagian besar masalah ini berasal dari masalah keamanan. Kami yakin seiring dengan validasi keamanan dari waktu ke waktu, lebih banyak izin akan diberikan.
Dengan diperkenalkannya API ini, MetaMask pada dasarnya telah berevolusi menjadi produk platform terbuka. Rasanya mirip dengan saat WeChat meluncurkan Akun Resmi dan program Mininya, yang bertransformasi dari sekadar alat obrolan.
Pada tahun 2019, MetaMask telah meramalkan lanskap pasar saat ini dengan berbagai jaringan publik, pihak proyek, dan persyaratan dompet khusus. Daripada setiap proyek mengembangkan pluginnya sendiri dan pengguna harus menginstal beberapa plugin, akan lebih efisien jika mengembangkan berdasarkan MetaMask Snap. Pada Snaps gelombang pertama, kami melihat dompet dari ekosistem selain EVM, seperti Sui Wallet, Solana Wallet, dan Arweave Wallet. Mengingat basis pengguna yang ada, MetaMask Snap pasti akan memberikan dampak signifikan pada lanskap dompet.
Faktanya, potensi MetaMask Snap mungkin lebih besar dari yang kita bayangkan, lebih dari sekadar dompet. Kita juga dapat melihat upaya dari tim EthSign, yang menciptakan pengelola kata sandi universal yang disebut KeyChain berdasarkan MetaMask Snaps. Semua kata sandi browser dapat dienkripsi dan disimpan menggunakan kunci dompet. Dengan mengamankan dompet Anda, pada dasarnya Anda mengamankan semua kata sandi Anda.
Ada juga kreasi dari tim Web3MQ. Web3MQ adalah jaringan relai komunikasi terdesentralisasi berkinerja tinggi. Snap Web3MQ akan berfungsi sebagai kliennya untuk memfasilitasi interaksi pesan, pemberitahuan, peringatan, dan fungsi push. Ini akan berintegrasi dengan DApps lain yang terhubung ke Web3MQ, seperti alat obrolan atau game berbasis blockchain, dan lain-lain. Dengan bantuan Web3MQ Snap, pesan dan pembaruan akan secara otomatis dikirim ke pengguna Metamask Snap, sehingga menghilangkan kebutuhan otorisasi pengguna tambahan. Hal ini menciptakan koneksi yang tidak dapat dipercaya antara pengguna dan antara pengguna dan aplikasi.
Snaps sangat berpusat pada pengembang. Dengan API terbuka, bagaimana pengalaman pengembang? Mari selami cara membuat Snap untuk mencari tahu.
Sudah diketahui bahwa sebagian besar pengguna sering kali tidak mengetahui kontrak pintar yang mereka gunakan, termasuk masalah berikut:
Bagi pengguna rata-rata, mengharapkan mereka untuk meninjau kode soliditas kontrak sebelum setiap operasi adalah hal yang sulit. Situasi ini ideal untuk fitur Transaction Insight untuk menganalisis kontrak pintar, seperti menggunakan AI untuk audit keamanan awal, yang mungkin menyaring 80% serangan phishing dasar.
Pemasangan Dompet
Pertama, instal MetaMask Flask.
MetaMask Flask adalah versi ekstensi MetaMask yang berpusat pada pengembang, terutama digunakan untuk melihat pratinjau fitur baru dan pengembangan fungsi eksperimental. Ingat, ini untuk pengembangan, bukan untuk penggunaan sehari-hari. Jangan impor kunci pribadi Anda yang digunakan sehari-hari. Kami menggunakan Flask di sini terutama untuk melihat pratinjau Snap yang kami kembangkan secara lokal.
Disarankan untuk menonaktifkan sementara dompet MetaMask reguler Anda dan dompet browser lainnya setelah memasang atau membuat profil Chrome baru untuk menghindari konflik.
Setelah memasang dompet, buat yang baru seperti dompet MetaMask biasa. Ini adalah dompet percobaan, jadi jangan impor dompet penggunaan sehari-hari Anda.
Selanjutnya, kita perlu menyetor beberapa koin uji ke dalam dompet yang baru dibuat, yang dapat diperoleh melalui faucet. Snap yang dibahas dalam artikel ini menggunakan Goerli, jadi konten berikut akan fokus pada Goerli.
Untuk menginisialisasi Snap berdasarkan templat, ikuti dokumentasi resmi. Pertama, gunakan CLI @metamask/create-snap untuk membuat proyek Snap baru. Pada saat yang sama, kami akan melakukan inisialisasi menggunakan templat resmi:
benang buat @metamask/snap wawasan-transaksi-snap && cd wawasan-transaksi-snap
File Snap utama ada di ./packages/snap. Struktur direktorinya adalah:
File konfigurasi Snap ada di snap.mainfest.json
, dan bagian utama Snap ada di ./src/index.ts
, yang cukup ringkas.
Pertama, aktifkan izin. Tambahkan tiga baris berikut ke snap.mainfest.json
:
jsonSalin kode
“Izin awal”: {
“endowment:transaction-insight”: {}, // Wawasan transaksi
“endowment:ethereum-provider”: {}, // Akses ke RPC
“dana abadi:akses jaringan”: {} //
Dalam file manifes, Anda juga dapat memperbarui description
dan proposedName
untuk mengubah deskripsi dan nama proyek.
Untuk demo ini, yang diperlukan hanyalah memodifikasi file index.ts untuk menyelesaikan semua fungsi. Di bawah ini adalah cuplikan kode yang disederhanakan. Untuk kode lengkap yang dapat dijalankan, silakan kunjungi: https://github.com/LidamaoHub/insights.
tsxSalin kode
impor { OnTransactionHandler, OnRpcRequestHandler } dari ' @metamask/snaps-types';
impor { heading, panel, text, copyable, divider } dari ' @metamask/snaps-ui';
ekspor const onTransaction: OnTransactionHandler = async ({ transaction }) => {
// transaction
mencakup nilai seperti to
(alamat kontrak) dan data
(data interaksi)
// Contoh kode untuk mengambil informasi Audit untuk kontrak di bawah ini
const info = menunggu pengambilan(http://contract-info.audit.dev/?address=${transaction.to}
);
// Di bawah ini adalah contoh kode UI
kembali {
isi: [
teks(
`${info.riskList.length} item risiko`,
),
judul(`${info.riskList.length ? 'Risk List' : ''}`),
...info.riskList.map((item, i) => teks(`${i + 1} ${item.text}`)),
pembagi(),
teks(
`Info audit lebih lanjut dari url berikut`,
),
dapat disalin(
`https://kontrak- info.audit.dev/mm${info.token}`,
)
]
};
};
Untuk fitur yang lebih mendalam, lihat Dokumentasi Pengembang Snap MetaMask.
Setelah instalasi, setiap transaksi Anda akan menampilkan peringatan risiko serupa:
Pengalaman pengembangan dengan Snaps saat ini cukup lancar, dengan sedikit masalah. Templat resminya juga kaya dan beragam. Pengembang berpengalaman biasanya dapat memulai dan mengembangkan Snap yang mereka perlukan dalam beberapa jam. Namun, hambatan terbesar dalam rilis resmi yang ditujukan untuk khalayak umum adalah audit keamanan. Tidak semua pengembang independen atau tim kecil memiliki sumber daya untuk melakukan audit terhadap Snap mereka. Oleh karena itu, kuantitas dan keragaman Snap diperkirakan tidak akan mengalami pertumbuhan eksplosif dalam jangka waktu yang lama.
Jika Anda berhasil menjalankan contoh di atas, selamat, Anda adalah pengembang pemula Snap yang memenuhi syarat!
Tahun lalu, MetaMask secara resmi meluncurkan MetaMask Grants DAO untuk mendanai proyek bernilai tinggi dalam ekosistem MetaMask. Ini adalah inisiatif eksperimental yang digerakkan oleh karyawan, yang bertujuan untuk menawarkan hibah kepada pengembang eksternal global untuk membangun pengalaman yang berdampak dalam ekosistem MetaMask. Sebagian dari keuntungan triwulanan MetaMask disalurkan ke DAO ini, dan anggaran tahunannya saat ini mencapai $2,4 juta.
Proyek apa pun yang memperkaya ekosistem MetaMask dapat mengajukan permohonan Hibah MetaMask resmi dari MetaMask Grants DAO. Untuk informasi lebih lanjut, silakan kunjungi https://metamaskgrants.org/.
Perlu disebutkan bahwa LXDAO merasa terhormat telah mengajukan dan menerima hibah dari MetaMask tahun ini, dan telah secara aktif berpartisipasi dalam pengembangan proyek terkait, berkontribusi pada ekosistem MetaMask!
Kami telah membedah Snap dari sudut pandang teknis, pertimbangan keamanannya, batasannya, dan pengalaman pengembangnya. Kesimpulan:
Saat ini MetaMask Snap masih menjalani iterasi cepat. Diperkirakan akan ada lebih banyak izin dan kemampuan yang terbuka di masa mendatang. Ada harapan untuk diperkenalkannya mekanisme yang lebih terbuka namun aman, seperti sistem audit berbiaya rendah yang aman dan tanpa izin, sehingga memungkinkan lebih banyak pengembang untuk berpartisipasi dengan biaya lebih rendah. Jika masalah ini diatasi, diperkirakan akan terjadi lonjakan permintaan di masa depan. Bahkan mungkin akan muncul posisi khusus pengembang Snap.
Dengan memanfaatkan basis pengguna MetaMask yang sangat besar, pengembang indie juga dapat menemukan peluang unik. Mari kita nantikan inovasi terobosan berikutnya yang akan dihadirkan Snaps.
Terakhir, terima kasih atas artikel Anda. Saya yakin hal ini akan berkontribusi secara signifikan dalam meningkatkan kesadaran tentang kondisi MetaMask Snaps saat ini.
Silakan terus ikuti Twitter kami:https://twitter.com/LXDAO_Official@lxdao_official . Kami akan meluncurkan lebih banyak konten terkait MetaMask Snap seperti lokakarya, jadi pantau terus!