Rumah >hujung hadapan web >tutorial js >TMA Wallet — dompet MPC bukan jagaan untuk Apl Mini Telegram anda
JavaScript · Matawang Kripto · Kriptografi
Hello semua! Saya rasa anda sudah tahu bahawa selama kira-kira setahun kini terdapat ledakan apl mini dalam Telegram semua orang mengetuk hamster. Kebanyakan aplikasi mini ini berkaitan dengan crypto. Ramai pembangun ingin memberikan pengguna mereka dompet di dalam apl (EVM, TON, Solana, dll.)—pada asasnya akaun maya yang boleh ditambah nilai, boleh mengeluarkan dana dan yang paling penting, boleh menghubungi kontrak pintar.
Penyelesaian yang mudah tetapi tidak selamat ialah menyimpan semua kunci pada pelayan anda dan membuat transaksi bagi pihak pengguna. Jika seseorang menggodam pelayan anda, semua dana pelanggan akan hilang. Sukar untuk mendapatkan kepercayaan orang dalam senario itu.
Penyelesaian yang kompleks tetapi menyusahkan ialah dompet yang pengguna mesti catatkan pada sekeping kertas dan uruskan sendiri. Dalam kes itu, anda juga boleh menggunakan WalletConnect atau tidak membina apl mini sama sekali. Masalahnya ialah UI apl mini anda boleh menjadi menyakitkan: pengguna perlu mengesahkan setiap tindakan dalam apl luaran.
Kami mencari pilihan untuk apl mini kami yang menawarkan keselamatan dompet bukan penjagaan dengan UX/UI yang paling lancar. Dan kami menemuinya.
Dalam artikel ini, saya akan menyemak Dompet TMA (pakej npm, tapak web, GitHub)—dompet berbilang pihak sumber terbuka, bukan penjagaan, sesuai untuk sebarang rantaian, yang berfungsi menggunakan baru-baru ini memperkenalkan API Storan Awan Telegram.
Jom!
Dompet = Kunci Peribadi. Kunci persendirian ini digunakan untuk menandatangani urus niaga dan memberikan pemiliknya hak untuk mengawal dana di alamat blok tertentu.
Dompet Kustodial = Sesetengah organisasi memiliki kunci peribadi anda dan boleh bertindak bagi pihak anda. Contoh klasik ialah pertukaran kripto seperti Binance. Ia mudah tetapi memerlukan kepercayaan yang tinggi dalam organisasi.
Dompet Bukan Kustodian = Anda sahaja yang mempunyai kunci peribadi anda. Ia disimpan pada peranti anda dan semua tindakan dengan dana anda dilakukan oleh anda atau dengan pengesahan anda. Isu utama ialah ia mudah hilang. Jika anda kehilangan kunci peribadi anda, anda kehilangan dana anda.
MPC (pengiraan berbilang pihak) = Percubaan untuk menyelesaikan isu "dompet hilang": kunci dibahagikan kepada beberapa bahagian, disimpan di tempat yang berbeza dan semua bahagian diperlukan untuk membentuk tandatangan pada transaksi. Dalam senario ini, menggodam satu pihak tidak membenarkan anda mengakses dana pengguna. Sementara itu, pengguna tidak perlu menyimpan kunci sepenuhnya sendiri.
Jadi, dompet MPC bukan jagaan ialah dompet di mana kunci persendirian dibahagikan kepada bahagian yang disimpan di lokasi yang berbeza dan tidak pernah dipasang sepenuhnya oleh mana-mana pihak.
Dompet TMA ialah dompet bukan jagaan, berbilang pihak (MPC) yang menggunakan Storan Awan Telegram untuk storan kunci selamat. Semuanya dipautkan ke akaun Telegram pengguna, jadi mereka tidak perlu mengingati sebarang frasa benih atau menyediakan dompet luaran. Alirannya sangat lancar sehingga pengguna anda mungkin tidak menyedari terdapat dompet crypto di bawah hud—anda boleh membina UI yang mesra sepenuhnya dan menyembunyikan keajaiban blockchain daripada pengguna.
Berikut adalah beberapa kelebihan utama:
Integrasi Mudah: Hanya pasang pakej npm, palamkannya ke dalam kod anda, dan itu sahaja. Setiap pengguna apl mini anda kini mempunyai dompet.
Tiada Penyelesaian TON Connect atau WalletConnect: Pengguna kekal sepenuhnya dalam Telegram; semua urus niaga ditandatangani "di bawah tudung."
Teknologi MPC: Kunci peribadi tidak tersedia kepada sesiapa—bukan Telegram, bukan pelayan anda, bukan pelayan TMA Wallet. Ia hanya disatukan pada peranti pengguna selama beberapa nanosaat (semasa menandatangani transaksi) dan kemudian hilang.
Pemulihan Mudah: Kehilangan telefon anda? Tiada masalah—dapatkan yang baharu, log masuk ke Telegram dan dompet dipulihkan secara automatik.
Akses daripada Berbilang Peranti: Jika pengguna membuka apl mini daripada klien desktop dengan akaun Telegram yang sama, mereka akan mendapat akses kepada dompet yang sama seperti pada telefon mereka.
Sumber Terbuka: Semuanya ada di GitHub. Anda boleh menyemak dan mengesahkan keselamatan sendiri atau mentauliahkan audit.
Sokongan Viem/Wagmi/Ethers.js: Jika anda sedang mengusahakan mana-mana rantaian serasi EVM (Ethereum, BSC, Polygon, dll.), anda boleh menggunakan perpustakaan standard.
Menyokong Sebarang Rantaian: Rantaian EVM disokong di luar kotak, tetapi TMA Wallet pada asasnya ialah sistem untuk penyimpanan berasingan bagi sebarang rahsia. Jadi anda boleh menyimpan kunci peribadi untuk TON, Solana atau mana-mana rantai lain.
Seperti yang telah saya nyatakan, TMA Wallet adalah berdasarkan prinsip MPC, di mana kunci persendirian dikongsi secara berkesan antara berbilang pihak dan hanya dipasang semula secara ringkas pada pihak pelanggan untuk menandatangani transaksi. Berikut ialah ringkasan ringkas:
Apabila pengguna mula-mula membuka apl mini anda, peranti pengguna menjana ClientPublicKey dan ClientSecretKey. ClientSecretKey disimpan dalam Storan Awan Telegram.
ClientPublicKey dan WebApp.initData (ditandatangani oleh Telegram) dihantar ke pelayan.
Pelayan menyemak sama ada tandatangan Telegram adalah sah dan (sebagai pilihan) meminta pengguna untuk pengesahan tambahan (2FA). Ia adalah pilihan, dan anda tidak perlu melakukannya jika anda tidak mahu.
Pelayan kemudian menjana IntermediaryKey dengan menandatangani (ClientPublicKey telegramUserId) dengan ServerSecretKeynya sendiri. Kemudian ia menyulitkan IntermediaryKey ini sebelum menghantarnya kembali kepada pelanggan.
IntermediaryKey kembali kepada klien dan dinyahsulitkan di sana.
Akhir sekali, pelanggan menandatangani IntermediaryKey dengan ClientSecretKey, menghasilkan WalletPrivateKey (kunci peribadi sebenar dompet).
Kunci ini digunakan untuk menandatangani transaksi dan tidak pernah disimpan di mana-mana dalam jangka masa panjang. Untuk setiap tindakan baharu, rantaian langkah itu (kecuali langkah 1) diulang.
Akhirnya, UX apl kelihatan sempurna: log masuk adalah lancar berkat auto-auto dalam apl mini dan transaksi berjalan lancar kerana terdapat dompet dalam apl.
npm install --save @tmawallet/sdk
import { TMAWalletClient } from '@tmawallet/sdk'; import { ethers } from 'ethers'; // Don't forget to sign up at dash.tmawallet.com const myApiKey = '1234567812345678'; // Your API key const client = new TMAWalletClient(myApiKey); // Authorize the user and create/load their wallet await client.authenticate(); console.log('Your wallet address: ', client.walletAddress);
// Use TMA Wallet as the "signer" for ethers const provider = new ethers.JsonRpcProvider(); const signer = client.getEthersSigner(provider); const tx = await signer.sendTransaction({ to: '0x...', value: ethers.parseEther('1.0'), }); console.log('Transaction hash:', tx.hash);
Dan itu sahaja.
Di bawah ialah soalan (diedit sedikit) daripada README TMA Wallet, dengan jawapannya:
Adakah ini pasti selamat?
Ya, itulah idea terasnya. Terima kasih kepada protokol MPC, pelayan TMA Wallet, Telegram, mahupun anda tidak mempunyai akses penuh kepada kunci persendirian—hanya pengguna sahaja.
Adakah saya perlu memberi anda akses kepada token bot saya?
Tidak. Kami antara yang pertama menyokong skim tandatangan asimetri baharu Telegram. Kami hanya memerlukan ID bot anda, yang sudah terbuka.
Sekatan yang manakah boleh disokong?
mana-mana. Blockchain EVM (Ethereum, dll.) berfungsi di luar kotak dengan ethers.js. Untuk sesuatu tersuai, anda boleh menggunakan kaedah accessPrivateKey.
Bagaimana jika pengguna kehilangan peranti mereka?
Selagi mereka mempunyai akses ke akaun Telegram mereka, mereka hanya log masuk pada peranti baharu, dan dompet dipulihkan secara automatik. Tiada frasa benih diperlukan.
Bolehkah saya menyandarkan kunci?
Secara teknikalnya ya, tetapi anda mungkin tidak perlu melakukannya. Dompet sudah boleh dipulihkan melalui Telegram. Jika anda mahu, anda boleh membenarkan pengguna menyandarkannya, tetapi itu atas risiko anda sendiri.
Kami menggunakan Dompet TMA dalam dua apl kami sendiri. Satu sudah dalam pengeluaran (saya agak malu untuk menyiarkan pautan pada mulanya, tetapi saya rasa tidak mengapa untuk menyebut di sini dalam pengaki: Only100x).
Ini adalah pilihan yang bagus untuk sesiapa sahaja yang membina apl mini Telegram yang mahu memberikan pengguna dompet selamat tanpa merosakkan UX dengan penyambung luaran.
Jangan ragu untuk mencubanya dan terokai dokumentasi. Semua kod projek dibuka pada GitHub. Semoga berjaya!
Tag:
aplikasi mini telegram · crypto · dompet bukan jagaan · dompet tma
Atas ialah kandungan terperinci TMA Wallet — dompet MPC bukan jagaan untuk Apl Mini Telegram anda. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!