Flutter Web3 Wallet 开发指南

全面的 Flutter Web3 钱包开发知识体系与资源整理指南

Flutter Web3 Wallet 开发指南

1. 文档说明

本文档是一份全面的 Flutter Web3 Wallet 开发知识体系与资源整理指南,旨在为团队提供:基础知识体系,标准规范参考,开发资源索引,术语解释。

1.1 目标读者

  • 产品经理:了解技术可行性和实现方案,发现潜在功能需求
  • 技术架构:掌握技术选型和架构设计
  • 开发团队:获取开发资源和实现指南
  • 安全团队:了解安全标准和最佳实践
  • 项目经理:评估开发周期和资源需求
  • 测试团队:了解测试策略和测试工具

1.2 使用指南

  1. 知识储备阶段
  • 学习区块链基础
  • 理解钱包技术
  • 掌握安全标准
  • 熟悉开发工具
  1. 技术选型阶段
  • 评估技术方案
  • 选择开发框架
  • 确定工具链
  • 制定安全策略
  1. 开发准备阶段
  • 搭建开发环境
  • 准备测试网络
  • 配置监控工具
  • 建立安全机制

1.3 快速导航

2. 基础知识

2.1 区块链基础

3. 标准提案规范

3.1 钱包相关

  • 通用钱包标准

    • BIP-32:分层确定性钱包(HD Wallets)
    • BIP-39:助记词生成与恢复
    • BIP-44:多币种、多账户HD路径结构
    • SLIP-0044:币种编码
    • BIP-38:加密私钥的安全增强(可选)
  • 比特币钱包专有标准

    • BIP-49: 多网络支持
    • BIP-84: Native SegWit 地址
    • BIP-85: 确定性熵生成
    • BIP-86: Taproot 地址
    • BIP-174: PSBT,促进硬件/软件钱包多方签名协作
  • 以太坊钱包专有标准

    • 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: 多钱包发现和选择,提升多钱包生态用户体验。
  • 索拉纳钱包专有标准

  • 波场钱包专有标准

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-13: 多重签名P2SH地址
    • BIP-170: 长度检查/二维码兼容
  • 隐私与效率

  • 扩展与第三方协议

3.3 以太坊生态标准

  • 资产与合约标准

  • 功能和扩展标准

    • EIP-2612: 代币无Gas批量操作(Permit)
    • EIP-4337: 账户抽象(AA)
    • EIP-2930: 可选访问列表
    • EIP-3607: 拒绝合约代码地址签发的交易(防止账户抽象前的地址冲突安全风险)
    • EIP-2535: Diamond多合约分片架构
    • EIP-712: 结构化签名
  • 治理与基础设施

3.4 索拉纳生态标准

3.5 波场生态标准

3.6 安全最佳实践(跨生态)

4. 竞品分析

4.1 主流钱包分析

EVM 生态

Solana 生态

TRON 生态

Bitcoin 生态

4.2 钱包集成框架

WalletConnect

5. 开发资源

5.1 Flutter 开发资源

核心框架

5.2 开发工具与库

Flutter 核心包

UI 组件

Web3 开发包

⚠️ pub.dev 上 Web3 相关包名变化频繁——下面只列出 2025 年仍在维护、可在 pub.dev 上确实存在的包。WalletConnect v2 在 Flutter 生态实际上由 Reown(前 WalletConnect 团队)维护,是当前主流入口。

  • 以太坊开发

  • WalletConnect / Reown(钱包连接)

  • 链适配器

    • solana / solana_web3: Solana 开发库
    • TRON / Bitcoin 在 pub.dev 上没有事实上的主流 Dart SDK,常见做法是通过节点 RPC + 自实现签名(参考 bip32 + pointycastle ),或通过 flutter_rust_bridge / wallet_core_bindings 复用 Rust/C++ 实现

安全与加密

测试与质量

调试与开发

5.3 节点与 API 服务

EVM 链服务

Solana 服务

其他链服务

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 / ReowndApp 与钱包之间的跨设备通信协议
EIP-1193dApp 向钱包要 provider 的统一接口

6.4 移动端工程关注

名词一句话解释
Secure Enclave / KeystoreiOS / Android 平台级安全芯片,存私钥的最佳归宿
生物识别指纹 / 面容触发签名,私钥不直接暴露给应用层
深链接(Deep Link)dApp ↔ 钱包跳转,处理"扫码 → 唤起钱包 → 签完返回"的链路
Push 通知WalletConnect 离线时通过 Push 唤醒钱包接收新签名请求
使用 Hugo 构建
主题 StackJimmy 设计