Fuse 钱包
Fuse 钱包是一款跨平台以太坊钱包,使用 Dart 语言编写,基于 Flutter 构建。它运行在 Fuse 网络上,但可以接入任何 EVM 兼容的区块链。
架构
Fuse 钱包基于 wallet-core SDK 构建,该 SDK 提供了一套适用于 Fuse 平台及其辅助服务的 API。这些服务包括:
- Fuse 网络及其网络智能合约,通过 web3dart 包进行交互。
- 通过 graphql API(由 The Graph 的节点提供)可以方便地读取网络数据。有关 API 的更多信息,请参见 此处。
- 中继器服务,用于交易费用抽象。
- 用于业务逻辑和数据的 fuse-studio 后端 API。
- 用于状态管理的 Redux(https://pub.dev/packages/flutter_redux)。
- 用于 API 获取的 Dio(https://pub.dev/packages/dio)。
- 用于依赖注入 (DI) 的 GetIt/Injectable(https://pub.dev/packages/get_It 和 https://pub.dev/packages/injectable)。
- 用于路由的 auto_route(https://pub.dev/packages/auto_route)。
- 多语言支持 (i18n)(https://marketplace.visualstudio.com/items?itemName=localizely.flutter-intl)。
- 使用 logger 进行日志记录 (lib/utils/log)。
智能合约
我们开发并部署了一系列智能合约,钱包会与之交互。
- 为了避免自行开发最佳实践并遵循行业标准,我们使用了来自流行的 Argent 钱包 的 Argent-contracts。这些合约是钱包在网络上逻辑的核心。通过它们,我们的用户可以实现免费交易(费用抽象)、速率限制和钱包恢复。未来还将在此基础上开发更多有趣的功能。
- 符合 ERC20 标准的 代币合约。
- 用于创建用户、企业和其他实体之间紧密联系的 社区合约。
下载应用
您可以从 Google Play 或 App Store 下载我们应用的测试版。
入门
设置
设置 Flutter 环境
克隆项目
使用 git 命令克隆项目。
git clone https://github.com/fuseio/fuse-wallet.git
cd fuse-wallet
设置项目环境并运行项目
-
复制
.env_example并命名为.env—cd environment && cp .env_example .env。 -
对于 Android 开发,请在
./android/key.properties创建一个文件,如此处所述,其中包含密钥库路径和密码(如前所述)。 -
使用以下命令运行应用:
flutter run lib\main_prod.dart
配置
UI 定制
- 主题
打开 theme.dart 文件。该文件位于 lib\constants。
您可以在其中更改项目的主题(例如颜色、字体系列等)。 - 启动页
打开 splash_screen.dart 文件。该文件位于 lib\features\screens,这是应用初始屏幕。- onInit 函数会检测用户是否已登录,并将其引导至相关屏幕。
- 在启动屏幕的 build 函数中,您可以设计应用的特定 UI。
- 图标 – 我们使用 flutter_launcher_icons 包来设置应用图标。请按照指南更改启动图标。
- 用户引导页 – 在 lib\features\onboard 中可以找到用户引导功能。
钱包配置 [可选]
-
在 Fuse Studio 中创建您自己的社区。然后复制粘贴您社区的社区地址,并在
.env文件中将其替换为 DEFAULT_COMMUNITY_CONTRACT_ADDRESS。 -
注册有两种方式:使用 Firebase 注册和使用 SMS 注册。目前默认是“使用 SMS 注册”。
如果您想更改注册选项,请在 env 文件中设置您的用户引导选项。我们提供了 Firebase 或 AWS SMS 选项。如果您选择 AWS SMS 选项,请将 ON_BOARDING_STRATEGY 设置为 sms。如果您选择 Firebase 选项,请将 ON_BOARDING_STRATEGY 设置为 firebase,并完成部署到应用商店的所有步骤(说明在 README 文件的末尾)。
为了方便设置,我们强烈推荐使用 SMS 提供商(我们目前付费提供 SMS 服务)。
开发环境
[可选] 使用 Sentry 设置您的错误监控。注册一个 Sentry.io 账户,并在 http://sentry.io 获取 DSN。创建账户和 Flutter 项目后,复制粘贴 DSN 并将其替换到 .env 文件中的 SENTRY_DSN。
部署到应用商店
- 将当前包 ID (io.fuse.fusecash) 替换为您唯一的包 ID(选择您自己的名称)。在所有出现包 ID 的地方替换它,但 google_services 文件除外。
- 创建 Firebase 账户:https://firebase.google.com/。
- 创建 Firebase 移动应用(Android 和 iOS),并将 google-services 文件保存以备后用。
iOS(步骤 1-3):https://firebase.google.com/docs/ios/setup。
Android(选项 1,步骤 1-3):https://firebase.google.com/docs/android/setup。 - 向您的 Firebase 项目添加电话认证。
仅步骤 1:https://firebase.google.com/docs/auth/android/phone-auth。
步骤 5、6 与您之前完成的设置环境步骤相同。
- 创建生产签名密钥。
keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000 - 将您的密钥添加到项目。
在 Android 目录中创建一个 key.properties 文件,其中包含以下属性:
storePassword=PASSWORD
keyPassword=PASSWORD
keyAlias=alias_name
storeFile=my-release-key.keystore - 为您的 Firebase 添加调试和生产密钥 SHA1。
https://stackoverflow.com/questions/39144629/how-to-add-sha-1-to-android-application - 将您的包 ID 和管理员密钥发送给我们。
生成服务账号的私钥文件。
在 Firebase 控制台中,转到“设置”>“服务账号”。
点击“生成新私钥”,然后确认“生成密钥”。 - 将 google_services.json 文件替换为您之前保存的新 .json 文件。