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。
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倍。