【錢包】WEB3錢包APP框架的設計

【錢包】WEB3錢包APP框架的設計


一、前言

前段時間,自己做了一款WEB3錢包APP,從產品設計到框架搭建都是我一個人搞的,更多的參考了其他公司的錢包APP。

在此,想把自己的錢包經驗分享出來,幫助沒有做過錢包APP的同學開闊自己的思路

還有一些需要非常注意的安全方面的經驗


二、整體架構圖

整體架構圖


三、功能模塊詳解

這里我會主要講解重要模塊,一個UI和基礎配置常量等等,我都不會說了。
狀態管理和路由我是通過GetX進行處理的。

👉🏻 助記詞與錢包管理模塊 (WalletManager

  1. 創建新助記詞
  2. 導入助記詞(校驗合法性)
  3. 給每組助記詞一個唯一 ID
  4. 助記詞不明文存儲,使用 EncryptedSharedPreferences(Android)或 Keychain(iOS)
  5. 刪除錢包
  6. 修改錢包的基本信息
  7. 當前選擇的錢包
  8. 錢包列表更新管理

👉🏻 子賬號(子路徑賬戶)管理 (AccountManager

  1. 每個助記詞可以生成多個子賬號
  2. 支持標記“主賬號”、重命名、刪除
  3. 每個賬號維護其地址、公鑰、余額等數據
  4. 刪除賬號
  5. 修改賬號的基本信息
  6. 當前選擇的賬號
  7. 賬號列表更新管理
  8. 添加一個或者多個賬號

👉🏻 存儲模塊(本地)

  1. 數據庫加密存儲封裝(DBManager
  2. 關鍵KEY和秘鑰的存儲(LocalDataStore
  3. 加密KEY管理(SecureStorage
    • 單個設備生成不同的KEY
    • 使用EncryptedSharedPreferences(Android)或 Keychain(iOS)

特別說明:
這里需要存儲的是KEY,最好不同的手機生成不同的KEY,然后使用EncryptedSharedPreferences(Android)或
Keychain(iOS)存儲,相關的邏輯可以看《【WEB3】錢包助記詞在APP中的加密存儲》。


至于數據庫表,會有wallets錢包表、accounts 表(每個錢包多個賬戶)、transactions
表(每個賬號多條交易記錄)、賬戶余額表、幣種列表、匯率表等等。

👉🏻 網絡模塊(鏈上與服務器)

  1. 區塊鏈網絡模塊(BlockchainProvider
    • ETH: web3dart
    • TRON: grpc/http
    • BTC: json-rpc
    • 方便后續支持更多鏈
  2. 業務網絡框架API的封裝(WalletApi
    • 常用請求方式的封裝(POST、GET等等)
    • 統一錯誤信息
    • 請求加密解密邏輯
  3. 請求加密解密邏輯

👉🏻 轉賬與交易模塊(TransactionManager

  1. 構造交易
  2. 簽名交易(使用私鑰)
  3. 廣播交易
  4. 查詢交易歷史(接口聚合服務可選)

特別說明: 這里查詢查詢交易歷史,我采用的是服務端的聚合接口,這樣方便管理。

👉🏻 鏈路工具(BlockChainUtils

  1. 生成支持的網絡模型(ethereumbinanceSmartChaintron等等)
  2. 生成助記詞
  3. 通過助記詞獲取種子seed

特別說明: APP支持哪些鏈路是開發的時候就訂好了,這里面要考慮好后續的擴展,比如新增其他的網絡了。

👉🏻 APP信息管理(WalletAppInfo

  1. APP的主題模式(night/light)
  2. 選擇的語言lang
  3. APP的千分位和小數點分隔符
  4. 計價信息
  5. 設備信息
  6. 等等…

👉🏻 UI 層模塊

  1. 創建、導入(分步流程)
  2. 多錢包管理(創建、添加、刪除…)
  3. 多賬號管理(創建、添加、刪除…)
  4. 生物安全
  5. 其他功能界面
  6. 等等…

👉🏻 UI組件輪子

  1. 通用按鈕、復選框、開關
  2. 通用輸入框
  3. 通用彈窗
  4. 通用toast
  5. 等等…

👉🏻 常量(Common

  1. 通用枚舉類型
  2. 通用模型
  3. 通用配置
  4. 等等…

👉🏻 擴展(Extension

  1. 其他錢包的二維碼字符串轉換
  2. 顏色擴展
  3. BuildContext擴展
  4. Decimal擴展
  5. String擴展
  6. 等等…

👉🏻 路由管理(Routers

  1. 路由注入
  2. 路由管理
  3. 特殊頁面處理

四、安全策略總結

👉🏻 應用啟動鎖(App Lock)

  • 啟動時強制驗證 PIN 或生物識別(Touch ID / Face ID)
  • 每次進入前臺(AppLifecycleState.resumed)也強制驗證
  • 設置自動鎖屏時間(如:1分鐘、5分鐘后未操作自動上鎖)

👉🏻 密碼派生加密密鑰

  • 使用 PBKDF2 + 鹽值(salt)從用戶 PIN 派生 AES 加密密鑰
  • 不直接使用密碼作為加密 key
  • 每臺設備用獨立 salt 存儲,提升抗暴力破解能力

👉🏻 防截圖、防錄屏

  • 防止敏感數據被截取

👉🏻 助記詞/私鑰防泄漏機制

  • 永不在內存中長期保存助記詞或私鑰
  • 使用完立即清除(可以重寫 Dart 對象、加上 final + secure wipe)
  • 不寫入日志,不輸出到 UI 除非顯式“顯示助記詞”

👉🏻 Clipboard 助記詞攔截與清除:

  • 如果用戶復制助記詞或私鑰, 可以顯示安全提示:“30秒后將自動清除剪貼板”和自動定時清除內容
  • 檢測剪貼板是否正在暴露敏感數據

👉🏻 交易二次確認與簽名驗證

  • 所有交易必須通過 PIN 或生物認證后才可簽名
  • 簽名前展示交易摘要(to、amount、gas等)并要求用戶確認

👉🏻 安全存儲機制

類型建議存儲方式
助記詞flutter_secure_storage + AES 二次加密
私鑰AES 加密 + sqlite_sqlcipher
PIN僅存儲 PBKDF2 哈希,不存明文
Biometric不存用戶指紋,僅用于驗證通過與否

👉🏻 用戶操作日志審計(本地):

  • 不可篡改地記錄關鍵操作(如創建錢包、導出助記詞、發送交易)
  • 可用于后續“錢包安全中心”功能,提醒異常行為

五、后續拓展

  1. 支持硬件錢包(Ledger/Trezor)
  2. 支持 dApp 瀏覽器與 WalletConnect
  3. 資產價格聚合與行情圖
  4. NFT 展示
  5. Uniswap

六、關于作者(ZFJ_張福杰)

  • 官網:https://zfjsafe.com
  • 博客:https://zfj1128.blog.csdn.net
  • Github:https://github.com/zfjsyqk
  • Gitee:https://gitee.com/zfj1128
  • 打賞:https://zfjsafe.com/paycode

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/88823.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/88823.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/88823.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

openGL學習(基本窗口)

學習路線 學習 OpenGL 需要掌握一系列基礎知識和技能,這些內容涵蓋了計算機圖形學的基本概念、編程語言、數學知識以及 OpenGL 的具體 API 使用。以下是學習 OpenGL 所需的主要知識點: 1. 計算機圖形學基礎 圖形學概念:了解圖形學的基本概…

無人機防護裝置技術解析

一、技術要點 1. 偵測防御系統 多頻譜復合探測 整合無線電偵測(20MHz–6GHz頻段掃描)、雷達探測、光電跟蹤(可見光/紅外/激光)技術,實現360無死角監測。例如神州明達系統可5公里內識別無人機信號,并同步…

2.2.2、CAN總線-測試模式、工作模式

目錄 1、測試模式 2、工作模式 (1) (2)SLEEP位: (3)INRQ位:(Init Request) (4)ACK:應答 (5)…

區塊鏈大講堂 | 分布式隱私計算友好的零知識證明協議

區塊鏈大講堂 主講人:上海交通大學計算機學院助理教授胡云聰 報告題目:分布式隱私計算友好的零知識證明協議 參與方式:掃描海報二維碼報名參與活動

MyBatis映射文件(XML)中參數傳遞和SQL特殊字符處理

1. 參數占位符 1.1 #{} 和 ${} 的區別 #{} 占位符 作用:安全傳參。MyBatis在執行SQL時,會把#{}替換成?,然后用參數值自動填充。 優點:可以防止SQL注入,推薦使用。 例子: select * from user wher…

C語言 數據結構 --排序 (直接插入排序,選擇排序,交換排序......)

引言:本章簡潔的講解一下數據結構中的幾個常見的排序 ,作復習之用,后面可能會補一些其他的排序 。并給出一些小編學習中遇到的坑,作借鑒。 1.直接插入排序 直接插入排序是一種簡單直觀的排序算法,其基本思想是將一個數…

華為云發布盤古大模型 5.5 新一代昇騰 AI 云服務上線

2025 年 6 月 20 日,華為開發者大會 2025(HDC 2025)在東莞召開。華為常務董事、云計算 CEO 張平安宣布基于 CloudMatrix 384 超節點的新一代昇騰 AI 云服務全面上線,并發布盤古大模型 5.5,五大基礎模型實現技術突破&am…

Reactor Handle

handle 是 Reactor 中一個非常靈活的操作符,它允許你對每個源元素進行處理,并可以選擇性地發出零個或多個元素。它既可以用于映射(map)也可以用于過濾(filter),因此可以看作是 map 和 filter 的…

C#哈希加密:原理、實現與應用

C#哈希加密:原理、實現與應用 在當今數字化時代,數據安全是每個應用程序都必須重視的問題。哈希加密作為一種重要的加密技術,在密碼存儲、數據完整性驗證、數字簽名等領域發揮著關鍵作用。本文將深入探討C#中哈希加密的原理、常用算法以及實…

httpbin.org是什么,有什么作用

httpbin.org 是一個開源的 HTTP 請求與響應測試服務,基于 Python 的 Flask 框架開發 它允許開發者發送各種 HTTP 請求,并返回請求的詳細信息,便于調試和驗證 HTTP 客戶端的行為。以下是其核心功能和作用詳解: 一、核心功能與作用…

mongodb生產備份工具PBM

如果你的 MongoDB 數據量特別大(例如幾十 GB、TB 級別),普通的 mongodump/mongorestore 會顯得緩慢且資源消耗大,不適合生產級別大數據集。下面是當前 MongoDB 社區和企業廣泛使用的幾種備份方案對比和推薦: 工具是否…

【LeetCode#第167題】兩數之和Ⅱ

給你一個下標從 1 開始的整數數組 numbers &#xff0c;該數組已按 非遞減順序排列 &#xff0c;請你從數組中找出滿足相加之和等于目標數 target 的兩個數。如果設這兩個數分別是 numbers[index1] 和 numbers[index2] &#xff0c;則 1 < index1 < index2 < numbers…

Python(一)實現一個爬取微信小程序數據的爬蟲+工程化初步實踐

文章目錄 前言用Charles 抓包 iOS 微信小程序在Mac端和iOS端安裝Charles 自簽名證書Mac端iOS端 能抓到Safari瀏覽器的包但是抓不到微信小程序的包直接在iOS 上抓包的App如何抓取Android 7.0 以上/Harmony OS微信小程序包 Python 項目工程化pip 切換為國內鏡像源工程化參考腳手架…

uview ui request get / post 傳參含params和json數據的分析和使用

背景。單獨寫了controller方法去配合移動端的接口調用。但有的接口與pc端類似。于是進行了復用。但接口得復制不是。 uview js request 文檔 注意迪三個參數是header 后端接口GET方法 調用代碼截圖 瀏覽器調試 總結。 復制之前的api接口。為了方便復用底層實現。接口類型…

用 pnpm + TurboRepo,構建多項目高效開發體系

在現代前端項目日益復雜的今天&#xff0c;我們越來越多地面對一個場景&#xff1a;多個項目共享邏輯、組件和依賴&#xff0c;而維護和構建效率卻在不斷拉垮。這種情況下&#xff0c;傳統項目結構的痛點就顯現無遺。 從我親身實踐來看&#xff0c;選擇 pnpm TurboRepo 構建 …

Pytest 使用命令行參數執行指定環境的腳本—— Python 實踐

&#x1f9fe; 一、項目背景 在自動化測試中&#xff0c;我們經常需要根據不同的運行環境&#xff08;如測試環境和生產環境&#xff09;來執行測試腳本。本文將詳細介紹如何通過命令行參數來指定運行環境&#xff0c;并使用 Python 和 pytest 框架實現這一功能。 &#x1f6e…

利用可控驗證碼位數實現拒絕服務攻擊(DoS)風險與線程模型分析

一、背景介紹&#xff1a;驗證碼接口中的潛在 DoS 漏洞 在滲透測試過程中&#xff0c;常見驗證碼接口支持傳入“驗證碼位數”參數&#xff0c;表面看是業務可配置&#xff0c;實則若未做上限控制&#xff0c;極易成為資源消耗型 DoS 攻擊入口。 &#x1f9ea; 測試場景&#…

Spring Cloud Feign 整合 Sentinel 實現服務降級與熔斷保護

Spring Cloud Feign 整合 Sentinel 實現服務降級與熔斷保護 在微服務架構中&#xff0c;服務之間的調用往往依賴 Feign&#xff0c;而服務調用的穩定性又至關重要。本文將介紹如何將 Feign 與 Sentinel 結合使用&#xff0c;實現服務的容錯保護&#xff08;如降級與熔斷&#…

寵物醫院系統的設計與實現(springBoot版)

一、開題報告 一、本選題研究的意義和背景&#xff08;理論與現實意義&#xff09;&#xff1a; 背景&#xff1a;隨著人們生活水平的提高&#xff0c;寵物飼養愈發普遍&#xff0c;寵物醫院的需求也日益增長。掛號方式主要依賴現場掛號&#xff0c;導致寵物主人需要長時間排隊…

SOCKSv5 協議通信的完整階段與報文格式詳解

SOCKSv5 協議的通信通常分為以下幾個主要階段&#xff1a; 方法協商階段 (Method Negotiation)方法依賴的子協商階段 (Method-Dependent Sub-negotiation) - 本例為用戶名/密碼認證請求發送階段 (Request Sending)請求回復階段 (Request Reply)數據傳輸階段 (Data Transfer) …