现在的问题是抵押发行资产时,价格可以随意定,我可以抵押1XTS,发行1亿bitUSD,在精心设计的攻击下,可以让这个挂单成交获取很多bitUSD.
以下是我的修改
1. 首先对每个block,我们可以获取这个block内所有交易中,bitUSD 卖单的最高成交价。可以认为如果按这个价格抵押XTS发行USD,能把USD发行数量限制在安全值内。
2. 为进一步保证安全,可以扫描每个块的bitUSD最高成交价,按最近360个价格取最高值。对初始状态,没有360个块,可以设定一个安全的初始值,比如0.2USD/XTS。到此可以强制规定一个安全的资产发行价。
3. 现在举实例,假设按以上逻辑算出来的发行价为 0.2 USD/XTS
1) 我要拿出20 XTS,按0.18 USD/XTS价格发行,这个价格小于 0.2,所以强制按 0.2USD/XTS发行,加上双倍抵押,只能创造 20 *(0.2/2) = 2 USD。这2个USD直接就创造出来,属于我了。同时按 0.18USD/XTS 挂 USD 卖单。
2) 如果我设定按 0.22 USD/XTS 发行,这个价格本身就大于 0.2,是安全的,就直接按这个 0.22 的价格创造 USD,并挂USD卖单。