交易所学习笔记

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
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值