Bitcoin Forum
June 01, 2024, 10:03:57 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: BTC colored coin marketplace in the blockchain  (Read 2280 times)
cunicula (OP)
Legendary
*
Offline Offline

Activity: 1050
Merit: 1003


View Profile
August 27, 2013, 01:43:28 AM
 #1

There are a bunch of (surprisingly well-funded) projects that propose storing bids and asks in blockchains. This would allow trustless trading of cryptoassets. I would like to suggest a far more space efficient way of organizing on the blockchain markets. The idea is to conserve space by clearing market pools periodically rather than using atomic exchanges between individuals. There may be anonymity advantages to pools as well though I have no expertise in that area.

Step 1: Market maker creates pool for trading two assets say BTC and Cryptostock shares. He feels that the fair market value of cryptostock is share 1 BTC = 2 Shares. Accordingly, he creates a novel market pool by depositing 100 BTC and 200 shares (the scale here reflects the spread demanded by the market maker; the proportion reflects the maker's evaluation of a fair market price). He specifies a duration for the pool (a number of blocks say 1000).

Step 2: Alice would like to buy 1 BTC of Cryptoshares. She deposits 1 BTC in the pool in a subsequent block and perhaps indicates a receiving address for the shares.

Step 3: Bob would like to buy 1 Cryptoshare of BTC. He deposits 1 cryptoshare in the pool and perhaps indicates a receiving address.

Step 4: 1000 blocks have passed and the pool clears. At clearing the pool contains 101 BTC and 201 shares. The pool clearing price is therefore 1 BTC = 1.99 Shares (after rounding). Therefore,
Market Maker receives 200/1.99=100.5025 BTC and 199 Shares. The 0.0025 BTC can be viewed as profit from market making.
Alice Receives 1.99 Shares
Bob Receives 1/1.99=0.5025 BTC

What is the point of this? Bob and Alice are able to trade without direct pairwise interaction and without trusting a third party. Arbitrage ensures a fair market price. The blockchain hosts an active market for price setting but is not cluttered by bids and asks. In fact, blockchain storage demands are not really different from those associated with a traditional exchange mediated by a trusted third party. The space saving comes from clearing markets periodically rather than atomically.

I think this is how on the blockchain trade will ultimately be organized in altchains. The alternatives are impractical in light of storage and bandwidth constraints.

gmaxwell
Moderator
Legendary
*
expert
Offline Offline

Activity: 4200
Merit: 8439



View Profile WWW
August 27, 2013, 02:47:49 AM
 #2

These system are, in my view, largely misguided.  Except for the ones that intend to replace Bitcoin with their own currency for the asset to have any value at all there must be a trusted custodian (e.g. business owner, etc). Once you have one of those they could simply take care of tracking the assets (in a public blockchain if you like) with just highly efficient timestamping against bitcoin as needed.  Atomic trades with bitcoin in and out of these systems are perfectly possible using simple hash locked cross chain escrow transactions.

The shove everything in the blockchain modality here seems like a mixture of failed imagination and understanding coupled with either a desire to externalize operating costs on the very scarce public network capacity or a lack of understanding of the costs involved at all.

Regardless, their plans are rather dangerous— for them at least— because when transaction pressure in the future makes their little micro-transaction trades infeasible they may have a rather  difficult time unwinding the situation that they've created.  Bitcoin is a digital cryptocurrency, thats what the users of it signed up for— and if other uses turn out to be parasitic and interfere with Bitcoin's intended usage  the users of these systems should not expect the Bitcoin side to be the side which must compromise.
maaku
Legendary
*
expert
Offline Offline

Activity: 905
Merit: 1011


View Profile
August 27, 2013, 07:54:42 AM
 #3

There is absolutely no reason to put bids and asks in the block chain. You don't need consensus on bids and asks, just the resulting trades. A better model is to broadcast bids and asks, and have miners or other agents only commit matched exchanges. This is the approach we are taking with Freimarkets (and we do so avoiding direct pairwise interaction or trusted third parties, and with off-chain transactions as an option).

The use-a-block-chain-for-everything mentality is somewhat bizarre - a very scarce public resource should be only be used conservatively and when it is absolutely needed.

I'm an independent developer working on bitcoin-core, making my living off community donations.
If you like my work, please consider donating yourself: 13snZ4ZyCzaL7358SmgvHGC9AxskqumNxP
cunicula (OP)
Legendary
*
Offline Offline

Activity: 1050
Merit: 1003


View Profile
August 27, 2013, 08:28:00 AM
Last edit: August 27, 2013, 12:02:26 PM by cunicula
 #4

There is absolutely no reason to put bids and asks in the block chain. You don't need consensus on bids and asks, just the resulting trades. A better model is to broadcast bids and asks, and have miners or other agents only commit matched exchanges. This is the approach we are taking with Freimarkets (and we do so avoiding direct pairwise interaction or trusted third parties, and with off-chain transactions as an option).

The use-a-block-chain-for-everything mentality is somewhat bizarre - a very scarce public resource should be only be used conservatively and when it is absolutely needed.
Atomically Matched trades remain highly resource intensive. Just look at a mt.gox feed. People will do a large number of very small trades under this framework to manipulate prices. Pooling and clearing at fixed time intervals would solve this problem. Under pooling and clearing at fixed intervals, you would only see tiny trades in the final blocks before the clearing event. Under atomic exchanges, you will see a constant stream of nuisance txns coming from speculators.

Another way of putting this: on-the-blockchain asset trades should be limited to periodic clearing of high value txns. The market should be organized specifically for this purpose. I.e. you want to make periodic clearing as space efficient as possible.

Finally, it is not just on the blockchain storage that matters. You also want to consider bandwidth. If fast p2p communication of bids and asks is aided by sophisticated hardware, then you will bias the market against individual participation.
maaku
Legendary
*
expert
Offline Offline

Activity: 905
Merit: 1011


View Profile
August 27, 2013, 03:56:27 PM
 #5

Offers are pooled and cleared about every 10 minutes or so, exactly what you're asking for now. Miners are free to enforce a spread by not matching transactions unless there's enough of a crossover fee to to justify the effort. In fact, that would be the expected default behavior if matched exchanges are treated like other transactions - they only get selected for inclusion if they meet the fee thresholds.

You seem to have retracted from the everything-on-the-block-chain position. But specifying some explicit mechanism for aggregating offers and clearing trades is not the correct approach either. In that case you end up mandating the conditions under which one may run an exchange node, ending up with a compromise the fits nobody's needs.

The best approach is to specify what an offer looks like, how they are combined into atomic trades, and that's it. Let competitive pressures determine how often the market is cleared, what minimum fees are required, what matching engine technologies are used, and what latency vs. volume tradeoffs are made.

I'm an independent developer working on bitcoin-core, making my living off community donations.
If you like my work, please consider donating yourself: 13snZ4ZyCzaL7358SmgvHGC9AxskqumNxP
cunicula (OP)
Legendary
*
Offline Offline

Activity: 1050
Merit: 1003


View Profile
August 27, 2013, 05:44:25 PM
Last edit: August 27, 2013, 06:21:24 PM by cunicula
 #6

I'm asking for more like once a week, not every 10 minutes.

Edit: to clarify this is the only really meaningful difference between our implementations. We have a substantive difference in views however. I'm advocating a restriction to a type of contract that prohibits use of the blockchain for day trading. You are relying on the price of blockchain space to do this. I'm worried that this price is much too low. Raising the price might not be the right answer either. I  believe that alternative uses of blockchain space such as exchanges of coins for goods generate more positive network externalities than speculative trades (or other types of gambling for that matter). If so it makes sense to regulate use of blockchain space where feasible (e.g. if it could be implemented purchases of groceries should pay lower fees for space than satoshi's dice gambles.) Legit purchases of goods offer external benefits for the broader btc community besides the actual txning parties, specifically they ecourage merchant adoption. This should be a primary goal. If you give away the blockchain to speculators you will crowd out merchant use. That's okay in a the very long run, but not as long as the network has room to grow through further adoption. Have you seen The Social Network? Promoting adoption is the correct strategic choice in the medium term.

However, even if there are no externalities I still disagree with you. You are assuming that the market will find a socially optimal outcome. I would agree with you if we knew that the market price of blockchain space was equal to the socially optimal price. There is no reason to assume that this is the case however. The market price is based on arbitrary development choices and has no intrinsic relationship to the socially optimal price. It is a command economy price.

Given this command price environment, it is prudent to encourage as efficient a use of space as possible. It is much easier (politically speaking) to relax a constraint like this than to impose a more stringent one.

As for my view on all in the blockchain, you are misunderstanding me. In my system bids and asks are unnecessary. The price info is embedded in the ratio of quantifies traded. This would have to go inside the blockchain in any case. Consequently, the trading system does not impose any additional storage or bandwidth requirements. That is the big appeal.

I also disagree with respect to allowing markets to figure out how to use contracts. Since the prices for space are arbitrary, there is no reason to expect optimal choices of contract type. You can't assume that a market-command hybrid will generate a better outcome than pure command. Often, the opposite is the case.

Luckybit
Hero Member
*****
Offline Offline

Activity: 714
Merit: 510



View Profile
August 30, 2013, 07:35:40 AM
 #7

There is absolutely no reason to put bids and asks in the block chain. You don't need consensus on bids and asks, just the resulting trades. A better model is to broadcast bids and asks, and have miners or other agents only commit matched exchanges. This is the approach we are taking with Freimarkets (and we do so avoiding direct pairwise interaction or trusted third parties, and with off-chain transactions as an option).

The use-a-block-chain-for-everything mentality is somewhat bizarre - a very scarce public resource should be only be used conservatively and when it is absolutely needed.

Why not use off-chain mechanisms. Any mini blockchain would work right?
maaku
Legendary
*
expert
Offline Offline

Activity: 905
Merit: 1011


View Profile
August 30, 2013, 07:55:42 AM
 #8

There is absolutely no reason to put bids and asks in the block chain. You don't need consensus on bids and asks, just the resulting trades. A better model is to broadcast bids and asks, and have miners or other agents only commit matched exchanges. This is the approach we are taking with Freimarkets (and we do so avoiding direct pairwise interaction or trusted third parties, and with off-chain transactions as an option).

The use-a-block-chain-for-everything mentality is somewhat bizarre - a very scarce public resource should be only be used conservatively and when it is absolutely needed.

Why not use off-chain mechanisms. Any mini blockchain would work right?

That's what I've proposed:

https://bitcointalk.org/index.php?topic=280292.0

I'm an independent developer working on bitcoin-core, making my living off community donations.
If you like my work, please consider donating yourself: 13snZ4ZyCzaL7358SmgvHGC9AxskqumNxP
cunicula (OP)
Legendary
*
Offline Offline

Activity: 1050
Merit: 1003


View Profile
August 30, 2013, 03:30:36 PM
 #9

There is absolutely no reason to put bids and asks in the block chain. You don't need consensus on bids and asks, just the resulting trades. A better model is to broadcast bids and asks, and have miners or other agents only commit matched exchanges. This is the approach we are taking with Freimarkets (and we do so avoiding direct pairwise interaction or trusted third parties, and with off-chain transactions as an option).

The use-a-block-chain-for-everything mentality is somewhat bizarre - a very scarce public resource should be only be used conservatively and when it is absolutely needed.

Why not use off-chain mechanisms. Any mini blockchain would work right?

That's what I've proposed:

https://bitcointalk.org/index.php?topic=280292.0

Just in case it is not clear, the method I'm proposing doesn't use bids and asks at all. So there is nothing to store.

Intuitively, the space advantage comes from trading a large volume of assets in a weekly market fair, instead of a small volume of assets once every ten minutes.

Restricting on-the-blockchain trades to a weekly market fair effectively prevents the system from being used by day trading speculators, but allows for trades for buy and hold value investing. Why do this?

1) Day traders take up a lot of storage space for the amount of value they create. If you don't think the price system works as a way of rationing space, then you need to turn to other regulatory mechanisms.    

2) Miners will be able to exploit atomic trades through selective double-spending. I don't think that this breaks everything, but it does mean that miners will be able to expropriate some profit which would otherwise be earned by speculators. In a way this is good because it will discourage excessive use of atomic trades. It is also bad because it introduces market inefficiency (kind of like a tax demanded by corrupt bureaucrats).

Weekly markets are much harder to profitably exploit.
maaku
Legendary
*
expert
Offline Offline

Activity: 905
Merit: 1011


View Profile
August 30, 2013, 04:08:54 PM
 #10

Actually, a core part of our (jtimon & my) proposal is the idea of private accounting servers - a high-volume, non-public block chain secured by auditor signature instead of proof-of-work. I do not expect that the public block chain would be used for very many market transactions, except for those situations where the burden public assets is actually required. Using the public chain has considerable costs which are paid for in transaction fees. Off-chain accounting will always be cheaper, and transaction confirmation faster, so traders will naturally prefer to use such systems when they can.

But even if they don't, note that market transactions do not increase the size of the UTXO set. The fee system is sufficient for regulating write access to the blockchain in this case.

I'm an independent developer working on bitcoin-core, making my living off community donations.
If you like my work, please consider donating yourself: 13snZ4ZyCzaL7358SmgvHGC9AxskqumNxP
cunicula (OP)
Legendary
*
Offline Offline

Activity: 1050
Merit: 1003


View Profile
August 30, 2013, 05:29:57 PM
 #11

Fair enough. I opened this thread to make an observation about a recent trend, not to critique your specific proposal.

I guess my reaction to your proposal (as opposed to bitShares and Mastercoin) is as follows: Projects should have some clear target market of potential users. These users should be people who benefit greatly from moving exchanges to the blockchain. What type of completely new economic activity are you trying to enable? (You should figure this out and use it to sell what you are doing.)

There are trades people will strongly prefer to do on the blockchain (despite the expense). These trades may be a small fraction of potential market activity. They may not happen at all right now because available off the blockchain mechanisms are unattractive. If you design a system to put these trades on the blockchain, it can add a lot of value. I see this as the derivative market first and foremost (e.g. Bitcoinica). Counterparty risk causes huge problems here which the blockchain could help solve. Decentralized enforcement of dynamic contracts is the core problem, not the operation of a marketplace. This is tough and not enough brainpower has been thrown at this in my opinion.

There are also trades that people are happily doing off the blockchain right now. These trades may be the bulk of potential market activity. A system to put these trades on the blockchain may not be that useful. I see this as Mt. Gox, etc. There are still counterparty risk problems, but they are much smaller and likely to diminish over time. Its great to create a decentralized marketplace. I'm sure it has some applications, but I'm not seeing large benefits unless some dynamic contract enforcement technologies can built on top of it.






maaku
Legendary
*
expert
Offline Offline

Activity: 905
Merit: 1011


View Profile
August 30, 2013, 07:19:00 PM
 #12

You've asked questions the answers to which are offtopic and I don't want to be seen as hijacking the thread. But you're the OP so I'll continue unless you think we should move it elsewhere.

I guess my reaction to your proposal (as opposed to bitShares and Mastercoin) is as follows: Projects should have some clear target market of potential users. These users should be people who benefit greatly from moving exchanges to the blockchain. What type of completely new economic activity are you trying to enable? (You should figure this out and use it to sell what you are doing.)

That's a very understandable critique. We spent most of our whitepaper talking about the technology not the use cases because the use cases are nearly infinite. Basically any form of market exchange, derivative, or synchronization primitive is implementable, on-chain or off-chain.

You can issue assets representing the usual suspects of stocks, bonds, & precious metal receipts, as well as various options or other derivatives thereof. You can issue smart property tokens representing physical ownership of specific items, or for use as capability access tokens. You can issue a basket currency or ETF tracking other in-chain or off-chain goods. You can issue IOUs to create a ripple-like credit market. You can do various kinds of auctions/exchanges to trade any of these assets for any other. You can do new forms of transactions like pre-authorized matching donations.

There are probably hundreds of applications, so I'll stop here. Each one would probably require a page or more to fully describe how it'd be implemented (we have a few examples in the whitepaper) and what the ramifications would be. Unlike BitShares and MasterCoin, the Freimarkets proposal is fully general - it's not meant to enable certain specific applications, but rather provide the primitives necessary to do almost anything imaginable.

It's sortof like if bitcoin were the rules of addition and subtraction, and that's all the math we knew. Then Jorge and I propose to add multiplication, division, exponentiation and logarithms. Yes we could spend a great deal of time explaining how you could use exponents to construct a formula for compound interest, but that'd be missing the forest for the trees.

There are trades people will strongly prefer to do on the blockchain (despite the expense). These trades may be a small fraction of potential market activity. They may not happen at all right now because available off the blockchain mechanisms are unattractive. If you design a system to put these trades on the blockchain, it can add a lot of value. I see this as the derivative market first and foremost (e.g. Bitcoinica). Counterparty risk causes huge problems here which the blockchain could help solve. Decentralized enforcement of dynamic contracts is the core problem, not the operation of a marketplace. This is tough and not enough brainpower has been thrown at this in my opinion.

There are also trades that people are happily doing off the blockchain right now. These trades may be the bulk of potential market activity. A system to put these trades on the blockchain may not be that useful. I see this as Mt. Gox, etc. There are still counterparty risk problems, but they are much smaller and likely to diminish over time. Its great to create a decentralized marketplace. I'm sure it has some applications, but I'm not seeing large benefits unless some dynamic contract enforcement technologies can built on top of it.

I'd love to debate specifics with you, although I'm tempted to just point at the whitepaper. You can put just what you need to in the block chain, or threaten to do so with locked transactions. In some cases you want the whole transaction public, in other cases it suffices to just commit a semaphore on which off-chain are conditional. In most cases you don't need to touch the public chain at all, even if your transaction crosses multiple private servers.

I'm an independent developer working on bitcoin-core, making my living off community donations.
If you like my work, please consider donating yourself: 13snZ4ZyCzaL7358SmgvHGC9AxskqumNxP
cunicula (OP)
Legendary
*
Offline Offline

Activity: 1050
Merit: 1003


View Profile
August 30, 2013, 08:31:16 PM
 #13

Interesting. Fine to go off topic because this is basically just a dialogue between us at this point.

I'm working on a detailed specification for a variable demurrage rate derivative backed by cryptocurrency (an altcoin, freicoin, bitcoin, whatever). Can freimarkets enable this? If so that's awesome. If not, I'm disappointed. It's a bit complicated, so here is a description in detail.

A unit of derivative has a price equal to 1 USD and (in terms of USD) this price remains approximately constant over time. The derivative is backed by cryptocurrency collateral that always exceeds 1 USD in value. The level of backing indicates the amount of security against the derivative's devaluation. At any time the product can be liquidated and converted into 1 USD in terms of cryptocurrency. Any excess backing cryptocurrency is returned to the issuer. There is a % fee (say 10%) for executing the liquidation to encourage the holder to auction off the asset instead. Frequent auctions are necessary to generate up to date market information to feed into the system.

The more insurance the derivative offers the more valuable it is. Therefore fixing the demurrage rate, the derivative would rise in price whenever the USD value of the backing increases and fall in price whenever the USD value of the backing falls. This screws everything up because the whole point of the scheme is that 1 unit of derivative should always be worth approximately 1 USD.

To prevent the USD value of the derivative product from fluctuating, the holder of the derivative product pays a varibale demurrage rate. There are regular auctions of the derivative product on the blockchain. Unlike a normal auction, the derivative price is fixed at 1 USD in terms of cryptocurrency equivalent and market equilibrium is achieved by bidding over the demurrage rate. (increasing demurrage will decrease demand thereby stemming a rise in price; lowering demurrage will increase demand supporting price)

A unit of the USD derivative is defined by two characteristics
1) a backing ratio which is greater than or equal to 1, if not the backing is liquidated automatically and transfered to the holder in entirety.  
Call the backing ratio b on the interval [1, infinity)
2) a demurrage rate which is a function of market demand and the backing ratio.                                                  
Call this r on [0, infinity)

For any given level of demand there is a pair (b,r) for which the market price of the derivative is equal to 1 USD.
For b=1, an arbitrage condition indicates that (1,0) is necessarily worth 1 USD.

To review:
If demand for the derivative rises, the demurrage rate r increases to prevent price from rising above 1 USD.
If demand for the derivative falls, the demurrage rate falls.
If demand is constant and the backing currency appreciates, then the demurrage rate increases to prevent price from rising above 1 USD.
If demand is constant and the backing currency depreciates, then the demurrage rate decreases to prevent price from falling below 1 USD.
The equilibrium demurrage rate is determined by periodic auctions where the sale price is fixed at 1 USD worth of cryptocurrency. Bidders offer to pay a certain demurrage rate. Sellers ask for a certain demurrage rate. Trades are executed where the demurrage rates overlap. The results indicate the market demurrage rate. (It is like a variable rate mortgage)

Asset issuers receive all the demurrage. Essentially the issuer uses x USD worth of cryptocurrency (where x>1) to create a 1 unit of a derivative with a backing ratio of b=x. The issuer sells this unit for 1 USD. Incentives (the tax on liquidations) ensure that the backing fund is never touched unless b drops below 1. In this eventuality, the backing is goes to the derivative holder. However, as long as markets are functioning, it will be more profitable to liquidate by selling the derivative to someone else.
Over time the asset decays. For purposes of illustration say that (b,r) is constant at (b=x, r=r*). If you start with 1 unit of derivative worth 1 USD, then next year you will have (1-r*) units of derivative worth (1-r*) USD and the issuer will receive (r*)*x in demurrage payments from the backing fund.

Since the issuer invest (x-1) initially and receives ((r*)*x), his rate of return on capital is ((r*)*x)/(x-1). For example, the rate of return is 2*(r*) if x=2 and 1.25*(r*) if x=5. The issuer's risk declines as x rises. If the issuer is willing to commit to the investment for a very long time span, he can get an essentially risk free positive rate of return on his cryptocurrency. Say for example x=50, as long as the cryptocurrency price never drops below 2% of the starting USD price, all of the 50 USD worth of principal is eventually returned to the issuer. In addition he gets 1 USD from the initial sale, so he increases his cryptocurrency holdings by 2% with no real added risk. i.e. he could hold 1 BTC or he could issue this asset and end up with 1.02 BTC with almost no additional risk relative to simply holding (well the only risk is that BTC falls to 3 USD again in which case the issuer loses everything; depending on the market it might take 100 years to recover the capital, but if you are really bullish this is kind of a unique opportunity for issuers)

There are two key pieces of information that need to be fed into this:

1) An oracle announcing the real world USD market price of the backing asset. This allows the backing ratio to be updated and makes it possible to fix the auction price at 1 USD.
2) Market clearing demurrage rates from periodic auctions of derivatives with different backing levels. The equilibrium rates allow the function mapping backing ratios into demurrage rates to be continuously updated over time. This is necessary to fix the price of one derivative unit at 1 USD.

 
Complicated enough yet? If we get this to work the US gov't will be super pissed.

 
thezerg
Legendary
*
Offline Offline

Activity: 1246
Merit: 1010


View Profile
August 31, 2013, 12:31:20 AM
 #14

These system are, in my view, largely misguided.  Except for the ones that intend to replace Bitcoin with their own currency for the asset to have any value at all there must be a trusted custodian (e.g. business owner, etc). Once you have one of those they could simply take care of tracking the assets (in a public blockchain if you like) with just highly efficient timestamping against bitcoin as needed.  Atomic trades with bitcoin in and out of these systems are perfectly possible using simple hash locked cross chain escrow transactions.

The shove everything in the blockchain modality here seems like a mixture of failed imagination and understanding coupled with either a desire to externalize operating costs on the very scarce public network capacity or a lack of understanding of the costs involved at all.

Regardless, their plans are rather dangerous— for them at least— because when transaction pressure in the future makes their little micro-transaction trades infeasible they may have a rather  difficult time unwinding the situation that they've created.  Bitcoin is a digital cryptocurrency, thats what the users of it signed up for— and if other uses turn out to be parasitic and interfere with Bitcoin's intended usage  the users of these systems should not expect the Bitcoin side to be the side which must compromise.


Exactly!  The system should have its own parallel blockchain and cross-trade-validating clients can load both chains.  Total required space would be LESS then encoding it on top.  And most clients would not even need the bitcoin blockchain, if "validating" clients posted a subsequent block with a record that simply indicates whether the bitcoin txn happened.

I've mentioned this twice on the Mastercoin thread, with no response...

But I think that there's value in having a single chain that allows anyone to create a new currency or asset rather then have every company stock, mortgage, etc create its own blockchain.  That many chains would be madness :-).  It would be easy enough to have the "currency" be identified by a public key, and the currency genesis block contain a signed and in theory legally enforcable, message describing the "currency" and optionally identifying the issuer.


Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!