搜尋
首頁web前端js教程TMA 錢包 — 適用於 Telegram Mini 應用程式的非託管 MPC 錢包

TMA Wallet — a non-custodial MPC wallet for your Telegram Mini App

JavaScript·加密貨幣·密碼學

概述

大家好!我想你已經知道,大約一年來,Telegram 中的迷你應用程式出現了熱潮每個人都點擊了倉鼠。這些迷你應用程式大多數都與加密貨幣有關。許多開發者希望在應用程式內為用戶提供一個錢包(EVM、TON、Solana 等)——基本上是一個可以充值、可以提取資金、最重要的是可以調用智慧合約的虛擬帳戶。

一個簡單但不安全的解決方案是將所有金鑰儲存在您的伺服器上並代表使用者進行交易。如果有人入侵您的伺服器,所有客戶資金都會遺失。在這種情況下很難贏得人們的信任。

一個複雜但不方便的解決方案是用戶必須將其寫在一張紙上並自行管理的錢包。在這種情況下,您可能只使用 WalletConnect 或根本不建立迷你應用程式。問題是你的迷你應用程式的 UI 可能會變得很痛苦:使用者必須確認外部應用程式中的每個操作。

我們為我們的迷你應用程式尋找一個選項,該選項可以提供非託管錢包的安全性和盡可能流暢的用戶體驗/用戶介面。我們找到了它。

在本文中,我將回顧TMA 錢包(npm 套件、網站、GitHub)——一個適用於任何鏈的開源、非託管、多方錢包,它使用最近推出了 Telegram Cloud Storage API。

我們走吧!


非常簡短的術語解釋

  • 錢包=私鑰。該私鑰用於簽署交易並授予其所有者控制特定區塊鏈地址資金的權利。

  • 託管錢包 = 某些組織擁有您的私鑰並且可以代表您行事。一個典型的例子是像幣安這樣的加密貨幣交易所。這很方便,但需要對組織有極大的信任。

  • 非主機錢包 = 您獨自擁有您的私鑰。它儲存在您的設備上,所有使用您的資金的操作均由您完成或經過您的確認。主要問題是很容易丟失。如果您丟失私鑰,您就會丟失資金。

  • MPC(多方計算) = 解決「錢包遺失」問題的嘗試:金鑰被分成幾部分,儲存在不同的地方,所有部分都需要在交易上形成簽名。在這種情況下,駭客攻擊一方不會讓您存取用戶的資金。同時,用戶不需要完全自行儲存密鑰。

因此,非託管 MPC 錢包 是一種私鑰被分成多個部分存儲在不同位置且永遠不會由任何一方完全組裝的錢包。


TMA 錢包到底是什麼?

TMA 錢包 是一種非託管多方 (MPC) 錢包,它使用 Telegram Cloud Storage 進行安全金鑰儲存。一切都連結到用戶的 Telegram 帳戶,因此他們不必記住任何助記詞或設定外部錢包。流程非常流暢,您的用戶甚至可能沒有意識到幕後有一個加密錢包 - 您可以建立一個完全友好的 UI 並向用戶隱藏區塊鏈魔力。

以下是一些主要優點:

  1. 輕鬆整合:只需安裝 npm 包,將其插入您的程式碼即可。現在,您的迷你應用程式的每個用戶都有一個錢包。

  2. 無 TON Connect 或 WalletConnect 解決方法:使用者完全留在 Telegram 中;所有交易均在「幕後」簽署。

  3. MPC 技術:任何人都無法使用私鑰 — Telegram 不行,您的伺服器不行,TMA Wallet 的伺服器不行。它僅在用戶設備上組合幾納秒(在簽署交易時),然後消失。

  4. 輕鬆恢復:遺失手機?沒問題——換一個新錢包,登入 Telegram,錢包就會自動恢復。

  5. 從多個設備訪問:如果用戶使用相同的 Telegram 帳戶從桌面客戶端打開迷你應用程序,他們將可以訪問與手機上相同的錢包。

  6. 開源:一切都在 GitHub 上。您可以自行審查和驗證安全性或委託審核。

  7. Viem/Wagmi/Ethers.js 支援:如果您正在開發任何 EVM 相容鏈(以太坊、BSC、Polygon 等),則可以使用標準函式庫。

  8. 支援任何鏈:EVM 鏈開箱即用,但 TMA 錢包基本上是一個用於單獨存儲任何秘密的系統。因此,您可以儲存 TON、Solana 或任何其他鏈的私鑰。


它是如何「在幕後」運作的?

正如我所提到的,TMA 錢包基於 MPC 原則,其中私鑰在多方之間有效共享,並且僅在客戶端短暫重組以簽署交易。這是一個簡短的摘要:

  1. 當使用者首次開啟您的小型應用程式時,使用者的裝置會產生 ClientPublicKeyClientSecretKeyClientSecretKey 儲存在 Telegram Cloud Storage 中。

  2. ClientPublicKey 和 WebApp.initData(由 Telegram 簽署)傳送到伺服器。

  3. 伺服器檢查 Telegram 的簽章是否有效,並(選用)要求使用者進行額外驗證 (2FA)。這是可選的,如果您不想,則不必這樣做。

  4. 伺服器然後透過使用自己的 ServerSecretKey 簽章(ClientPublicKey telegramUserId)來產生 IntermediaryKey。然後它會加密此 IntermediaryKey,然後再將其發送回客戶端。

  5. IntermediaryKey 返回客戶端並在那裡解密。

  6. 最後,客戶端用ClientSecretKey簽署IntermediaryKey,得到WalletPrivateKey(錢包的實際私鑰)。

此金鑰用於簽署交易,並且不會長期保存在任何地方。對於每個新操作,都會重複該步驟鏈(步驟 1 除外)。

最終,該應用程式的用戶體驗看起來很完美:由於迷你應用程式中的自動身份驗證,登入是無縫的,並且由於有應用程式內錢包,因此交易是無縫的。


如何將其添加到您的小程式中?

  1. 安裝 SDK
   npm install --save @tmawallet/sdk
  1. 初始化程式碼中的金鑰
   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);
  1. 進行交易的範例(此處使用 Ethers.js):
   // 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);

就是這樣。


常問問題

以下是 TMA 錢包自述文件中的問題(略有編輯)及其答案:

這絕對安全嗎?

是的,這就是核心思想。由於 MPC 協議,TMA 錢包的伺服器、Telegram 和您都無法完全存取私鑰,只有用戶可以。

我必須授予您存取我的機器人令牌的權限嗎?

不會。我們是最早支援 Telegram 新的非對稱簽章方案的公司之一。我們只需要您的機器人 ID,該 ID 已經公開。

可以支援哪些區塊鏈?

任何。 EVM 區塊鏈(以太坊等)可以與 ethers.js 一起開箱即用。對於自訂的內容,您可以使用 accessPrivateKey 方法。

如果使用者遺失設備怎麼辦?

只要他們能夠訪問自己的 Telegram 帳戶,他們只需在新設備上登錄,錢包就會自動恢復。不需要助記詞。

我可以備份金鑰嗎?

從技術上講是可以的,但你可能不需要。錢包已經可以透過 Telegram 恢復。如果您願意,您可以讓用戶備份,但這需要您自擔風險。


結論

我們在我們自己的兩個應用程式中使用了TMA 錢包。一個已經在製作中(我有點害羞地在開始時發布鏈接,但我認為可以在頁腳中提及:Only100x)。

對於任何建立 Telegram 迷你應用程式並希望為用戶提供安全錢包而又不會因外部連接器而擾亂用戶體驗的人來說,這是一個不錯的選擇。

請隨意嘗試並探索文件。該專案的所有程式碼均在 GitHub 上開放。祝你好運!


標籤:

telegram 迷你應用程式 · 加密貨幣 · 非主機錢包 · tma 錢包

以上是TMA 錢包 — 適用於 Telegram Mini 應用程式的非託管 MPC 錢包的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Python vs. JavaScript:開發人員的比較分析Python vs. JavaScript:開發人員的比較分析May 09, 2025 am 12:22 AM

Python和JavaScript的主要區別在於類型系統和應用場景。 1.Python使用動態類型,適合科學計算和數據分析。 2.JavaScript採用弱類型,廣泛用於前端和全棧開發。兩者在異步編程和性能優化上各有優勢,選擇時應根據項目需求決定。

Python vs. JavaScript:選擇合適的工具Python vs. JavaScript:選擇合適的工具May 08, 2025 am 12:10 AM

選擇Python還是JavaScript取決於項目類型:1)數據科學和自動化任務選擇Python;2)前端和全棧開發選擇JavaScript。 Python因其在數據處理和自動化方面的強大庫而備受青睞,而JavaScript則因其在網頁交互和全棧開發中的優勢而不可或缺。

Python和JavaScript:了解每個的優勢Python和JavaScript:了解每個的優勢May 06, 2025 am 12:15 AM

Python和JavaScript各有優勢,選擇取決於項目需求和個人偏好。 1.Python易學,語法簡潔,適用於數據科學和後端開發,但執行速度較慢。 2.JavaScript在前端開發中無處不在,異步編程能力強,Node.js使其適用於全棧開發,但語法可能複雜且易出錯。

JavaScript的核心:它是在C還是C上構建的?JavaScript的核心:它是在C還是C上構建的?May 05, 2025 am 12:07 AM

javascriptisnotbuiltoncorc; sanInterpretedlanguagethatrunsonenginesoftenwritteninc.1)JavascriptwasdesignedAsignedAsalightWeight,drackendedlanguageforwebbrowsers.2)Enginesevolvedfromsimpleterterpretpretpretpretpreterterpretpretpretpretpretpretpretpretpretcompilerers,典型地,替代品。

JavaScript應用程序:從前端到後端JavaScript應用程序:從前端到後端May 04, 2025 am 12:12 AM

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。

Python vs. JavaScript:您應該學到哪種語言?Python vs. JavaScript:您應該學到哪種語言?May 03, 2025 am 12:10 AM

選擇Python還是JavaScript應基於職業發展、學習曲線和生態系統:1)職業發展:Python適合數據科學和後端開發,JavaScript適合前端和全棧開發。 2)學習曲線:Python語法簡潔,適合初學者;JavaScript語法靈活。 3)生態系統:Python有豐富的科學計算庫,JavaScript有強大的前端框架。

JavaScript框架:為現代網絡開發提供動力JavaScript框架:為現代網絡開發提供動力May 02, 2025 am 12:04 AM

JavaScript框架的強大之處在於簡化開發、提升用戶體驗和應用性能。選擇框架時應考慮:1.項目規模和復雜度,2.團隊經驗,3.生態系統和社區支持。

JavaScript,C和瀏覽器之間的關係JavaScript,C和瀏覽器之間的關係May 01, 2025 am 12:06 AM

引言我知道你可能會覺得奇怪,JavaScript、C 和瀏覽器之間到底有什麼關係?它們之間看似毫無關聯,但實際上,它們在現代網絡開發中扮演著非常重要的角色。今天我們就來深入探討一下這三者之間的緊密聯繫。通過這篇文章,你將了解到JavaScript如何在瀏覽器中運行,C 在瀏覽器引擎中的作用,以及它們如何共同推動網頁的渲染和交互。 JavaScript與瀏覽器的關係我們都知道,JavaScript是前端開發的核心語言,它直接在瀏覽器中運行,讓網頁變得生動有趣。你是否曾經想過,為什麼JavaScr

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具