Bitcoin Forum
April 20, 2024, 04:24:45 AM *
News: Latest Bitcoin Core release: 26.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 ... 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 [205] 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 ... 814 »
  Print  
Author Topic: [1500 TH] p2pool: Decentralized, DoS-resistant, Hop-Proof pool  (Read 2591613 times)
btharper
Sr. Member
****
Offline Offline

Activity: 389
Merit: 250



View Profile
December 03, 2012, 08:16:09 PM
 #4081

but all other pools are working with bfl singles?
P2Pool generates a sharechain block every 10 seconds (on average) where the bitcoin blockchain only makes one block every 10 minutes (again, average).

The BFL single takes ~5 seconds to report back the work it computes.
On the full blockchain, or on work from pools this isn't a big deal since a share from five seconds ago is likely to be valid.
On P2Pool because of the lower block generation time a share from 5 seconds ago may or may not be valid, hence the high rejection rate (usually DOA iirc).

So to fix the problem BFL has to reprogram the singles to report back faster like GPUs or other FPGA units do, or P2Pool has to hardfork and use a longer time between blocks. Neither are particularly useful suggestions as changing P2pool for one manufacturer's mistakes is a lot of work for no reason, and a bad precedent; while getting BFL to update their firmware for an obsolete product is a waste of resources.
1713587085
Hero Member
*
Offline Offline

Posts: 1713587085

View Profile Personal Message (Offline)

Ignore
1713587085
Reply with quote  #2

1713587085
Report to moderator
1713587085
Hero Member
*
Offline Offline

Posts: 1713587085

View Profile Personal Message (Offline)

Ignore
1713587085
Reply with quote  #2

1713587085
Report to moderator
1713587085
Hero Member
*
Offline Offline

Posts: 1713587085

View Profile Personal Message (Offline)

Ignore
1713587085
Reply with quote  #2

1713587085
Report to moderator
"Bitcoin: mining our own business since 2009" -- Pieter Wuille
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1713587085
Hero Member
*
Offline Offline

Posts: 1713587085

View Profile Personal Message (Offline)

Ignore
1713587085
Reply with quote  #2

1713587085
Report to moderator
1713587085
Hero Member
*
Offline Offline

Posts: 1713587085

View Profile Personal Message (Offline)

Ignore
1713587085
Reply with quote  #2

1713587085
Report to moderator
1713587085
Hero Member
*
Offline Offline

Posts: 1713587085

View Profile Personal Message (Offline)

Ignore
1713587085
Reply with quote  #2

1713587085
Report to moderator
K1773R
Legendary
*
Offline Offline

Activity: 1792
Merit: 1008


/dev/null


View Profile
December 04, 2012, 02:13:26 AM
 #4082

@forrestv:
could you implement a way to print more details for such messages:
Code:
Merged block submittal result: True
something like this:
Quote
Merged block submittal for pool <POOLURL> result: True

[GPG Public Key]
BTC/DVC/TRC/FRC: 1K1773RbXRZVRQSSXe9N6N2MUFERvrdu6y ANC/XPM AK1773RTmRKtvbKBCrUu95UQg5iegrqyeA NMC: NK1773Rzv8b4ugmCgX789PbjewA9fL9Dy1 LTC: LKi773RBuPepQH8E6Zb1ponoCvgbU7hHmd EMC: EK1773RxUes1HX1YAGMZ1xVYBBRUCqfDoF BQC: bK1773R1APJz4yTgRkmdKQhjhiMyQpJgfN
aTg
Legendary
*
Offline Offline

Activity: 1358
Merit: 1000



View Profile
December 04, 2012, 04:14:36 AM
 #4083

Quote
Pool rate: 330GH/s (21% stale) Share difficulty: 577
Node uptime: 0.376 days Peers: 6 out, 1 in
Local rate: 39.1GH/s (62% DOA) Expected time to share: 0.0177 hours
Shares: 501 total (76 orphaned, 157 dead) Efficiency: 67.76%

I'm on version 9.3, which is going on?
Rogue Star
Member
**
Offline Offline

Activity: 89
Merit: 10


View Profile
December 04, 2012, 05:30:33 AM
 #4084

Quote
Pool rate: 330GH/s (21% stale) Share difficulty: 577
Node uptime: 0.376 days Peers: 6 out, 1 in
Local rate: 39.1GH/s (62% DOA) Expected time to share: 0.0177 hours
Shares: 501 total (76 orphaned, 157 dead) Efficiency: 67.76%

I'm on version 9.3, which is going on?
Have you tried restarting your miner(s)? I find it helps to restart after an upgrade.

you can donate to me for whatever reason at: 18xbnjDDXxgcvRzv5k2vmrKQHWDjYsBDCf
rav3n_pl
Legendary
*
Offline Offline

Activity: 1361
Merit: 1003


Don`t panic! Organize!


View Profile WWW
December 04, 2012, 09:27:53 AM
 #4085

Quote
Pool rate: 330GH/s (21% stale) Share difficulty: 577
Node uptime: 0.376 days Peers: 6 out, 1 in
Local rate: 39.1GH/s (62% DOA) Expected time to share: 0.0177 hours
Shares: 501 total (76 orphaned, 157 dead) Efficiency: 67.76%

I'm on version 9.3, which is going on?
Huge DOA rate indicates bad miner config or some issues/lags on connection.
See graphs on your node, maybe you see something.

1Rav3nkMayCijuhzcYemMiPYsvcaiwHni  Bitcoin stuff on my OneDrive
My RPC CoinControl for any coin https://bitcointalk.org/index.php?topic=929954
Some stuff on https://github.com/Rav3nPL/
Aseras
Hero Member
*****
Offline Offline

Activity: 658
Merit: 500


View Profile
December 04, 2012, 03:31:53 PM
 #4086

9.2 still gives me 100% orphan rate.  9.3 appears to be working ok, although 2 stales/doa right off the bat.
aTg
Legendary
*
Offline Offline

Activity: 1358
Merit: 1000



View Profile
December 04, 2012, 04:59:09 PM
 #4087

Not solved by restarting the workers, only reaches the pool little more than 50% of my power. And if in the version 9.3.
Aseras
Hero Member
*****
Offline Offline

Activity: 658
Merit: 500


View Profile
December 04, 2012, 05:19:11 PM
 #4088

Not solved by restarting the workers, only reaches the pool little more than 50% of my power. And if in the version 9.3.


Check bitcoind/qt process usage. If its over 40% drop the process priority to below normal.
btctalk
Full Member
***
Offline Offline

Activity: 137
Merit: 112



View Profile WWW
December 04, 2012, 06:41:48 PM
 #4089

on my setup everything seems to be going fine on the miner's end but local hash rate shows weird behaviour like sometimes its 0 and sometimes it's twice what it supposed to be...

Code:
Version: 9.3
Pool rate: 359GH/s (20% stale) Share difficulty: 643
Node uptime: 0.037 days Peers: 6 out, 0 in
Local rate: 21.5MH/s (0.0% DOA) Expected time to share: 35.7 hours
Shares: 0 total (0 orphaned, 0 dead) Efficiency: ???

I think it could be related to this, i get this once in a while in the output:
Code:
2012-12-04 13:39:12.779581 P2Pool: 17318 shares in chain (8906 verified/17322 total) Peers: 6 (0 incoming)
2012-12-04 13:39:12.779671  Local: 14316kH/s in last 10.0 minutes Local dead on arrival: ~0.0% (0-66%) Expected time to share: 2.2 days
2012-12-04 13:39:12.779709  Shares: 0 (0 orphan, 0 dead) Stale rate: ??? Efficiency: ??? Current payout: 0.0000 BTC
2012-12-04 13:39:12.779749  Pool: 351GH/s Stale rate: 19.5% Expected time to block: 11.7 hours
2012-12-04 13:39:26.673891 New work for worker! Difficulty: 0.999985 Share difficulty: 644.631003 Total block value: 25.409100 BTC including 508 transactions
2012-12-04 13:39:27.805831 P2Pool: 17319 shares in chain (8907 verified/17323 total) Peers: 6 (0 incoming)
2012-12-04 13:39:27.805917  Local: 14316kH/s in last 10.0 minutes Local dead on arrival: ~0.0% (0-66%) Expected time to share: 2.2 days
2012-12-04 13:39:27.805954  Shares: 0 (0 orphan, 0 dead) Stale rate: ??? Efficiency: ??? Current payout: 0.0000 BTC
2012-12-04 13:39:27.806018  Pool: 351GH/s Stale rate: 19.6% Expected time to block: 11.7 hours
2012-12-04 13:39:28.809477 > Traceback (most recent call last):
2012-12-04 13:39:28.809570 >   File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 371, in _runCallbacks
2012-12-04 13:39:28.809611 >     self.result = callback(self.result, *args, **kw)
2012-12-04 13:39:28.809648 >   File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 879, in gotResult
2012-12-04 13:39:28.809685 >     _inlineCallbacks(r, g, deferred)
2012-12-04 13:39:28.809720 >   File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 821, in _inlineCallbacks
2012-12-04 13:39:28.809758 >     result = result.throwExceptionIntoGenerator(g)
2012-12-04 13:39:28.809794 >   File "/usr/lib/python2.6/dist-packages/twisted/python/failure.py", line 338, in throwExceptionIntoGenerator
2012-12-04 13:39:28.809833 >     return g.throw(self.type, self.value, self.tb)
2012-12-04 13:39:28.809868 > --- <exception caught here> ---
2012-12-04 13:39:28.809902 >   File "/home/shayan/Downloads/p2pool/p2pool/util/deferral.py", line 41, in f
2012-12-04 13:39:28.809938 >     result = yield func(*args, **kwargs)
2012-12-04 13:39:28.809973 >   File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 821, in _inlineCallbacks
2012-12-04 13:39:28.810036 >     result = result.throwExceptionIntoGenerator(g)
2012-12-04 13:39:28.810073 >   File "/usr/lib/python2.6/dist-packages/twisted/python/failure.py", line 338, in throwExceptionIntoGenerator
2012-12-04 13:39:28.810109 >     return g.throw(self.type, self.value, self.tb)
2012-12-04 13:39:28.810145 >   File "/home/shayan/Downloads/p2pool/p2pool/util/jsonrpc.py", line 71, in callRemote
2012-12-04 13:39:28.810218 >     raise Error_for_code(resp['error']['code'])(resp['error']['message'], resp['error'].get('data', None))
2012-12-04 13:39:28.810259 > p2pool.util.jsonrpc.NarrowError: -32601 Method not found
2012-12-04 13:39:37.247657 New work for worker! Difficulty: 0.999985 Share difficulty: 650.315749 Total block value: 25.411100 BTC including 510 transactions


could it be because I'm using merged minings with litecoin? litecoin pool is working fine, there's no problem with anything. just thought it could be related (no idea how Wink )

Persian Blockchain Podcast: https://shiryakhat.net
Super Bitcoiner Club http://superbitcoiner.com
Persian Blockchain Community - http://coiniran.com - http://fb.com/IranBitcoin
Red Emerald
Hero Member
*****
Offline Offline

Activity: 742
Merit: 500



View Profile WWW
December 04, 2012, 06:47:57 PM
 #4090

on my setup everything seems to be going fine on the miner's end but local hash rate shows weird behaviour like sometimes its 0 and sometimes it's twice what it supposed to be...

Code:
Version: 9.3
Pool rate: 359GH/s (20% stale) Share difficulty: 643
Node uptime: 0.037 days Peers: 6 out, 0 in
Local rate: 21.5MH/s (0.0% DOA) Expected time to share: 35.7 hours
Shares: 0 total (0 orphaned, 0 dead) Efficiency: ???

I think it could be related to this, i get this once in a while in the output:
Code:
2012-12-04 13:39:12.779581 P2Pool: 17318 shares in chain (8906 verified/17322 total) Peers: 6 (0 incoming)
2012-12-04 13:39:12.779671  Local: 14316kH/s in last 10.0 minutes Local dead on arrival: ~0.0% (0-66%) Expected time to share: 2.2 days
2012-12-04 13:39:12.779709  Shares: 0 (0 orphan, 0 dead) Stale rate: ??? Efficiency: ??? Current payout: 0.0000 BTC
2012-12-04 13:39:12.779749  Pool: 351GH/s Stale rate: 19.5% Expected time to block: 11.7 hours
2012-12-04 13:39:26.673891 New work for worker! Difficulty: 0.999985 Share difficulty: 644.631003 Total block value: 25.409100 BTC including 508 transactions
2012-12-04 13:39:27.805831 P2Pool: 17319 shares in chain (8907 verified/17323 total) Peers: 6 (0 incoming)
2012-12-04 13:39:27.805917  Local: 14316kH/s in last 10.0 minutes Local dead on arrival: ~0.0% (0-66%) Expected time to share: 2.2 days
2012-12-04 13:39:27.805954  Shares: 0 (0 orphan, 0 dead) Stale rate: ??? Efficiency: ??? Current payout: 0.0000 BTC
2012-12-04 13:39:27.806018  Pool: 351GH/s Stale rate: 19.6% Expected time to block: 11.7 hours
2012-12-04 13:39:28.809477 > Traceback (most recent call last):
2012-12-04 13:39:28.809570 >   File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 371, in _runCallbacks
2012-12-04 13:39:28.809611 >     self.result = callback(self.result, *args, **kw)
2012-12-04 13:39:28.809648 >   File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 879, in gotResult
2012-12-04 13:39:28.809685 >     _inlineCallbacks(r, g, deferred)
2012-12-04 13:39:28.809720 >   File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 821, in _inlineCallbacks
2012-12-04 13:39:28.809758 >     result = result.throwExceptionIntoGenerator(g)
2012-12-04 13:39:28.809794 >   File "/usr/lib/python2.6/dist-packages/twisted/python/failure.py", line 338, in throwExceptionIntoGenerator
2012-12-04 13:39:28.809833 >     return g.throw(self.type, self.value, self.tb)
2012-12-04 13:39:28.809868 > --- <exception caught here> ---
2012-12-04 13:39:28.809902 >   File "/home/shayan/Downloads/p2pool/p2pool/util/deferral.py", line 41, in f
2012-12-04 13:39:28.809938 >     result = yield func(*args, **kwargs)
2012-12-04 13:39:28.809973 >   File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 821, in _inlineCallbacks
2012-12-04 13:39:28.810036 >     result = result.throwExceptionIntoGenerator(g)
2012-12-04 13:39:28.810073 >   File "/usr/lib/python2.6/dist-packages/twisted/python/failure.py", line 338, in throwExceptionIntoGenerator
2012-12-04 13:39:28.810109 >     return g.throw(self.type, self.value, self.tb)
2012-12-04 13:39:28.810145 >   File "/home/shayan/Downloads/p2pool/p2pool/util/jsonrpc.py", line 71, in callRemote
2012-12-04 13:39:28.810218 >     raise Error_for_code(resp['error']['code'])(resp['error']['message'], resp['error'].get('data', None))
2012-12-04 13:39:28.810259 > p2pool.util.jsonrpc.NarrowError: -32601 Method not found
2012-12-04 13:39:37.247657 New work for worker! Difficulty: 0.999985 Share difficulty: 650.315749 Total block value: 25.411100 BTC including 510 transactions


could it be because I'm using merged minings with litecoin? litecoin pool is working fine, there's no problem with anything. just thought it could be related (no idea how Wink )
You can't merge mine bitcoin and litecoin.  That doesn't work.

btctalk
Full Member
***
Offline Offline

Activity: 137
Merit: 112



View Profile WWW
December 04, 2012, 06:59:18 PM
 #4091


You can't merge mine bitcoin and litecoin.  That doesn't work.


So how is it possible to have a mining pool that supports LTC and BTC mining? it should be, on different ports Undecided

Persian Blockchain Podcast: https://shiryakhat.net
Super Bitcoiner Club http://superbitcoiner.com
Persian Blockchain Community - http://coiniran.com - http://fb.com/IranBitcoin
Aseras
Hero Member
*****
Offline Offline

Activity: 658
Merit: 500


View Profile
December 04, 2012, 07:05:46 PM
 #4092

you can "merge mine" bitcoins and tell it to submit to litecoin but litecoin will reject every block, probably one every few seconds, you are probably hammering the crap out of your computer trying that.

You have to mine one of the other, they are incompatible.

you run separate instances on different ports, and you can only mine on one or the other with the same worker.

You can have the same gpu or whatever split and mine half on litecoin and half btc, but since btc needs high hashrate and low mem speed, and litecoin needs low rate and high mem speed it's not really feasible.
Red Emerald
Hero Member
*****
Offline Offline

Activity: 742
Merit: 500



View Profile WWW
December 04, 2012, 07:12:47 PM
 #4093


You can't merge mine bitcoin and litecoin.  That doesn't work.


So how is it possible to have a mining pool that supports LTC and BTC mining? it should be, on different ports Undecided
Run p2pool twice with different settings.

You will have one pool for BTC and one pool for LTC.  Not one pool with ports for both.

btctalk
Full Member
***
Offline Offline

Activity: 137
Merit: 112



View Profile WWW
December 04, 2012, 07:44:33 PM
 #4094


You can't merge mine bitcoin and litecoin.  That doesn't work.


So how is it possible to have a mining pool that supports LTC and BTC mining? it should be, on different ports Undecided
Run p2pool twice with different settings.

You will have one pool for BTC and one pool for LTC.  Not one pool with ports for both.

Thanks, yeah I end up doing so, I was just waiting for some results to see if it's working alright or not
but still I'm getting the ups and downs in local BTC Hash rate...

Persian Blockchain Podcast: https://shiryakhat.net
Super Bitcoiner Club http://superbitcoiner.com
Persian Blockchain Community - http://coiniran.com - http://fb.com/IranBitcoin
mdude77
Legendary
*
Offline Offline

Activity: 1540
Merit: 1001



View Profile
December 04, 2012, 07:46:47 PM
 #4095


You can't merge mine bitcoin and litecoin.  That doesn't work.


So how is it possible to have a mining pool that supports LTC and BTC mining? it should be, on different ports Undecided
Run p2pool twice with different settings.

You will have one pool for BTC and one pool for LTC.  Not one pool with ports for both.

Thanks, yeah I end up doing so, I was just waiting for some results to see if it's working alright or not
but still I'm getting the ups and downs in local BTC Hash rate...

For some reasons there are always ups and downs in the hash rate.  If you look at the global rate, it seems to follow a sine curve.  I've seen it locally on p2pool, and on every pool I've used.  Maybe some day I'll understand why.

M

I mine at Kano's Pool because it pays the best and is completely transparent!  Come join me!
Aseras
Hero Member
*****
Offline Offline

Activity: 658
Merit: 500


View Profile
December 04, 2012, 07:56:51 PM
 #4096

use the webpage

127.0.0.1:9332  and go to graphs. it should even out over time.
btctalk
Full Member
***
Offline Offline

Activity: 137
Merit: 112



View Profile WWW
December 04, 2012, 08:21:47 PM
 #4097

thanks all

Persian Blockchain Podcast: https://shiryakhat.net
Super Bitcoiner Club http://superbitcoiner.com
Persian Blockchain Community - http://coiniran.com - http://fb.com/IranBitcoin
BkkCoins
Hero Member
*****
Offline Offline

Activity: 784
Merit: 1009


firstbits:1MinerQ


View Profile WWW
December 05, 2012, 04:43:42 AM
Last edit: December 05, 2012, 05:02:29 AM by BkkCoins
 #4098

I'm just trying out p2pool for first time.

I'm getting a lot of these:

Traceback (most recent call last):
Failure: twisted.python.failure.DefaultException: sharereply result: too long

Is that normal or is something wrong?

In cgminer it always say the pool is dead. But I'm entering apparently correct values.

netstat -lntp shows it's listening on 0.0.0.0 not 127.0.0.1


tiberiandusk
Hero Member
*****
Offline Offline

Activity: 575
Merit: 500


The North Remembers


View Profile WWW
December 05, 2012, 05:22:36 AM
 #4099

I'm just trying out p2pool for first time.

I'm getting a lot of these:

Traceback (most recent call last):
Failure: twisted.python.failure.DefaultException: sharereply result: too long

Is that normal or is something wrong?

In cgminer it always say the pool is dead. But I'm entering apparently correct values.

netstat -lntp shows it's listening on 0.0.0.0 not 127.0.0.1



9.3 fixed this problem. Scroll up.

Bitcoin Auction House http://www.BitBid.net BTC - 1EwfBVC6BwA6YeqcYZmm3htwykK3MStW6N | LTC - LdBpJJHj4WSAsUqaTbwyJQFiG1tVjo4Uys Don't get Goxed.
BkkCoins
Hero Member
*****
Offline Offline

Activity: 784
Merit: 1009


firstbits:1MinerQ


View Profile WWW
December 05, 2012, 05:29:53 AM
Last edit: December 05, 2012, 05:57:58 AM by BkkCoins
 #4100

I'm just trying out p2pool for first time.

I'm getting a lot of these:

Traceback (most recent call last):
Failure: twisted.python.failure.DefaultException: sharereply result: too long

Is that normal or is something wrong?

In cgminer it always say the pool is dead. But I'm entering apparently correct values.

netstat -lntp shows it's listening on 0.0.0.0 not 127.0.0.1



9.3 fixed this problem. Scroll up.
Ah. Ok. I didn't read back much. I'll d/l and try 9.3 then. Thx.

edit: Done. That error is gone. But the pool still shows as Dead in cgminer.

Using,
host: http://127.0.0.1:9332
user: 15...address
pwd: xxx

It should work as the stats/graph interface shows up on 127.0.0.1:9332

edit2:
Or does it just always take a while after starting p2pool for it to be alive? I see it now shows up as alive in cgminer after about 10 minutes or so.

Now I'm getting this:

Code:
[2012-12-05 12:54:22] Rejected e26cbf8f.5ca9c8b1 GPU 0 pool 3
 [2012-12-05 12:54:29] Accepted 70721a13.01ba3366 GPU 1 pool 3
 [2012-12-05 12:54:34] LONGPOLL from pool 3 requested work restart
 [2012-12-05 12:54:40] Accepted 5634174c.7bfe87fc GPU 0 pool 3
 [2012-12-05 12:54:42] Accepted 80dff53a.bf5d8415 GPU 0 pool 3
 [2012-12-05 12:54:46] LONGPOLL from pool 3 requested work restart
 [2012-12-05 12:54:51] Accepted b2d828ba.45538286 GPU 1 pool 3
 [2012-12-05 12:54:54] LONGPOLL from pool 3 requested work restart
 [2012-12-05 12:54:57] Accepted efb1033b.86eb6754 GPU 0 pool 3
 [2012-12-05 12:54:59] Accepted ec5af0bc.ca0a720d GPU 1 pool 3
 [2012-12-05 12:55:05] LONGPOLL from pool 3 requested work restart
 [2012-12-05 12:55:05] Accepted bb40cf3f.b7e293bc GPU 2 pool 3
Normal for so many LP restarts? I'm probably getting quite high latencies due to my location. Maybe it's not worth me using p2pool with high latency? Just wondering.

Pages: « 1 ... 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 [205] 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 ... 814 »
  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!