Bitcoin Forum
December 10, 2016, 07:03:13 AM *
News: To be able to use the next phase of the beta forum software, please ensure that your email address is correct/functional.
 
   Home   Help Search Donate Login Register  
Pages: « 1 ... 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 [518] 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 ... 744 »
  Print  
Author Topic: [1500 TH] p2pool: Decentralized, DoS-resistant, Hop-Proof pool  (Read 2034451 times)
murdof
Full Member
***
Offline Offline

Activity: 182


View Profile
August 25, 2014, 12:59:59 PM
 #10341

Just a heads up to those of us merge mining - the NMC problem has a temporary fix in place in git:

https://github.com/namecoin/namecoin/tree/relay_tmp_fix

Trying it now......

EDIT: Not working for me, locked up & gave me this error when I tried to stop it:

" namecoind: /usr/include/boost/interprocess/sync/posix/recursive_mutex.hpp:77: boost::interprocess::ipcdetail::posix_recursive_mutex::~posix_recursive_mutex(): Assertion `res == 0' failed."

I did git pull, recompiled and works ok for me:
namecoin version 0.3.75

Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
1481353393
Hero Member
*
Offline Offline

Posts: 1481353393

View Profile Personal Message (Offline)

Ignore
1481353393
Reply with quote  #2

1481353393
Report to moderator
windpath
Legendary
*
Offline Offline

Activity: 938


View Profile WWW
August 25, 2014, 01:16:22 PM
 #10342

i am currently earning 0.035 - 0.04 btc everyday with 1.5 TH i wanted to know how much would i earned in p2pool and wicth pool would i use since there are lots of them or i don't get it would love some explanation

the same or more.

In the short term (i.e. "per day") variance will be much higher. At 1.5 TH/s and the current pool rate you should expect a payout from each block the pool finds (after you have a share in the chain), here is the closest example to 1.5 TH/s I could find on my node, the payouts per block should give you an idea of what to expect:

http://minefast.coincadence.com/miner.php?id=1JPVPkdnpYYwyYic51id6anMBn9weHwVV9

You dont use a public p2pool, you setup p2pool on a local machine.

Mining on a remote p2pool is stupid and if you want to do this, you could just stick to the pool your already using.

I disagree.

While setting up your own local node is ideal, and how p2pool is intended to be used, it is not a requirement, and mining on a public node is a great way to get started with p2pool.

There are many 0% fee public nodes available to give the pool a try, I would recommend committing for a minimum of 4 days. P2pool uses a PPLNS payout system and the share chain is ~3 days long, any amount of time under that will not give you accurate results.

In picking a public node latency (the time it takes your data to reach the server) is very important. Find your 2-3 closest nodes by using ping and use those in your miner configuration.

My node is in the US east, for other nodes you can explore here:

http://p2pool-nodes.info/

Patience is very important with p2pool. Once you are connected to your closest node for a couple hours check the stats, as long as your DOA rate is lower then the pool average your are doing just fine. Then sit back and let your miners do their thing. Again I would say 4 days is a minimum.


kgb2mining
Member
**
Offline Offline

Activity: 112


View Profile
August 25, 2014, 01:28:19 PM
 #10343

i am currently earning 0.035 - 0.04 btc everyday with 1.5 TH i wanted to know how much would i earned in p2pool and wicth pool would i use since there are lots of them or i don't get it would love some explanation
the same or more.
You dont use a public p2pool, you setup p2pool on a local machine.
Mining on a remote p2pool is stupid and if you want to do this, you could just stick to the pool your already using.
So much fail.... *sigh*  And people wonder why p2pool doesn't get higher adoption rates with answers like this.

You CAN use a public P2Pool node, take a look at this page for a listing of some of them - http://p2pool-nodes.info/ - you can sort by country, latency, etc.  Just find a couple geographically close to you and ping them... the lower the ping (latency), the better off you will be.

It is absolutely NOT stupid to mine on a remote p2pool node, especially if you have one close enough to you.  If you aren't close enough to a public node it could affect your performance, so it might be more wise to look at building your own local node if you have the capability, but some folks don't have the resources to do that.  It's all about your comfort level and resources.

The main issue with p2pool is latency - how quickly your miners can communicate to the node you're mining on.  The lower the latency, the less DOA rate you will have.  The less DOA you have the better chance you have of getting good shares, and thus payouts.  This is why it's RECOMMENDED to bring up your own p2pool node locally, because obviously the miners are right next to the node.

There's a bunch more to go into with DOA, shares, stales/orphans and how in general it works if you want to.  The bottom line is that all things equal, over time, you should see at least equal if not better payouts on p2pool versus others, as long as you have a decent hashrate, which I personally consider over 600GH/s.  Judging from your payouts I'd say you have about 1.2-1.5 TH/s, which should be plenty fine.

To configure it's simple.  Once you find a pool node it would look like this-

Pool: stratum+tcp://ip.add.ress.here:9332
Pool worker:  {your bitcoin payment address here}
Pool password:  anything123

I would suggest finding at least 2 P2Pool nodes for pool1 and pool2, and then put your original proprietary node in for pool3.  This way you're covered with failovers and backup in case any of the p2pool nodes go down.

And, no matter what pool node you mine on, if you keep your payment address the same (the pool worker), your shares and payouts will "follow" you to whatever node you're on, so you won't lose any mining time if you failover to another node.

Hope this helps to get you started.  Read up on the last 20-30 pages of this thread if you can at least, and post more questions, most folks here are pretty helpful.



PatMan
Hero Member
*****
Offline Offline

Activity: 924


Watch out for the "Neg-Rep-Dogie-Police".....


View Profile WWW
August 25, 2014, 01:49:11 PM
 #10344

Just a heads up to those of us merge mining - the NMC problem has a temporary fix in place in git:

https://github.com/namecoin/namecoin/tree/relay_tmp_fix

Trying it now......

EDIT: Not working for me, locked up & gave me this error when I tried to stop it:

" namecoind: /usr/include/boost/interprocess/sync/posix/recursive_mutex.hpp:77: boost::interprocess::ipcdetail::posix_recursive_mutex::~posix_recursive_mutex(): Assertion `res == 0' failed."

I did git pull, recompiled and works ok for me:
namecoin version 0.3.75


It's weird, but it stubbornly refused to work for more than 30 mins for me. However, after doing what phelix suggested here:

http://blog.namecoin.org/post/95263343235/restart-your-daemons

and recompiling using the original repo (instead of the bandaid version) - everything has been fine.

"When one person is deluded it is called insanity - when many people are deluded it is called religion" - Robert M. Pirsig.  I don't want your coins, I want change.
Amazon UK BTC payment service - https://bitcointalk.org/index.php?topic=301229.0 - with FREE delivery!
http://www.ae911truth.org/ - http://rethink911.org/ - http://rememberbuilding7.org/
kgb2mining
Member
**
Offline Offline

Activity: 112


View Profile
August 25, 2014, 05:10:57 PM
 #10345

Has anyone read about Matt Corallo's new "bitcoin backbone project" - https://bitcoinfoundation.org/2014/08/a-bitcoin-backbone - would it make sense to connect bitcoind from a P2Pool set up to this low latency backbone.
So I did this yesterday, downloaded the jar and ran it on the commandline using nohup.  Eventually will probably add it into the p2pool startup script so it's all handled automatically.  Logfile shows decent transaction activity.

Since server restart just over 24 hours ago, my efficiency hasn't dipped below 110% (that I've seen), and is currently hitting 114.5% ... Smiley.  31 shares, 1 orphan, no dead.  

Previously I was bouncing between 95-105%, lately a little under 100% a bit with about a 14% share loss.

So, we'll see how this runs over time... if it keeps up the way it is, then it's a big thumbs up in my book.

EDIT - although it seems to be a bit of a resource hog - 11G of virt RAM according to top.  Then again that could be just usual Java bloat and not necessarily this program since it really isn't much.

windpath
Legendary
*
Offline Offline

Activity: 938


View Profile WWW
August 25, 2014, 06:03:24 PM
 #10346

at Pool Hashrate: 2806.0 TH/s that should be hitting 2-3 blocks a day and a quick at the blockchain in the last 10 day there been only 10 (ONE was an orphan to top it off) hit where in theory it should be more like (24-30) blocks given the hash rate on p2 

Not to pile on here, but you facts are simply wrong. This is a 100% accurate representation of p2pool found blocks for the last 10 days:





That is 31 with 1 orphan by my count.

Also noteworthy is that this is only the 2nd orphan p2pool has had since we have been tracking; tracking orphaned blocks began May 1st 2014, over 116 days ago.

Because of its distributed nature p2pool probably has the least amount of orphan blocks of all the pools.

fire000
Member
**
Offline Offline

Activity: 98


View Profile
August 25, 2014, 06:05:42 PM
 #10347

at Pool Hashrate: 2806.0 TH/s that should be hitting 2-3 blocks a day and a quick at the blockchain in the last 10 day there been only 10 (ONE was an orphan to top it off) hit where in theory it should be more like (24-30) blocks given the hash rate on p2 

Not to pile on here, but you facts are simply wrong. This is a 100% accurate representation of p2pool found blocks for the last 10 days:





That is 31 with 1 orphan by my count.

Also noteworthy is that this is only the 2nd orphan p2pool has had since we have been tracking; tracking orphaned blocks began May 1st 2014, over 116 days ago.

Because of its distributed nature p2pool probably has the least amount of orphan blocks of all the pools.

can i ask where that was pulled from Huh?   As it would be handy to know
windpath
Legendary
*
Offline Offline

Activity: 938


View Profile WWW
August 25, 2014, 06:07:30 PM
 #10348

http://minefast.coincadence.com/p2pool-stats.php

fire000
Member
**
Offline Offline

Activity: 98


View Profile
August 25, 2014, 06:11:06 PM
 #10349


cheers    that changes the picture big time on the luck etc  ....

as what I was getting was this

317361   14 hours ago   
30e0f7e582ad8085adad33794ae190 ...
11h6m   97.9%
317300   1 day ago   
25f955699425419e32b311364bafc6 ...
19h15m   148.7%
317169   1 day ago   
ab60aaec5274fa73e10d1da36e131b ...
15h8m   106.0%
317071   2 days ago   
4770ac5b750fea0d78e7d8fcd6668e ...
1h6m   8.5%
317065   2 days ago   
31c94c32260bbd4eb7847b885b2708 ...
8h1m   74.7%
317007   2 days ago   
0a732e941ec5d7f90fe4d21bff7ac3 ...
8h12m   88.5%
316959   3 days ago   
633a1dcd5a64e3fec1c8d0ea47a379 ...
12h23m   127.0%
316875   3 days ago   
d8e814abf7af4ef2c6734b8fadba67 ...
6h22m   63.4%
316825   4 days ago   
b02e05d7f10908470872eb5b3011f8 ...
14h44m   134.3%
316729   4 days ago   
3770ff405a246fd9bd4bdb7b4fd69b ...
7h30m   62.2%
316667   4 days ago   
32f4bdb4d8b7e627ca663f29eb87f3 ...
5d15h44m   1,247.4%
315683   10 days ago   
7cae1f46321a5f4a9010f4964ec40d ...
8h28m   85.4%
315632   10 days ago   
a32edf4c0faebf95f4e5f71badcb8f ...
6h49m   67.3%
315574   11 days ago   
b215328da5469723c1ab2e54d485ef ...
3h37m   28.1%


minus a ton of blocks on that link you just dropped    from day 4 to day 10
PatMan
Hero Member
*****
Offline Offline

Activity: 924


Watch out for the "Neg-Rep-Dogie-Police".....


View Profile WWW
August 25, 2014, 06:12:45 PM
 #10350

I pointed out her/his inaccuracies about p2pool.info previously here:

https://bitcointalk.org/index.php?topic=416933.msg8467067#msg8467067

Some trolls just refuse to listen......... Roll Eyes

"When one person is deluded it is called insanity - when many people are deluded it is called religion" - Robert M. Pirsig.  I don't want your coins, I want change.
Amazon UK BTC payment service - https://bitcointalk.org/index.php?topic=301229.0 - with FREE delivery!
http://www.ae911truth.org/ - http://rethink911.org/ - http://rememberbuilding7.org/
fire000
Member
**
Offline Offline

Activity: 98


View Profile
August 25, 2014, 06:18:15 PM
 #10351

I pointed out her/his inaccuracies about p2pool.info previously here:

https://bitcointalk.org/index.php?topic=416933.msg8467067#msg8467067

Some trolls just refuse to listen......... Roll Eyes


lol 1st time I have seen that was now does not look at every thread i post in  unless IT it is a tagged message etc a quote message in reply to a post made....   AS highlighted in that thread  

Also that post was 10 days after I helped that user connect to the P2 so was well and done in that thread

lol at the troll part just off that thread does a troll help a new user out by answering their questions and getting them connected to the p2 NO  as can be seen in that thread couple posts above the linked one here so keep going with the pot shots Smiley   YA really just highlighting how un helpfully you are in this thread and wanting to take pot shots at people Smiley
PatMan
Hero Member
*****
Offline Offline

Activity: 924


Watch out for the "Neg-Rep-Dogie-Police".....


View Profile WWW
August 25, 2014, 06:47:41 PM
 #10352

Has anyone read about Matt Corallo's new "bitcoin backbone project" - https://bitcoinfoundation.org/2014/08/a-bitcoin-backbone - would it make sense to connect bitcoind from a P2Pool set up to this low latency backbone.
So I did this yesterday, downloaded the jar and ran it on the commandline using nohup.  Eventually will probably add it into the p2pool startup script so it's all handled automatically.  Logfile shows decent transaction activity.

Since server restart just over 24 hours ago, my efficiency hasn't dipped below 110% (that I've seen), and is currently hitting 114.5% ... Smiley.  31 shares, 1 orphan, no dead. 

Previously I was bouncing between 95-105%, lately a little under 100% a bit with about a 14% share loss.

So, we'll see how this runs over time... if it keeps up the way it is, then it's a big thumbs up in my book.

EDIT - although it seems to be a bit of a resource hog - 11G of virt RAM according to top.  Then again that could be just usual Java bloat and not necessarily this program since it really isn't much.



I too have noticed an increase in efficiency since using Matts "backbone" - by simply adding it to the .conf file. Is there a reason why you decided to use the jar file? I hate using anything java - it's such a resource hog.

"When one person is deluded it is called insanity - when many people are deluded it is called religion" - Robert M. Pirsig.  I don't want your coins, I want change.
Amazon UK BTC payment service - https://bitcointalk.org/index.php?topic=301229.0 - with FREE delivery!
http://www.ae911truth.org/ - http://rethink911.org/ - http://rememberbuilding7.org/
kgb2mining
Member
**
Offline Offline

Activity: 112


View Profile
August 25, 2014, 07:03:15 PM
 #10353

I too have noticed an increase in efficiency since using Matts "backbone" - by simply adding it to the .conf file. Is there a reason why you decided to use the jar file? I hate using anything java - it's such a resource hog.
Read a few posts back that using addnode didn't seem to work.  Maybe I was misreading it and the issue was trying to add it while running instead of adding it and restarting.  Maybe I'll go plop it in the conf file and see what happens.
PatMan
Hero Member
*****
Offline Offline

Activity: 924


Watch out for the "Neg-Rep-Dogie-Police".....


View Profile WWW
August 25, 2014, 07:13:31 PM
 #10354

Don't forget to include the port 8335 at the end - my syntax reads:

addnode=public.eu.relay.mattcorallo.com:8335

I have noticed a very slight increase in the bitcoind latency (~0.04sec), but I put this down to the faster block/Tx delivery & it hasn't impaired the performance at all - I'm currently @ 115% & 0.18 latency after using the backbone setting for 3 days now - pretty good considering I'm merge mining 8 coins on this single node  Smiley

"When one person is deluded it is called insanity - when many people are deluded it is called religion" - Robert M. Pirsig.  I don't want your coins, I want change.
Amazon UK BTC payment service - https://bitcointalk.org/index.php?topic=301229.0 - with FREE delivery!
http://www.ae911truth.org/ - http://rethink911.org/ - http://rememberbuilding7.org/
kgb2mining
Member
**
Offline Offline

Activity: 112


View Profile
August 25, 2014, 07:17:17 PM
 #10355

Ok, added it to the config like so:

addnode=public.us-east.relay.mattcorallo.com:8335

Seems to be connected to it as a peer:

{
        "addr" : "162.243.69.180:8335",
        "addrlocal" : "xxxxxxxx:8333",
        "services" : "00000001",
        "lastsend" : 1408993934,
        "lastrecv" : 1408993934,
        "bytessent" : 16863,
        "bytesrecv" : 98873,
        "conntime" : 1408993664,
        "pingtime" : 0.00000000,
        "version" : 70001,
        "subver" : "/BitCoinJ:0.12SNAPSHOT/RelayNode:tiny tarantula/",
        "inbound" : false,
        "startingheight" : 1,
        "banscore" : 0,
        "syncnode" : false
    },

Question is, is there any way to know it's really working?  With the java version it at least spit out messages to console about the transactions it was sending.  Now there's nothing like that in the debug log so far.  I'm going to have to assume it's just working in the background and watch the efficiency numbers to see if any difference.

Up to 36/1/0 111.8% efficiency right now.  My GBT latency actually went down, I'm at .173 right now... and I also am doing 7 or 8 merged coins.

Would be awesome if that keeps up.
PatMan
Hero Member
*****
Offline Offline

Activity: 924


Watch out for the "Neg-Rep-Dogie-Police".....


View Profile WWW
August 25, 2014, 07:21:39 PM
 #10356

Use:   "bitcoind getaddednodeinfo true"

"When one person is deluded it is called insanity - when many people are deluded it is called religion" - Robert M. Pirsig.  I don't want your coins, I want change.
Amazon UK BTC payment service - https://bitcointalk.org/index.php?topic=301229.0 - with FREE delivery!
http://www.ae911truth.org/ - http://rethink911.org/ - http://rememberbuilding7.org/
kgb2mining
Member
**
Offline Offline

Activity: 112


View Profile
August 25, 2014, 07:22:26 PM
 #10357

Use:   "bitcoind getaddednodeinfo true"
Thanks, appears to be working then:

[
    {
        "addednode" : "public.us-east.relay.mattcorallo.com:8335",
        "connected" : true,
        "addresses" : [
            {
                "address" : "162.243.69.180:8335",
                "connected" : "outbound"
            }
        ]
    }
]
PatMan
Hero Member
*****
Offline Offline

Activity: 924


Watch out for the "Neg-Rep-Dogie-Police".....


View Profile WWW
August 25, 2014, 07:26:03 PM
 #10358

Good stuff  Smiley

The way I see it, the less processes running - the more resources available for p2pool/bitcoind, especially when java is involved  Wink

"When one person is deluded it is called insanity - when many people are deluded it is called religion" - Robert M. Pirsig.  I don't want your coins, I want change.
Amazon UK BTC payment service - https://bitcointalk.org/index.php?topic=301229.0 - with FREE delivery!
http://www.ae911truth.org/ - http://rethink911.org/ - http://rememberbuilding7.org/
drukoz2
Member
**
Offline Offline

Activity: 71


View Profile
August 25, 2014, 10:17:10 PM
 #10359

i am currently earning 0.035 - 0.04 btc everyday with 1.5 TH i wanted to know how much would i earned in p2pool and wicth pool would i use since there are lots of them or i don't get it would love some explanation
the same or more.
You dont use a public p2pool, you setup p2pool on a local machine.
Mining on a remote p2pool is stupid and if you want to do this, you could just stick to the pool your already using.
So much fail.... *sigh*  And people wonder why p2pool doesn't get higher adoption rates with answers like this.

You CAN use a public P2Pool node, take a look at this page for a listing of some of them - http://p2pool-nodes.info/ - you can sort by country, latency, etc.  Just find a couple geographically close to you and ping them... the lower the ping (latency), the better off you will be.

It is absolutely NOT stupid to mine on a remote p2pool node, especially if you have one close enough to you.  If you aren't close enough to a public node it could affect your performance, so it might be more wise to look at building your own local node if you have the capability, but some folks don't have the resources to do that.  It's all about your comfort level and resources.

The main issue with p2pool is latency - how quickly your miners can communicate to the node you're mining on.  The lower the latency, the less DOA rate you will have.  The less DOA you have the better chance you have of getting good shares, and thus payouts.  This is why it's RECOMMENDED to bring up your own p2pool node locally, because obviously the miners are right next to the node.

There's a bunch more to go into with DOA, shares, stales/orphans and how in general it works if you want to.  The bottom line is that all things equal, over time, you should see at least equal if not better payouts on p2pool versus others, as long as you have a decent hashrate, which I personally consider over 600GH/s.  Judging from your payouts I'd say you have about 1.2-1.5 TH/s, which should be plenty fine.

To configure it's simple.  Once you find a pool node it would look like this-

Pool: stratum+tcp://ip.add.ress.here:9332
Pool worker:  {your bitcoin payment address here}
Pool password:  anything123

I would suggest finding at least 2 P2Pool nodes for pool1 and pool2, and then put your original proprietary node in for pool3.  This way you're covered with failovers and backup in case any of the p2pool nodes go down.

And, no matter what pool node you mine on, if you keep your payment address the same (the pool worker), your shares and payouts will "follow" you to whatever node you're on, so you won't lose any mining time if you failover to another node.

Hope this helps to get you started.  Read up on the last 20-30 pages of this thread if you can at least, and post more questions, most folks here are pretty helpful.



allright so i looked at the other p2pools remote from whre i am now shoudl i put those in higher priority ? then my local one ?


i am currently earning 0.035 - 0.04 btc everyday with 1.5 TH i wanted to know how much would i earned in p2pool and wicth pool would i use since there are lots of them or i don't get it would love some explanation

the same or more.

In the short term (i.e. "per day") variance will be much higher. At 1.5 TH/s and the current pool rate you should expect a payout from each block the pool finds (after you have a share in the chain), here is the closest example to 1.5 TH/s I could find on my node, the payouts per block should give you an idea of what to expect:

http://minefast.coincadence.com/miner.php?id=1JPVPkdnpYYwyYic51id6anMBn9weHwVV9

You dont use a public p2pool, you setup p2pool on a local machine.

Mining on a remote p2pool is stupid and if you want to do this, you could just stick to the pool your already using.

I disagree.

While setting up your own local node is ideal, and how p2pool is intended to be used, it is not a requirement, and mining on a public node is a great way to get started with p2pool.

There are many 0% fee public nodes available to give the pool a try, I would recommend committing for a minimum of 4 days. P2pool uses a PPLNS payout system and the share chain is ~3 days long, any amount of time under that will not give you accurate results.

In picking a public node latency (the time it takes your data to reach the server) is very important. Find your 2-3 closest nodes by using ping and use those in your miner configuration.

My node is in the US east, for other nodes you can explore here:

http://p2pool-nodes.info/

Patience is very important with p2pool. Once you are connected to your closest node for a couple hours check the stats, as long as your DOA rate is lower then the pool average your are doing just fine. Then sit back and let your miners do their thing. Again I would say 4 days is a minimum.



i will be doing this thank you very much for your help Cheesy
hamburgerhelper
Member
**
Offline Offline

Activity: 83


View Profile
August 26, 2014, 01:09:11 AM
 #10360

If you're running RelayNodeClient.jar it looks like it's time to upgrade. I got the following email from the author, Matt Corallo:

Sorry for the inconvenience, please upgrade your relay client node as an
incompatible server change was made Sad. Still, fitting most blocks in
one TCP packet is probably worth it.

I'm waiting to hear back from him to see if he will be producing a .jar file, right now there's only RelayNodeClient.java.
Pages: « 1 ... 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 [518] 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 ... 744 »
  Print  
 
Jump to:  

Sponsored by , a Bitcoin-accepting VPN.
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!