# Account Solutions

NFTRainbow 的核心能力是 NFT 的创建和发行。目前并不提供区块链账户创建，托管等服务，主要是考虑到用户对区块链账户安全性的高要求，以及终端用户对钱包选择的多样性需求。 NFTRainbow 在服务设计时就考虑到了一点，并将服务设计的足够灵活和通用。项目方可以根据自身需求选择合适的账户解决方案。

根据账户私钥的存储方式不同，目前主要有两大类解决方案：

* 中心化账户托管
* 集成现有主流钱包

## 中心化托管

所谓中心化托管是指账户的创建，保存，使用均由项目方的中心化服务来负责实现。NFT 用户无需了解复杂的区块链新概念（私钥，助记词），直接使用手机号，邮箱等传统方式注册账户。项目方需要在用户注册账户时，帮用户同时创建区块链账户，并将两者关联起来。

此种方式的优点是用户使用简单，门槛低，体验好。缺点是项目方需要承担私钥的安全，且用户并不实际掌控资产的所有权，不够去中心化。

### 自行创建并托管

项目方可以自行创建账户，并将账户私钥保存在自己的数据库中。后续需要进行区块链交互时，只需获取账户私钥进行相应操作即可。

#### Conflux 账户创建示例

为方便项目快速集成，我们提供了主流开发语言的[账户创建示例代码](https://github.com/nft-rainbow/conflux-account-generate-example)，供项目方参考。包括：

* JavaScript
* Golang
* Java
* Python

项目方创建账户后，只需要将账户私钥，地址妥善保管起来，并同项目自身用户账户关联起来。后续需要进行区块链交互时，只需获取账户私钥进行相应操作即可。

### Rainbow 账户托管解决方案

Rainbow 也开发了账户托管解决方案，基于业界主流 TSS和 MPC 等技术保障私钥的安全。项目方可以直接使用 Rainbow 提供的账户接口创建或获取账户，无需关心私钥的安全问题。

目前支持通过手机号创建或获取账户，符合国内用户习惯，后续会支持邮箱等方式。

```shell
# 创建账户
curl --location 'https://api.nftrainbow.cn/v1/accounts' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR-JWT-KEY' \
--data '{
    "phone": "13011221111"
}'
```

关于接口调用详细文档，参看 [API 文档](https://docs.nftrainbow.xyz/api-reference/open-api)

## 集成主流钱包

另外一种方式是在 NFT 项目中集成现有主流钱包。用户在同项目交互时/前，需要先自行安装钱包并创建账户。然后再使用钱包账户同 NFT 应用交互（领取或转移NFT）。

此种方式的优缺点正好同托管方案相反。优点是用户实际掌控资产的所有权，去中心化。缺点是用户需要了解区块链新概念（私钥，助记词），使用门槛高，体验不好。

### Conflux

目前 Conflux 主流钱包有：

* [晒啦钱包(Cellar)](https://www.cellar.pub/)
* [AnyWeb](https://anyweb.cc/)
* [Fluent](https://fluentwallet.com/)

#### AnyWeb

AnyWeb 是一款强合规区块链资产钱包，统一认证及支付解决方案。它是一款 web2.5 钱包，由 AnyWeb 官方帮助用户创建账户，并使用TSS，MPC等技术保证用户私钥的安全。同时提供多种客户端包括微信小程序，H5，iOS，Android等。用户使用手机号即可注册，使用简单方便。

具体接入流程可[参考 AnyWeb 官方文档](https://wiki.anyweb.cc/)

#### Cellar

晒啦数字藏品管家, 基于主流区块公链藏品应用，聚合、收藏、展览等主流功能, 更好的管理自己的藏品和资源，安全、可靠、易用

#### Fluent

Fluent 是一款完全去中心化，浏览器插件钱包。用户通过 Fluent 创建的账户私钥，保存在用户本地，不会上传到任何服务器。同时支持 Chrome，Firefox，Edge等浏览器。用户需要通过助记词，私钥，Keystore等方式备份账户，并自行保证账户的安全。通过 Fluent 钱包创建的账户完全由用户自己掌控。

具体接入流程可[参考 Fluent 官方文档](https://docs.fluentwallet.com/)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.nftrainbow.xyz/tutorials/account-solution.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
