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

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

  •  
  •   tosmq009 · 42 天前 · 1196 次点击
    这是一个创建于 42 天前的主题,其中的信息可能已经有所发展或是发生改变。

    数字货币的最小单位是 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
        1
    justfindu   42 天前
    一般他们会使用长整数来做, 然后业务自己处理倍数
        2
    tosmq009   42 天前
    @justfindu 那最终展示给客户的时候,还是需要截取到 8 位的,这种情况是如何保证双方的利益呢?谢谢
        3
    subpo   42 天前
    实际 10 位,截取 8 位,剩余的不显示(但是记录下来),如果下次用户得到的货币可以补足,即可给用户提现
    即 数据库记录的精度要大于实际逻辑处理的精度
        4
    leavic   42 天前
    一般就当交易所收益了,这种碎币很多交易所都有,总有那么几毛钱是拿不出来的。
        5
    tosmq009   42 天前
    @leavic 这是有效粗暴的解决办法~~ good
        6
    tosmq009   42 天前
    @subpo 意思是 下次交易之后再补足 ,当前交易允许数字毛刺
        7
    subpo   42 天前
    @tosmq009 #6 数字并不是毛刺,你也可以在提现资产界面显示全部位数,但是只能提 8 位。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2095 人在线   最高记录 5043   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 18ms · UTC 16:06 · PVG 00:06 · LAX 09:06 · JFK 12:06
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1