Bitcoin Forum
April 25, 2024, 10:42:45 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 15 16 17 18 19 20 »  All
  Print  
Author Topic: P2P Exchange for bitcoin  (Read 42568 times)
juice
Newbie
*
Offline Offline

Activity: 56
Merit: 0



View Profile
April 12, 2013, 02:47:28 PM
Last edit: April 12, 2013, 04:08:15 PM by juice
 #121

all i need to exchange coins or what ever is one person i trust!
i would exchange with anybody i know.
if bitcoin stays simple and safe there will be trust in the tech and then everybody will
use it so i can exchange with everybody i trust.

just dont use the big exchanger ! there is no need to exchange the whole time.
generate the money in the net and leave it there or buy some coins from who ever and use it.
like usa people going to wallmart and buy some.

and by the way bitpay is much cheaper to get your coins into your bank account Wink

if you think bitcoin is money ,dont play with it!!


1714041765
Hero Member
*
Offline Offline

Posts: 1714041765

View Profile Personal Message (Offline)

Ignore
1714041765
Reply with quote  #2

1714041765
Report to moderator
BitcoinCleanup.com: Learn why Bitcoin isn't bad for the environment
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1714041765
Hero Member
*
Offline Offline

Posts: 1714041765

View Profile Personal Message (Offline)

Ignore
1714041765
Reply with quote  #2

1714041765
Report to moderator
mobile4ever
Hero Member
*****
Offline Offline

Activity: 546
Merit: 500


View Profile
April 12, 2013, 05:58:48 PM
 #122

Two things I want to stress. This exchange has to be even more simple than mtGox. It should connect to people on Skype or AIM or ICQ etc ...


Skype is said to have a backdoor:

http://memeburn.com/2011/07/microsoft-and-skype-set-to-allow-backdoor-eavesdropping/
Luckybit
Hero Member
*****
Offline Offline

Activity: 714
Merit: 510



View Profile
April 12, 2013, 05:59:01 PM
 #123

I know this is against the free market but this thread should be PINNED! A P2P Exchange is a MUST and gollum has started us in the right direction. This need the full focus of the entire community right now. Maybe we should even start a fund for the developers.

I agree we need a fund but first we need to agree on a design and a plan. I'd be willing to throw a few bucks to a fund in exchange for shares or something to make sure we can get our money back.

Like a kickstarter where we fund the development of the exchange with Bitcoin to buy shares and then we get all our Bitcoin back WITH A PROFIT when the project is completed. This would allow Bitcointalk to gather enough funds in Bitcoin to hold up both for the Bitcoin (Xprize) contest and ultimately for the developers who decide to take on the role. Consider how much money could be at stake in terms of the long term profits on your Bitcon and consider also that to pay for this we could have transaction fees which would give us double what we paid in  and it could be both profitable for us to invest in having the infrastructure built and profitable for the developers who would get paid by us to build it.

Who agrees with this idea? If you agree with this idea then lets figure out how to do it ASAP. Let's have either a contest to determine a design or let the programmers themselves create a bunch of kickstarters and bitcoin investment funds right away and let the community fund them all and see which team wins.

GO GO GO!
Luckybit
Hero Member
*****
Offline Offline

Activity: 714
Merit: 510



View Profile
April 12, 2013, 06:15:03 PM
 #124

Two things I want to stress. This exchange has to be even more simple than mtGox. It should connect to people on Skype or AIM or ICQ etc ...


Skype is said to have a backdoor:

http://memeburn.com/2011/07/microsoft-and-skype-set-to-allow-backdoor-eavesdropping/
www.cypherpunks.ca/otr/
Then you can make use of off the record with pidgin. Pidgin interfaces with AIM, ICQ, Google, etc. Off the record is a plugin which runs over it which supports encryption and perfect forward secrecy.
Rassah
Legendary
*
Offline Offline

Activity: 1680
Merit: 1035



View Profile WWW
April 12, 2013, 06:33:06 PM
 #125

Wow, there are a lot of threads popping up today on new ideas for Decentralized Exchanges. (I can't imagine why...) I started one myself 5 hours ago. Wink

Allow me to throw some ideas on the fire, as this thread seems to have gotten further than the others.

1. Your concerns about how to port in real-world cash are unfounded. There already exists an industry of businesses that will take cash in many forms and give virtual credits, including bitcoins, for them... BitInstant, Dwolla, OKPay, coinbase, ArumXchange, and many others can upload cash into this exchange in one or more forms. Let them deal with this headache; there are many of them so there is no central point of failure there.


2. To really replace MtGox and have real-time graphs and trades like we all want to see, the core of this beast must always determine the other clients running within a short enough pingtime's distance. (So trades can happen in milliseconds, not multiple seconds.)

If a client logs on, looks around for other clients, & notes all of their pingtimes, the client can be a real-time, graph-displaying trading platform for everyone within a decent pingtime of you!

True, this means that someone in Kansas isn't likely to see the trades of someone in Perth... But that's the nature of decentralization. The going price of a bitcoin would therefore not be global, but regional... Although the regions are likely to be continents, not cities. You'd trade quickly with those closer to you (pingtime-wise) and if you can't find your trade there, I guess it would be a good idea to include an OTC board in the package too, or port in #bitcoin-otc somehow.

(Note: VPNs could be used for people that live far away from population centers to reduce pingtimes, too!)


3. No marketing will be needed. (!) If each client for this exchange gives the fees to the person running the client where the trade happened, then it is self-incentivized to spread much like how bitcoin miners get paid to mine. I've got some very specific ideas about how to make this part work, but for now all you need to know is that everyone with an internet connection would want to run this client because it would literally pay them to just run on their PCs. (And they wouldn't need expensive GPUs.) More details on this step later.


4. No miners needed. A lot of the data that runs across these clients need not be encrypted... You want the world to know what the current price for each currency is, for instance... It's just the ownership of things on it you must secure, so no processing of SHAs here, just good, secure ledger keeping.

Every client should be both a place for you to log in and make trades, and a place for other people to trade on. If run this way, it will use a bit of bandwidth (think: bittorrent) but not any advanced hashing that requires special equipment like GPUs.


Enjoy the ideas; I'll add some more later.

Geez. 6 pages before there's finally a reasonable post  Roll Eyes Thank you!
Much of this does seem like it can be done by OpenTransactions or Ripple. I'm still concerned about being able to execute trades without someone being able to take BTC (or a trade confirmation) and not send the USD/EUR. Has anyone come up with a way to verify that both parties have actually sent their part of the trade without relying on a central service?

In all these discussions, these have been the #1 problems to be solved. Virtual currency and ledgers are easy, or at least doable, but depositing money into the system, and verifying fiat side transactions, are still a big Huh
nwbitcoin
Sr. Member
****
Offline Offline

Activity: 294
Merit: 250


You are a geek if you are too early to the party!


View Profile WWW
April 12, 2013, 07:34:34 PM
 #126

Is there some sort of forum game being played called Ripple Bingo?  Every other post seems to be someone saying - what about Ripple?

Which part of its not open source don't people understand?

Ripple is owned by a company who just want to be the next MT Gox - maybe Wink

Yes, the software might work, but its not a decentralized exchange in the same spirit as bitcoin, so it doesn't pass the most important rule - the concept needs to be totally open for anyone to play with.

Its not the quickest way to get a result, but building this idea to the open standard that made bitcoin is a must!

Hope everyone agrees!

Smiley


*Image Removed*
I use Localbitcoins to sell bitcoins for GBP by bank transfer!
Rassah
Legendary
*
Offline Offline

Activity: 1680
Merit: 1035



View Profile WWW
April 12, 2013, 08:05:20 PM
 #127

I'm also not entirely sure something like a blockchain is necessary (why I was thinking something closer to ripple than bitcoin). I mean, there are two purposes to a blockchain: Keep a ledger, and prevent double-spends. We need the ledger, but that could just be a distributed file flying around, with some pruning involved (no need to keep executed trades). As for double-spend, if two people have traded, there's really no need to secure against it. All this system needs to do is match two traders and mark that their transaction was executed. A double-spend would be basically someone saying "I sent you these coins twice, so give me more USD", while the other guy could point to the BTC blockchain to say "Nope!"

Another fun thing I've been playing around with is Bitmessage. It basically does something like this, but with e-mail like messages, only holding a copy of yet-to-be received last two days, and removing any that were downloaded. It also encrypts all messages so that only the recipient can read them. If the messages that are in the form of buy/sell orders are not encrypted, people could just download all available ones too.

There's still the problem of sending and verifying cash though... So far, trusted brokers is the best idea I've heard.


P.S. Help out with bitmessage too if you can. I'm not involved, but it looks like a cool idea.
BTCLuke
Hero Member
*****
Offline Offline

Activity: 526
Merit: 508


My other Avatar is also Scrooge McDuck


View Profile
April 12, 2013, 08:10:42 PM
 #128

Geez. 6 pages before there's finally a reasonable post  Roll Eyes Thank you!
You're welcome.

Much of this does seem like it can be done by OpenTransactions or Ripple.
I'll look into OpenTransactions, but it can't possibly be this decentralized... An exchange house running on every client is pretty radical.

As for Ripple, it is my understanding that it has incredibly major flaws, like not being open source, not being a real time trading platform at all, and has big problems moving larger amounts of money... It certainly isn't a replacement for Mt.Gox in that no wall street traders can find a way to use it to trade bitcoins versus the USD, now is it?


I'm still concerned about being able to execute trades without someone being able to take BTC (or a trade confirmation) and not send the USD/EUR. Has anyone come up with a way to verify that both parties have actually sent their part of the trade without relying on a central service?
I just did above. Every single client would be a 'central service' for the two other people involved.

Luke Parker
Bank Abolitionist
Rassah
Legendary
*
Offline Offline

Activity: 1680
Merit: 1035



View Profile WWW
April 12, 2013, 08:27:34 PM
 #129

Just throwing this out there:
Take an idea similar to bitmessage, where everyone generates their own address ID. Everyone also stores their own coins, and their own USD.
The order book is shared to everyone running this client, and can be modified by anyone to add and remove only their own transaction requests, signed by their own ID. Some proof of work could me included so it takes a second or more to place your order so mitigate spamming by tons of transactions
Anyone is free to put up an order, either sell or buy, with their own conditions, such as method of payment (Dwolla/PayPal/Wire), fees for cash transfer, etc. The order book organizes these so that the fee is included in the price being traded (e.g. all PayPal trades could be 10% above wire trades, etc).
Once a match is found, the transaction is locked and is accessible only to the people executing it. It is then up to the two people to get in touch (possibly using bitmessage type system build right into this) and actually carry out the trade off the system, e.g. sending btc to someone after they send cash, etc.
Once the trade is executed successfully, both parties must mark the transaction as successful, which increases the reputation record of the address IDs. This can be done by both addresses signing that the transaction completed successfully, and will be in both parties' interest to store a copy of. Since both have to sign, those can't be faked. Tying this to the OTC WOT (bitcoin-otc web of trust) would help, too. Someone could try to game the system by trading with themselves, but the risk is that their offer will be picked up by someone else, which means they'll have to carry out the trade, or get a bad rating.
Eventually, certain high reputation level nodes will emerge to be able to handle transactions for those more skiddish, possibly at a higher fee.

Concerns: still may be possible to game the system, will likely be easily succeptible to scams and chargebacks (at least until trusted nodes emerge), will not be able to handle high frequency trades, may be difficult to fill a large order that spans many smaller ones (instant buy on MtGox), and finally may be extremely inconvenient to have to ask for cash from someone directly, v.s. just having a cold anonymous system do it for you.

Of course this could also be expanded to easily include trades of MtGox codes for BtC, too, in which case, like was mentioned, big trusted companies could be the money in-out places.


It seems we have a lot of bases we can start with for the code already, be it Ripple, P2Pool, or Bitmessage...
Rassah
Legendary
*
Offline Offline

Activity: 1680
Merit: 1035



View Profile WWW
April 12, 2013, 08:32:44 PM
 #130

BitMessage and P2Pool are also open source btw. Maybe someone could bug one of the developers to see what they think about whether their tech can be modified?
Luckybit
Hero Member
*****
Offline Offline

Activity: 714
Merit: 510



View Profile
April 12, 2013, 09:11:09 PM
 #131

Just throwing this out there:
Take an idea similar to bitmessage, where everyone generates their own address ID. Everyone also stores their own coins, and their own USD.
The order book is shared to everyone running this client, and can be modified by anyone to add and remove only their own transaction requests, signed by their own ID. Some proof of work could me included so it takes a second or more to place your order so mitigate spamming by tons of transactions
Anyone is free to put up an order, either sell or buy, with their own conditions, such as method of payment (Dwolla/PayPal/Wire), fees for cash transfer, etc. The order book organizes these so that the fee is included in the price being traded (e.g. all PayPal trades could be 10% above wire trades, etc).
Once a match is found, the transaction is locked and is accessible only to the people executing it. It is then up to the two people to get in touch (possibly using bitmessage type system build right into this) and actually carry out the trade off the system, e.g. sending btc to someone after they send cash, etc.
Once the trade is executed successfully, both parties must mark the transaction as successful, which increases the reputation record of the address IDs. This can be done by both addresses signing that the transaction completed successfully, and will be in both parties' interest to store a copy of. Since both have to sign, those can't be faked. Tying this to the OTC WOT (bitcoin-otc web of trust) would help, too. Someone could try to game the system by trading with themselves, but the risk is that their offer will be picked up by someone else, which means they'll have to carry out the trade, or get a bad rating.
Eventually, certain high reputation level nodes will emerge to be able to handle transactions for those more skiddish, possibly at a higher fee.

Concerns: still may be possible to game the system, will likely be easily succeptible to scams and chargebacks (at least until trusted nodes emerge), will not be able to handle high frequency trades, may be difficult to fill a large order that spans many smaller ones (instant buy on MtGox), and finally may be extremely inconvenient to have to ask for cash from someone directly, v.s. just having a cold anonymous system do it for you.

Of course this could also be expanded to easily include trades of MtGox codes for BtC, too, in which case, like was mentioned, big trusted companies could be the money in-out places.


It seems we have a lot of bases we can start with for the code already, be it Ripple, P2Pool, or Bitmessage...

Now we are getting somewhere. This is a lot like localbitcoins only it's more streamlined and much better.  Localbitcoins does work.


The only problem is I don't like encryption. We need transparency not secrecy to stop scammers. So we need it so anyone can look at any previous trade messages and only stuff like checking account type info would be considered private but only to a certain extent. We need it so every past trade can be logged and reviewed so that scammers can be punished thoroughly. Also this system would probably work best if integrated into Facebook and real names should be a requirement. Finally we probably want to verify people in the real world, how much or how little should be up to the individual but I should be able to say I wont do business with anyone who isn't on a verified account. Meaning someone with state ID and verified address on file so that if something goes terribly wrong then I can sue them or track them down.
mobile4ever
Hero Member
*****
Offline Offline

Activity: 546
Merit: 500


View Profile
April 12, 2013, 09:12:02 PM
 #132

www.cypherpunks.ca/otr/
Then you can make use of off the record with pidgin. Pidgin interfaces with AIM, ICQ, Google, etc. Off the record is a plugin which runs over it which supports encryption and perfect forward secrecy.
[/quote]


Wow. Sounds good, I will look into it.
johnyj
Legendary
*
Offline Offline

Activity: 1988
Merit: 1012


Beyond Imagination


View Profile
April 12, 2013, 10:28:26 PM
 #133

As long as bitcoin exchanges with fiat currency, it should cooperate with fiat way of working, that is a centralized exchange (because fiat money is centralized). Bitcoin is a completion of existing financial system and provide another alternative, not to replace the existing sytem. Today's financial system exists for many reasons, and in many cases a centralized system has its benefit

marcus_of_augustus
Legendary
*
Offline Offline

Activity: 3920
Merit: 2348


Eadem mutata resurgo


View Profile
April 13, 2013, 12:13:01 AM
 #134

Wow, there are a lot of threads popping up today on new ideas for Decentralized Exchanges. (I can't imagine why...) I started one myself 5 hours ago. Wink

Allow me to throw some ideas on the fire, as this thread seems to have gotten further than the others.

1. Your concerns about how to port in real-world cash are unfounded. There already exists an industry of businesses that will take cash in many forms and give virtual credits, including bitcoins, for them... BitInstant, Dwolla, OKPay, coinbase, ArumXchange, and many others can upload cash into this exchange in one or more forms. Let them deal with this headache; there are many of them so there is no central point of failure there.


2. To really replace MtGox and have real-time graphs and trades like we all want to see, the core of this beast must always determine the other clients running within a short enough pingtime's distance. (So trades can happen in milliseconds, not multiple seconds.)

If a client logs on, looks around for other clients, & notes all of their pingtimes, the client can be a real-time, graph-displaying trading platform for everyone within a decent pingtime of you!

True, this means that someone in Kansas isn't likely to see the trades of someone in Perth... But that's the nature of decentralization. The going price of a bitcoin would therefore not be global, but regional... Although the regions are likely to be continents, not cities. You'd trade quickly with those closer to you (pingtime-wise) and if you can't find your trade there, I guess it would be a good idea to include an OTC board in the package too, or port in #bitcoin-otc somehow.

(Note: VPNs could be used for people that live far away from population centers to reduce pingtimes, too!)


3. No marketing will be needed. (!) If each client for this exchange gives the fees to the person running the client where the trade happened, then it is self-incentivized to spread much like how bitcoin miners get paid to mine. I've got some very specific ideas about how to make this part work, but for now all you need to know is that everyone with an internet connection would want to run this client because it would literally pay them to just run on their PCs. (And they wouldn't need expensive GPUs.) More details on this step later.


4. No miners needed. A lot of the data that runs across these clients need not be encrypted... You want the world to know what the current price for each currency is, for instance... It's just the ownership of things on it you must secure, so no processing of SHAs here, just good, secure ledger keeping.

Every client should be both a place for you to log in and make trades, and a place for other people to trade on. If run this way, it will use a bit of bandwidth (think: bittorrent) but not any advanced hashing that requires special equipment like GPUs.


Enjoy the ideas; I'll add some more later.

Geez. 6 pages before there's finally a reasonable post  Roll Eyes Thank you!
Much of this does seem like it can be done by OpenTransactions or Ripple. I'm still concerned about being able to execute trades without someone being able to take BTC (or a trade confirmation) and not send the USD/EUR. Has anyone come up with a way to verify that both parties have actually sent their part of the trade without relying on a central service?

In all these discussions, these have been the #1 problems to be solved. Virtual currency and ledgers are easy, or at least doable, but depositing money into the system, and verifying fiat side transactions, are still a big Huh

There are some really good ideas and points in here, particularly this one
Quote
Your concerns about how to port in real-world cash are unfounded. There already exists an industry of businesses that will take cash in many forms and give virtual credits, including bitcoins, for them... BitInstant, Dwolla, OKPay, coinbase, ArumXchange, and many others can upload cash into this exchange in one or more forms. Let them deal with this headache; there are many of them so there is no central point of failure there.

It seems like the P2P client exchange could have a "standard" voucher/virtual credit/token (whatever you call it) to represent that someone has deposited fiat cash into the P2P  exchange system. Those tokens can then be cryptographically locked up when a user commits to trade, using a smart contract escrow or similar, and then released when bot sides are happy the trade has been completed, i.e. P2P token credits are released to seller and bitcoins released to buyer.

The crucial thing here is the standardising of the virtual P2P tokens that represent that fiat cash has gone into the system through one of the known issuers (BitInstant, Dwolla, OKPay, coinbase, AuramXchange, etc) ... so maybe it is simply a matter of someone releasing a good enough Open Source standardised format for P2P fiat token representations that all these fiat exchangers will adopt because it then gives them access to users of the P2P exchange client?

Stampbit
Full Member
***
Offline Offline

Activity: 182
Merit: 100



View Profile
April 13, 2013, 01:03:26 AM
 #135

Quote
1. Your concerns about how to port in real-world cash are unfounded. There already exists an industry of businesses that will take cash in many forms and give virtual credits, including bitcoins, for them... BitInstant, Dwolla, OKPay, coinbase, ArumXchange, and many others can upload cash into this exchange in one or more forms. Let them deal with this headache; there are many of them so there is no central point of failure there.

An industry of business, you mean exchanges. All of these ideas floating around here rely on already existent exchanges to facilitate a 'p2p exchange'. If this were p2p i could convert my fiat into coins and back without any sort of legal intermediary.
Luckybit
Hero Member
*****
Offline Offline

Activity: 714
Merit: 510



View Profile
April 13, 2013, 01:47:38 AM
 #136

We need to contact this guy http://www.reddit.com/r/Bitcoin/comments/1c7v6z/buttercoin_open_source_highperformance_bitcoin/


mobile4ever
Hero Member
*****
Offline Offline

Activity: 546
Merit: 500


View Profile
April 13, 2013, 03:18:30 AM
 #137

All of these ideas floating around here rely on already existent exchanges to facilitate a 'p2p exchange'. If this were p2p i could convert my fiat into coins and back without any sort of legal intermediary.

Not all of them. Smiley Mine puts a seller into contact with a buyer. I need to just get it done and stop posting about it probably... I need a PHP programmer.
BTCLuke
Hero Member
*****
Offline Offline

Activity: 526
Merit: 508


My other Avatar is also Scrooge McDuck


View Profile
April 13, 2013, 08:39:43 AM
 #138

Already over there... The project is at: http://buttercoin.hackpad.com

It's a bit differently-structured now, but I've filled them in on my idea a bit.

Luke Parker
Bank Abolitionist
TierNolan
Legendary
*
Offline Offline

Activity: 1232
Merit: 1083


View Profile
April 13, 2013, 09:04:08 AM
 #139

In the interests of keeping things in a single thread, I am reposting the below.  Since the value of coloured coins cannot be monitored by the main bitcoin network, atomic operations on the main chain have to be initiated by the BTC buyer.

Quote from: me
If coloured coins are used, then you can have a trade which is signed by both participants.  If it is included in the main bitcoin chain, then it counts, otherwise, it is fully reversed.

The buyer creates an offer transaction of the form:

Input 0: (0.000001, coloured) -> signed by BTC buyer with "SIGHASH_ANYONECANPAY + SIGHASH_SINGLE"
Output 0: (10) -> "Send to buyer's address"

This transaction is invalid, so can't be submitted to the main network.  However, the SIGHASH_ANYONECANPAY rule allows someone to add extra inputs to the transaction.  The SIGHASH_SINGLE rule allows adding of more outputs.

Input 0: (0.000001, coloured) -> signed by BTC buyer with "SIGHASH_ANYONECANPAY + SIGHASH_SINGLE"
Input 1: (10 + fee, coloured) -> signed by BTC seller (i.e. $ buyer)

Output 0: (10) -> "Send to buyer's address"
Output 1: (0.000001, coloured) -> "Send to seller's address"

It is now a valid transaction.  If the transaction makes it into the chain, then the trade occurs.  It not, then it is reversed.  It is atomic, it either fully works, or fully fails.

This system allows 2 people to trade.  It lets a buyer post "Will buy 10BTC for $1000".  However, for an exchange, you want to post "Will buy 10BTC for $1000 or market price, if lower".

Under a system like that, the exchange would be like a bulletin board.  However, when you contact a node, their software would be monitoring the market, and wouldn't buy if you asked for more than market price.

This doesn't allow "offline" operation, where you can just post an order to the order book.

1LxbG5cKXzTwZg9mjL3gaRE835uNQEteWF
gollum (OP)
Sr. Member
****
Offline Offline

Activity: 434
Merit: 250


In Hashrate We Trust!


View Profile
April 13, 2013, 09:11:26 AM
 #140

All of these ideas floating around here rely on already existent exchanges to facilitate a 'p2p exchange'. If this were p2p i could convert my fiat into coins and back without any sort of legal intermediary.

Not all of them. Smiley Mine puts a seller into contact with a buyer. I need to just get it done and stop posting about it probably... I need a PHP programmer.

Even your idea could be implemented in the p2p exchange we are discussing in this thread:

One exchange containing many virtual exchanges running at the same time, side by side.

each virtual exchange can consist of one or many brokers.

It is up to the brokers of each virtual exchange to decide if they want to trade real fiat dollar
or only some kind of token-dollar to solve the legal issues of some jurisdictions.

Please read through the template and come with ideas and suggestions!

https://github.com/p2p/bitcoin-exchange
Pages: « 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 15 16 17 18 19 20 »  All
  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!