# 지갑 생성/복원

:warning:지갑 생성/복원 방법은 앞의 초기화가 이미 선행되어있어야 합니다.

## 지갑생성

### 지갑 만들기

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

{% hint style="info" %}

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

```swift
let walletId: Int = try await fncyWallet.makeWallet(
walletNm: "지갑이름", 
pinNumber : "지갑비밀번호" // 정수로 이루어진 6자리 문자열 
)
```

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

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

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

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

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

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

```swift
let array: [FncyQuestion] = try await fncyWallet.getQuestionList(
pageNo: 1,
pageSize: 20
)
```

#### See Also&#x20;

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

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

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

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

```swift
let isSuccess: Bool = try await 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#func-postregisterrestorationkey)

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

## 지갑 복원

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

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

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

```swift
let result: FncyQuestion = try await fncyWallet.getResetQuestion()
```

#### See Also

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

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

### 지갑 복원 답변으로 지갑 복구하기

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

```swift
let isSuccess: Bool = try await fncyWallet.postResetQuestion(
answer: "백업용 질문 답변",
newPinNumber: "새 지갑비밀번호"
)
```

#### See Also

[postResetQuestion](https://docs.fncy.world/fncy-2.0.2-kor/for-developers/wallet/sdk/methods#func-postresetquestion)&#x20;

## 지갑 비밀번호 변경

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

### 지갑 비밀번호 변경&#x20;

```swift
let isSuccess: Bool = try await fncyWallet.resetWalletPin(
oldPinNumber: "기존 지갑 비밀번호", 
newPinNumber: "새 지갑 비밀번호"
)
```

#### See Also

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