power, err := strconv.Atoi(powerS) //字符串转换为整数
pubkey, err := hex.DecodeString(pubkeyS) //把16进制字符串转换为字节数组
/******* 数据库操作
batch := ldb.NewBatch()
batch.Delete(key)
batch.Commit()
batch := ldb.NewBatch()
batch.Put(key, value.Bytes())
batch.Commit()
**********/
validator 数据库存储
key : val:pubketS
value :
value := bytes.NewBuffer(make([]byte, 0))
err := types.WriteMessage(v, value)
batch.Put(key, value.Bytes())
/*****************************************************************queue*********************************************************/
Queue 结构体包含了一个Message的通道 通道容量大于2048 一个Message对应的处理器 和一个优先级
关于order的event
1.当挂单时候会触发place order event
2.当订单部分成交会触发place order event
3.当订单完成时会触发close order event
数据的处理
func CalcFeeImpl(cost int64, rate int32, minFee int64) int64 {
fee := big.NewInt(0).Mul(big.NewInt(cost), big.NewInt(int64(rate)))
fee = big.NewInt(0).Div(fee, big.NewInt(msq.SymtemUnit))
return cmn.Max(fee.Int64(), minFee)
}
tendermint流程
func send(request *msq.WriteRequest) (*msq.Response, error) {
height++
hash := []byte("foo")
header := &types.Header{
Height: height,
}
trade.BeginBlock(hash, header)
//先是req 再是request加密
data, err := msq.MarshalMessage(request)
if err != nil {
return nil, err
}
err = trade.Check(data)
if err != nil {
return nil, err
}
res, err := trade.Exec(data)
if err != nil {
return nil, err
}
var resp msq.Response
err = msq.UnmarshalMessage(res, &resp)
if err != nil {
return nil, err
}
trade.EndBlock(height)
trade.Commit()
return &resp, nil
}