chain-cex

328 阅读4分钟

crypto

dex系统设计

交易所中心化的钱包

中心化钱包设计之前需要理解中心化钱包VS用户钱包(去中心化的钱包)的区别;中心化的钱包代替用户托管资产,钱包保存了所有地址的私钥,对上面的令牌有完全的使用权。对于用户而言,对资产的流动有知情权,但并没有实际控制权。

一个完整的中心化钱包可以分为两层,记账层和区块底层,至少需要集成四个基本的业务功能:地址校验/生成;充值检查;提现;余额转移(USDT为例)

  1. 地址管理:校验/生成:validate address,getnewaddress, getaccountaddress;
  2. 充值校验:omni_listtransactions, SUCC = (valid=true && confirmations >=6)事务校验通过且确认数>6;
  3. 提现: 内部转账(平台内用户互相转账)/外部转账:omni_funded_send,omni_gettransaction
  4. 余额转移:中央钱包(热地址/冷地址):omni_getwalletaddressbalances(查询余额),omni_funded_sendall(余额>>手续费),余额转移是属于财务管理的范畴

注意的问题:valid=true, 交易被验证,钱包会扣除余额,此时的condirmation=1, 而confirmations >= 6 是在区块被完整确认

  • 充值:需要都校验,valid, comdirmation
  • 余额转移:valid=true(confirmation=1),钱包余额才会扣除,控制扫描周期>valid时间,否则重复发起多笔余额转移且只有一笔成功,其他会扣除多余手续费

BTC 地址管理的协议:BIP32,39,44

交易所系统设计

  • 基础的模块
    • 用户模块:,账户模块:account,订单模块:order,撮合模块:Trans,结算:Clearing,行情模块:Quotation
    • 账户模块:账户管理;余额冻结
    • 撮和模块/订单模块:order/seqence/match; 针对不同的交易类型
    • 结算模块:结算的统计维度
    • 行情模块:行情的数据可视化反馈
  • 基础的功能
    • 用/账户管理:安全等
    • 订单交易,撮合原则:价格优先/时间优先
    • 行情报价
  • 交易类型 & 交易的计算
    • FB/BB
    • OTC VS 场内交易
    • 杠杆(合约交易)
  • 2个主要的引擎:
    • 量化:Quantize
    • 撮和:Match:维护买/卖盘列表
  • 基础的概念:
    • taker/maker: maker挂单;taker吃单; maker一般收取返利,因为提供了交易;taker收取手续费,因为是委托交易(maker-taker原则)
    • bid/ask: ask=offer,卖出报价; bid买入报价
    • 限价/市价:
      • 市价: 股票根据市价撮合,时间性好,可能价格不是最好;
      • 限价: 限制成交价格,价格可能好,时效性差

共识算法

BFT,FBFT,Raft,POW,POS,DPOS,Ripple

简要说明

  1. BFT,Byzantine Fault Tolerance,拜占庭容错技术
  2. PBFT,Practical Byzantine Fault Tolerance,实用拜占庭容错算法
  3. Raft, 分布式共识算法,一般用在集群选举
  4. POW:Proof of Work,工作证明
  5. POS:Proof of Stake,股权证明
  6. DPOS:Delegated Proof of Stake,委任权益证明
  7. Ripple,共识算法

BFT: 拜占庭容错

  • 拜占庭将军问题:拜占庭节点:死节点,反叛节点,捣乱节点
  • 理论上可行性,缺乏实用性。另外,还需要额外的时钟同步机制支持,算法的复杂度也是随节点增加而指数级增加
  • 没有实际应用

FBFT:实用拜占庭容错

  • Hyperledger的Fabric项目中,共识模块被设计成可插拔的模块,支持像PBFT、Raft等共识算法
  • 算法难度降低为多项式级别,强一致性

Raft: 一种分布式系统共识协议:zook节点选举,etcd

  • 故障节点:只会是死节点,节点状态三种Flowere,Candidate,Leader;
  • 主要流程2个: Leader Election(Leader选举),Log Replication(日志复制)
  • zookpeer集群一致性,集群个数是质数个
  • 强一致性(绝对一致,不是少数服从多数)
  • paxos 算法

POW:工作量证明

  • 每个节点通过算力竞争记账权; 难于计算,易于验证:SHA256;
  • 是最终一致行算法不是强一致性算法(VS区别), 适合公链,不适合联盟链,私有链(要求强一致性)
  • 挖块奖励

POS:股份证明:

  • 银行储蓄: 根据储蓄的金额 * 储蓄的时间计算利息; 币个数 * 币龄
  • peercoin: 点点币
  • 首富问题,可能导致中心化

DPOS:委托股份证明

  • 技术层的人民代表大会: sp节点
  • ETH,bitshare,EOS, tron