Author Topic: bitshares X撮合机制讨论  (Read 3269 times)

0 Members and 1 Guest are viewing this topic.

Offline coolspeed

  • Hero Member
  • *****
  • Posts: 536
    • View Profile
    • My Blog
熊熊我好崇拜你
Please vote for  delegate.coolspeed    dac.coolspeed
BTS account: coolspeed
Sina Weibo:@coolspeed

Offline sfinder

  • Hero Member
  • *****
  • Posts: 1205
  • 4 Cores CPU+100GB SSD+anti-DDoS Pro
    • View Profile
微博:星在飘我在找|BTS X 受托人delegate ID:baidu
中国教育书店合作将20%收入捐献给贫困山区学生。
Cooperating with China Education Bookstore and will donate 20% of delegate income to the poor students

Offline Musewhale

  • Hero Member
  • *****
  • Posts: 2881
  • 丑,实在是太丑了 !
    • View Profile
MUSE witness:mygoodfriend     vote for me

Offline Musewhale

  • Hero Member
  • *****
  • Posts: 2881
  • 丑,实在是太丑了 !
    • View Profile
heyD,

alt的攻击其实和什么成交算法、抵押倍数、熔断机制、涨跌幅控制没有最根本的关系,这些方法只能从某些方面或者某些时候看起来好像能制造一点难度

真正要解决这个攻击,我觉得实际是要分析为什么会存在这种攻击的原因,以及什么时候最容易出现

问题的根源直指市场深度 + 开盘一刹那的市场挂单状况

能轻易完成这个攻击的最完美时间点就是系统刚上线或者大家睡觉挂单特别少的时候,当然在系统运行初期可以几乎肯定的说挂单的人会非常少,因为BitUSD就算出来也没啥用处,没有消耗的地方.这样的话,就算是一个散户都有击穿市场的机会.

所以BM要解决这个问题其实就是解决如何在市场深度很浅的时候保护系统不被恶意砸穿以及成交那种很离谱价格的挂单.

按照之前他说的那些办法,实际上是没有任何可能解决的曙光的(我个人以为),每个方案要么复杂要么治标不治本最多只是提升作恶难度,不能从根本上制止. 而BTS X系统在初期的脆弱是注定了无法改变的

因此我觉得可以放弃从技术角度来解决这个问题的想法了,我觉得是死胡同

我能想到的解决方法有两种,但是都需要借助外力;而现在要突破的并不是技术问题,我觉得主要是要突破和扭转所谓的P2P去中心化分布式交易系统不能掺杂任何人为因素以及哪怕任何一丁点中心化方案的思想桎梏.

我觉得我们最主要的目的并不是制作一个完美主义的充满病态追求的纯P2P去中心化交易所(全数字代码控制),而是只要能达到一个不被某一个极端的中心所控制和掌握的类去中心化交易所就行了(广义)---即Dpos算法的人大代表思想.

方法一:coolspeed之前在有个帖子里提过的,由掌握XTS筹码最多的3I出面全程呵护系统成长,在一个合理的范围内,筑起很深的墙(也挺冒险的,搞不好3I的墙被吃就完了 :-X
https://bitsharestalk.org/index.php?topic=3605.msg45431#msg45431

方法二:人大代表重现江湖,在100个虚拟矿池之外,利用同样的原理,由1000个代表每天准时进行一次投票(比如每天08:00之前,其实也可以提前投),设定下一个24小时周期系统的上下两道墙(并且是代码里写死了的墙)
2种代表的选举要求做到完全透明,人大代表地址背后的操作人要自觉在社区内进行拉票及公示,并且每一次投票都要做到任何人均可以从客户端随时可查,然后社区发现不合理投票要在论坛进行揭发,然后号召散户在下一次的投票中将其否决或者说弹劾.  经过一段时间的磨合,我想这100+1000个人大代表的身份就会相对的固定下来,而操作投票的人到时候也几乎会是社区的熟面孔或者说可靠的人. 并且2种投票都可以有所收益(得手续费,因此不愿意轻易被别人弹劾)
而上下两道墙的设置也应该设置的比较宽广,不能太死,比如今天XTS价格是100美元,那么我们的墙可以设置成30~300美元. 这样就算有人砸穿,也不会造成无限大的比特资产被发行或者1美元可以买到无限多的XTS.


第二种方法我觉得是最可行的,而且思路都和Dpos挖矿很像,BM做起来也得心应手
至于之前他想的那些,我感觉都无法完全杜绝无限比特资产的产生,若是他想不靠人工投票而利用系统自动统计近期成交价格的平均基数来定立一个所谓的熔断机制我仍然觉得是不可取的,第一是太复杂,第二还是无法解决初期系统刚开放那段时间的被击穿危险



题外:
现在难产的Keyhotee,之前包括很多人都提过了,其中一些功能或者实现手段并不一定非要全程P2P去中心化,大家可以接受中心化的服务器(大不了多几个)
只要能做到保密、安全就行了,至于实现手段可以允许有所折衷,这样可以降低难度以及提高产品的体验舒适度,何乐而不为呢?
同理,上面的BTS X系统也一样,也可以加入人工手段,只是我们要想办法从原理上将可能作恶的人为因素降至最低乃至于几乎不可能发生即可.
包括以后很多的DAC,比如赌球的,BM提出的保险等;到时候都是必须要有人参与进系统才行的,所以我觉得我们现在就大胆的人机合体吧,不要总想逆天却耽误大好时间反而头发掉落一地 :P :P :P
« Last Edit: April 15, 2014, 04:49:51 pm by BTS熊 »
MUSE witness:mygoodfriend     vote for me

Offline alt

  • Hero Member
  • *****
  • Posts: 2821
    • View Profile
  • BitShares: baozi
@alt 这样子设计,你说的那种攻击方式的成本会相当相当高,高得没人敢这么玩。
撮合机制一开始就是这样设计的,最开始的攻击正是利用了这个成交算法:
1. 按照下单价格成交,且发行价没有任何限制。如果把发行bitusd是看做买bts,我可以把1bts买价定的很高,比如拿100亿的bitusd来买。按找这个价格成交,就会在市场上新增100亿bitusd,注意这里的bitusd是靠抵押bts凭空产生的。这样成交后我能用很低的bts成本把所有的bitusd买单击穿。
2. 如果bitusd买单可被低成本击穿,我可以下单 1bts 买10亿 bitusd。成交后我就得到了10亿bitusd

最起码的修改:对发行bitusd成交时的撮合算法,不能按下单价成交,而是按bitusd的买单价成交。避免1bts发行成交后产生100亿bitusd。

改成这样,攻击成本会上升很多,1bts肯定不够了,需要的攻击成本为bitusd所有买单中总的bts。如果发行16种资产,占有1/16的bts总量仍能保证击穿一种资产的买单。

所以bm又提出了最开始只设置3种资产吧。但实际市场深度不可能一下子就有这么多买单,bm又提出了成交前要先做市场深度检测。之后又有爆仓的问题,增加为10倍保证金,但又发现10倍抵押会导致多空双方力量悬殊,市场失衡。。。。。后面还有各种建议就不说了

最终应该是达成了共识,必须增加熔断机制,限制价格变化幅度什么的
« Last Edit: April 14, 2014, 11:19:19 pm by alt »

Offline muse-umum

  • Hero Member
  • *****
  • Posts: 717
  • BitShares everything
    • View Profile
@alt 这样子设计,你说的那种攻击方式的成本会相当相当高,高得没人敢这么玩。


Offline muse-umum

  • Hero Member
  • *****
  • Posts: 717
  • BitShares everything
    • View Profile
在bitshares官网对于X的详细介绍里http://bitshares.org/banking/,我们可以看到BM依然想使用2倍抵押的方式。为了防范此情况下的攻击和市场操控,他想出了一种特殊的撮合机制。

想了解背景请参考下面这两个贴以及当时alt提出的攻击方式。说实话,由于智商和英语水平不够,我并不完全明白这些帖子里的全部内容。
https://bitsharestalk.org/index.php?topic=3130.msg44716#msg44716
https://bitsharestalk.org/index.php?topic=3895.msg50318#msg50318


Quote
Matching Algorithm

BitShares X uses a non-traditional order matching algorithm. The algorithm chosen always gives the buyer exactly what they ask for instead of traditional order matching which gives the buyer at least what they ask for and sometimes more. Any time a the highest bid is greater than the lowest ask the difference is captured as fees by the network. In the case of BitShares X there is no distinction between buyer and seller because someone buying BIPS with USD is no different than someone buying USD with BIPS. Both sides of the trade get the price they specified rather than using the same price for both parties. The difference is kept as fees for the network.

The reason for this algorithm is to penalize those that would attempt to manipulate the market by walking the book via fees charged proportional to the amount of the book they walk in a single go. This is designed to enforce value-based investing rather than technical trading. This is expected to reduce volatility and liquidity as trading noise is removed from the network. No market participant should be able to complain about getting exactly what they ask for and thus they should only place orders they think are fair.

简单翻译:

传统的撮合机制里,买方至少能买到他们下单的数量,有时候会更多。
(译注:市场上买单最高价90元/币,卖单最低价110元/币,你下单100元买1币的同时有人下单95元卖2币,那你至少能买到1个币,有可能买到多于1个币)

而在BitShares X的撮合机制下,买方买到的数量,就是他们下单的数量,没多没少。任何时候当最高的买单价格高于最低的卖单价格,其中的差价将作为手续费。在BitShares X中,买方和卖方其实是没有差别的,因为用美刀买BIPS跟用BIPS买美刀是没有差别的。交易双方按他们各自下单的价格成交,而不是按相同的价格成交,其中的差价就作为手续费归给网络。
(译注:比如最高价的买单是有人用100元买1股,你出价97元/股卖1股。那么你会以97元卖出1股,对方用100元得到1股,中间的3元差价就是手续费;当然如果最高价买单是100元/股,最低价卖单是110元/股,则不会成交。)

用这种算法是为了让那些想通过击穿某一边市场来达到操纵目的的人付出沉重的代价,因为他们要支付的手续费会比他们单个单个进行交易成比例地增加。
(译注:参考这两个回帖:https://bitsharestalk.org/index.php?topic=3130.msg44716#msg44716  https://bitsharestalk.org/index.php?topic=3130.msg44767#msg44767)这样子设计是为了强制人们按价值投资,而不是用技术手段进行交易。 希望此举能减少波动性和流动性。参与者也不应该抱怨,因为完全是按照他们下单的价格来成交的,大家应该按照自己认为合理的价格下单。
« Last Edit: April 14, 2014, 05:00:21 pm by heyD »