# 常见问题
#### 01 什么是chain33,它的优势



Chain33是一个高度模块化, 遵循 KISS原则的区块链开发框架。

#### 02 Solo共识启动异常



Chain33的配置文件为模块化配置，默认没有配置solo共识的参数，所以直接启动会报错，需要在配置文件中增加如下solo相关的配置参数：

```
[consensus.sub.solo]
genesisBlockTime=1514533394
genesis="1CbEVT9RnM5oZhWMj4fxUrJX94VtRotzvs"
```

#### 03 开发新共识插件，避免分叉的写法



在开发新的共识协议时，如果不想产生链的分叉，需要注意Miner接口的CreateBlock()实现中，保证由一个共识节点调用client.WriteBlock()发起打包新区块。如果多个节点在同一高度打包新区块，则会产生分叉，最终只能有最长链保留，分叉链会被清理，该链上分叉后的交易数据会重新回到mempool中，等待新的区块打包。

#### 04 创建钱包及其账户时，导入的genesis账户下没有余额的原因是什么？



配置文件中的genesis值要设置为genesis账户的私钥对应的地址

```
#genesis：初始代币所在地址， genesisAmount：初始代币数量
genesis="1CbEVT9RnM5oZhWMj4fxUrJX94VtRotzvs"
```

#### 05 同步的节点ip中，存在不是toml配置文件中设置的ip



**问题描述：**
测试过程中，使用./chain33-cli net peer_info命令查看节点信息时，”addr”值存在不是toml配置文件中配置的ip，由此而造成后续步骤中区块同步不成功或者其他一些问题。
**解决办法：**
配置环境时，最好使用只有一个ip的节点作为测试节点，如果一个节点同时拥有多个ip，则可能会造成环境混乱，导致出现异常。

#### 06 同一区块中出现两个Open、Close交易，且一个执行失败是什么原因？



**问题描述：**
在区块中出现了有连续2个执行器类型为ticket的交易，该交易的执行操作都是topen，且其中有一个是执行成功，另一个是执行失败。
参考测试链上高度1057421出现的此问题现象：[https://testnet.bityuan.com/blockDetail?height=1057421](https://testnet.bityuan.com/blockDetail?height=1057421)

**解决方法：**
检查出错交易的输入数据，是否minerAddress和returnAddress配置成了同一个地址，并且通过ticket binder_miner检查该地址是否被设置成了离线挖矿地址，如果是则换一个离线地址，问题可以得到修复。