crypto
dex系统设计
交易所中心化的钱包
中心化钱包设计之前需要理解中心化钱包VS用户钱包(去中心化的钱包)的区别;中心化的钱包代替用户托管资产,钱包保存了所有地址的私钥,对上面的令牌有完全的使用权。对于用户而言,对资产的流动有知情权,但并没有实际控制权。
一个完整的中心化钱包可以分为两层,记账层和区块底层,至少需要集成四个基本的业务功能:地址校验/生成;充值检查;提现;余额转移(USDT为例)
- 地址管理:校验/生成:validate address,getnewaddress, getaccountaddress;
- 充值校验:omni_listtransactions, SUCC = (valid=true && confirmations >=6)事务校验通过且确认数>6;
- 提现: 内部转账(平台内用户互相转账)/外部转账:omni_funded_send,omni_gettransaction
- 余额转移:中央钱包(热地址/冷地址):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买入报价
- 限价/市价:
- 市价: 股票根据市价撮合,时间性好,可能价格不是最好;
- 限价: 限制成交价格,价格可能好,时效性差
- taker/maker: maker挂单;taker吃单; maker一般收取返利,因为提供了交易;taker收取手续费,因为是委托交易(
共识算法
BFT,FBFT,Raft,POW,POS,DPOS,Ripple
简要说明
- BFT,Byzantine Fault Tolerance,拜占庭容错技术
- PBFT,Practical Byzantine Fault Tolerance,实用拜占庭容错算法
- Raft, 分布式共识算法,一般用在集群选举
- POW:Proof of Work,工作证明
- POS:Proof of Stake,股权证明
- DPOS:Delegated Proof of Stake,委任权益证明
- 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