# 查询余额

## 1 查询地址余额 GetBalance

**请求报文：**

```
{
    "id":int32,
    "method":"Chain33.GetBalance",
    "params":[
        {
            "addresses":[
                "string"
            ],
            "execer":"string"
        }
    ]
}
```

**参数说明：**

| 参数         | 类型     | 是否必填 | 说明                                                         |
| :----------- | :------- | :------- | :----------------------------------------------------------- |
| addresses    | []string | 是       | 要查询的地址列表                                             |
| execer       | string   | 是       | 执行器名称，coins 查询可用的主代币 ，ticket 查询正在挖矿的主代币 |
| stateHash    | string   | 否       | 状态Hash                                                     |
| asset_exec   | string   | 是       | 资产原始合约名称，如bty 在 coins 合约中产生，各种token 在 token 合约中产生， 跨链的资产在 paracross 合约中 |
| asset_symbol | string   | 是       | 资产名称，如 bty， token的各种 symbol ， 跨链的bty 名称为 coins.bty, 跨链的token 为 token.symbol |

**请求报文格式2：**

```
{
    "id":int32,
    "method":"Chain33.GetBalance",
    "params":[
        {
            "addresses":[
                "string"
            ],
            "execer":"string",
            "asset_exec":"string",
            "asset_symbol":"string"
        }
    ]
}
```

**参数说明：**

| 参数         | 类型     | 是否必填 | 说明                                                         |
| :----------- | :------- | :------- | :----------------------------------------------------------- |
| addresses    | []string | 是       | 要查询的地址列表                                             |
| execer       | string   | 是       | 执行器名称，资产所在合约的名字                               |
| asset_exec   | string   | 是       | 资产原始合约名称，如bty 在 coins 合约中产生，各种token 在 token 合约中产生， 跨链的资产在 paracross 合约中 |
| asset_symbol | string   | 是       | 资产名称，如 bty， token的各种 symbol ， 跨链的bty 名称为 coins.bty, 跨链的token 为 token.symbol |

**响应报文：**

```
{
    "id":int32,
    "result":[
        {
            "currency":int32,
            "balance":int64,
            "frozen":int64,
            "addr":"string"
        }
    ],
    "error":null

```

**参数说明：**

| 参数     | 类型   | 说明             |
| :------- | :----- | :--------------- |
| currency | int32  | 货币类别，0为bty |
| balance  | int64  | 账户可用余额     |
| frozen   | int64  | 账户被冻结余额   |
| addr     | string | 账户地址         |

## 2 查询地址token余额 GetTokenBalance

**请求报文：**

```
{
    "id":int32,
    "method":"token.GetTokenBalance",
    "params":[
        {
            "addresses":[
                "string"
            ],
            "execer":"string",
            "tokenSymbol":"string"
        }
    ]
}
```

**参数说明：**

| 参数        | 类型     | 是否必填 | 说明                                                         |
| :---------- | :------- | :------- | :----------------------------------------------------------- |
| addresses   | []string | 是       | 要查询的地址列表                                             |
| execer      | string   | 是       | token 查询可用的余额 ，trade 查询正在交易合约里的token,如果是查询平行链上余额，则需要指定具体平行链的执行器execer,例如：user.p.xxx.token . |
| tokenSymbol | string   | 是       | token符号名称                                                |

**响应报文：**

```
{
    "id":int32,
    "result":[
        {
            "currency":int32,
            "balance":int64,
            "frozen":int64,
            "addr":"string"
        }
    ],
    "error":null
}
```

**参数说明：**

| 参数     | 类型   | 说明           |
| :------- | :----- | :------------- |
| currency | int32  | 货币类别       |
| balance  | int64  | 账户可用余额   |
| frozen   | int64  | 账户被冻结余额 |
| addr     | string | 账户地址       |

## 3 查询地址所有合约地址余额 GetAllExecBalance

**请求报文：**

```
{
    "id":int32,
    "method":"Chain33.GetAllExecBalance",
    "params":[
        {
            "addr":"string"
        }
    ]
}
```

**参数说明：**

| 参数         | 类型   | 是否必填 | 说明                                                         |
| :----------- | :----- | :------- | :----------------------------------------------------------- |
| addr         | string | 是       | 要查询的地址                                                 |
| execer       | string | 是       | 执行器名称，coins 查询可用的主代币 ，ticket 查询正在挖矿的主代币 |
| stateHash    | string | 否       | 状态Hash                                                     |
| asset_exec   | string | 是       | 资产原始合约名称，如bty 在 coins 合约中产生，各种token 在 token 合约中产生， 跨链的资产在 paracross 合约中 |
| asset_symbol | string | 是       | 资产名称，如 bty， token的各种 symbol ， 跨链的bty 名称为 coins.bty, 跨链的token 为 token.symbol |

**响应报文：**

```
{
    "id":int32,
    "result":[
        {
            "addr":"string",
            "ExecAccount":[
                {
                    "Execer":"string",
                    "Account":{
                        "currency":int32,
                        "balance":int64,
                        "frozen":int64,
                        "addr":"string"
                    }
                }
            ]
        }
    ],
    "error":null
}
```

**参数说明：**

| 参数                | 类型   | 说明         |
| :------------------ | :----- | :----------- |
| addr                | string | 账户地址     |
| ExecAccount.Execer  | string | 执行器名称   |
| ExecAccount.Account | json   | 账户余额信息 |


