News.EOS.WiKi Bilingual News & Info Of EOS

高流动性的价格挂钩代币算法/High Liquidity Price Pegged Token Algorithm

译文/Translated:

今天我要介绍一个新的代币挂钩算法,它能带来高流动性、减少价差。同时,随着抵押品价值不断减少,它还能高效地防止违约。这个算法是一个过度担保的空投头寸,它结合了Bancor算法,对多头和空投头寸提供了流动性。我们用价格馈源来引导市场,但是其影响仅限于偏离时间比较长的情况下,这样才能保护做市商不受影响。

背景

2013年,比特股引入了BitUSD的概念,这个“智能代币”是在比特股代币BTS代币支持下、瞄准美元的代币。BitUSD的运作模式是在希望用BTS做杠杆的人和希望价格稳定的人之间创建订单簿。为了给购买BitUSD的人提供流动性,BitUSD持有人可以在多日延迟后强制平仓至少抵押的空投头寸。这就创造了一个有效的追加保证金,保证BitUSD买家他们的代币总是价1美元的BTS。为了防止违约,如果价格馈源低于最低保证金要求,最低抵押空投头寸也可能被强制平仓。

BitUSD的主要问题是缺少流动性、BitUSD数量有限、和市场价差。做市商被要求运行交易机器人,这样才能在内部订单簿上移动订单。尽管BitUSD持有人拥有一定的流动性,但空投头寸却不能保证存在流动性。最后,如果最少抵押头寸不能获得保证,整个市场就会发生黑天鹅事件。在这种情况下,这种挂钩就会被永久打破,BitUSD和BTS之间就会产生固定汇率。

缺少激励机制创造了BitUSD,低流动性风险(没有不合理的下滑就不能弥补)、意料外的保证金追加,而运行安全的市场制造机器人的困难意味着BitUSD的供给量很少、价差很高。

还有其它很多项目都利用了各类过度担保头寸和保证金要求的形式,而他们都会遇到和BitUSD相似的问题。

传统的衍生市场采用“期货交易”,这样人们就可以提供抵押品,然后在未来某个固定的时间以固定的价格进行结算。这些期货合约是可替代的、在一定的时间内可以进行交易,但是因为存在到期问题和需要结算/转仓,他们不适合做成挂钩代币。

Bancer算法提供了两个资产的自动流动性,同时还保护其储备金,以免被别有用心的人侵占。不管针对Bancor算法的订单数量和种类如何,在资产对价回到初始点时,该算法总能带来一些利润。常见的Bancor做市商是两个“连接器”间的接力,这二者代表了市场价值相等的余额。该算法在诸如EOS RAM市场等市场上都成功地提供了自动流动性。

挂钩算法

挂钩算法的基础概念是空头对多头的服务。这项服务要求卖空者对挂钩币提供流动性。如果有对挂钩币的需求,那么做市商赚到的交易费用对服务提供商来说就是有利可图的,哪怕市场相对萧条。

其它挂钩算法让卖空者相互竞争而不是促成他们的合作,从而给市场带来挂钩货币服务。这些算法中,空投竞相回补和抵押头寸,担心空投挤压。

我们的算法前提是,如果有人能愿意在抵押资产(如EOS)使用稍微长时间的杠杆,他们能够通过促成EOS和某个可替代的挂钩资产(如USD)间的市场做市活动来赚钱,其价值可以在允许范围内瞄准价格。

我们的算法不会让用户创建独立的空投头寸,而实创建一个全局空投头寸,让用户购买和出售该全局头寸的份额。只要中间没有发生其它交易,卖空头寸是一个中性且可逆的过程(减去交易费用)。杠杆不是主要动机,交易费用才是买入头寸的动机。这就意味着,400%的超额担保或者更高的目标是可行的,它可以允许卖空者在担保资产中只是使用少量杠杆,这样它们就有机会赚取交易费用。

做市商最初是通过在合约中存入抵押品形成的。合约会在做市商中创建代币(MMS)并把代币交给最初的存款人。比如,我们假设抵押品是EOS,挂钩的是USD,它要追踪24小时内EOS对应美元的中位数。

目标准备金是确定在,如400%之上的。根据4倍准备率的原则,75%的EOS储备应该被质押,25%会被放在权重50%的Bancer Relay连接器中。这时候,自动化的市场创造合约会创建一些USD代币给第二个Bancor Relay连接器投入资金,这样EOS和USD连接器余额的市场价值和价值馈源的初始值一致。

初始状态下,做市商拥有连接器中100%的USD,因此没有净负债(必须回购的USD)。MMS的账面价值等于连接器中的EOS加上多余的质押EOS减去连接器中出售的任何流通USD。在初始设置之后,任何人都能从做市商中购买USD,这就给MMS持有人带来了未来必须回购的负债。Bancor Relay算法的数学性质说明当用户从做市商手中购买USD之后,报价将会上升。如果每个购买USD的人后来都将其卖出去,那么连接器最终将回归初始状态。交易中产生的任何费用最终会导致连接器余额的EOS的净增长。

考虑到这一设置和400%的准备金目标,我们可以说,实际储备金比售出的USD将远远超过400%。为了把数值调低到400%(没有市场价格变化),整个USD连接器必须得买断,这就会推动USD价格无限上涨。实际操作中,做市商自动提高买入的USD多头成本,因为可用的USD多头供应减少。

做市商提供的现货价值等于EOS比连接器余额中的USD。当现货价格与馈源价格偏离超过可接受的幅度(如+/- 2%)超过可接受的时间(如24小时),那么做市商会根据市场环境采取以下几个行动:

SPOT = price of USD according to Bancor
FEED_USD = price of a federal reserve note in EOS
if( SPOT > FEED_USD ) 
   if( Excess Collateral < 3x EOS Connector )
      then slowly move EOS Connector to Excess (lowering SPOT)
   else
     then slowly add new USD to Connector (lowering SPOT)
else if( SPOT < FEED_USD  )
   if( excess collateral )
       then gradually buy USD using excess collateral
            and destroy it (raising SPOT)
else do nothing

该算法的目标是始终把状态移动得更加接近初始状态,即最初的比Bancor余额多3倍的额外质押品和USD连接器中100%的USD。但很明显,只要还有USD流通,达到连接器中100%的USD就是不可能的,但是,当EOS相对USD的价值显著上升的时候,流通的供给的百分比会下降。

抵押物品转移或USD发行的速度应该调整到目标时间(如1小时)可接受的范围内。理论上,USD价值差不多1美元的时候,交易方应该购买和出售USD,因为他们有信息他们总能够在近期以1美元左右的价格将其出售。这就意味着当EOS和USD的相对价格稳定的时候,做市商就不用依靠价格馈源纠正实时价格,Bancor算法应对认为操控的机制带来的安全性就能保证连接器余额不会被非法转移给交易对象。

在设置参数的时候,如允许的馈源偏移、修正率、价格修正开始前的延期等,很重要的一点是要尽量减少对做市商的积极的干预。如果一定需要干预,那么干预的过程应该是缓慢和渐进的。市场参与者不应该抢在做市商之前获益。

该算法的结果是挂钩资产,它对应24小时的价值中位数,而不是瞬间价值。它只有在做市商24小时的中位数显著高于市场24小时的价值中位数的情况下才会积极地修正挂钩率。当实际市场下跌的时候,我们希望交易员能够借助Bancor算法刻意领跑24小时中位数。这种领跑方式能够防止强制调整Bancor连接器,除非是遇到某些拖延时间过长的情况。中位数价格移动越慢,做市商遇到的风险就越小,但是挂钩的USD和实际USD的偏差就越大。让Bancor算法能够有更大比例的偏离(如5%)也能减少馈源影响价格的人为干预。人为干预越少,价格馈源的瞬时精确度相关性就越小。

购买和出售MMS代币

任何人在任何时候都可以拿出新的EOS购买MMS和USD的组合。这是通过维护MMS, EOS, 连接器中的USD和加入新的EOS之后流通中的USD,这几个代币的比例获得的。个人受到MMS,加上相比流通中的USD百分之一的新创造的USD。USD和EOS都被加入到连接器和超额的准备金中。用户可以出售USD获得EOS,重复这个过程,或者就简单持有超额的USD或EOS。

出售MMS代币需要提供的USD数量等于流通中的USD*出售的MMS/MMS供应量。这等于最初他们使用EOS购买MMS(减去任何交易费用)获得的USD数量。

这个过程可以被认为是分割和连接相同的空头头寸。一旦你能控制空头头寸的所有未偿债务,你就可以解除它、收回抵押品。这个过程的关键是保持不变:购买或出售做市商获得/用作抵押物不会改变MMS, EOS, USD和流通中的USD的比例。如果你想出售做市商1%的份额,你就必须购买和覆盖1%流通中的USD。幸运的是,你可以从做市商本身购买流通中的USD,这样流动性就一直存在了。

市场交易费用

用户购买和出售USD, EOS, MMS的时候会产生交易费用。这个费用代表了MMS持有者能够获得的资本收益的收入流。波动性越大、交易越多、费用也就越多。这些费用不断对做市商进行资产重组,不需要那些集体杠杆投资者的任何投入。不管市场条件如何,使用杠杆的人不可能减少他们的抵押品、或不能不逐渐增加抵押品。如果最初的抵押率很高,如4倍,那么抵押品下跌速度会比交易费用增加速度多75%。

黑天鹅

黑天鹅指做市商无法维护USD的价值保持在价格馈源附近。这种情况发生在没有多余的抵押品的情况下。这种情况下,做市商还会继续运作,但是USD的价格会独立于价格馈源浮动。敏锐的观察者就很可能会考虑从连接器的一侧移除USD来维护价格,但是我们不提倡这么做,因为这会在连接器中剩下的EOS产生挤兑。一旦多余的抵押品消失了就让价格浮动,那些想提前退出的人就要为流动性支付溢价,正在进行的交易会对剩下的交易方进行资产重组。

即使在黑天鹅交易期间,由交易费用表现的收入流会刺激交易各方提供抵押品、给做市商提供资金。加入抵押资产(如EOS)没有未来恢复价值的可能,挂钩资产(如USD)的持有人会以市场决定的价格在连接器中获得剩余EOS的合理份额。

和其它系统不同的是,黑天鹅事件不是特例,市场有无缝、自然的恢复方法重新实现挂钩。

如果没有多余的抵押品,做市商会被配置防止出售MMS代币的同时允许以10%的折扣用EOS购买MMS。这会对做市商进行资产重组,就让新的MMS持有人获得比先前的持有人更多的好处。当多余的抵押品重新出现的时候,MMS可以按上述方法再次被出售。多余的抵押品什么时候用完、折扣大小,这些都是变量,我们可以调整这些变量来减少完全耗尽的风险、增大激励机制,快速对市场重组而不会过分惩罚先前的MMS持有人。

价格馈源

产生可信的价格馈源方法很多,但是,要想获得更好的结果,我这里有几个建议。挂钩代币可以追踪任何价格馈源,包括人工馈源,如30天移动平均值等。典型的价格馈源想追踪实时现货价格,但是这个想法对于安全的做市商来说是不大现实的。价格变化越慢,维护挂钩就越简单,因为市场参与者有更多时间条件。

我的建议是,挂钩应该瞄准24小时价格中位数而不是瞬时价格。这会减少挂钩偏离的频率和幅度,同时还不会削弱挂钩的USD作为美元替代品的价值。实际操作中,它将部分日期内波动风险转移给USD持有者(偏离平均值)同时对冲USD持有人面临的长期波动性风险。

我们还需要在市场上进行一些实验,这样才能决定价格馈源的反应性和做市商因为波动产生的盈利能力之间合理的平衡。

其它价格修正方式

当交易者利用算法的时候,他们要么是把Bancor价格推的离馈源更远,要么推得更近。此时,应该会有动态的交易价格,交易让Bancor价格和馈源离得越远,交易费用就越高。这就让MMS持有人增加利润,市场的操控者也不会导致对价格馈源的过度偏离。

结论

相比BitIUSD这样的系统,我们的挂钩方式刺激资产创造、带来流动性,其方式是提向提供抵押品的卖空者提供交易费用,同时还能有效地减少卖空者的大部分流动性风险。此外,这个算法向市场双方提供了相等的流动性,而BitSUD只向市场的一方提供了强制结算。交易费用不断对市场进行再抵押,尽管市场会因为价格变化产生顺势,但是通过这样的再抵押可以让市场恢复。只要来自交易费用的收入大于抵押品价值降幅,系统就能保持偿付能力和流动性。我们认为,这个方法在将风险最小化的同时让参与者获得的效用最大化。

注意:本文提到的经济安排可能(不)符合您所在地的法律法规。请在使用本文提到的方法前咨询专业的法律顾问。实际的表现情况还受制于各类因素,包括应用和选择的配置参数。本文提到的想法和观点是我自己的想法,和我的员工无关。

原文/Original:

Today I introduce a new token pegging algorithm that provides high liquidity and narrow spreads, while being robust against default in the event collateral loses value over time. The basis of our algorithm is a heavily over-collateralized short position combined with the Bancor algorithm to provide liquidity to both long and short positions. A price feed is utilized to guide the market, but its influence is limited to situations where there is a prolonged deviation so as to protect the market maker from abuse.

Background

In 2013 BitShares introduced the concept of BitUSD, a “smart coin”, backed by BTS tokens, which was designed to track the value of the dollar. BitUSD operated by creating an order book between those who wanted leverage on the BitShares token (BTS) and those who wanted price stability. To provide liquidity for those who purchased BitUSD, BitUSD holders were allowed to force-settle the least-collateralized short position at the price feed after a multi-day delay. This created an effective margin-call and assured buyers of BitUSD that their token was always worth about a dollar worth of BTS. To prevent default, the least collateralized short position could also be force closed if the price feed fell below the minimum margin requirements.

The primary problem with the BitUSD approach is the lack of liquidity, the limited supply of BitUSD available, and the market spread. Market makers were required to operate trading bots that move orders on the internal order book. While the BitUSD holders were provided liquidity, the short positions were not guaranteed liquidity. Lastly, the entire market is subject to a black-swan event when the least collateralized position is unable to be covered. When this happens the peg is permanently broken and a fixed exchange rate is established between BitUSD and BTS.

The lack of incentive create BitUSD, the risks of low liquidity (unable to cover without unreasonable slippage), unexpected margin calls, and difficulty in running safe market making bots meant the supply of BitUSD was small and the spreads were high.

There have been many other projects that utilize variations of over-collateralized positions and margin requirements. All of them suffer similar problems to BitUSD.

Traditional derivative markets implement “futures trading” which allows people to post collateral and settle at a price feed at a fixed point in the future. These futures contracts are fungible and can be traded for a certain time, but due to the expiration and required settlement / rollover they are not suitable for creating a pegged token.

The Bancor algorithm provides automated liquidity between two assets while protecting its reserves from being lost to sophisticated traders. Regardless of the number and kind of orders executed against the Bancor algorithm, the algorithm always generates a profit when the price of the asset pair returns to its original starting point. A typical Bancor market maker is known as a relay which has two “connectors” which represent balances of equal market value. This algorithm has been successful at providing automated liquidity in markets such as the EOS RAM market.

The Pegging Algorithm

This pegging algorithm is based upon the concept that a pegged token is a service provided by the shorts to the longs. This service requires the shorts to provide liquidity for the pegged token. If there is demand for the pegged token then trading fees earned by the market maker should be profitable for the service provider even if the market is relatively flat.

Other pegging algorithms pit shorts against each other rather than facilitate their cooperation for the purpose of bringing a pegged currency service to the market. In these other algorithms shorts compete to cover and collateralize their positions and are worried about short squeezes.

The premise of our algorithm is that those willing to be slightly leverage-long in a collateral asset (such as EOS), can make money by facilitating market making activities between EOS and a fungible pegged asset, (e.g. USD), whose value is designed to track a price feed within an allowed deviation range.

Instead of users creating independent short positions, our algorithm creates one global short position and allows users to buy and sell stake in this global position. Buying and selling stake in the short position is a neutral and reversible process (minus trading fees) provided no other trades occur in between. Instead of leverage being the primary motive, trading fees are the motive for buying stake in the position. This means that a target of 400% over collateralization or higher is viable allowing shorts to be only slightly-leveraged in the collateral asset so that they have the opportunity to earn trading fees.

The market maker is initially created by depositing collateral into the contract. The contract will create tokens in the market maker (MMS) and give them to the initial depositor. For the sake of example, we will assume the collateral is EOS and that the pegged token is USD and is designed to track the 24hr median EOS dollar price.

A target reserve ratio is decided upon, for example 400%. Based upon a 4x reserve ratio, 75% of the EOS deposited would be set aside as excess collateral, and 25% would be placed into a Bancor Relay connector with weight of 50%. At this time the automated market maker contract will create a number of USD tokens to fund a second Bancor Relay connector such that the market value of EOS and USD connector balances are the same at the initial value of the price feed.

In the initial condition the market maker owns 100% of the USD in its connector and therefore has no net liability (USD it must buy back). The book value of the MMS is equal to the value of the EOS held in the connector plus the excess collateral EOS and minus any circulating USD sold from the connector. After this initial setup anyone can buy USD from the market maker which establishes a future buy-back liability on the MMS holders. The mathematical properties of the Bancor Relay algorithm mean that as users buy USD from the market maker the offer-price will increase. If everyone who bought USD then sold it back then the connectors would end up in their initial condition. Any fees charged on the trades would result in a net increase in EOS held in the connector balance.

Given this setup and a 400% reserve target, we can demonstrate that the actual reserves vs sold USD will be far in excess of 400%. In order to get down to 400% (without market price changes) the entire USD connector would have to be bought out which would push the USD price to infinity. In effect, the market makers automatically raise the cost of buying a long USD position as the supply of available long USD positions decreases.

The spot-price offered by the market maker is equal to the ratio of EOS to USD held in the connector balances. When the spot price deviates from the feed price by more than an acceptable margin (e.g. +/- 2%) for more than an allowed period of time (e.g. 24 hours), then the market maker will do one of the following actions depending upon market conditions:

SPOT = price of USD according to Bancor
FEED_USD = price of a federal reserve note in EOS
if( SPOT > FEED_USD ) 
if( Excess Collateral < 3x EOS Connector )
then slowly move EOS Connector to Excess (lowering SPOT)
else
then slowly add new USD to Connector (lowering SPOT)
else if( SPOT < FEED_USD  )
if( excess collateral )
then gradually buy USD using excess collateral
and destroy it (raising SPOT)
else do nothing

The goal of this algorithm is to always move the state closer to the initial condition of having 3x more excess collateral than Bancor balance and 100% of USD in the USD connector. It is obviously impossible to achieve 100% USD in the connector while there is circulating USD, but the circulating supply can decrease in percentage terms when the value of EOS rises significantly relative to USD.

The rate at which collateral is moved or USD issued should target a price correction to the within the acceptable range within a targeted period of time (e.g. 1 hour). In theory traders should buy and sell USD as if it were worth about 1 dollar because they have confidence that they will always be able to sell it for about 1 dollar in the near future. This means that when relative price for EOS and USD is stable that the market maker will not have to rely on the price feed to correct the real time price and the security of the Bancor algorithm against manipulators protects the connector balances from being lost to traders.

When configuring parameters such as allowed deviation from feed, rate of correction, and delay until start of price correction it is critical to minimize the frequency of needing active intervention into the market maker and when intervention is needed, that intervention is slow and gradual. Market players shouldn’t be able to front-run the market maker’s moves for profit.

The result of this algorithm is a pegged asset which follows an 24-hr median value instead of an instantaneous value. It only actively corrects the peg when 24-hr median of the market maker is significantly greater than the 24-hr median of the real market. When the real market jumps we want traders to interact with the Bancor algorithm to speculatively front-run the 24-hr median. This front-running prevents the forced adjustment of the Bancor connectors from occurring except in prolonged cases. The slower the median-price moves the less risk to the market maker, but the greater deviation between pegged USD and real USD. Giving the Bancor algorithm the ability to deviate by a larger percent (say 5%) also minimizes artificial interaction with pricing due to feeds. The less artificial interaction the less relevant the instantaneous accuracy of the price feeds become.

Buying and Selling MMS Tokens

Anyone at any time may contribute new EOS to buy a combination of MMS and USD. This works by maintaining the ratio of MMS, EOS, USD in Bancor connector and USD in circulation after adding new EOS. The individual receives MMS plus a percent of the newly created USD proportional to the USD in circulation. USD and EOS are also added to connectors and excess reserves. Users can then sell the USD for EOS and repeat the process or simply hold excess USD or EOS.

Selling MMS tokens requires providing a number of USD equal to USD_circulating * MMS_Sell / MMS_Supply. This is the same quantity of USD they would have received when buying MMS with EOS in the first place (minus any trading fees charged).

This process can be viewed as splitting and joining identical short positions. Once you control all outstanding debt of your short position you can unwind it and get all the collateral back. The key to the process is maintaining the invariant that someone buying or selling the market maker with/for collateral does not change the ratio of MMS, EOS, USD, and USD circulating. If you want to sell 1% stake in the market maker (MMS) then you must also buy and cover 1% of circulating USD. Fortunately, you can buy circulating USD from the market maker itself so there is always liquidity.

Market Trading Fees

As users buy and sell USD, EOS, and MMS a trading fee is charged. This fee represents a revenue stream that results in capital gains to those holding MMS. The higher the volatility the more trading occurs and the more fees are generated. These fees continuously recapitalize the market maker without requiring any input from those who are collectively leveraged. Regardless of market conditions it isn’t possible for those who are leveraged to reduce their collateral or fail to gradually top it up. With a high initial collateral ratio, eg 4x, the collateral would have to fall by 75% faster than trading fees accumulate.

Black Swans

A black swan is any event where the market maker is unable to maintain the value of USD near the price feed. This occurs when the excess collateral is gone. When this happens the market maker will continue to function but the price of USD will float independent of the feed. Astute observers will likely consider removing USD from one side of the connector to maintain the price, but this is unadvisable as it would create a run on the remaining EOS in the connector. By letting the price float once the excess collateral is gone, those who want to exit early pay a premium for the liquidity and ongoing trading will recapitalize the remaining parties.

Even during a black swan, the revenue stream represented by trading fees incentivizes parties to provide collateral and fund the market maker. In the event the collateral asset, (e.g. EOS), has no expectation of future recovery of value, then holders of the pegged asset (e.g. USD) will get a fair share of remaining EOS in the connector at market determined prices.

Unlike some other systems, a black swan event is not a special case and the market has a seamless and natural recovery method to restore the peg.

In the event excess collateral is gone, the market maker could be configured to prevent selling of MMS tokens while simultaneously allowing the buying of MMS with EOS for a 10% discount. This recapitalizes the market maker giving benefit to the new MMS holders over the prior holders. Once excess collateral is restored MMS could be sold again as described above. The exact point of excess collateral depletion and the magnitude of the discount are variables that can be adjusted to minimize the risk of complete depletion and maximize the incentive rapidly recapitalize the market without overly punishing prior holders of MMS.

Price Feeds

There are many different ways to produce a trusted price feed; however, there are some recommendations for better results. A pegged token can track any price feed, including artificial feeds such as a 30-day moving average. Typical price feeds attempt to track instantaneous spot prices, but this expectation is unrealistic for safe market makers. The slower prices change the easier it is for a peg to be maintained because market participants have more time to adjust.

It is my recommendation that pegs target the 24hr median price rather than the instantaneous price. This will reduce the frequency and magnitude of deviations from the peg without undermining the value of the pegged USD as a dollar alternative. In effect, it transfers some of the intraday volatility risk to the USD holder (deviation from the mean) while still hedging the USD holder against long-term volatility.

Some experimentation in the market will be required to determine the proper balance between reactivity of price feed and profitability of the market maker due to volatility.

Alternative Price Correction Measures

When traders interact with the algorithm they are either pushing the bancor price further from the feed, or closer to the feed. It should be possible to have a dynamic fee on trades that grows higher the further the trade would push the bancor price from the feed. This allows MMS holders to increase profits and discourages manipulators from causing excessive deviation from the price feed.

Conclusion

Compared to systems like BitUSD, our pegging approach incentivizes asset creation and liquidity by providing trading fees to the shorts who post collateral while effectively eliminating the majority of liquidity risks of the shorts. Furthermore, this algorithm provides equal liquidity to both sides of the market where BitUSD only provided forced-settlement to one side of the market. Trading fees continuously re-collateralize the market and enable it to recover from losses due to changing prices. So long as income from trading fees is greater than the average fall in the value of the collateral asset the system can remain solvent and liquid. We believe this approach maximizes the utility to all participants while minimizing risks.

Note: The economic arrangements described in this post may or may not be subject to regulations in your jurisdiction. Please seek professional legal opinions before engaging in economic arrangements described. Actual performance will depend upon many factors including implementation and selected configuration parameters. The ideas and opinions expressed above are my own and not those of my employer.

原文链接/Original URL:

https://medium.com/@bytemaster/high-liquidity-price-pegged-token-algorithm-d86d71188162

About the author

By user
News.EOS.WiKi Bilingual News & Info Of EOS

Recent Posts