Author Topic: 觉得bts攻击仍然未解决  (Read 12927 times)

0 Members and 1 Guest are viewing this topic.

Offline taoljj

  • Full Member
  • ***
  • Posts: 177
    • View Profile
如果锁定买卖双方的XTS-BITUSD这个单子1小时,出现爆仓的情况就需要买卖双方共同承担,也就是问题里说的万亿BITUSD也要爆仓。使得恶意购买BITUSD被市场共识瓦解。按5分钟一个块,1小时内有12个块。肯定会有相对合理的市场交易买卖,一但出现这样的买卖,都要对之前的买卖进行核对爆仓处理。这样不知道是否可行?
这也是个很好的思路  :)
我觉得这个办法很好,发到英文讨论区了
https://bitsharestalk.org/index.php?topic=3130.msg42420#msg42420

对发行 bitusd 成交的交易,增加24小时锁定时间,如果在锁定期间被爆仓的话,只需要修改本交易的输出,用锁定的bitusd cover所有 short positions。在扣除5%爆仓手续费后,按爆仓价分配 xst 到两位交易者。
这样的解决方案对整个网络没有任何影响,不用限价,不用限制市场深度或者限制交易时间。

如果一直都被攻击,一直1xts发行1亿亿亿亿亿bitusd,一直被锁定,一直爆仓,想买的买不到,想卖的卖不了,那不是玩完?
BTS      Witness: delegate.taoljj

Offline sabreiib

  • Full Member
  • ***
  • Posts: 121
    • View Profile
3i公司肯定是掌握了50%以上的bts。我若是3i,利用手中的压倒性bts持有量完全可以操控市场,当然是操控到bts价格稳定的程度。任何其他大户、庄,在3i公司面前都是散户,不怕死的就来PK。

Offline BTSdac

  • Hero Member
  • *****
  • Posts: 1219
    • View Profile
  • BitShares: K1
问题的根源是,现在的交易规则下, 这个系统是一个发散的系统,  不是一个收敛的系统, 我在英语帖子里指出了这个系统的问题,并分析了原因,好像没有受到重视
github.com :pureland
BTS2.0 API :ws://139.196.37.179:8091
BTS2.0 API 数据源ws://139.196.37.179:8091

Offline Nimrod

  • Full Member
  • ***
  • Posts: 133
    • View Profile
如果锁定买卖双方的XTS-BITUSD这个单子1小时,出现爆仓的情况就需要买卖双方共同承担,也就是问题里说的万亿BITUSD也要爆仓。使得恶意购买BITUSD被市场共识瓦解。按5分钟一个块,1小时内有12个块。肯定会有相对合理的市场交易买卖,一但出现这样的买卖,都要对之前的买卖进行核对爆仓处理。这样不知道是否可行?
这也是个很好的思路  :)
我觉得这个办法很好,发到英文讨论区了
https://bitsharestalk.org/index.php?topic=3130.msg42420#msg42420

对发行 bitusd 成交的交易,增加24小时锁定时间,如果在锁定期间被爆仓的话,只需要修改本交易的输出,用锁定的bitusd cover所有 short positions。在扣除5%爆仓手续费后,按爆仓价分配 xst 到两位交易者。
这样的解决方案对整个网络没有任何影响,不用限价,不用限制市场深度或者限制交易时间。

 +5%

Offline checkie

  • Full Member
  • ***
  • Posts: 162
    • View Profile
对处理不够平仓有用,但让系统的使用者感到难用,交易后锁定24小时,在这24小时内,不能做任何操作,能做的就是等到第2天。在当下的高速时代,谁受得了?

Offline alt

  • Hero Member
  • *****
  • Posts: 2821
    • View Profile
  • BitShares: baozi
如果锁定买卖双方的XTS-BITUSD这个单子1小时,出现爆仓的情况就需要买卖双方共同承担,也就是问题里说的万亿BITUSD也要爆仓。使得恶意购买BITUSD被市场共识瓦解。按5分钟一个块,1小时内有12个块。肯定会有相对合理的市场交易买卖,一但出现这样的买卖,都要对之前的买卖进行核对爆仓处理。这样不知道是否可行?
这也是个很好的思路  :)
我觉得这个办法很好,发到英文讨论区了
https://bitsharestalk.org/index.php?topic=3130.msg42420#msg42420

对发行 bitusd 成交的交易,增加24小时锁定时间,如果在锁定期间被爆仓的话,只需要修改本交易的输出,用锁定的bitusd cover所有 short positions。在扣除5%爆仓手续费后,按爆仓价分配 xst 到两位交易者。
这样的解决方案对整个网络没有任何影响,不用限价,不用限制市场深度或者限制交易时间。
« Last Edit: March 04, 2014, 12:09:42 am by alt »

Offline Sharp116

  • Newbie
  • *
  • Posts: 19
    • View Profile
回帖涉及的几个问题要分开讨论:
1. 不考虑动机,是否可以通过人为操作,对系统造成巨大破坏?
操作方式我前面已经写过了,是可行的。如果存在16种资产,占有 1/16 的xst就可能发行无数bitusd给自己。

2. 我举的例子中,发行价极端低是为了说明漏洞的存在。如果发行价并非极端低,是否可以通过类似操作合理利用规则获利呢?这样的规则漏洞就是鼓励大家作恶。因为诚实的人肯定承担损失。

3. 有人说如果持有大量 xfs,不可能攻击系统。我认为是否真的有人发动了这个攻击其实并不重要,更重要的是我们每个人都会担心系统可能受到这个攻击,这种预期对信心的打击是致命的。没有信心,xfs价值就是0,连pts都不如。

同意ptshello说的,操作市价能爆别人单的话,会让他人受损。

如果要系统的市价不留攻击漏洞,完全信任这个系统,那是要增加规则,使得持有大量 xfs的人对市价影响有限。增加它扫单的风险和时间成本。

如我之前所说,引入单位时间内涨跌幅限制,可能是唯一的解决之道

Offline kimpeady

  • Full Member
  • ***
  • Posts: 68
    • View Profile
回帖涉及的几个问题要分开讨论:
1. 不考虑动机,是否可以通过人为操作,对系统造成巨大破坏?
操作方式我前面已经写过了,是可行的。如果存在16种资产,占有 1/16 的xst就可能发行无数bitusd给自己。

2. 我举的例子中,发行价极端低是为了说明漏洞的存在。如果发行价并非极端低,是否可以通过类似操作合理利用规则获利呢?这样的规则漏洞就是鼓励大家作恶。因为诚实的人肯定承担损失。

3. 有人说如果持有大量 xfs,不可能攻击系统。我认为是否真的有人发动了这个攻击其实并不重要,更重要的是我们每个人都会担心系统可能受到这个攻击,这种预期对信心的打击是致命的。没有信心,xfs价值就是0,连pts都不如。

同意ptshello说的,操作市价能爆别人单的话,会让他人受损。

如果要系统的市价不留攻击漏洞,完全信任这个系统,那是要增加规则,使得持有大量 xfs的人对市价影响有限。增加它扫单的风险和时间成本。
BTS真难玩

Offline alt

  • Hero Member
  • *****
  • Posts: 2821
    • View Profile
  • BitShares: baozi
如果锁定买卖双方的XTS-BITUSD这个单子1小时,出现爆仓的情况就需要买卖双方共同承担,也就是问题里说的万亿BITUSD也要爆仓。使得恶意购买BITUSD被市场共识瓦解。按5分钟一个块,1小时内有12个块。肯定会有相对合理的市场交易买卖,一但出现这样的买卖,都要对之前的买卖进行核对爆仓处理。这样不知道是否可行?
这也是个很好的思路  :)

Offline 00091lacer

  • Hero Member
  • *****
  • Posts: 624
    • View Profile
突然想到一点就是都是比特资产这个概念搞的鬼,倒不如去掉比特资产这个概念,直接拿BTC作为BTSX系统的基本货币,这样就行了。交易平台则转为BTC与法币兑换的节点

Offline Nimrod

  • Full Member
  • ***
  • Posts: 133
    • View Profile
回帖涉及的几个问题要分开讨论:
1. 不考虑动机,是否可以通过人为操作,对系统造成巨大破坏?
操作方式我前面已经写过了,是可行的。如果存在16种资产,占有 1/16 的xst就可能发行无数bitusd给自己。

2. 我举的例子中,发行价极端低是为了说明漏洞的存在。如果发行价并非极端低,是否可以通过类似操作合理利用规则获利呢?这样的规则漏洞就是鼓励大家作恶。因为诚实的人肯定承担损失。

3. 有人说如果持有大量 xfs,不可能攻击系统。我认为是否真的有人发动了这个攻击其实并不重要,更重要的是我们每个人都会担心系统可能受到这个攻击,这种预期对信心的打击是致命的。没有信心,xfs价值就是0,连pts都不如。

That is so big question.

Offline ssjpts

  • Hero Member
  • *****
  • Posts: 538
    • View Profile
    • 中国BTC
  • BitShares: coolman
如果锁定买卖双方的XTS-BITUSD这个单子1小时,出现爆仓的情况就需要买卖双方共同承担,也就是问题里说的万亿BITUSD也要爆仓。使得恶意购买BITUSD被市场共识瓦解。按5分钟一个块,1小时内有12个块。肯定会有相对合理的市场交易买卖,一但出现这样的买卖,都要对之前的买卖进行核对爆仓处理。这样不知道是否可行?
新浪微博:剑指未来BTS
BTC:1Bc7gRGotktBmnNFr3BUUM22HFXCCTyxor
BTSX ID:loves,集大众之爱,待到BTS 500刀,10%回退给捐赠者,10%用于运营,剩余80%用于爱心事业和BTS宣传推广。

Offline alt

  • Hero Member
  • *****
  • Posts: 2821
    • View Profile
  • BitShares: baozi
回帖涉及的几个问题要分开讨论:
1. 不考虑动机,是否可以通过人为操作,对系统造成巨大破坏?
操作方式我前面已经写过了,是可行的。如果存在16种资产,占有 1/16 的xst就可能发行无数bitusd给自己。

2. 我举的例子中,发行价极端低是为了说明漏洞的存在。如果发行价并非极端低,是否可以通过类似操作合理利用规则获利呢?这样的规则漏洞就是鼓励大家作恶。因为诚实的人肯定承担损失。

3. 有人说如果持有大量 xfs,不可能攻击系统。我认为是否真的有人发动了这个攻击其实并不重要,更重要的是我们每个人都会担心系统可能受到这个攻击,这种预期对信心的打击是致命的。没有信心,xfs价值就是0,连pts都不如。

Offline 00091lacer

  • Hero Member
  • *****
  • Posts: 624
    • View Profile
个人认为BTS的挂单价范围应该受到强制限制,因为这个和整体交易资金挂钩的东西,又充当一个抵押物的角色,这关系到BTSX整个交易体系的稳定。就这么容易被人操纵太不应该了。

Offline checkie

  • Full Member
  • ***
  • Posts: 162
    • View Profile
是呀,抵押bts发行bitusd不是想发行多少就多少,偏离bts的市场价值太多,一发行就达到强制平仓条件了

Offline kimpeady

  • Full Member
  • ***
  • Posts: 68
    • View Profile
首先, bts抵押换多少bitusd,不是你想发行多少就多少,要按市价发行。也就是说你抵40万bts,不可以换你想的10亿亿;
而市价是要有成交才形成。

退一步说,假如你有实力把市场的买卖单先全部扫光,这时就相当于市场的初始态,只有你一人在玩,市场就开始从第一单从新开始。你可以自己用1bts换10亿亿亿亿亿亿亿亿....bitusd, 同时你要自己接这个单才形成市价。而你接回自己的单又有什么意义呢?只是为了操纵一个市价?

换个现实点的说法,你抵押1bts,换了个玻璃瓶,这个市价是在市场上公开的,接下来你为了盈利,把这个玻璃瓶标价100000bts卖出,有人会接单吗?这时候肯定有人用bts抵押出玻璃瓶,10bts就卖了。

这里面,有个问题是,bitusd这个符号必须做到人们相信他是美元,而不是欧元或是泰铢。。。
这个可以由系统运营者先自己抵押出bitusd,在各个交易所先挂牌与美元1:1兑换,形成共识,再开放bts X交易系统。。。

BTS真难玩

Offline checkie

  • Full Member
  • ***
  • Posts: 162
    • View Profile
没必要,也不可行,万一重设为28号快照,已经交易部分谁买单?

Offline angrywinds

  • Full Member
  • ***
  • Posts: 116
    • View Profile
我觉得可以考虑先让BTS在一些交易网站交易一阵子了,bts-x可以迟阵子,达到PTS现在的这种接受程度,这个攻击的可能性就已经很小了
btsid: btcshares

Offline cgafeng

不知道 成交规则是什么样的,   比如  A 用1BTS 抵押了产生了 100 bitusd,      然后出售 bitusd,     B 用 1BTS 抵押产生了 200个 bitusd    C想用 1BTS 买 150个 bitusd, 
那成交 B 还是成交 A?
A的卖出价格 是 0.01BTS/bitusd   B的卖出价格是0.005BTS/bitusd      C的买入价格是 0.0067BTS/bitusd
那就应该 B和C成交吗 ? 
而我认为应该是 A 和B成交,
如果B和C成交,这个系统本身就是一个发散的系统?

系统成交的规则是最高买价和最低卖价匹配,就你说的这种情况就是B和C成交,按C的买入价格,C超出B的卖价部分的bts直接摧毁。
即C以0.0067BTS/bitusd买到150个bitusd,B以0.005BTS/bitusd卖出150个bitusd,摧毁bts=(0.0067-0.005)*150 = 0.255bts
BTC:1EYwcZ9cYVj6C9LMLafdcjK9wicVMDV376

Offline cgafeng

其实不会发生楼主说的这种情况,市场深度限制了参与交易的玩家数量,没达到一定数量不会产生交易。
所以BM之前有提过说bts发布后要冻结市场x天后才开始产生交易单,他假设了一个数值,14天。
你假设的这种情况只会发生在参与交易的人数很少的情况下,即大部分买单卖单都是同一个人的,那他当然想怎么买卖都没问题,参与的人多了就不可能操纵市场,除非你握有大量筹码,比如超过30%bts。但在现实中如果你手中握有超过30%RMB的话同样可以操纵任何市场。
所以你的这种假设是没有意义的。
« Last Edit: March 01, 2014, 10:45:28 pm by cgafeng »
BTC:1EYwcZ9cYVj6C9LMLafdcjK9wicVMDV376

Offline BTSdac

  • Hero Member
  • *****
  • Posts: 1219
    • View Profile
  • BitShares: K1
不知道 成交规则是什么样的,   比如  A 用1BTS 抵押了产生了 100 bitusd,      然后出售 bitusd,     B 用 1BTS 抵押产生了 200个 bitusd    C想用 1BTS 买 150个 bitusd, 
那成交 B 还是成交 A?
A的卖出价格 是 0.01BTS/bitusd   B的卖出价格是0.005BTS/bitusd      C的买入价格是 0.0067BTS/bitusd
那就应该 B和C成交吗 ? 
而我认为应该是 A 和B成交,
如果B和C成交,这个系统本身就是一个发散的系统?
github.com :pureland
BTS2.0 API :ws://139.196.37.179:8091
BTS2.0 API 数据源ws://139.196.37.179:8091

Offline Sharp116

  • Newbie
  • *
  • Posts: 19
    • View Profile
我觉得只限制块内就够了,块之间不要互相限制,否则又搞麻烦了。
比如有人上来就拿 1xst 买0.000000000001 bitusd,咱们就傻了,如果块之间有限制,xst 再也涨不回来了


以上一个块的最高价和最低价作为参考,下一个块的最高价不能超过上一个块的最高价的x倍,最低价不能低于上一个块的最低价的1/y,只要x、y设置合理(可能的话可引入动态调整机制),并不会对正常的市场波动产生多少影响,但能非常有效地避免诸如此类1XTS成功抵押1万亿bitusd的案例。

始终认为,这样一个去中心化交易体系,许多参数都需要不断测试才能找到合适的数值范围,still a long journey to go..

漏洞命名:“XTS快速升值漏洞”
漏洞症状:已如alt老兄所述
漏洞后果:将造成系统中存在超巨量、极低于当前市场共识价格的bitusd,使得bitusd从根本上无法锚定美元。
« Last Edit: March 01, 2014, 06:17:32 pm by Sharp116 »

Offline BTSdac

  • Hero Member
  • *****
  • Posts: 1219
    • View Profile
  • BitShares: K1

有几个问题:
1. 对xts有16个资产,如果想交易,买单卖单就要保证至少 32%的xts挂在市场上,不知道这样是否会压抑市场交易?
2. 这个市场深度好像无法有效保护攻击,有10%xts 就很可能发动攻击。
比如bitusd的买单,总共有4万个xts,要买4000万个bitusd。我先挂 1xts买 1万亿bitusd,再按10倍抵押,拿40万个xts,发行10亿亿个bitusd,把买单打穿,同时我的最低价成交,获得1万亿 bitusd。
实际攻击成本可能更低。在市场上bitusd买单本来就不多,比如 4千个xts的时候,我自己挂1个xts买1万亿bitusd,同时挂4万个xts买10亿亿bitusd(仅仅是为了满足市场深度的限制,不需要成交)。然后我只需要拿出10倍抵押,也就是4万个xts发行10亿亿bitusd,最后卖给自己1万亿。

40万个XTS 发行10亿亿个bitusd ,那你的 BTS 价格是很高的,  如果有人用 1个 BTS 发行 100个bitusd,那你发行的 BITUSD 就不可能成交, 除非你先把别人发行的那个100个 bitusd(1个 BTS 发行 100个bitusd)先买掉

github.com :pureland
BTS2.0 API :ws://139.196.37.179:8091
BTS2.0 API 数据源ws://139.196.37.179:8091

Offline alt

  • Hero Member
  • *****
  • Posts: 2821
    • View Profile
  • BitShares: baozi
我觉得只限制块内就够了,块之间不要互相限制,否则又搞麻烦了。
比如有人上来就拿 1xst 买0.000000000001 bitusd,咱们就傻了,如果块之间有限制,xst 再也涨不回来了

Offline checkie

  • Full Member
  • ***
  • Posts: 162
    • View Profile
这个要顶,限制下一个块的涨跌幅度,超过幅度的不能成交

Offline alt

  • Hero Member
  • *****
  • Posts: 2821
    • View Profile
  • BitShares: baozi
每个区块设置一个涨停跌停也是可以的,幅度到10%就不允许成交了。按5分钟一个区块,这已经够刺激了。
这规则也挺简单的

Offline metalallen

  • Sr. Member
  • ****
  • Posts: 262
    • View Profile
没关系,测试期能够解决这个问题
浮壹白的微博:http://weibo.com/u/2279693077
BTSX Account:metalallen

Offline taoljj

  • Full Member
  • ***
  • Posts: 177
    • View Profile
同意 要是有攻击 10倍抵押用处不大
还需另外限制
BTS      Witness: delegate.taoljj

Offline 00091lacer

  • Hero Member
  • *****
  • Posts: 624
    • View Profile
LZ应该向BM提这些意见,不过10倍的抵押量确实对交易带来了很大限制,因为这是个新系统,很多人不熟悉,又因为这个抵押量过大很少人会进入这个系统交易。这样极有可能BTSX初期发展带来不利影响。

Offline Sharp116

  • Newbie
  • *
  • Posts: 19
    • View Profile
思考了很久,似乎只有限制单位时间段内的涨跌幅度才是最终解决之道。。。测试链期间坚信有大户会尝试一下这个bug :o :o :o

Offline HackFisher

  • Hero Member
  • *****
  • Posts: 883
    • View Profile
可能没有完全理解楼主的意思,但是不喜欢太复杂的设计,越复杂漏洞越多,打patch打不完
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.

Offline checkie

  • Full Member
  • ***
  • Posts: 162
    • View Profile
同意楼上,现实股市的限涨跌方法可以借鉴,但会增加系统开发难度,分布式的系统不好做到实时调控

Offline alt

  • Hero Member
  • *****
  • Posts: 2821
    • View Profile
  • BitShares: baozi

I have a laundry list of items that need to be addressed.  There have been a number of requests discussed in this thread and in the attack thread that are causing some delays.   Things I need to handle are:

1) Enforce minimal market depth.
2) Increase default collateral requirement to 10x.
3) Fix a bug where wallet loading errors erase wallet contents.
4) Cover a position without requiring additional capital.
针对bts交易攻击,以上是 bm 的4点修改计划。今天bm又提交了部分代码,市场深度是要求买单/卖单都有1%的xts。
Quote
Initial code for tracking market depth prior

Requires at least 1% of the shares to be on each side of the market
before automatic trading will execute for a given pair.
有几个问题:
1. 对xts有16个资产,如果想交易,买单卖单就要保证至少 32%的xts挂在市场上,不知道这样是否会压抑市场交易?
2. 这个市场深度好像无法有效保护攻击,有10%xts 就很可能发动攻击。
比如bitusd的买单,总共有4万个xts,要买4000万个bitusd。我先挂 1xts买 1万亿bitusd,再按10倍抵押,拿40万个xts,发行10亿亿个bitusd,把买单打穿,同时我的最低价成交,获得1万亿 bitusd。
实际攻击成本可能更低。在市场上bitusd买单本来就不多,比如 4千个xts的时候,我自己挂1个xts买1万亿bitusd,同时挂4万个xts买10亿亿bitusd(仅仅是为了满足市场深度的限制,不需要成交)。然后我只需要拿出10倍抵押,也就是4万个xts发行10亿亿bitusd,最后卖给自己1万亿。

我觉得解决办法应该抓住两个重点:
1. 对发行bitusd的卖单可以做延迟,比如1小时之后才能成交,这样买单会有博弈,发行的bitusd无法保证被自己拿到,增加攻击风险。
2. 对发行bitusd的价格可以做限制,比如涨跌幅度不能超过10倍。
« Last Edit: March 01, 2014, 09:53:00 am by alt »