Flutter Web3 Wallet 开发指南
1. 文档说明
本文档是一份全面的 Flutter Web3 Wallet 开发知识体系与资源整理指南,旨在为团队提供:基础知识体系,标准规范参考,开发资源索引,术语解释。
1.1 目标读者
- 产品经理:了解技术可行性和实现方案,发现潜在功能需求
- 技术架构:掌握技术选型和架构设计
- 开发团队:获取开发资源和实现指南
- 安全团队:了解安全标准和最佳实践
- 项目经理:评估开发周期和资源需求
- 测试团队:了解测试策略和测试工具
1.2 使用指南
- 知识储备阶段
- 学习区块链基础
- 理解钱包技术
- 掌握安全标准
- 熟悉开发工具
- 技术选型阶段
- 评估技术方案
- 选择开发框架
- 确定工具链
- 制定安全策略
- 开发准备阶段
- 搭建开发环境
- 准备测试网络
- 配置监控工具
- 建立安全机制
1.3 快速导航
2. 基础知识
2.1 区块链基础
官方文档
区块浏览
3. 标准提案规范
3.1 钱包相关
通用钱包标准
比特币钱包专有标准
以太坊钱包专有标准
- EIP-55: 校验和地址格式,用于防止用户输入错误的以太坊地址。
- EIP-137: ENS 域名服务,实现“地址即域名”转账等功能。
- EIP-155: 交易签名重放保护,为多链网络防止交易重放攻击。
- EIP-681: 以太坊 URI 支付请求标准,便于钱包扫码或链接转账请求。
- EIP-712: 结构化数据签名,钱包常用于DApp登录、合约操作等。
- EIP-1193: Provider API 标准,dApp与钱包之间通信通用接口。
- EIP-1271: 合约钱包签名验证标准,为智能合约账户带来签名验证。
- EIP-2255: 钱包权限管理,提升钱包对外接口权限的细粒度管理。
- EIP-2335: BLS12-381 Keystore,专用于以太坊 2.0(信标链)validator 的 BLS 私钥加密存储;普通 EOA 钱包使用的是 Web3 Secret Storage (业内俗称 Keystore V3)。
- EIP-2612: ERC20 代币 Permit 功能,钱包可通过授权签名直接操作approve功能,提升用户体验。
- EIP-3085: 钱包网络切换请求,便于dApp添加/切换自定义网络到钱包。
- EIP-4337: 账户抽象(Account Abstraction),智能合约钱包的关键协议。
- EIP-4361: 使用以太坊地址签名认证(Sign-In With Ethereum)。
- EIP-5805: 投票与委托标准(治理代币的链上投票/委托接口,与钱包安全无关)。
- EIP-6963: 多钱包发现和选择,提升多钱包生态用户体验。
索拉纳钱包专有标准
- Ed25519: Solana 钱包采用的公私钥加密算法
- Solana Wallet Standard: 钱包与 DApp 连接与兼容协议
- Solana Pay: 原生扫码/支付请求协议
- Solana Address/Account Model:账户结构及模型
波场钱包专有标准
- Tron Multi-signature:多签账户功能
3.2 比特币生态标准
交易与协议扩展
- BIP-2/BIP-9: BIP规范流程/软分叉激活讨论
- BIP-21: 比特币支付URI统一收款标准
- BIP-47: 支付代码(静默支付/隐私增强)
- BIP-65: OP_CHECKLOCKTIMEVERIFY时锁
- BIP-70: 支付请求协议
- BIP-174: PSBT部分签名交易格式
- BIP-340/341/342: Taproot/Schnorr签名/可扩展性升级
地址与账号模型
隐私与效率
- BIP-78: PayJoin隐私增强支付
- BIP-155: 节点通讯结构扩展
- BIP-157/158: 轻钱包同步(Neutrino)
扩展与第三方协议
- Lightning Network: 闪电网络高效链下转账
- Open Assets: 比特币链上非标准资产发行
- Colored Coins: 彩色币-layer2资产协议
3.3 以太坊生态标准
资产与合约标准
功能和扩展标准
治理与基础设施
3.4 索拉纳生态标准
代币与资产标准
- SPL Token: 基础代币标准(SPL Token Program)
- SPL Associated Token Account: 关联Token账户
- SPL Token Metadata: 元数据/NFT扩展
- SPL Token Swap: 代币兑换池
- Metaplex NFT: NFT铸造/交易标准
功能与交互标准
- SPL Name Service: 域名服务
- SPL Governance: 治理/DAO标准
- SPL Stake: 质押参与规则
- SPL Token Lending: 借贷协议标准
- SPL Memo: 转账备注消息标准
3.5 波场生态标准
资产与NFT标准
核心资源与功能
治理体系标准
3.6 安全最佳实践(跨生态)
- Ethereum Smart Contract Best Practices (ConsenSys,事实标准)
- Solana Security Best Practices
- SWC Registry:Smart Contract Weakness Classification(合约漏洞分类与缓解)
4. 竞品分析
4.1 主流钱包分析
EVM 生态
MetaMask
Trust Wallet
Rainbow
Solana 生态
TRON 生态
TronLink
TokenPocket
- 官方网站: 官方网站
- 官方文档: 官方文档
- TokenPocket-Protocol: 该协议可以用于从网页和第三方App拉起TokenPocket钱包做授权 转账等操作
Bitcoin 生态
4.2 钱包集成框架
WalletConnect
核心功能
开发工具
- Flutter SDK: Flutter 开发工具包
- 示例代码: 集成示例
- 测试工具: 测试和调试工具
- 监控服务: 监控和分析
云服务
DeepLink
5. 开发资源
5.1 Flutter 开发资源
核心框架
Flutter 框架
开发工具
- Flutter CLI: 命令行工具
- DevTools: 调试和性能分析
- VS Code 插件: VS Code 开发环境
- Android Studio 插件: Android Studio 开发环境
测试工具
5.2 开发工具与库
Flutter 核心包
状态管理
- riverpod: 现代化状态管理方案
- get_it: 依赖注入容器
- flutter_bloc: BLoC 模式实现
- mobx: 响应式状态管理
网络与存储
- dio: 强大的 HTTP 客户端
- shared_preferences: 本地数据存储
- hive: 轻量级键值数据库
- sqflite: SQLite 数据库
安全存储
- flutter_secure_storage: 安全数据存储
- flutter_secure_storage_macos: macOS 安全存储
- flutter_secure_storage_web: Web 安全存储
- flutter_keychain: 钥匙串访问
系统交互
- path_provider: 文件路径管理
- connectivity_plus: 网络连接状态
- package_info_plus: 应用包信息
- device_info_plus: 设备信息
UI 组件
基础组件
- flutter_svg: SVG 图片支持
- cached_network_image: 图片缓存
- flutter_animate: 动画效果
- lottie: Lottie 动画支持
交互组件
- mobile_scanner: 二维码扫描
- flutter_slidable: 滑动操作
- flutter_screenutil: 屏幕适配
- google_fonts: Google 字体
反馈组件
- flutter_easyloading: 加载提示
- fluttertoast: Toast 提示
- flutter_switch: 开关组件
- flutter_spinkit: 加载动画
Web3 开发包
⚠️ pub.dev 上 Web3 相关包名变化频繁——下面只列出 2025 年仍在维护、可在 pub.dev 上确实存在的包。WalletConnect v2 在 Flutter 生态实际上由 Reown(前 WalletConnect 团队)维护,是当前主流入口。
以太坊开发
- web3dart: 以太坊开发核心库(事实标准)
- wallet_core_bindings: Trust Wallet Core 绑定
WalletConnect / Reown(钱包连接)
- reown_appkit: Reown AppKit(dApp 端钱包连接 + UI)
- reown_walletkit: Reown WalletKit(钱包端集成 WalletConnect v2)
- reown_core: Reown 协议核心
- walletconnect_flutter_v2: 旧版 WalletConnect v2 包(已被 reown_* 取代,新项目用 reown)
链适配器
- solana / solana_web3: Solana 开发库
- TRON / Bitcoin 在 pub.dev 上没有事实上的主流 Dart SDK,常见做法是通过节点 RPC +
自实现签名(参考 bip32 + pointycastle
),或通过
flutter_rust_bridge/wallet_core_bindings复用 Rust/C++ 实现
安全与加密
密钥管理
- bip39: 助记词生成
- bip32: 分层确定性钱包
- ed25519_hd_key: Ed25519 密钥派生
- crypto: 加密算法
生物认证 / 安全存储
- local_auth: 生物认证(指纹 / 面容,官方包,事实标准)
- flutter_secure_storage: 平台 keychain / keystore 安全存储(钱包密钥、助记词推荐用这个)
- biometric_storage: 生物识别保护下的安全存储
测试与质量
测试框架
- flutter_test: 单元测试框架
- mockito: 模拟测试
- flutter_driver: 端到端测试
- integration_test: 集成测试
代码质量
- analyzer: Dart 静态分析(官方)
- very_good_analysis: 严格 lint 规则集
- flutter_lints: Flutter 官方推荐 lint 规则
- dart_code_metrics: 代码度量与高级 lint
- coverage: 测试覆盖率
调试与开发
开发工具
- logger: 日志记录
- flutter_logs: 日志管理
- flutter_dotenv: 环境变量
- flutter_config: 配置管理
代码生成
- build_runner: 代码生成工具
- freezed: 不可变数据类生成
- json_serializable: JSON 序列化
- json_annotation: JSON 注解
应用配置
- flutter_native_splash: 启动屏
- flutter_launcher_icons: 应用图标
- flutter_isolate: 隔离执行
- url_launcher: URL 处理
5.3 节点与 API 服务
EVM 链服务
节点服务
- Infura: 以太坊节点服务
- Alchemy: 高级 API 服务
- QuickNode: 全球节点网络
- Chainstack: 企业级节点服务
API 服务
- Etherscan API: 区块浏览器 API
- Covalent API: 多链数据 API
- The Graph: 链上数据索引
- Moralis: Web3 开发平台
Solana 服务
节点服务
- Helius: 高性能 RPC 服务
- Alchemy Solana: Solana API
- QuickNode Solana: Solana 节点
- GenesysGo: 企业级节点服务
API 服务
- Solana Explorer API: 区块浏览器 API
- Solana FM API: 高级数据 API
- DAS API: 数字资产 API
- Jupiter API: DEX 聚合器 API
其他链服务
TRON 服务
- TronGrid: TRON 节点服务
- TRON API: TRON 开发 API
- TRON Explorer API: 区块浏览器 API
- TRON Network API: 网络数据 API
Bitcoin 服务
- Mempool: 内存池服务
- BlockCypher: 比特币 API
6. 钱包工程相关术语
通用区块链概念(区块链、共识机制、智能合约、DeFi、NFT、Layer2、分片等)这里不再罗列——可以参考各家公开的术语表。本节只保留与 Flutter 钱包工程直接相关的术语,其他都假定读者已经熟悉。
6.1 钱包形态
| 名词 | 一句话解释 |
|---|---|
| 热钱包 / 冷钱包 | 是否在线持有私钥(在线 = 热,离线 = 冷) |
| 托管钱包 / 非托管钱包 | 私钥在第三方手里 vs 在用户手里 |
| HD 钱包(BIP-32) | 单一种子派生多账户、多链、多地址的钱包 |
| 多签钱包 | 需要 N 把私钥中的 M 把签名才能花费 |
| 智能合约钱包(AA) | 账户由合约控制,可自定义验签、社交恢复、付 gas 等 |
| Watch-only 钱包 | 只看余额、不签名(导入公钥/地址即可) |
6.2 密钥与派生
| 名词 | 一句话解释 |
|---|---|
| 私钥 / 公钥 | 椭圆曲线密钥对,公钥派生地址、私钥用于签名 |
| 助记词(BIP-39) | 12/24 个单词组成的可读种子,能恢复整个 HD 钱包 |
| 派生路径(BIP-44) | m/44'/60'/0'/0/0 这样的 HD 派生层级,每条链有自己 coin type |
| Keystore(V3) | Web3 Secret Storage——加密保存私钥的 JSON 文件 |
| 硬件钱包接入 | Ledger / Trezor 通过 USB / BLE 暴露签名接口,私钥永不离开设备 |
6.3 签名与连接
| 名词 | 一句话解释 |
|---|---|
| EIP-191 | 以太坊原始签名格式(personal_sign) |
| EIP-712 | 结构化数据签名,钱包能给用户展示可读的待签内容 |
| EIP-1271 | 合约钱包的签名验证标准(合约自己说"这签名我认") |
| Sign-In With Ethereum(EIP-4361) | 用钱包签名做去中心化登录 |
| WalletConnect / Reown | dApp 与钱包之间的跨设备通信协议 |
| EIP-1193 | dApp 向钱包要 provider 的统一接口 |
6.4 移动端工程关注
| 名词 | 一句话解释 |
|---|---|
| Secure Enclave / Keystore | iOS / Android 平台级安全芯片,存私钥的最佳归宿 |
| 生物识别 | 指纹 / 面容触发签名,私钥不直接暴露给应用层 |
| 深链接(Deep Link) | dApp ↔ 钱包跳转,处理"扫码 → 唤起钱包 → 签完返回"的链路 |
| Push 通知 | WalletConnect 离线时通过 Push 唤醒钱包接收新签名请求 |