youwallet / wallet

🚀 基于Flutter开发的跨终端数字货币交易所✨
https://youwallet.github.io/
118 stars 55 forks source link

【接口】交易列表 #44

Closed zhaobinglong closed 4 years ago

zhaobinglong commented 4 years ago

deadline:2019-12-25 size:1

zhaobinglong commented 4 years ago

获取交易深度

/* 获取订单列表信息
 * baseToken base-token 地址
 * quoteToken quote-token 地址
 * is_sell 为true时是卖单,false是买单
 *
 * 返回值
 * bq_hash: base-quote token 哈希值
 * od_hash: 订单列表第一个订单的哈希值
 */
function getOrderQueueInfo(address baseToken, address quoteToken, bool is_sell);

选择tokenA,tokenD, 选择买单,得到如下响应结果:

560b32eb4825a8ca982d48ac0a18c7630752f17cb2663cdfe7b1314beacd4a45
dc9de400c71e6a0e2ce314066231b3a2dbac314e78c7c8bb8fc86360d15a724a

第一个值是bq_hash,第二个值是od_hash,拿到这两个值,调用getOrderInfo,请求订单信息 出现异常:

"code":-32602,
"message":"invalid argument 0: json: cannot unmarshal hex string without 0x prefix into 
Go struct field CallArgs.data of type hexutil.Bytes"
zhaobinglong commented 4 years ago

获取每个订单的状态(当前撮合了多少,比如说我买100个tokenA,当前撮合了50个,应该显示50/100)

/* 获取订单信息
 * bq_hash: base-token/quote-token 哈希值
 * od_hash: 订单哈希值
 * is_sell: true 为卖单,false为买单
 *
 * 返回值:
 * 订单信息 QueueElem(参考该结构体)
 * */
function getOrderInfo(bytes32 bq_hash, bytes32 od_hash, bool is_sell);

QueueElem结构体

/* 订单信息
 * order: 订单参数
 * filled: 订单匹配额(已匹配的交易token的数量)
 * next: 该订单的下一个订单的哈希值
 * */
struct QueueElem {
    OrderParam order;
    uint256 filled;
    bytes32 next;
}

/* 订单参数
 * trader: taker 地址
 * baseTokenAmount: 交易token的数量
 * quoteTokenAmount: 报价token的数量
 * gasTokenAmount: 交易费用token的数量,一般默认0
 * data: 交易参数的设置, 包含hydro版本号、交易买卖标志等, 生成方式参见接口getConfigData
 * signature: 交易签名数据, 包含签名的vrs, 以及签名方法, 生成方式参见接口 getConfigSignature
 */
struct OrderParam {
    address trader;
    uint256 baseTokenAmount;
    uint256 quoteTokenAmount;
    uint256 gasTokenAmount;
    bytes32 data;
    OrderSignature signature;
}

0x000000000000000000000000ab890808775d51e9bf9fa76f40ee5fff124dece5000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000020000005ffb0e470000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000008ad781f6c6616e80e5ff76c243fece7b9ea97620d81e01924abcdb4578ccc06609d655232fe9987dd2212f5ef76d3c3c0710321a11617fea4c4a3f4eb3898072000000000000000000000000000000000000000000000000000000000000000054793c08f2aa87ec02c025fbbfa7eee9ac8665088e0a28a17428a0269934f807

0x560b32eb4825a8ca982d48ac0a18c7630752f17cb2663cdfe7b1314beacd4a45dc9de400c71e6a0e2ce314066231b3a2dbac314e78c7c8bb8fc86360d15a724a

zhaobinglong commented 4 years ago

获取交易深度需要特别注意:

  1. 至少获取三个订单
  2. 价格相同的订单要合并处理
  3. 当交易深度达到三个的时候,还需继续获取第四个订单,只有价格不一样的时候才停止
  4. 扔掉无效的订单
  5. 三个卖单+三个买单,注意卖单在上面
zhaobinglong commented 4 years ago

image 红框里面的两个保持一致

zhaobinglong commented 4 years ago

交易深度左边数据显示: image

zhaobinglong commented 4 years ago

image