Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - theoretical

Pages: 1 ... 14 15 16 17 18 19 20 [21] 22 23 24 25 26 27 28 ... 34
301
The max short holding period [1] will greatly improve the ease of implementation of shorts paying yield to the longs.  Let's discuss my proposed implementation:

Figure out the monthly yield rate r, I will use r = 1% for examples because it is easy to work with.  How the value of r should be determined is a totally separate issue that I will not address in this post.

When a short starts out, its USD liability will internally be set to (1+r) times the BitUSD given to the buyer.  The extra BitUSD will go into a network-controlled "short yield fund".  In exchange, the short position will get a "short yield fund claim note" with a face value equal to the extra BitUSD.  The claim note is a network-enforced promise from the short yield fund with the following terms:

Code: [Select]
If the attached short position is liquidated after t months, this claim note shall be redeemed for 1-t times its face value.

Shorting 100 BitUSD at 30 BTSX / BitUSD at the minimum collateral ratio would then result in the short position's balance sheet looking like this:

Code: [Select]
Assets                                          Liabilities
Collateral                  6000 BTSX           Promise to repay        101 BitUSD
Claim note                   1-t BitUSD         Short holder equity     ???

The columns must balance.  This allows us to solve for the short holder's equity:

Code: [Select]
101 BitUSD + short_holder_equity = 6000 BTSX + (1-t) BitUSD
->           short_holder_equity = 6000 BTSX - (100+t) BitUSD

Moreover the short yield fund's books are very simple.  The decrease over time of the value of claim notes issued by the fund will generate income for the fund.  This income will occur at an easily computable linear rate that only changes when new shorts are executed or existing shorts cover.  This income can go directly into the yield fund payable to longs every block.  No unbacked BitUSD are ever printed; every BitUSD is at all times backed by a collateralized short promise.

It should be emphasized that the short yield fund and claim notes are an internal book-keeping mechanism.  The user interface should simply show the BitUSD required to cover (in the example, 101 BitUSD minus the claim note's current value) at any given time.  So after 0.75 months for example, the user covers with 100.75 BitUSD, the claim note is redeemed for 0.25 BitUSD.  The total of 101 BitUSD then satisfies the Promise to Repay 101 BitUSD.

We may wish to change the margin call price and minimum collateral requirement computations to be based on 101 BitUSD instead of 100 BitUSD, especially if the mechanism for setting r is some algorithm that could potentially set a high value for r.

[1] https://bitsharestalk.org/index.php?topic=9512.0

302
General Discussion / Re: Proposed Future DAC Delegate Pay Model
« on: September 29, 2014, 08:00:08 pm »
I propose 101 "technical delegates" as currently, plus up to 101 "business delegates"

This proposal was unexpectedly contentious.  The key words are up to -- I expect the number of business delegates at any one time to be very far below the limit.  I don't think there are anywhere near 101 organizations currently operating within the BitShares space whose models justify inflation.  I'm not sure that there will ever be anywhere near 101 organizations that we want to be funding directly from inflation.

The 101 number was intended to be more along the lines of a technical protocol-level limit.  Initially recipients of the inflation would likely be I3 and perhaps one to three other key partners.

But if we get a couple more solid partners, we don't want to be in a situation of "A quorum of shareholders agrees this fifth partner would really help us, but the code really can't support more than four, so to add them we have to kick somebody out, oh noes what do we do?"

303
General Discussion / Re: Proposed Future DAC Delegate Pay Model
« on: September 29, 2014, 06:38:49 pm »

 +5% for separate business (sub)accounts.  I propose 101 "technical delegates" as currently, plus up to 101 "business delegates", each requires 51% approval.  Keep the design simple and conservative.

Having non-separate accounts as in the original proposal would mean the business delegates' funding is contingent on their ability to produce blocks, which means they should invest a substantial portion of that funding into making their block production infrastructure ironclad against failures ($10 million / year ~ $1000 per hour of downtime).  You'd basically force delegates to use a portion of the created inflation to pay IT costs that are not required for the network to function.

304
General Discussion / Re: Proposed Future DAC Delegate Pay Model
« on: September 29, 2014, 05:47:58 pm »

I am on board with bytemaster's suggestion for future DAC's.

I would even go so far as to say we could even increase max delegate pay in BTSX without breaking the social contract, so long as the total delegate pay never exceeds total fees / burn.

But I am worried about arhag's objection [1] that delegates with support from a substantial minority of the network may be able to game the system and introduce a level of inflation that is neither justified by their activities nor approved by a majority.

How about having each balance vote for a desired overall inflation cap as well as a slate of delegates?  Then we can determine a "consensus inflation cap" as the point where 50% [2] of outstanding shares have approved that cap or some higher cap.  We can implement this by giving only e.g. 256 choices for the desired inflation cap, and keeping track of the number of votes for each choice.  Then you sum the table from highest inflation cap down, stopping when you've accumulated more than 50% of the total share supply -- the inflation cap at which that happens is the maximum desired inflation the shareholders are willing to tolerate.

If all delegates' requested funding can be provided within the inflation cap, then everything is OK.  Otherwise, we adjust the delegates' pay rates downward proportionally [3] until the effective inflation level is equal to the consensus level.  And prominently display some "WE ARE IN A BUDGET CRISIS" banner on everyone's client until the situation is resolved, which happens when:

- Some or all delegates reduce their requested funding levels so the inflation cap is no longer exceeded ("management cuts costs to avoid shareholders' wrath")
- Shareholders agree to more dilution by adjusting their inflation cap upwards ("shareholders approve management's request for greater funding")
- Shareholders vote out delegates with high funding requirements in favor of delegates with lower expenses ("shareholders fire management for blowing the budget")

The banner would fight voter apathy by serving as a call to action to all delegates and shareholders that now is a time to get involved in the debate and examine your votes, regardless of which of the above policy choices you support.

[1] https://bitsharestalk.org/index.php?topic=9452.msg122842#msg122842

[2] Instead of 50%, you could make this a parameter MAX_INFLATION_QUORUM and require e.g. 55%, 60% or 66.7% quorum to set the inflation cap.

[3] Other downward adjustment schemes are possible, where e.g. the pay of the delegates with the most recent raises is cut first, or there is some explicit prioritization of delegates.  These likely would be additional implementation complexity for unclear benefits.

305
DAC PLAY / Re: Whens the Poker DAC coming out?
« on: September 29, 2014, 06:06:23 am »

The solution is trivial:  Only allow 1-on-1 matches.

306
The system's current implementation relies more heavily on feeds than the original design.  Frequent publishing of feeds will increase the stability and integrity of the system.

However, AFAIK currently delegates must pay a transaction fee to publish a feed.  I think a delegate who has published fewer than, say, 200 feed updates in the past 72 hours should be able to publish a feed update for free (no tx fee).

The quota should be high enough to allow delegates to allow rapid response in volatile market conditions, but low enough that all delegates regularly filling their quotas would still use only a negligible amount of blockchain storage.

Scripts should still defer publishing updates due to tiny price movements, to conserve quota which can be "bursted" if a volatile condition occurs later.

Thoughts?

307
General Discussion / Re: Alternative solution to feeds via delegates
« on: September 29, 2014, 03:20:55 am »
Tradeable IOU's against USD, BTC, etc. deposits already possible with user-issued assets.  The main barrier is making exchanges aware that the functionality is available, and convincing them to pay the ~$6000 asset registration fee.  Perhaps if an established major exchange expresses serious interest but doesn't want to pay the fee, the developers could offer a hardfork that reduces or waives the fee for the exchange's specific TITAN account?

We should have someone contact Bitstamp and ask if they'd be interested.  They're already doing something similar with Ripple.

308
General Discussion / Re: Different fees for different short holding periods
« on: September 29, 2014, 03:03:30 am »
I was thinking some more about my above post.  I realized that, instead of pulling a table of numbers out of thin air, we can derive the curve from geometric-random-walk theoretical model of how prices change over time.  Basically you assume the current price incorporates all available information, and moves based on the cumulative effect (sum) of a bunch of small random events.  Which means the price at time t will be drawn from a Gaussian distribution with mean equal to the current price and standard deviation proportional to sqrt(t).  But this happens in log-space since investments compound, so it's actually log(price) that's Gaussian with standard deviation proportional to sqrt(t).  (This is a widely used mathematical model of prices.)

The reason we require 1x collateral is we're trying to confine the probability of a black swan [1] at the expiration time T to some bound p_swan.  I'm pretty sure if you believe the geometric-random-walk model, the log of the margin requirement should actually be proportional to sqrt(T).  Setting the 360-day requirement to be equal to the original table gives us these numbers:

Code: [Select]
duration   | min_rat
-----------|----------
14 days    | 0.31x
30 days    | 0.49x
60 days    | 0.76x
90 days    | 1.00x
120 days   | 1.23x
180 days   | 1.67x
270 days   | 2.32x
360 days   | 3.00x

[2**math.sqrt(t / 90.0)-1 for t in [14,30,60,90,120,180,270,360]]     # python code to generate above numbers

A 3.0x collateral requirement for a 1-year short implies a 90-day time horizon for 1.0x collateral.  But mathematical models are not reality, and allowing shorts with less than 1x collateral may be controversial in terms of adding black swan risk to the system.  So I suggest using this formula / table, but forcing the minimum collateral to be at least 1x.  The new table is:

Code: [Select]
duration   | min_collateral    | order_priority
-----------|-------------------|-----------------------
14 days    | 1.00x             | collateral_rat / 0.31
30 days    | 1.00x             | collateral_rat / 0.49
60 days    | 1.00x             | collateral_rat / 0.76
90 days    | 1.00x             | collateral_rat / 1.00
120 days   | 1.23x             | collateral_rat / 1.23
180 days   | 1.67x             | collateral_rat / 1.67
270 days   | 2.32x             | collateral_rat / 2.32
360 days   | 3.00x             | collateral_rat / 3.00

where of course collateral_rat is shorter_collateral / (price * quantity) and min_collateral is the minimum value of collateral_rat required for the short to execute.

[1] An adverse price movement that wipes out the collateral and puts the short "underwater," i.e. the BitUSD that must be destroyed to cover the short is more valuable than the collateral that would be unlocked.

309
General Discussion / Re: Different fees for different short holding periods
« on: September 29, 2014, 02:02:45 am »

I like mf-tzo's idea to allow expiry date of one year or less to be chosen by the user.

I suggest making a larger minimum requirement for collateral ratio depending on age.  E.g.:

Code: [Select]
duration   | min_rat
-----------|----------
14 days    | 1.00x
30 days    | 1.20x
60 days    | 1.30x
90 days    | 1.50x
120 days   | 1.75x
180 days   | 2.00x
270 days   | 2.50x
360 days   | 3.00x

The min_rat is the minimum collateral required to initiate the position, and also serves as a divisor for the collateral amount when ordering the short book.  E.g. the system will prefer a 14-day short at 2.01x collateral to a one-year short at 6.00x collateral (but would switch to preferring the one-year short at 6.03x collateral or better).

In other words, there are now two dimensions of user-specified parameters:  Collateral ratio and expiration date.  The system "likes" higher ratios and earlier expiration dates, but sometimes the system will have to trade off these two preferences against each other.  I.e. the system will sometimes have to choose between matching a bid against a short-term short order without very much collateral, or a long-term short order with lots of collateral.  And I'm suggesting implementing this comparison by computing offer.collateral_rat / offer.min_rat for all offers in the short wall, and putting the offer with the highest value first.

BTSX bulls can then make a choice between a long-term low-leverage bet, or short-term high-leverage bet.  The duration can be any number of blocks between 14 days and one year, the system should use some reasonable interpolation of the above table in that case (or just hard-code some polynomial function which gives approximately the desired values.)

The larger collateralization is effectively charging the long-term shorts interest in the form of forcing them to forgo the greater returns they could have gotten at greater leverage.  (The network is unable to predict future prices and determine if they would have realized greater returns or greater losses, but the short seller him/herself must believe that greater leverage would lead to greater returns [1], otherwise they wouldn't be short-selling!)

[1] Assuming that the bullish BTSX bet is a small fraction of their overall investment portfolio.

310
General Discussion / Re: bitGLD is LIVE!
« on: September 29, 2014, 01:19:48 am »
Here's what I'm seeing:

Code: [Select]
>>> blockchain_market_order_book GLD BTSX
                  BIDS (* Short)                                        |                                   ASKS                                 
TOTAL                     QUANTITY                                     PRICE | PRICE                                        QUANTITY                     TOTAL   COLLATERAL
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
0.332047 GLD              12,820.34749 BTSX               0.000025900000 GLD*| 0.000025899355 GLD                     965.27500 BTSX              0.024999 GLD
                                                                             | 0.000025966903 GLD                   3,851.05605 BTSX              0.099999 GLD
                                                                             | 0.000025969500 GLD                   1,155.20130 BTSX              0.029999 GLD
                                                                             | 0.000026072220 GLD                     464.09549 BTSX              0.012099 GLD
                                                                             | 0.000026097390 GLD                   3,831.80077 BTSX              0.099999 GLD
                                                                             | 0.000026100000 GLD                     114.94252 BTSX              0.002999 GLD
                                                                             | 0.000033178535 GLD                     968.99999 BTSX              0.032149 GLD
                                                                             | 0.000033333333 GLD                  30,000.00000 BTSX              0.999999 GLD
                                                                             | 0.000040000000 GLD                  50,000.00000 BTSX              2.000000 GLD
                                                                             | 0.000050000000 GLD                  80,000.00000 BTSX              4.000000 GLD
                                                                             | 0.000780640000 GLD                   1,281.00000 BTSX              0.999999 GLD
                                                                             | 0.000815294933 GLD                   3,679.64999 BTSX              2.999999 GLD
                                                                             | 0.990099009901 GLD                   2,828.00000 BTSX          2,799.999999 GLD
                                                                             | 1.000000000000 GLD                     100.00000 BTSX            100.000000 GLD
                                                                             | 1000.000000000000 GLD                    1.00000 BTSX          1,000.000000 GLD
                                                                             |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                             SHORT WALL                                      |                                   MARGIN                                 
TOTAL                     QUANTITY                          COLLATERAL RATIO | CALL PRICE                                   QUANTITY                     TOTAL   COLLATERAL
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
0.032149 GLD              1,241.27413 BTSX                         100001.00 | 0.000017857143 GLD                       6.30000 BTSX              0.000100 GLD   8.40000 BTSX
0.100000 GLD              3,861.00386 BTSX                          80000.00 |
0.099999 GLD              3,860.96525 BTSX                          70000.00 |
0.099899 GLD              3,857.10424 BTSX                          44000.00 |
Center Price: 0.0000259 GLD / BTSX     Maximum Short Price: 0.0000259 GLD / BTSX     Bid Depth: 22,610.63215 BTSX     Ask Depth: 179,249.42111 BTSX     
>>> blockchain_market_status GLD BTSX
{
  "quote_id": 7,
  "base_id": 0,
  "bid_depth": 2261063215,
  "ask_depth": 17924942111,
  "center_price": 2.5899999999999999e-05,
  "last_error": null
}

Top bid isn't executing.  Looks buggy to me!  (Current block is #607787.)

311
General Discussion / Someone please tell DACsunlimited not to use MD5
« on: September 28, 2014, 08:07:38 pm »
Anyone who uses the BitShares client is trusting their money to the maintainers' cryptography skills.

Signing releases with MD5 does not inspire confidence in those skills.

For security, it is necessary to use an up-to-date hash algorithm like sha256sum.  MD5 is insecure; it has a history of published vulnerabilities and successful practical collision attacks.

Using an up-to-date algorithm is not sufficient to guarantee security.  An attacker with the capability to replace the binary download with a malicious file would also be able to replace the hash.  The hash MUST be signed with a trusted public key!

Here is how releases should be signed:

Code: [Select]
$ sha256sum BitSharesX-0.4.18-x64.exe | tee BitSharesX-0.4.18-x64.exe.sha256sum
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  BitSharesX-0.4.18-x64.exe
$ bitshares_client
>>> wallet_sign_hash drltc "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
"20db75781b52d8830b1eb080fc0f130bce8ce76d0cf1b04a4a00a589404085675b2afc812c9847d1656e0504b6bc0a33f2a4f62671a585c1eec6b5f65cb7ef4b1d"

Then publish the two hex values above.  (For convenience, we put the first number in a file.)  To check, you can run:

Code: [Select]
$ sha256sum -c BitSharesX-0.4.18-x64.exe.sha256sum
BitSharesX-0.4.18-x64.exe: OK
$ bitshares_client
>>> blockchain_verify_signature drltc "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" "20db75781b52d8830b1eb080fc0f130bce8ce76d0cf1b04a4a00a589404085675b2afc812c9847d1656e0504b6bc0a33f2a4f62671a585c1eec6b5f65cb7ef4b1d"
true

Note, "drltc" in the above commands should be replaced with the name of the DACsunlimited release signing account (it is an implementation detail whether to use the main DACsunlimited account for this, or a dedicated sub-account).

The second step is necessary -- an adversary offering a malicious download can compute their own hash, but cannot produce a signature for the malicious hash without access to the private key of the DACsunlimited signing account.  Which can be more thoroughly secured than access to the DACsunlimited Github account (e.g. cold storage).  I was going to post this last night, but I noticed that you can't actually do the last step with the current client version because there is no blockchain_verify_signature command.  I fixed it in this pull request:  https://github.com/BitShares/bitshares_toolkit/pull/822

We should also work on making builds reproducible, so anyone can verify that the released executable was generated from the published source code without any malicious modifications.  But this will likely need more than a single Saturday evening of development time.

312

I think this is already possible.  wallet_account_update_registration has a data field which can contain arbitrary JSON data.  You can access it via the "Edit" tab in your account in the GUI.

313
One thing I never quite got is why didn't Satoshi just go through the trouble to make a better decaying function.  It is like BTC was meant to be a proof of concept which turned out to be a game changer. 

Maybe Satoshi didn't predict the meteoric rise of Bitcoin and the rise of GPU's, and later ASIC's, and the subsequent professionalization of mining.  It's certainly possible to imagine a scenario where Bitcoin was valuable enough to make it worth mining with computers you needed anyway for other purposes, spending spare CPU cycles that would otherwise be wasted anyway, but not valuable enough to justify purchasing dedicated Bitcoin mining equipment.  Satoshi might have predicted that scenario to be the stable state of the system, because people will always need computers for other things, and miners who can write off their equipment as a sunk cost will always be willing to mine at higher difficulty than miners who buy dedicated equipment.  This analysis assumes, of course, that the hardware one would buy specially for dedicated Bitcoin mining has roughly the same hash performance as commodity systems useful for general purpose computing, which is simply no longer the case.

It's also possible Satoshi planned on remaining involved with the community for a much longer period of time, and using his status as the founder to build consensus for a hard-fork with a better function.  But when Bitcoin turned out to get a lot more valuable a lot quicker than Satoshi predicted, he'd have had several reasons to changed those plans.

314
General Discussion / Re: NuBits
« on: September 23, 2014, 08:42:02 pm »
They are also thinking of being closed source because they are worried we might copy them (due to my comments on this thread).

Will people really trust their crypto-money to a closed-source product?  What would keep the creators from including code that quietly lines their own pockets and dilutes everyone else?

315

Hmm.  If many miners all turn off at the same time, and over 50% of the mining equipment in existence is idle -- might some malicious entity or coalition buy up all that mining equipment at a discount and try a 51% attack?

Pages: 1 ... 14 15 16 17 18 19 20 [21] 22 23 24 25 26 27 28 ... 34