> ## Documentation Index
> Fetch the complete documentation index at: https://docs.monad.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# 使用 Brale 在 Monad 上发行自定义稳定币

在 Monad 上部署受监管、足额抵押的美元稳定币,并通过法币入金、出金和托管功能将其集成到您的应用程序中。

## 概述

Monad 的高性能 EVM 具备 10,000+ tx/s 的吞吐量与亚秒级最终性,非常适合稳定币驱动的应用。Brale 让企业能够创建自己的稳定币,然后通过统一的 API 以编程方式访问它们,用于资金流转。

## 您将构建什么

在本指南结束时,您将拥有:

* 一枚在 Monad 上发行的自定义稳定币
* 用于编程控制的 API 凭据
* 用于法币入金、转账、兑换和法币出金的可用集成

## 为何选择自定义稳定币?

| 应用场景   | 优势                    |
| ------ | --------------------- |
| 品牌化体验  | 您的代币,您的身份——建立用户信任     |
| 直连法币轨道 | 通过统一编排层连接 ACH、电汇和 RTP |
| 跨链流动性  | 通过统一的转账模型在支持的链之间转移价值  |
| 内建合规   | Brale 处理受监管的发行与编排层    |

***

## 前置条件

在开始之前,请确保您已具备:

* 一个已注册的企业实体以进行 KYB 验证
* 一个 [Brale 账户](https://app.brale.xyz/)
* Monad 网络和钱包访问权限:
  * [主网网络信息](https://docs.monad.xyz/developer-essentials/network-information)
  * [测试网网络信息](https://docs.monad.xyz/developer-essentials/testnet)
  * [将 Monad 添加到您的钱包](https://docs.monad.xyz/guides/add-monad-to-wallet)

## 选择您的环境

在开发时使用 Brale 测试网,并在生产环境切换到主网。在测试网中,使用 `monad_testnet` 作为 `transfer_type`;在主网中,使用 `monad`。Brale 的测试网仅支持测试网络,且会跳过铸造和赎回流程中真实的法币环节。

***

## 第一部分:在 Brale 中发行您的稳定币

稳定币发行是一个仪表板工作流程。API 集成在您的稳定币发行之后开始。发行后,稳定币可通过 API 访问。

### 步骤 1:完成企业验证

1. 登录 Brale 仪表板
2. 完成 KYB(了解您的企业)验证:
   * 企业名称和 EIN
   * 受益所有权信息

### 步骤 2:发行您的稳定币

在 Brale 仪表板中,创建您的稳定币并配置:

* **名称:** 您的稳定币显示名称(例如,Acme Dollar)
* **符号:** 代币代码(例如,ACME)
* **链:** 选择 Monad
* **品牌:** 添加您的代币徽标

然后通过电汇、ACH 或 USDC 为其注资。

一旦您的稳定币上线,继续进行下面的 API 设置。

***

## 第二部分:与 Brale API 集成

Brale 的 API 使用 OAuth 2.0 客户端凭据、按环境划分的应用程序,以及作为转账来源/目标基础的 `address_id` 值。

### 步骤 1:创建 API 凭据

1. 登录您的 Brale 账户
2. 前往 **Settings → API**
3. 点击 **Create Application**
4. 为应用命名并选择 **Mainnet** 或 **Testnet**
5. 复制生成的 `CLIENT_ID` 和 `CLIENT_SECRET`

Brale API 应用程序按环境隔离,相同的应用凭据可用于直接的 API 访问和托管的 Brale API MCP 服务器。

### 步骤 2:身份验证

用您的凭据换取一个 bearer token:

```bash theme={null}
export CLIENT_ID="your_client_id"
export CLIENT_SECRET="your_client_secret"

CLIENT_CREDENTIALS=$(
  printf "%s:%s" "${CLIENT_ID}" "${CLIENT_SECRET}" | base64 | tr -d '\n'
)

curl --request POST \
  --url "https://auth.brale.xyz/oauth2/token" \
  --header "Authorization: Basic ${CLIENT_CREDENTIALS}" \
  --header "Content-Type: application/x-www-form-urlencoded" \
  --data grant_type=client_credentials
```

**响应**

```json theme={null}
{
  "access_token": "eyJ...",
  "token_type": "Bearer",
  "expires_in": 3600
}
```

在后续请求中使用返回的 token:

```bash theme={null}
export AUTH_TOKEN="your_access_token"
```

### 步骤 3:设置您的工作变量

```bash theme={null}
export ACCOUNT_ID="your_account_id"
export TOKEN_SYMBOL="ACME"

# 开发期间使用测试网
export MONAD_TRANSFER_TYPE="monad_testnet"

# 生产环境切换到主网
# export MONAD_TRANSFER_TYPE="monad"
```

### 步骤 4:获取您的 `account_id`

列出您的账户并确定您想要操作的账户:

```bash theme={null}
curl --request GET \
  --url "https://api.brale.xyz/accounts" \
  --header "Authorization: Bearer ${AUTH_TOKEN}"
```

### 步骤 5:获取您的内部 Monad `address_id`

Brale 会自动为已入驻的账户在支持的链上生成内部托管地址。获取您想要用于托管流程的内部 Monad 地址:

```bash theme={null}
curl --request GET \
  --url "https://api.brale.xyz/accounts/${ACCOUNT_ID}/addresses?type=internal&transfer_type=${MONAD_TRANSFER_TYPE}" \
  --header "Authorization: Bearer ${AUTH_TOKEN}"
```

保存返回的内部 Monad `address_id`:

```bash theme={null}
export MONAD_ADDRESS_ID="your_internal_monad_address_id"
```

### 步骤 6:注册外部 Monad 钱包(可选)

如果您想向自托管 Monad 钱包发送或从中接收,请先将其注册为外部地址。在 Brale 中,地址可以是 `type=internal` 或 `type=external`,两者都由用于转账的 `address_id` 值表示。

```bash theme={null}
curl --request POST \
  --url "https://api.brale.xyz/accounts/${ACCOUNT_ID}/addresses/external" \
  --header "Authorization: Bearer ${AUTH_TOKEN}" \
  --header "Content-Type: application/json" \
  --header "Idempotency-Key: $(uuidgen)" \
  --data '{
    "name": "User Monad Wallet",
    "address": "0x1234567890abcdef1234567890abcdef12345678",
    "transfer_types": ["'"${MONAD_TRANSFER_TYPE}"'"]
  }'
```

**响应**

```json theme={null}
{
  "id": "2VcUIIsgARwVbEGlIYbhg6fGG57"
}
```

保存返回的 `id` 作为该钱包的 Brale `address_id`:

```bash theme={null}
export EXTERNAL_MONAD_ADDRESS_ID="your_external_monad_address_id"
```

***

## 替代方案:Brale API MCP 服务器

Brale 提供托管的 API MCP 服务器,以便从兼容 MCP 的客户端实时访问 API。远程服务器 URL 为 `https://mcp.brale.xyz/`。

### Claude Desktop 配置

1. 打开 **Settings → Connectors**
2. 点击 **Add custom connector**
3. 输入远程 MCP 服务器 URL:`https://mcp.brale.xyz/`
4. 打开 **Advanced settings** 并输入您的 OAuth Client ID 和 Client Secret
5. 保存连接器

添加后,在聊天的 Search and Tools 菜单中启用它。

<Info>
  自定义连接器在 Pro、Max、Team 和 Enterprise 套餐中可用。
</Info>

### Cursor 配置

在 **Settings → MCP** 中添加服务器条目:

```json theme={null}
{
  "name": "Brale API MCP",
  "url": "https://mcp.brale.xyz/",
  "env": {
    "CLIENT_ID": "your_client_id",
    "CLIENT_SECRET": "your_client_secret"
  }
}
```

### Windsurf 配置

编辑 `~/.codeium/windsurf/mcp_config.json`:

```json theme={null}
{
  "mcpServers": {
    "Brale API MCP": {
      "url": "https://mcp.brale.xyz/",
      "env": {
        "CLIENT_ID": "your_client_id",
        "CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}
```

保存后重启 Windsurf。

***

## 通过转账转移价值

所有稳定币的转移都通过 Transfers API 处理。每笔转账都限定到一个 `account_id`,在适用时引用 `address_id` 值,并使用 `transfer_type` 加 `value_type` 来定义所转移的轨道/链与资产。

### 基础 URL

```
https://api.brale.xyz/accounts/${ACCOUNT_ID}/transfers
```

### 必需的请求头

```
Authorization: Bearer ${AUTH_TOKEN}
Content-Type: application/json
Idempotency-Key: $(uuidgen)
```

<Tip>
  在创建请求上始终包含新的 `Idempotency-Key`。
</Tip>

***

## 法币入金:法币兑换为稳定币

将 USD 转换为 Monad 上的稳定币。

### 选项 A:电汇入金

```bash theme={null}
curl --request POST \
  --url "https://api.brale.xyz/accounts/${ACCOUNT_ID}/transfers" \
  --header "Authorization: Bearer ${AUTH_TOKEN}" \
  --header "Content-Type: application/json" \
  --header "Idempotency-Key: $(uuidgen)" \
  --data '{
    "amount": {
      "value": "1000.00",
      "currency": "USD"
    },
    "source": {
      "value_type": "usd",
      "transfer_type": "wire"
    },
    "destination": {
      "address_id": "'"${MONAD_ADDRESS_ID}"'",
      "value_type": "'"${TOKEN_SYMBOL}"'",
      "transfer_type": "'"${MONAD_TRANSFER_TYPE}"'"
    }
  }'
```

### 选项 B:ACH 入金

如果您从已关联的银行账户注资,请使用 ACH 注资地址并铸造到您的 Monad 目标地址:

```bash theme={null}
export FUNDING_ADDRESS_ID="your_ach_funding_address_id"

curl --request POST \
  --url "https://api.brale.xyz/accounts/${ACCOUNT_ID}/transfers" \
  --header "Authorization: Bearer ${AUTH_TOKEN}" \
  --header "Content-Type: application/json" \
  --header "Idempotency-Key: $(uuidgen)" \
  --data '{
    "amount": {
      "value": "1000.00",
      "currency": "USD"
    },
    "source": {
      "address_id": "'"${FUNDING_ADDRESS_ID}"'",
      "value_type": "usd",
      "transfer_type": "ach_debit"
    },
    "destination": {
      "address_id": "'"${MONAD_ADDRESS_ID}"'",
      "value_type": "'"${TOKEN_SYMBOL}"'",
      "transfer_type": "'"${MONAD_TRANSFER_TYPE}"'"
    }
  }'
```

### 选项 C:自动化入金

对于经常性流程,创建一个 Automation,以便在 USD 到账时自动铸造稳定币:

1. 在仪表板中,前往 **Automations**
2. 创建一个监听入站 ACH 或电汇注资的自动化
3. 将目标设置为您的 Monad 地址
4. 保存该自动化

***

## 转账:转移稳定币

在 Monad 上的地址之间或跨链转移您的稳定币。

### 链上转账(Monad)

```bash theme={null}
export SOURCE_ADDRESS_ID="your_source_monad_address_id"
export DESTINATION_ADDRESS_ID="your_destination_monad_address_id"

curl --request POST \
  --url "https://api.brale.xyz/accounts/${ACCOUNT_ID}/transfers" \
  --header "Authorization: Bearer ${AUTH_TOKEN}" \
  --header "Content-Type: application/json" \
  --header "Idempotency-Key: $(uuidgen)" \
  --data '{
    "amount": {
      "value": "500.00",
      "currency": "USD"
    },
    "source": {
      "address_id": "'"${SOURCE_ADDRESS_ID}"'",
      "value_type": "'"${TOKEN_SYMBOL}"'",
      "transfer_type": "'"${MONAD_TRANSFER_TYPE}"'"
    },
    "destination": {
      "address_id": "'"${DESTINATION_ADDRESS_ID}"'",
      "value_type": "'"${TOKEN_SYMBOL}"'",
      "transfer_type": "'"${MONAD_TRANSFER_TYPE}"'"
    }
  }'
```

### 跨链转账

将您的稳定币从 Monad 转移到另一条支持的链:

```bash theme={null}
export BASE_ADDRESS_ID="your_base_address_id"

curl --request POST \
  --url "https://api.brale.xyz/accounts/${ACCOUNT_ID}/transfers" \
  --header "Authorization: Bearer ${AUTH_TOKEN}" \
  --header "Content-Type: application/json" \
  --header "Idempotency-Key: $(uuidgen)" \
  --data '{
    "amount": {
      "value": "500.00",
      "currency": "USD"
    },
    "source": {
      "address_id": "'"${MONAD_ADDRESS_ID}"'",
      "value_type": "'"${TOKEN_SYMBOL}"'",
      "transfer_type": "'"${MONAD_TRANSFER_TYPE}"'"
    },
    "destination": {
      "address_id": "'"${BASE_ADDRESS_ID}"'",
      "value_type": "'"${TOKEN_SYMBOL}"'",
      "transfer_type": "base"
    }
  }'
```

***

## 兑换:交换稳定币

以 1:1 的比例在支持的稳定币之间进行兑换,无滑点。

<Info>
  在投入生产之前,请确认您计划使用的具体 `value_type` 和 `transfer_type` 组合。
</Info>

### 示例:将您的代币兑换为 USDC

```bash theme={null}
export USDC_DESTINATION_ADDRESS_ID="your_usdc_destination_address_id"

curl --request POST \
  --url "https://api.brale.xyz/accounts/${ACCOUNT_ID}/transfers" \
  --header "Authorization: Bearer ${AUTH_TOKEN}" \
  --header "Content-Type: application/json" \
  --header "Idempotency-Key: $(uuidgen)" \
  --data '{
    "amount": {
      "value": "250.00",
      "currency": "USD"
    },
    "source": {
      "address_id": "'"${MONAD_ADDRESS_ID}"'",
      "value_type": "'"${TOKEN_SYMBOL}"'",
      "transfer_type": "'"${MONAD_TRANSFER_TYPE}"'"
    },
    "destination": {
      "address_id": "'"${USDC_DESTINATION_ADDRESS_ID}"'",
      "value_type": "USDC",
      "transfer_type": "base"
    }
  }'
```

***

## 法币出金:稳定币兑换为法币

通过电汇或 ACH 将您的稳定币转换回 USD。

### 通过电汇出金

```bash theme={null}
export USD_DESTINATION_ADDRESS_ID="your_wire_destination_address_id"

curl --request POST \
  --url "https://api.brale.xyz/accounts/${ACCOUNT_ID}/transfers" \
  --header "Authorization: Bearer ${AUTH_TOKEN}" \
  --header "Content-Type: application/json" \
  --header "Idempotency-Key: $(uuidgen)" \
  --data '{
    "amount": {
      "value": "1000.00",
      "currency": "USD"
    },
    "source": {
      "address_id": "'"${MONAD_ADDRESS_ID}"'",
      "value_type": "'"${TOKEN_SYMBOL}"'",
      "transfer_type": "'"${MONAD_TRANSFER_TYPE}"'"
    },
    "destination": {
      "address_id": "'"${USD_DESTINATION_ADDRESS_ID}"'",
      "value_type": "usd",
      "transfer_type": "wire"
    }
  }'
```

### 通过 ACH 出金

对于 ACH 付款,请在目标地址上使用 `ach_credit` 或 `same_day_ach_credit`,而不是 `wire`。

***

## 监控转账

通过查询转账 ID 检查转账状态:

```bash theme={null}
export TRANSFER_ID="your_transfer_id"

curl --request GET \
  --url "https://api.brale.xyz/accounts/${ACCOUNT_ID}/transfers/${TRANSFER_ID}" \
  --header "Authorization: Bearer ${AUTH_TOKEN}"
```

### 转账状态

| 状态           | 描述            |
| ------------ | ------------- |
| `pending`    | 转账已提交但尚未开始处理  |
| `processing` | 转账正在进行中       |
| `complete`   | 转账已完成,资金已到达目标 |
| `canceled`   | 转账已被取消        |
| `failed`     | 转账无法完成        |

***

## 最佳实践

### 安全

* 将 API 凭据存储在环境变量或密钥管理器中
* 每次新的转账请求都使用新的幂等性密钥
* 在 bearer token 过期时进行刷新

### 测试

* 在开发过程中使用测试网凭据
* 在测试时使用 `monad_testnet`,在生产中使用 `monad`
* 不要将测试网凭据/资源与主网流程混用

### 地址管理

* 对 Brale 托管的钱包使用内部地址
* 将自托管的 Monad 钱包注册为外部地址后,再在转账中使用
* 存储返回的 `address_id` 值,并在各种工作流之间复用

***

## 后续步骤

* 浏览 [Brale 文档](https://docs.brale.xyz/)
* 阅读 [Brale API MCP 指南](https://docs.brale.xyz/mcp/api)
* 在推出生产流程之前,确认[支持的 transfer types 和 value types](https://docs.brale.xyz/coverage/transfer-types)
