-
Notifications
You must be signed in to change notification settings - Fork 55
Home
hnuyx edited this page Aug 13, 2020
·
32 revisions
https://github.com/allanclempe/ether-wallet-flutter
主网地址:0x3d9c6c5a7b2b2744870166eac237bd6e366fa3ef
https://github.com/youwallet/wallet/wiki/%E5%8C%BA%E5%9D%97%E9%93%BE%E9%92%B1%E5%8C%85
http://xc.hubwiz.com/course/5d0f51ba574541f94050cf4e
https://material.io/resources/icons/?style=baseline
https://org.modao.cc/app/e30cfca2a7bbd116bf20d986b4d2d828
https://www.processon.com/colla
proxy: 0x141A60c20026d88385a5339191C3950285e41072
hydro: 0xe07554a7621D663c04082Bb1044Cf1344837BAF4
tempmatch: 0x3edde3202e42a6c129A399a7e063C6E236239202
relayer: 0xA9535b10EE96b4A03269D0e0DEf417aF97477FD6
contract tokena address: 0x6C3118c39FAB22caF3f9910cd054F8ea435B5FFB
contract tokenb address: 0xe898663A2CbDf7a371bB4B6a5dd7aC93d4505C9a
contract tokenc address: 0xEAB3A69a992aeC845099717B148DC1995DD57685
contract tokend address: 0x2e01154391F7dcBf215c77DBd7fF3026Ea7514ce
@zhaobinglong 0xAB890808775D51e9bF9fa76f40EE5fff124deCE5
-------------------------------------------------------------------------
说明:
1. 接口中标名 W 的,表示该操作会有写链操作,需要对交易进行签名,消耗一定的gas
2. 接口中标名 R 的,表示该操作不会有写链操作,不需要对交易进行签名,也不会消耗gas
-------------------------------------------------------------------------
结构体
-------------------------------------------------------------------------
/* 交易签名数据
* config: 包含签名v和签名方法(各占以1个字节, 其它字节缺省)
* r: 签名r
* s: 签名s
* */
struct OrderSignature {
bytes32 config;
bytes32 r;
bytes32 s;
}
/* 订单参数
* 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;
}
/* 订单地址集合
* baseToken: 交易token的合约地址
* quoteToken: 报价token的合约地址
* relayer: 交易费用接收账户地址
* */
struct OrderAddressSet {
address baseToken;
address quoteToken;
address relayer;
}
/* 订单信息
* order: 订单参数
* filled: 订单匹配额(已匹配的交易token的数量)
* next: 该订单的下一个订单的哈希值
* */
struct QueueElem {
OrderParam order;
uint256 filled;
bytes32 next;
}
/* 队列信息
* start: 订单队列中第一个订单的订单哈希值
* end: 订单队列中最后一个订单的订单哈希值
* length: queue length
*
* 说明,该结构配合sellQueue和buyQueue可以获得卖单和买单的完整队列。
*
* M 20200328
*/
struct Queue{
bytes32 start;
bytes32 end;
uint256 length;
}
/* 订单深度条目
* baseTokenAmount, quoteTokenAmount: 由这两个算出价格 = quoteTokenAmount / baseTokenAmount
* amount: base-token 数量
* is_sell: true for sell, false for buy
*
* M 20200328
**/
struct OrderItem
{
uint256 baseTokenAmount;
uint256 quoteTokenAmount;
uint256 amount;
bool is_sell;
}
/* 订单状态
* ORDER_NONE 未查询到订单。
* ORDER_OK 订单完成,完全匹配已有挂单。
* ORDER_PENDING 挂弹中,订单未完全匹配。
* ORDER_FINISHED 订单完成,上个状态为ORDER_PENDING。
* ORDER_EXPIRED 订单超时,订单超时为匹配,上个状态为ORDER_PENDING。
* ORDER_CANCELED 订单取消,上个状态为ORDER_PENDING。
* ORDER_REMOVED 订单移除,账户余额不足被移除,上个状态为ORDER_PENDING。
*/
enum OrderFlag{
ORDER_NONE,
ORDER_OK,
ORDER_PENDING,
ORDER_FINISHED,
ORDER_EXPIRED,
ORDER_CANCELED,
ORDER_REMOVED
}
-------------------------------------------------------------------------
YouMatch 接口
-------------------------------------------------------------------------
/* 发起订单 - W
* takerOrderParam: 订单参数
* orderAddressSet: 订单地址集合
* */
function takeOrder(OrderParam taker, OrderAddressSet orderAddressSet);
/* 获取订单相关hash值 - R
* orderParam: 订单参数
* orderAddressSet: 订单地址集合
*
* 返回值
* sq_hash: base-token/quote-token sell 哈希值
* bq_hash: base-token/quote-token buy 哈希值
* od_hash: 订单哈希值
*
* M 20200328
* */
function getBQODHash(OrderParam orderParam, OrderAddressSet orderAddressSet);
/* 获取深度队列哈希值 - R
* baseToken base-token 地址
* quoteToken quote-token 地址
*
* 返回值
* sq_hash: base-token/quote-token sell 哈希值
* bq_hash: base-token/quote-token buy 哈希值
*
*/
function getBQHash(address baseToken, address quoteToken);
/* 获取订单信息 - R
* od_hash: 订单哈希值
*
* 返回值:
* 订单信息 QueueElem(参考该结构体)
*
* M 20200328
* */
function getOrderInfo(bytes32 od_hash);
/* 获取定单队列 - R
* bq_hash: base-token/quote-token 哈希值
*
* 返回值:
* 队列信息 Queue(参考该结构体)
*
* A 20200328
*/
function queus(bytes32 bq_hash);
/* 取消订单 - W
* que_hash: queue hash, sell-queue hash or buy-queue hash
* od_hahs: order hash
* */
function cancelOrder(bytes32 que_hash, bytes32 od_hash);
/* 查询订单状态 - R
* od_hash: order hash
*
* 返回值:
* OrderFlag 枚举, (参考该结构体)
*
*/
function orderFlags(bytes32 od_hash);
/* 获取订单参数中的data - R
* is_sell: true 为卖单, false 为买单
*
* 返回值:
* bytes32 data
* */
function getConfigData(bool is_sell);
/* 获取交易签名数据 - R
* v: 签名v值
* r: 签名r值
* s: 签名s值
* signMethod: 签名方法, 0为eth.sign, 1为EIP712
*
* 返回值:
* OrderSignature 结构体
* */
function getConfigSignature(bytes1 v, bytes32 r, bytes32 s, uint8 signMethod);
/* 设置配置数据 - W
* key: 配置key
* value: 配置value
* */
function setConfiguration(string key, string value);
/* 删除配置数据 - W
* key: 配置key
* */
function delConfiguration(string key);
/* 获取配置信息 - R
* key: 配置key
*
* 返回值:
* string value
*/
function configurations(string key);
/* 获取深度列表 - R
* sq_hash: base-token/quote-token sell 哈希值
* bq_hash: base-token/quote-token buy 哈希值
*
* 返回值:
* od_list_sell: OrderItem 数组, 参见结构OrderItem
* od_list_buy: OrderItem 数组, 参见结构OrderItem
*
* 注意:返回的OrderItem中任意一个参数为0,表示结束。
*/
function getOrderDepth(bytes32 sq_hash, bytes32, bq_hash);
-------------------------------------------------------------------------
HybridExchange 接口
-------------------------------------------------------------------------
/* 获取订单匹配额 - R
* od_hash: 订单哈希值
*
* 返回值:
* uint256 value
*/
function filled(bytees32 od_hash);
/* relayer授权YouMatch合约撮合订单,需要用relayer账户调用 - W
* delegate: 委托合约地址,这里需要使用YouMatch合约
*
*/
function approveDelegate(address delegate);
/* relayer收回授权YouMatch合约撮合订单,需要用relayer账户调用 - W
* delegate: 委托合约地址,这里需要使用YouMatch合约
*
*/
function revokeDelegate(address delegate);
/* 获取订单状态 - R
* od_hash: 订单哈希值
*
* 返回值:
* bool flag: 1 表示订单取消, 0 表示订单未取消(或者没有这个订单)
*/
function cancelled(bytes32 od_hash);
-------------------------------------------------------------------------
ERC20-token 接口
-------------------------------------------------------------------------
/* token名字 - R
*
* 返回值
* string name: token名字
*/
function name();
/* token符号 - R
*
* 返回值
* string symbol: token符号
*/
function symbol();
/* token小数位数 - R
*
* 返回值
* uint8 decimals: token小数位数
*/
function decimals();
/* token总发行额 - R
*
* 返回值:
* uint256 value: 总发行额度
*/
function totalSupply();
/* 账户余额 - R
* account: 账户地址
*
* 返回值:
* uint256 value: 账户余额
*/
function balanceOf(address account);
/* 转账 - W
* to: 接收地址
* amount: 转账额度
*
* 返回值
* bool True: 返回True或者调用失败
*/
function transfer(address to, uint256 amount);
/* 代理转账 - W
* from: 转出地址
* to: 接收地址
* amount: 转账额度
*
* 返回值
* bool True: 返回True或者调用失败
*/
function transferFrom(address from, address to, uint256 amount);
/* 授权代理 - W
* spender: 代理地址
* value: 代理额度
*
* 返回值:
* bool True, 返回True或者调用失败
*/
function approve(address spender, uint256 value);
/* 获取授权代理额度 - R
* owner: 授权人账户地址
* spender: 代理人账户地址
*
* 返回值
* uint256 value: 代理额度
*/
function allowance(address owner, address spender);