# Manage

manage 管理执行器，主要功能是动态地给其他执行器配置和调整参数值。如给token执行器增加黑名单，给game执行器设置最大的赌资等等。
所有修改都是通过指定的manager账户地址，发送交易去修改参数值。这样做可以避免系统因为修改参数值而导致硬分叉。

## 1 添加/删除一个token-finisher CreateTransaction

**调用接口**

```
rpc CreateTransaction(CreateTxIn) returns (UnsignTx) {}
```

**参数：**

```
message CreateTxIn {
    bytes  execer     = 1;
    string actionName = 2;
    bytes  payload    = 3;
}
message ModifyConfig {
    string key   = 1;
    string value = 2;
    string op    = 3;
    string addr  = 4;
}
```

**参数说明：**

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

| 参数  | 类型   | 说明                                             |
| :---- | :----- | :----------------------------------------------- |
| key   | string | 目前支持token-finisher，token-blacklist          |
| value | string | 对应地址，如: 1CbEVT9RnM5oZhWMj4fxUrJX94VtRotzvs |
| op    | string | 操作方法，add 添加，delete 删除                  |
| addr  | string | 可为空                                           |

**返回数据：**

```
message UnsignTx {
    bytes data = 1;
}
```

**参数说明：**

| 参数 | 类型  | 说明                     |
| :--- | :---- | :----------------------- |
| data | bytes | 交易十六进制编码后的数据 |

## 2 查看finish apprv列表apprv列表 GetConfigItem

**调用接口**

```
rpc QueryChain(ChainExecutor) returns (Reply) {}
```

**参数：**

```
message ChainExecutor {
    string driver    = 1;
    string funcName  = 2;
    bytes  stateHash = 3;
    bytes  param     = 4;
    bytes  extra     = 5;
}
message ReqString {
    string data = 1;
}
```

**参数说明：**

| 参数      | 类型   | 是否必须 | 说明                                                         |
| :-------- | :----- | :------- | :----------------------------------------------------------- |
| driver    | bytes  | 是       | 执行器名称, 这里固定为 manage                                |
| funcName  | string | 是       | 操作名称, 这里固定为 GetConfigItem                           |
| stateHash | bytes  | 否       | 所有交易在对应的执行器执行后写入KVDB中重新计算得到的新state的哈希值 |
| param     | bytes  | 是       | types.Encode(&ReqString)                                     |
| extra     | bytes  | 否       | 扩展字段，用于额外的用途                                     |
| data      | string | 是       | 具体数据，这里是token-finisher. 指定查询的是 finish apprv列表 |

**返回数据：**

```
message ReplyConfig {
    string key   = 1;
    string value = 2;
}
```

**参数说明：**

| 参数  | 类型   | 说明                            |
| :---- | :----- | :------------------------------ |
| key   | string | 配置项的标识符                  |
| value | string | 配置项的值， 这里是对应地址列表 |

