Skip to content
hnuyx edited this page Aug 13, 2020 · 32 revisions

一个开源的钱包生成app

https://github.com/allanclempe/ether-wallet-flutter

小白健康SHT智能合约

主网地址:0x3d9c6c5a7b2b2744870166eac237bd6e366fa3ef

区块链钱包

https://github.com/youwallet/wallet/wiki/%E5%8C%BA%E5%9D%97%E9%93%BE%E9%92%B1%E5%8C%85

一个flutter钱包课程

http://xc.hubwiz.com/course/5d0f51ba574541f94050cf4e

flutter所有内置的Icon

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);