> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.6mm.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.6mm.com/_mcp/server.

# 사용자 및 자산

이 가이드는 **Agent Java SDK `v0.3.0`**, Java 8+ 및 태그된 공개 계약을 대상으로 합니다. 예제는 `client`를 초기화한 후 파트너 백엔드에서 실행됩니다. [빠른 시작](/ko/sdk/agent-sdk/java/quick-start).

## 예시 전제조건

Java 조각은 이러한 가져오기를 공유합니다. 빠른 시작을 사용하여 `client`를 초기화하고 저장된 바인딩에서 `platformUserId`를 가져옵니다. 예시 사용자/주문 ID는 고유한 지속 값으로 대체되어야 합니다.

```java
import com.sixmm.agent.*;
import com.sixmm.agent.model.*;
import java.util.*;
```

## 사용자 ID 규칙

`platformUserId`은 6MM 외부 사용자 ID입니다. 현재는 10자리 숫자입니다.
문자열(예:

```text
1188041528
```

규칙:

* 정수가 아닌 문자열로 저장하십시오.
* 그것으로부터 의미를 생성, 해독 또는 추론하지 마십시오.
* 자신의 파트너측 사용자 ID를 `agentUserId`로 사용하세요.
* `agentUserId`, `platformUserId`, `agentOrderNo` 간의 관계를 유지합니다.

## 사용자 바인딩

바인딩은 파트너 사용자와 6MM 간의 관계를 생성하거나 가져옵니다.
플랫폼 사용자. 사용자가 처음 거래 흐름에 들어갈 때 또는 거래 흐름 전에 호출합니다.
먼저 6MM로 전송하세요.

```java
import com.sixmm.agent.model.BindRequest;
import com.sixmm.agent.model.BindResponse;

BindResponse resp = client.bind(
        BindRequest.of("agent-user-001")
                .withUsername("alice")
                .withExt("{\"source\":\"web\"}"));

System.out.println(resp.platformUserId);
System.out.println(resp.bindStatus);
System.out.println(resp.isSimulatedUser);
```

요청 필드:

| 필드            | 유형     | 필수의 | 설명                              |
| ------------- | ------ | --- | ------------------------------- |
| `agentUserId` | string | 예   | 고유한 파트너측 사용자 ID                 |
| `username`    | string | 아니요 | 플랫폼 사용자의 닉네임으로 사용되는 파트너 측 표시 이름 |
| `ext`         | string | 아니요 | 확장 필드. JSON 문자열을 권장합니다.         |

응답 필드:

| 필드                | 유형      | 설명              |
| ----------------- | ------- | --------------- |
| `platformUserId`  | string  | 6MM 외부 사용자 ID   |
| `bindStatus`      | string  | 보통 `BOUND`      |
| `isSimulatedUser` | boolean | 시뮬레이션된 사용자인지 여부 |

## 파트너 계정 조회

```java
import com.sixmm.agent.model.QueryAccountRequest;
import com.sixmm.agent.model.QueryAccountResponse;

QueryAccountResponse resp = client.queryAccount(QueryAccountRequest.of("USDT"));

System.out.println(resp.agentCode);
System.out.println(resp.agentStatus);
resp.assets.forEach(asset -> {
    System.out.println(asset.currency);
    System.out.println(asset.depositBalance);
});
```

`currency`가 없으면 SDK는 `defaultCurrency`를 사용합니다.

## 사용자 자산 쿼리

```java
import com.sixmm.agent.model.QueryUserAssetsRequest;
import com.sixmm.agent.model.QueryUserAssetsResponse;

QueryUserAssetsResponse resp = client.queryUserAssets(
        QueryUserAssetsRequest.of("1188041528"));

System.out.println(resp.walletBalance);
System.out.println(resp.availableBalance);
System.out.println(resp.version);
```

전지:

| 필드                 | 유형      | 설명              |
| ------------------ | ------- | --------------- |
| `walletBalance`    | string  | 지갑 잔액           |
| `frozenMargin`     | string  | 고정 마진           |
| `usedMargin`       | string  | 사용된 마진          |
| `availableBalance` | string  | 사용 가능한 잔액       |
| `isolatedMargin`   | string  | 격리된 마진          |
| `version`          | int64   | 자산 버전           |
| `isSimulatedUser`  | boolean | 시뮬레이션된 사용자인지 여부 |

### 세 개의 지갑을 구별하세요

| 지갑            | 잔액 소스                         | 사용                       |
| ------------- | ----------------------------- | ------------------------ |
| 가맹점 자체 사용자 지갑 | 가맹점 자체 회계 시스템                 | 사용자가 판매자 측에서 사용할 수 있는 잔액 |
| 플랫폼 펀딩        | `queryUserAssets` 중 `funding` | 초 트레이딩 자금 및 펀딩/계약 상호 이체  |
| 플랫폼 계약        | `queryUserAssets`의 계약 자산 필드   | 무기한 계약 증거금 및 양도 가능 잔액    |

`queryAccount` 판매자 사용자 지갑이 아닌 판매자 플랫폼 마진 계정을 쿼리합니다. 이 인터페이스에는 `environment` 매개변수가 없으며 시뮬레이션된 사용자 자산으로 쿼리할 수 없습니다.

시뮬레이션된 사용자의 두 플랫폼 지갑을 쿼리합니다.

```java
QueryUserAssetsResponse assets = client.queryUserAssets(
        QueryUserAssetsRequest.of(platformUserId)
                .withFunding()
                .withEnvironment(ExecutionEnvironment.SIMULATED));
```

인터페이스: `POST /v1/agent/query-user-assets`. `includeFunding=true`인 경우에만 자금이 요청됩니다. 기본적으로 원래 계약 자산 쿼리 의미 체계가 사용됩니다.

| 응답 필드                                                                               | 의미                                                           |
| ----------------------------------------------------------------------------------- | ------------------------------------------------------------ |
| `walletBalance`, `availableBalance`, `frozenMargin`, `usedMargin`, `isolatedMargin` | 계약 지갑 관련 금액                                                  |
| `funding.assetCode`                                                                 | 현재 USDT                                                      |
| `funding.availableAmount`, `heldAmount`, `totalAmount`                              | 사용 가능한 자금, 점유 및 총 금액                                         |
| `funding.materialized`                                                              | 펀딩 계좌가 구현됐나요?                                                |
| `environment`                                                                       | 이 필드는 환경이 명시적으로 전달될 때 에코됩니다. 환경을 생략한 이전 요청은 이 필드를 반환하지 않습니다. |
| `isSimulatedUser`                                                                   | 계정 분류 거래 환경 선택을 대체할 수 없습니다.                                  |

금액은 `float`/`double`가 아닌 문자열 또는 `BigDecimal`로 처리됩니다.

## 소스 및 관련 가이드

* [공식 v0.3.0 소스](https://github.com/6mm-com/agent-java-sdk/tree/54aa3c1)
* [쿼리 개요 및 페이지 매김](/ko/sdk/agent-sdk/java/perpetual-queries)
* [펀딩 지갑](/ko/sdk/agent-sdk/java/funding-wallet)
* [업그레이드 가이드](/ko/sdk/agent-sdk/java/upgrade)