# 지갑 생성/복원

## 지갑생성

### 지갑 만들기

지갑이 없는 경우 '지갑 이름'과 '지갑 비밀번호'를 매개변수로 새로운 지갑을 생성할 수 있습니다.

{% hint style="info" %}

* 지갑 비밀번호는 '정수로 이루어진 6자리 문자열'로만 가능합니다.&#x20;
* 한 명의 유저는 1개의 지갑만 생성 가능합니다.
  {% endhint %}

```kotlin
val result = fncyWallet.makeWallet(
walletName = "지갑이름",
pin = "지갑비밀번호", // 정수로 이루어진 6자리 문자열
)
```

#### See Also

[makeWallet](https://docs.fncy.world/fncy-2.0.2-kor/for-developers/wallet/sdk/methods#suspend-fun-makewallet)

## 지갑 복원 질문/답변 설정

만약, 사용자가 지갑의 비밀번호를 분실한 경우 해당 지갑의 자산은 영원히 잃어버리게 됩니다.

하지만 사용자가 **지갑 복원 질문/답변**을 등록했다면, 해당 답변을 **복구키로 사용**하여 지갑을 복구할 수 있는 기회를 제공합니다.

### 지갑 복원 질문 목록 불러오기

지갑 복원을 위한 복구키는 선택한 질문과 답변내용이 한 쌍으로 이루어집니다.&#x20;

먼저 선택할 수 있는 질문 목록을 요청하여 복원 질문을 선택합니다.

```kotlin
val result = fncyWallet.getQuestionList()
```

#### See Also

[getQuestionList](https://docs.fncy.world/fncy-2.0.2-kor/for-developers/wallet/sdk/methods#suspend-fun-getquestionlist)

[FncyQuestion](https://docs.fncy.world/fncy-2.0.2-kor/for-developers/wallet/sdk/domain#fncyquestion)

### 지갑 복원 질문/답변 등록

**질문의 번호(questionSeq)**&#xC640; **답변 내용**, **지갑의 비밀번호**를 사용하여 **지갑 복원 질문/답변**을 등록 할 수 있습니다.&#x20;

```kotlin
val result = fncyWallet.postRegisterRestorationKey(
wid = wid, //makeWallet()에 성공하면 result에 wid가 반환됨.
questionSeq = questionSeq, //getQuesetionList()에서 나온 질문 목록중 사용자가 선택한 seq
answer = "백업용 질문 답변",
pinNumber = "지갑비밀번호"
)
```

#### See Also&#x20;

[postRegisterRestorationKey](https://docs.fncy.world/fncy-2.0.2-kor/for-developers/wallet/sdk/methods#suspend-fun-postregisterrestorationkey)

[FncyQuestion](https://docs.fncy.world/fncy-2.0.2-kor/for-developers/wallet/sdk/domain#fncyquestion)

## 지갑 복원

사용자가 지갑 비밀번호를 분실 했을 경우 등록했던 **지갑 복원 질문/답변 쌍**이 있다면 지갑 비밀번호를 변경하고 지갑을 복구할 수 있습니다.

### 사용자가 입력한 지갑 질문 가져오기

**지갑 복원 질문/답변 쌍**이 등록되어 있다면 등록된 지갑 복원 질문을 요청할 수 있습니다.

```kotlin
val result = fncyWallet.getResetQuestion()
```

#### See Also

[getResetQuestion](https://docs.fncy.world/fncy-2.0.2-kor/for-developers/wallet/sdk/methods#suspend-fun-getresetquestion)

[FncyQuestion](https://docs.fncy.world/fncy-2.0.2-kor/for-developers/wallet/sdk/domain#fncyquestion)

###

### 질문의 답변과 새 비밀번호 입력

**지갑 복원 답변**과 **새 지갑 비밀번호**를 전달하여 지갑 비밀번호를 변경하고 지갑을 복구합니다.

```kotlin
val result = fncyWallet.postResetQuestion(
answer = "백업용 질문 답변",
newPinNumber = "새 지갑비밀번호"
)
```

#### See Also

[postResetQuestion](https://docs.fncy.world/fncy-2.0.2-kor/for-developers/wallet/sdk/methods#suspend-fun-postresetquestion)

## 지갑 비밀번호 변경

현재 지갑 비밀번호와 새 지갑 비밀번호를 전달하여 지갑 비밀번호를 변경할 수 있습니다.

### 지갑 비밀번호 변경

```kotlin
val result = fncyWallet.resetWalletPin(
oldPinNumber = "기존 지갑 비밀번호", 
newPinNumber = "새 지갑 비밀번호"
)
```

#### See Also

[resetWalletPin](https://docs.fncy.world/fncy-2.0.2-kor/for-developers/wallet/sdk/methods#suspend-fun-resetwalletpinnumber)
