# 钱包找回合约

## 1 生成交易(未签名)

### 1.1 备份主地址 CreateRawRetrieveBackupTx

**请求报文：**

```
{
    "jsonrpc":"2.0",
    "id":int32,
    "method":"retrieve.CreateRawRetrieveBackupTx",
    "params":[
        {
            "backupAddr":"1E5saiXVb9mW8wcWUUZjsHJPZs5GmdzuSY",
            "defaultAddr":"14KEKbYtKKQm4wMthSK9J4La4nAiidGozt",
            "delayPeriod": 61,
            "fee":int64
        }
    ]
}
```

**参数说明：**

| 参数        | 类型   | 说明         |
| :---------- | :----- | :----------- |
| backupAddr  | string | 备份地址     |
| defaultAddr | string | 主账户地址   |
| delayPeriod | int64  | 生效延时时间 |
| fee         | int64  | 费用         |

**响应报文：**

```
{
    "id":int32,
    "result":"string",
    "error":null
}
```

**参数说明：**

| 参数   | 类型   | 说明                       |
| :----- | :----- | :------------------------- |
| result | string | 交易十六进制编码后的字符串 |

### 1.2 备份地址准备 CreateRawRetrievePrepareTx

**请求报文：**

```
{
    "jsonrpc":"2.0",
    "id":int32,
    "method":"retrieve.CreateRawRetrievePrepareTx",
    "params":[
        {
            "backupAddr":"1E5saiXVb9mW8wcWUUZjsHJPZs5GmdzuSY",
            "defaultAddr":"14KEKbYtKKQm4wMthSK9J4La4nAiidGozt"
        }
    ]
}
```

**参数说明：**

| 参数        | 类型   | 说明             |
| :---------- | :----- | :--------------- |
| backupAddr  | string | 备份地址         |
| defaultAddr | string | 主账户地址       |
| fee         | int64  | 交易费用，非必选 |

**响应报文：**

```
{
    "id":int32,
    "result":"string",
    "error":null
}
```

**参数说明：**

| 参数   | 类型   | 说明                       |
| :----- | :----- | :------------------------- |
| result | string | 交易十六进制编码后的字符串 |

### 1.3 备份地址生效 CreateRawRetrievePerformTx

**请求报文：**

```
{
    "jsonrpc":"2.0",
    "id": int32,
    "method":"retrieve.CreateRawRetrievePerformTx",
    "params":[
        {
            "backupAddr":"1E5saiXVb9mW8wcWUUZjsHJPZs5GmdzuSY",
            "defaultAddr":"14KEKbYtKKQm4wMthSK9J4La4nAiidGozt",
            "assets": [{"exec":"token","symbol":"string"}],
            "fee":int64
        }
    ]
}
参数说明：
```

**参数说明：**

| 参数        | 类型    | 说明         |
| :---------- | :------ | :----------- |
| backupAddr  | string  | 备份地址     |
| defaultAddr | string  | 主账户地址   |
| assets      | []Asset | 资产名称列表 |
| fee         | int64   | 费用         |

**响应报文：**

```
{
    "id":int32,
    "result":"string",
    "error":null
}
```

**参数说明：**

| 参数   | 类型   | 说明                       |
| :----- | :----- | :------------------------- |
| result | string | 交易十六进制编码后的字符串 |

### 1.4 取消备份(已准备还未生效) CreateRawRetrieveCancelTx

**请求报文：**

```
{
    "jsonrpc":"2.0",
    "id":int32,
    "method":"retrieve.CreateRawRetrieveCancelTx",
    "params":[
        {
            "backupAddr":"1E5saiXVb9mW8wcWUUZjsHJPZs5GmdzuSY",
            "defaultAddr":"14KEKbYtKKQm4wMthSK9J4La4nAiidGozt",
            "fee":int64
        }
    ]
}
```

**参数说明：**

| 参数        | 类型   | 说明       |
| :---------- | :----- | :--------- |
| backupAddr  | string | 备份地址   |
| defaultAddr | string | 主账户地址 |
| fee         | int64  | 费用       |

**响应报文：**

```
{
    "id":int32,
    "result":"string",
    "error":null
}
```

**参数说明：**

| 参数   | 类型   | 说明                       |
| :----- | :----- | :------------------------- |
| result | string | 交易十六进制编码后的字符串 |

## 2 状态查询

### 2.1 查询备份地址状态 Query

**请求报文：**

```
{
    "jsonrpc":"2.0",
    "id":int32,
    "method":"Chain33.Query",
    "params":[
        {
            "execer":"retrieve",
            "funcName":"GetRetrieveInfo",
            "payload":{
                "backupAddress":"1E5saiXVb9mW8wcWUUZjsHJPZs5GmdzuSY",
                "defaultAddress":"14KEKbYtKKQm4wMthSK9J4La4nAiidGozt"
            }
        }
    ]
}
```

**参数说明：**

Chain33.Query结构按通用要求填写：
execer,执行器名称，这里固定为retrieve
funcName,操作名称，这里固定为GetRetrieveInfo
payload携带的内容格式如下：

| 参数           | 类型   | 说明         |
| :------------- | :----- | :----------- |
| assetExec      | string | 资产执行器名 |
| assetSymbol    | string | 资产名称     |
| backupAddress  | string | 备份地址     |
| defaultAddress | string | 主账户地址   |

**响应报文：**

```
{
    "id":int32,
    "result":
    {
        "backupAddress":"1EDnnePAZN48aC2hiTDzhkczfF39g1pZZX",
        "defaultAddress":"1PUiGcbsccfxW3zuvHXZBJfznziph5miAo",
        "delayPeriod":"61",
        "prepareTime":"0",
        "remainTime":"0",
        "status":3
    },
    "error":null
}
```

**参数说明：**

| 参数           | 类型   | 说明                                                     |
| :------------- | :----- | :------------------------------------------------------- |
| backupAddress  | string | 备份地址                                                 |
| defaultAddress | string | 主账户地址                                               |
| delayPeriod    | string | 生效延时                                                 |
| prepareTime    | string | 准备生效时间                                             |
| remainTime     | string | 生效剩余时间                                             |
| status         | int32  | 当前状态(1:地址已备份 2:备份地址准备生效 3:备份地址生效) |

