Bitcoin Forum
June 17, 2024, 05:09:21 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 ... 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 [101] 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 ... 661 »
  Print  
Author Topic: [ANN][XCP] Counterparty - Pioneering Peer-to-Peer Finance - Official Thread  (Read 1276347 times)
This is a self-moderated topic. If you do not want to be moderated by the person who started this topic, create a new topic.
jl777
Legendary
*
Offline Offline

Activity: 1176
Merit: 1132


View Profile WWW
February 03, 2014, 01:29:14 PM
 #2001

I have a question about Broadcast. From reading the spec, it seems like there is a strong element of trust needed for a broadcast feed. Certainly if major bets are being made, any funny business in the feed would be something that needs to be prevented. However, I could see no such mechanism.

Is there a way to get trustless feeds for very standard things, eg. data from BTC blockchain, orderbooks from specific exchanges, etc.?

I am envisioning a whole set of data feeds that are guaranteed to be reliable. If we can have that, then XCP will become a very safe place to trade crypto derivatives. Call and put options are sorely needed for some crypto business models, but the lack of liquidity in them make them very hard to get, plus currently requires trusting the option seller to be there when it comes time to exercise the option.

I think there could be a whole set of meta-commands that counterpartyd can implement based on just a large set of standard put/call options for all the assets that have realtime public datafeeds

James

The problem with allowing trustless bets on the orderbook, e.g., is that it can be easily manipulated.

There might be a way of creating trustless betting on something like the Bitcoin difficulty, however...
Certainly snapshots of orderbooks can be manipulated, but not longer term moving averages. Things like EMA > SMA, not too hard to calculate assuming access to data and short of massive market actions, hard to change it.

http://www.digitalcatallaxy.com/report2015.html
100+ page annual report for SuperNET
cityglut
Full Member
***
Offline Offline

Activity: 216
Merit: 100


View Profile
February 03, 2014, 01:37:33 PM
 #2002

By the way, I have a question - how exactly XCP will support paying in BTC for asset or XCP?

The offered BTC will be matched to offers on asset/Dex, and once the buyer sends the bTC to seller address, the seller will then send back XCP or asset shares back to the buyer BTC address?

Let's say Alice is selling BTC for XCP with a 5 block expiration on her order and Sally is selling XCP for BTC with a 3 block expiration on her order, and their orders get matched. Upon the matching, the protocol debits the XCP from Sally's account, and then Alice has 3 blocks to send Sally her BTC using the btc-pay command. If Alice fails to send Sally BTC within 3 blocks, the deal is cancelled and Sally's account gets re-credited with the XCP.
Is there a way to set it up so the btcpay is done automatically?

No. The protocol can only debit assets that are created within the protocol, and BTC is not one of them.

It is important to note however that while payment is not automatic, there is nevertheless no counterparty risk. Moreover, the protocol will match Alice's order with Sally's only if Alice's fee_provided is greater than or equal to Sally's fee_required; these fees are miners' fees and are in BTC. Therefore, Sally can make her fee_required sufficiently high so that Alice is discouraged from putting up a BTC for XCP order which she fails to send.

fee_required is necessary if and only if one is buying BTC and fee_provided is required if and only if one is selling BTC.

EDIT: miswrote something.
Still a bit confused. Does this mean a "fee_required" is deducted even if Alice fails to send? Wouldn't a large fee_required be a barrier to trading?

fee_required is not a payment; it's a required fee for the counterparty to provide. fee_provided is deducted from an address upon putting up a give-asset=BTC order.

The idea is that if Sally doesn't want to be paired with fake give-asset=BTC orders, she can make the fee_required higher. Of course, the higher the fee, the less likely it is she will get paired, but also the less likely she will get paired with bogus orders.
PhantomPhreak (OP)
Sr. Member
****
Offline Offline

Activity: 476
Merit: 300

Counterparty Chief Scientist and Co-Founder


View Profile
February 03, 2014, 01:38:26 PM
 #2003

I have a question about Dividends. It relates to my previous question. Again it seems that trust in the issuer plays a giant role here. If we cannot completely trust the issuer, the value of the asset needs to be discounted.

Is there a way to create trustless assets? There seems to be a way to put BTC into escrow and I assume the same for XCP. I might have missed this, but is there a way to designate an Asset as being backed by assets in escrow? That way, the purchaser of an asset would have the option of always just redeeming it for the amount in escrow. For things like pooled BTC (XCP) funds, it can be 100% backed by escrow and there would be no risk of default or funny business.

If there was a way to put other cryptos in escrow, then a crypto fund could be setup, closed ended for sure, maybe even open ended and it could be composed of a variety of altcoins and BTC providing a diversified portfolio to reduce risk in this volatile market.

Further risk could be removed (or income produced) by buying put options or selling call options. I am envisioning professionally managed crypto portfolio that doesn't require trust!

Any chance of this anytime soon? Anytime at all?

James

If the money backing an asset were held in escrow, then the issuer wouldn't be able to use it.

(BTC can't be put into escrow by the network, but XCP can.)
jl777
Legendary
*
Offline Offline

Activity: 1176
Merit: 1132


View Profile WWW
February 03, 2014, 01:39:51 PM
 #2004

By the way, I have a question - how exactly XCP will support paying in BTC for asset or XCP?

The offered BTC will be matched to offers on asset/Dex, and once the buyer sends the bTC to seller address, the seller will then send back XCP or asset shares back to the buyer BTC address?

Let's say Alice is selling BTC for XCP with a 5 block expiration on her order and Sally is selling XCP for BTC with a 3 block expiration on her order, and their orders get matched. Upon the matching, the protocol debits the XCP from Sally's account, and then Alice has 3 blocks to send Sally her BTC using the btc-pay command. If Alice fails to send Sally BTC within 3 blocks, the deal is cancelled and Sally's account gets re-credited with the XCP.
Is there a way to set it up so the btcpay is done automatically?

No. The protocol can only debit assets that are created within the protocol, and BTC is not one of them.

It is important to note however that while payment is not automatic, there is nevertheless no counterparty risk. Moreover, the protocol will match Alice's order with Sally's only if Alice's fee_provided is greater than or equal to Sally's fee_required; these fees are miners' fees and are in BTC. Therefore, Sally can make her fee_required sufficiently high so that Alice is discouraged from putting up a BTC for XCP order which she fails to send.

fee_required is necessary if and only if one is buying BTC and fee_provided is required if and only if one is selling BTC.

EDIT: miswrote something.
Still a bit confused. Does this mean a "fee_required" is deducted even if Alice fails to send? Wouldn't a large fee_required be a barrier to trading?

fee_required is not a payment; it's a required fee for the counterparty to provide. fee_provided is deducted from an address upon putting up a give-asset=BTC order.

The idea is that if Sally doesn't want to be paired with fake give-asset=BTC orders, she can make the fee_required higher. Of course, the higher the fee, the less likely it is she will get paired, but also the less likely she will get paired with bogus orders.
Thanks. It's almost 6am so not thinking clearly enough to understand all the details. I will revisit this after some sleep

http://www.digitalcatallaxy.com/report2015.html
100+ page annual report for SuperNET
PhantomPhreak (OP)
Sr. Member
****
Offline Offline

Activity: 476
Merit: 300

Counterparty Chief Scientist and Co-Founder


View Profile
February 03, 2014, 01:42:20 PM
 #2005

Quote
The protocol itself is the escrow service, and will credit Alice with the XCP if and only if she sends Sally the BTC within the block expiration period.

I apologize if I am asking too many silly questions, the answers are probably listed in the specs but this gives us a chance for a dumbed down explanation.

Does the system track the BTC transaction via btc-pay and wait for confirmation (1 or 6?) This presumably means that btc-pay payload will require some reference to the original transaction. Once the transaction has been confirmed it will become part of the block chain. The counterparty client will then scan all transactions with XCP references and when it finds this particular one, it releases the XCP from escrow.

Another point is that Sally might intend to send the btc within the block expiration but it is not in her control when the bitcoin transaction is included and in which block. What happens if it is included in the next block after expiration.
 

Counterparty doesn't pay attention to confirmations. If the referenced transaction is earlier in the blockchain than the current one. it's valid.

A BTCpay does need to reference a particular order match.

Yes, if Sally does that, then she's out of luck.
PhantomPhreak (OP)
Sr. Member
****
Offline Offline

Activity: 476
Merit: 300

Counterparty Chief Scientist and Co-Founder


View Profile
February 03, 2014, 01:43:41 PM
 #2006

I have a question about Broadcast. From reading the spec, it seems like there is a strong element of trust needed for a broadcast feed. Certainly if major bets are being made, any funny business in the feed would be something that needs to be prevented. However, I could see no such mechanism.

Is there a way to get trustless feeds for very standard things, eg. data from BTC blockchain, orderbooks from specific exchanges, etc.?

I am envisioning a whole set of data feeds that are guaranteed to be reliable. If we can have that, then XCP will become a very safe place to trade crypto derivatives. Call and put options are sorely needed for some crypto business models, but the lack of liquidity in them make them very hard to get, plus currently requires trusting the option seller to be there when it comes time to exercise the option.

I think there could be a whole set of meta-commands that counterpartyd can implement based on just a large set of standard put/call options for all the assets that have realtime public datafeeds

James

The problem with allowing trustless bets on the orderbook, e.g., is that it can be easily manipulated.

There might be a way of creating trustless betting on something like the Bitcoin difficulty, however...
Certainly snapshots of orderbooks can be manipulated, but not longer term moving averages. Things like EMA > SMA, not too hard to calculate assuming access to data and short of massive market actions, hard to change it.

I don't mean that the market itself could be manipulated, but rather just the orderbook, i.e. by selling to yourself.
jl777
Legendary
*
Offline Offline

Activity: 1176
Merit: 1132


View Profile WWW
February 03, 2014, 01:43:47 PM
 #2007

I have a question about Dividends. It relates to my previous question. Again it seems that trust in the issuer plays a giant role here. If we cannot completely trust the issuer, the value of the asset needs to be discounted.

Is there a way to create trustless assets? There seems to be a way to put BTC into escrow and I assume the same for XCP. I might have missed this, but is there a way to designate an Asset as being backed by assets in escrow? That way, the purchaser of an asset would have the option of always just redeeming it for the amount in escrow. For things like pooled BTC (XCP) funds, it can be 100% backed by escrow and there would be no risk of default or funny business.

If there was a way to put other cryptos in escrow, then a crypto fund could be setup, closed ended for sure, maybe even open ended and it could be composed of a variety of altcoins and BTC providing a diversified portfolio to reduce risk in this volatile market.

Further risk could be removed (or income produced) by buying put options or selling call options. I am envisioning professionally managed crypto portfolio that doesn't require trust!

Any chance of this anytime soon? Anytime at all?

James

If the money backing an asset were held in escrow, then the issuer wouldn't be able to use it.

(BTC can't be put into escrow by the network, but XCP can.)
The issuer shouldnt be able to issue something to somebody else and still use the actual asset that the issuance represented. What if he issuer lost the original asset, how would the issued asset be able to be redeemed? This is my concern with assets that are not 100% backed

http://www.digitalcatallaxy.com/report2015.html
100+ page annual report for SuperNET
PhantomPhreak (OP)
Sr. Member
****
Offline Offline

Activity: 476
Merit: 300

Counterparty Chief Scientist and Co-Founder


View Profile
February 03, 2014, 01:46:51 PM
 #2008

I have a question about Dividends. It relates to my previous question. Again it seems that trust in the issuer plays a giant role here. If we cannot completely trust the issuer, the value of the asset needs to be discounted.

Is there a way to create trustless assets? There seems to be a way to put BTC into escrow and I assume the same for XCP. I might have missed this, but is there a way to designate an Asset as being backed by assets in escrow? That way, the purchaser of an asset would have the option of always just redeeming it for the amount in escrow. For things like pooled BTC (XCP) funds, it can be 100% backed by escrow and there would be no risk of default or funny business.

If there was a way to put other cryptos in escrow, then a crypto fund could be setup, closed ended for sure, maybe even open ended and it could be composed of a variety of altcoins and BTC providing a diversified portfolio to reduce risk in this volatile market.

Further risk could be removed (or income produced) by buying put options or selling call options. I am envisioning professionally managed crypto portfolio that doesn't require trust!

Any chance of this anytime soon? Anytime at all?

James

If the money backing an asset were held in escrow, then the issuer wouldn't be able to use it.

(BTC can't be put into escrow by the network, but XCP can.)
The issuer shouldnt be able to issue something to somebody else and still use the actual asset that the issuance represented. What if he issuer lost the original asset, how would the issued asset be able to be redeemed? This is my concern with assets that are not 100% backed

If he can't use both, then there's no reason to issue the asset, which would otherwise just become a new denomination of the one escrowed away.
jl777
Legendary
*
Offline Offline

Activity: 1176
Merit: 1132


View Profile WWW
February 03, 2014, 01:47:04 PM
 #2009

I have a question about Broadcast. From reading the spec, it seems like there is a strong element of trust needed for a broadcast feed. Certainly if major bets are being made, any funny business in the feed would be something that needs to be prevented. However, I could see no such mechanism.

Is there a way to get trustless feeds for very standard things, eg. data from BTC blockchain, orderbooks from specific exchanges, etc.?

I am envisioning a whole set of data feeds that are guaranteed to be reliable. If we can have that, then XCP will become a very safe place to trade crypto derivatives. Call and put options are sorely needed for some crypto business models, but the lack of liquidity in them make them very hard to get, plus currently requires trusting the option seller to be there when it comes time to exercise the option.

I think there could be a whole set of meta-commands that counterpartyd can implement based on just a large set of standard put/call options for all the assets that have realtime public datafeeds

James

The problem with allowing trustless bets on the orderbook, e.g., is that it can be easily manipulated.

There might be a way of creating trustless betting on something like the Bitcoin difficulty, however...
Certainly snapshots of orderbooks can be manipulated, but not longer term moving averages. Things like EMA > SMA, not too hard to calculate assuming access to data and short of massive market actions, hard to change it.

I don't mean that the market itself could be manipulated, but rather just the orderbook, i.e. by selling to yourself.
Sure, but only within the spread. Otherwise you are moving the market. Just dont make bets that are a significant fraction of market liquidity.

For example if you make a 100000 BTC bet on the price of BTC, odds are you will lose as  10000 BTC will move the BTC market, even in China. However if you make a 10 BTC bet on price, you might be able to fiddle around the edges, but you wouldn't be able to push the price much at all with a 10 BTC budget.

If the price for the bet was the average price over 10 minutes (or longer) it would take quite a lot of BTC to change the price from where it wants to be

http://www.digitalcatallaxy.com/report2015.html
100+ page annual report for SuperNET
wizzardTim
Legendary
*
Offline Offline

Activity: 1708
Merit: 1000


Reality is stranger than fiction


View Profile
February 03, 2014, 01:47:35 PM
 #2010

http://blockscan.com/ is such an awesome website. Why not integrate the online XCP wallet on the website like blockchain.info? If you guys can do that, it must be perfect!


Exactly!!!

Behold the Tangle Mysteries! Dare to know It's truth.

- Excerpt from the IOTA Sacred Texts Vol. I
jl777
Legendary
*
Offline Offline

Activity: 1176
Merit: 1132


View Profile WWW
February 03, 2014, 01:48:14 PM
 #2011

I have a question about Dividends. It relates to my previous question. Again it seems that trust in the issuer plays a giant role here. If we cannot completely trust the issuer, the value of the asset needs to be discounted.

Is there a way to create trustless assets? There seems to be a way to put BTC into escrow and I assume the same for XCP. I might have missed this, but is there a way to designate an Asset as being backed by assets in escrow? That way, the purchaser of an asset would have the option of always just redeeming it for the amount in escrow. For things like pooled BTC (XCP) funds, it can be 100% backed by escrow and there would be no risk of default or funny business.

If there was a way to put other cryptos in escrow, then a crypto fund could be setup, closed ended for sure, maybe even open ended and it could be composed of a variety of altcoins and BTC providing a diversified portfolio to reduce risk in this volatile market.

Further risk could be removed (or income produced) by buying put options or selling call options. I am envisioning professionally managed crypto portfolio that doesn't require trust!

Any chance of this anytime soon? Anytime at all?

James

If the money backing an asset were held in escrow, then the issuer wouldn't be able to use it.

(BTC can't be put into escrow by the network, but XCP can.)
The issuer shouldnt be able to issue something to somebody else and still use the actual asset that the issuance represented. What if he issuer lost the original asset, how would the issued asset be able to be redeemed? This is my concern with assets that are not 100% backed

If he can't use both, then there's no reason to issue the asset, which would otherwise just become a new denomination of the one escrowed away.
OK, I must be too tired to understand this. Gotta get some sleep

http://www.digitalcatallaxy.com/report2015.html
100+ page annual report for SuperNET
superresistant
Legendary
*
Offline Offline

Activity: 2142
Merit: 1130



View Profile
February 03, 2014, 02:17:34 PM
 #2012

http://blockscan.com/ is such an awesome website. Why not integrate the online XCP wallet on the website like blockchain.info? If you guys can do that, it must be perfect!
Exactly!!!

Oh yes please do it. I hate the client and having to download stuff everytime I move on an other computer.
mtbitcoin
Legendary
*
Offline Offline

Activity: 876
Merit: 1000


Etherscan.io


View Profile
February 03, 2014, 02:38:45 PM
 #2013

http://blockscan.com/ is such an awesome website. Why not integrate the online XCP wallet on the website like blockchain.info? If you guys can do that, it must be perfect!
Exactly!!!

Oh yes please do it. I hate the client and having to download stuff everytime I move on an other computer.

Thank you. Blockscan is a personal project... And at the moment, I do not want to deal with anything related to the storage of actual funds as that is a responsibility that I am not willing to take on at the moment. There are still other non-wallet related but experimental ideas that I would like to deploy via blockscan first over time.

Lets give the Counterparty team the chance to develop, debug and roll out the official web client first. In addition, there is already a bounty on the GUI client ..

Cheers

EtherScan::Ethereum Block Explorer | BlockScan::Coming Soon
Asterios
Newbie
*
Offline Offline

Activity: 58
Merit: 0


View Profile
February 03, 2014, 03:02:17 PM
 #2014

Is blockscan.com stuck?
Fastpow
Full Member
***
Offline Offline

Activity: 322
Merit: 102



View Profile
February 03, 2014, 03:16:49 PM
 #2015

I'm really having trouble using this guide http://counterpartyd-build.readthedocs.org/en/latest/BuildingFromSource.html..
When i run the command line

cd C:\
git clone https://github.com/xnova/counterpartyd_build
cd counterpartyd_build
C:\Python32\python.exe setup.py

wich is under windows-installing

i get Imput error : No module named win32api
physalis
Sr. Member
****
Offline Offline

Activity: 392
Merit: 250



View Profile
February 03, 2014, 03:26:58 PM
 #2016

When trying to run "counterpartyd.exe server" on my windows machine, I get the following from the install via the installer binary:

Code:
D:\Tools\counterpartyd>counterpartyd.exe server
ØMQ publisher not active. Sleeping for 0.25 seconds. (Try 1/12)
ØMQ publisher not active. Sleeping for 0.25 seconds. (Try 2/12)
ØMQ publisher not active. Sleeping for 0.25 seconds. (Try 3/12)
ØMQ publisher not active. Sleeping for 0.25 seconds. (Try 4/12)
ØMQ publisher not active. Sleeping for 0.25 seconds. (Try 5/12)
ØMQ publisher not active. Sleeping for 0.25 seconds. (Try 6/12)
ØMQ publisher not active. Sleeping for 0.25 seconds. (Try 7/12)
ØMQ publisher not active. Sleeping for 0.25 seconds. (Try 8/12)
ØMQ publisher not active. Sleeping for 0.25 seconds. (Try 9/12)
ØMQ publisher not active. Sleeping for 0.25 seconds. (Try 10/12)
ØMQ publisher not active. Sleeping for 0.25 seconds. (Try 11/12)
ØMQ publisher not active. Sleeping for 0.25 seconds. (Try 12/12)
Traceback (most recent call last):
  File "C:\Python32\lib\site-packages\cx_Freeze\initscripts\Console3.py", line 2
7, in <module>
  File "C:\counterpartyd_build\dist\counterpartyd\counterpartyd.py", line 720, i
n <module>
lib.exceptions.ZeroMQError: Timeout.

And the following when trying to run it after installing it from source:

Code:
D:\Development\counterpartyd_build>echo off
Traceback (most recent call last):
  File "D:\Development\counterpartyd_build\dist\counterpartyd\counterpartyd.py",
 line 22, in <module>
    from lib import (config, api, zeromq, util, exceptions, bitcoin, blocks)
  File "D:\Development\counterpartyd_build\dist\counterpartyd\lib\zeromq.py", li
ne 14, in <module>
    import zmq
ImportError: No module named zmq

Seems there is some ZeroMQ Problem in both cases? Can somebody help me with this?
rotalumis
Newbie
*
Offline Offline

Activity: 26
Merit: 0


View Profile
February 03, 2014, 03:29:42 PM
 #2017

Noob question:

I'm currently reindexing and syncing the blockchain I got from bittorrent, planning to try out Counterparty. I also will be installing an Armory watching-only wallet on this PC for both watching and broadcasting transactions signed offline.

Will I be able to use the same bitcoind and data for both applications, or will the "txindex=1" in bitcoin.conf that I added for Counterparty cause trouble with Armory?
Patel
Legendary
*
Offline Offline

Activity: 1321
Merit: 1007



View Profile WWW
February 03, 2014, 03:29:47 PM
 #2018

I am working on a press release for marketing Counterparty.

Please pm me some topics to include in the press release.

Things to include

Real world uses
expected growth
community resources
anything else

I will be writing this today, and distributing it to major press release websites. It should get on google news, yahoo news, business insider, some others, if the service I am using for distribution does what they claim

I will be writing, then using this service for distribution: http://www.blackhatworld.com/blackhat-seo/seo-link-building/433997-get-google-news-white-hat-premium-press-release-writing-submission-huge-distributi.html (maybe another service, but something similar)


====================

Selling 1k XCP for 6btc
Patel
Legendary
*
Offline Offline

Activity: 1321
Merit: 1007



View Profile WWW
February 03, 2014, 03:34:18 PM
 #2019

I'm really having trouble using this guide http://counterpartyd-build.readthedocs.org/en/latest/BuildingFromSource.html..
When i run the command line

cd C:\
git clone https://github.com/xnova/counterpartyd_build
cd counterpartyd_build
C:\Python32\python.exe setup.py

wich is under windows-installing

i get Imput error : No module named win32api

Install the prereq's first
Fastpow
Full Member
***
Offline Offline

Activity: 322
Merit: 102



View Profile
February 03, 2014, 03:38:49 PM
 #2020

I'm really having trouble using this guide http://counterpartyd-build.readthedocs.org/en/latest/BuildingFromSource.html..
When i run the command line

cd C:\
git clone https://github.com/xnova/counterpartyd_build
cd counterpartyd_build
C:\Python32\python.exe setup.py

wich is under windows-installing

i get Imput error : No module named win32api

Install the prereq's first

getting another error now,

Successfully installed prettytable python-dateutil requests cherrypy json-rpc py
coin pytest six py colorama
Cleaning up...
Traceback (most recent call last):
  File "setup.py", line 488, in <module>
    main()
  File "setup.py", line 480, in main
    setup_startup(paths, run_as_user, with_counterwalletd)
  File "setup.py", line 294, in setup_startup
    f = open("%s" % os.path.join(os.environ['WINDIR'], "counterpartyd.bat"), "w"
)
IOError: [Errno 13] Permission denied: 'C:\\windows\\counterpartyd.bat'

Pages: « 1 ... 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 [101] 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 ... 661 »
  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!