V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tosmq009
V2EX  ›  数学

数字货币交易所结算精度问题

  •  
  •   tosmq009 · 2019-03-15 09:27:08 +08:00 · 20682 次点击
    这是一个创建于 2078 天前的主题,其中的信息可能已经有所发展或是发生改变。

    数字货币的最小单位是 1 乘 10 的负 8 次方,即 0.00000001,出现任何比小数点后 8 位小的则自动截取小数点后 8 位,不采用四舍五入的方法 交易所 MGD/BTC 这两种数字货币的交易 假设: 甲以 1 个 MGD=0.000494BTC 的价格购买 16000 个 MGD

    即买入下单: 价格(BTC)0.000494 数量( MGD ) 16000 预计成交额 7.904BTC ( 0.000494* 16000 ) 下单时,系统冻结 7.904 个 BTC 用于购买 16000 个 MDG, 这笔订单在撮合交易系统里分别与乙和丙完成成交 乙、价格 0.000494 数量 11057.9159 成交 5.4626104546 截取八位 5.46261045 丙、价格 0.000494 数量 4942.0841 成交 2.4413895454 截取八位 2.44138954

    则乙获得 5.46261045 个 BTC ;丙获得 2.44138954 个 BTC,双方共获得 7.90399999 而甲下单以后被冻结 7.904 个 BTC 并成功购买 16000 个 MGD 那么这 7.904-7.90399999=0.000000001 的误差如何来处理?

    我们的方法是算作交易所的收益,但是否有可能某一种交易的情况下,需要交易所补贴类似这样 0.00000001 的情况? 而且交易数据是用户可查的,对于甲来说,两次交易分别显示花出 5.46261045 个 BTC 和 2.44138954 个 BTC,那么甲是否会找交易所问他的 0.00000001 个 BTC 哪里去了。

    7 条回复    2019-03-15 16:06:37 +08:00
    justfindu
        1
    justfindu  
       2019-03-15 09:43:17 +08:00
    一般他们会使用长整数来做, 然后业务自己处理倍数
    tosmq009
        2
    tosmq009  
    OP
       2019-03-15 09:45:17 +08:00
    @justfindu 那最终展示给客户的时候,还是需要截取到 8 位的,这种情况是如何保证双方的利益呢?谢谢
    subpo
        3
    subpo  
       2019-03-15 09:47:47 +08:00
    实际 10 位,截取 8 位,剩余的不显示(但是记录下来),如果下次用户得到的货币可以补足,即可给用户提现
    即 数据库记录的精度要大于实际逻辑处理的精度
    leavic
        4
    leavic  
       2019-03-15 10:13:09 +08:00
    一般就当交易所收益了,这种碎币很多交易所都有,总有那么几毛钱是拿不出来的。
    tosmq009
        5
    tosmq009  
    OP
       2019-03-15 15:26:51 +08:00
    @leavic 这是有效粗暴的解决办法~~ good
    tosmq009
        6
    tosmq009  
    OP
       2019-03-15 15:27:31 +08:00
    @subpo 意思是 下次交易之后再补足 ,当前交易允许数字毛刺
    subpo
        7
    subpo  
       2019-03-15 16:06:37 +08:00
    @tosmq009 #6 数字并不是毛刺,你也可以在提现资产界面显示全部位数,但是只能提 8 位。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2943 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 14:30 · PVG 22:30 · LAX 06:30 · JFK 09:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.