Bitcoin Forum
April 19, 2024, 10:23:16 PM *
News: Latest Bitcoin Core release: 26.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 ... 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 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 ... 814 »
  Print  
Author Topic: [1500 TH] p2pool: Decentralized, DoS-resistant, Hop-Proof pool  (Read 2591613 times)
norgan
Sr. Member
****
Offline Offline

Activity: 308
Merit: 250

Decentralize your hashing - p2pool - Norgz Pool


View Profile WWW
September 23, 2014, 12:24:55 AM
 #10701

Well full respect to you Con. What do you think of Bitmains comments on p2pool, what do we expect to see from them? I wish I had the spare cash (and power prices) to go buy a few chunky miners but it's just a hobby for me. Your pool is private atm correct? some of the work you are doing looks great, does it help smaller miners?
Bitmain's contribution to p2pool will not help regular miners. They see that being proponents of p2pool will raise their status in the eyes of potential customers. However it appears they simply want to run their own solo mining operation using their own p2pool instance which is really of no relevance to miners. Even if they dump their hashrate directly into regular p2pool, it just increases share difficulty even further, making it even harder for regular miners. The only way they may be contributing is by adding code/improvements to the p2pool network, but in my experience every hardware manufacturer directs the absolute minimum amount of effort towards software/drivers as possible to just expedite delivery of their hardware.

Offtopic about ckpool: There are public pools using the ckpool code - regular, solo and testnet. Just check the announce thread for the listed pools.

Thanks for the insight. p2pool has some interesting benefits but also some equally interesting draw backs as the total pool rate increases. a double edged sword as we yearn for more block and high hash rate we almost push ourselves out. will be watching closely.

Yeah found a certain pool running ckpool Wink

Miner, tech geek, operator of NorgzPool - Sydney Australia P2Pool Node creator of p2pool fancy front end

Tips: 1NorganBbymShTN2MMpfGzRYJF8mcPeXjv Exchange BTC locally in Australia or Donate to p2pool miners
1713565396
Hero Member
*
Offline Offline

Posts: 1713565396

View Profile Personal Message (Offline)

Ignore
1713565396
Reply with quote  #2

1713565396
Report to moderator
1713565396
Hero Member
*
Offline Offline

Posts: 1713565396

View Profile Personal Message (Offline)

Ignore
1713565396
Reply with quote  #2

1713565396
Report to moderator
1713565396
Hero Member
*
Offline Offline

Posts: 1713565396

View Profile Personal Message (Offline)

Ignore
1713565396
Reply with quote  #2

1713565396
Report to moderator
"Bitcoin: the cutting edge of begging technology." -- Giraffe.BTC
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1713565396
Hero Member
*
Offline Offline

Posts: 1713565396

View Profile Personal Message (Offline)

Ignore
1713565396
Reply with quote  #2

1713565396
Report to moderator
1713565396
Hero Member
*
Offline Offline

Posts: 1713565396

View Profile Personal Message (Offline)

Ignore
1713565396
Reply with quote  #2

1713565396
Report to moderator
1713565396
Hero Member
*
Offline Offline

Posts: 1713565396

View Profile Personal Message (Offline)

Ignore
1713565396
Reply with quote  #2

1713565396
Report to moderator
-ck
Legendary
*
Offline Offline

Activity: 4088
Merit: 1630


Ruu \o/


View Profile WWW
September 23, 2014, 06:05:20 AM
Last edit: September 23, 2014, 12:22:36 PM by ckolivas
 #10702

Does anyone know if I change the COINBASE_NONCE_LENGTH (larger to make nonce2 larger) on a local p2pool whether shares will be rejected by the p2pool network? I'm trying to make it more suitable to using a ckproxy front end.
This is proving extraordinarily difficult to test with my piddly hashrate (yes I know it's unbelievable but I'm only a very small miner). Could someone be so kind as to point their hashes at a public node I've placed at stratum+tcp://p2pool.ckpool.org:9332 please? It's a zero fee node so you can mine to your address as per any other node. I only need someone to mine until they get one valid real share and then they can move away. The worst thing that can happen is the share is not accepted so you will not get the reward for it. The testing is all to potentially find a meaningful interface between ckpool and p2pool which should hopefully benefit miners and p2pool in the future. Thanks.

EDIT: Test for now completed unsuccessfully, thanks! There may be another phase.

Developer/maintainer for cgminer, ckpool/ckproxy, and the -ck kernel
2% Fee Solo mining at solo.ckpool.org
-ck
PatMan
Hero Member
*****
Offline Offline

Activity: 924
Merit: 1000


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


View Profile WWW
September 23, 2014, 08:08:46 AM
 #10703

Does anyone know if I change the COINBASE_NONCE_LENGTH (larger to make nonce2 larger) on a local p2pool whether shares will be rejected by the p2pool network? I'm trying to make it more suitable to using a ckproxy front end.
I only need someone to mine until they get one valid real share and then they can move away. The worst thing that can happen is the share is not accepted so you will not get the reward for it. The testing is all to potentially find a meaningful interface between ckpool and p2pool which should hopefully benefit miners and p2pool in the future. Thanks.

How much hash do you need con? Like you, I'm a small miner, but if it's a case of "every little helps", I could point ~3G/hs at you if you think it'll help......

"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/
norgan
Sr. Member
****
Offline Offline

Activity: 308
Merit: 250

Decentralize your hashing - p2pool - Norgz Pool


View Profile WWW
September 23, 2014, 08:20:23 AM
 #10704

Does anyone know if I change the COINBASE_NONCE_LENGTH (larger to make nonce2 larger) on a local p2pool whether shares will be rejected by the p2pool network? I'm trying to make it more suitable to using a ckproxy front end.
This is proving extraordinarily difficult to test with my piddly hashrate (yes I know it's unbelievable but I'm only a very small miner). Could someone be so kind as to point their hashes at a public node I've placed at stratum+tcp://p2pool.ckpool.org:9332 please? It's a zero fee node so you can mine to your address as per any other node. I only need someone to mine until they get one valid real share and then they can move away. The worst thing that can happen is the share is not accepted so you will not get the reward for it. The testing is all to potentially find a meaningful interface between ckpool and p2pool which should hopefully benefit miners and p2pool in the future. Thanks.

I've just pointed one of my s1's at it. let me know when you've seen enough shares.

Miner, tech geek, operator of NorgzPool - Sydney Australia P2Pool Node creator of p2pool fancy front end

Tips: 1NorganBbymShTN2MMpfGzRYJF8mcPeXjv Exchange BTC locally in Australia or Donate to p2pool miners
-ck
Legendary
*
Offline Offline

Activity: 4088
Merit: 1630


Ruu \o/


View Profile WWW
September 23, 2014, 08:23:25 AM
 #10705

Thanks very much, I'll keep you informed as soon as it's over! Every little bit counts Smiley

Developer/maintainer for cgminer, ckpool/ckproxy, and the -ck kernel
2% Fee Solo mining at solo.ckpool.org
-ck
-ck
Legendary
*
Offline Offline

Activity: 4088
Merit: 1630


Ruu \o/


View Profile WWW
September 23, 2014, 12:23:23 PM
Last edit: September 23, 2014, 12:42:16 PM by ckolivas
 #10706

Test for now completed unsuccessfully, thanks! (The answer was no). There may be another phase.

Taking the p2pool instance down, please point your hashes back where they belong! Thanks to those who submitted hashes.

Developer/maintainer for cgminer, ckpool/ckproxy, and the -ck kernel
2% Fee Solo mining at solo.ckpool.org
-ck
jonnybravo0311
Legendary
*
Offline Offline

Activity: 1344
Merit: 1023


Mine at Jonny's Pool


View Profile WWW
September 23, 2014, 01:47:12 PM
 #10707

Well full respect to you Con. What do you think of Bitmains comments on p2pool, what do we expect to see from them? I wish I had the spare cash (and power prices) to go buy a few chunky miners but it's just a hobby for me. Your pool is private atm correct? some of the work you are doing looks great, does it help smaller miners?
Bitmain's contribution to p2pool will not help regular miners. They see that being proponents of p2pool will raise their status in the eyes of potential customers. However it appears they simply want to run their own solo mining operation using their own p2pool instance which is really of no relevance to miners. Even if they dump their hashrate directly into regular p2pool, it just increases share difficulty even further, making it even harder for regular miners. The only way they may be contributing is by adding code/improvements to the p2pool network, but in my experience every hardware manufacturer directs the absolute minimum amount of effort towards software/drivers as possible to just expedite delivery of their hardware.

Offtopic about ckpool: There are public pools using the ckpool code - regular, solo and testnet. Just check the announce thread for the listed pools.

Thanks for the insight. p2pool has some interesting benefits but also some equally interesting draw backs as the total pool rate increases. a double edged sword as we yearn for more block and high hash rate we almost push ourselves out. will be watching closely.

Yeah found a certain pool running ckpool Wink
This exact problem has been discussed many times throughout this thread at different points in time.  Windpath even offered up a bounty to get forrestv involved and fix the problem.  Heck, even forrestv himself has stated he knows variance is an issue and had some "ideas", but never shared those ideas, or provided code.

As you're discovering, the larger p2pool's total hash rate gets, the larger the variance for the individual miner.  If Bitmain truly does dump a ton of hashing power onto the regular p2pool network it will make the acceptable minimum entry hash rate out of the realm of possibility for most "hobby" miners.  You're seeing it now with your S3.  Imagine what happens with 10 or 20PH/s on p2pool.  At 10PH/s, the share difficulty will be around 70,000,000.  At 20PH/s, it's about 140,000,000.  That means in order for you to find at least 1 share per day, at a total network hash of 10PH/s, you will need at least 3.4TH/s.

Jonny's Pool - Mine with us and help us grow!  Support a pool that supports Bitcoin, not a hardware manufacturer's pockets!  No SPV cheats.  No empty blocks.
PatMan
Hero Member
*****
Offline Offline

Activity: 924
Merit: 1000


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


View Profile WWW
September 23, 2014, 01:59:31 PM
 #10708

This exact problem has been discussed many times throughout this thread at different points in time.....

Indeed, as long as I can remember actually. I'm not sure if Bitmain will actually go the p2pool way tbh, but if they do, their code is going to be interesting viewing - especially as they're running S2's which are notoriously crap with p2pool.....

"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
Merit: 10


View Profile
September 23, 2014, 05:15:22 PM
 #10709

Ironically the only current solution I can see is... putting regular pools in front of the distributed pool which of course adds centralisation detracting from the distributed nature, so it's hard to see how this is actually better than just using a full regular pool. I've yet to come up with a better solution to the problem, but that doesn't mean I've given up on looking for solutions entirely.
If I saw correctly you seem to have an idea already about merging the two ideas... if you find a way to introduce a method of communication between running ckpools, you are in effect creating a p2pool out of ckpools.  Or am I misreading what was in your other main discussion thread?

Honestly if that is the answer to solving the share diff issue, then there might certainly be room to work with in merging the best principles and interfaces of p2pool to run on top of a well built pool foundation that you've created with ckpool.

The main reason I like p2pool is that I have enough hashrate where running a local node is really beneficial.  I'd very much consider running a local ckpool instance, but it's not enough hash to find anything on my own since it's an isolated pool.  By connecting into the p2pool network I get the combined hashrate which finds blocks at a decent clip.

jonnybravo0311
Legendary
*
Offline Offline

Activity: 1344
Merit: 1023


Mine at Jonny's Pool


View Profile WWW
September 23, 2014, 06:09:33 PM
 #10710

Ironically the only current solution I can see is... putting regular pools in front of the distributed pool which of course adds centralisation detracting from the distributed nature, so it's hard to see how this is actually better than just using a full regular pool. I've yet to come up with a better solution to the problem, but that doesn't mean I've given up on looking for solutions entirely.
If I saw correctly you seem to have an idea already about merging the two ideas... if you find a way to introduce a method of communication between running ckpools, you are in effect creating a p2pool out of ckpools.  Or am I misreading what was in your other main discussion thread?

Honestly if that is the answer to solving the share diff issue, then there might certainly be room to work with in merging the best principles and interfaces of p2pool to run on top of a well built pool foundation that you've created with ckpool.

The main reason I like p2pool is that I have enough hashrate where running a local node is really beneficial.  I'd very much consider running a local ckpool instance, but it's not enough hash to find anything on my own since it's an isolated pool.  By connecting into the p2pool network I get the combined hashrate which finds blocks at a decent clip.


There are some thoughts on this approach - putting a "traditional" style pool on top of p2pool's framework.  I'm pretty sure the folks at mmpool are attempting this currently.  However, as ckolivas correctly points out, just because you're using a decentralized back end, you're still centralizing mining power because miners have to register themselves on *your* pool.  If I mine on pool A, then move to pool B, I'd have to re-register and effectively start again from scratch as a new miner on pool B.

Now, if the entire thing was distributed (i.e. register on one pool, and mine on any of them) that would be a different story, since every pool would have knowledge of every miner, just like current p2pool.

Jonny's Pool - Mine with us and help us grow!  Support a pool that supports Bitcoin, not a hardware manufacturer's pockets!  No SPV cheats.  No empty blocks.
kgb2mining
Member
**
Offline Offline

Activity: 112
Merit: 10


View Profile
September 23, 2014, 06:33:13 PM
 #10711

There are some thoughts on this approach - putting a "traditional" style pool on top of p2pool's framework.  I'm pretty sure the folks at mmpool are attempting this currently.  However, as ckolivas correctly points out, just because you're using a decentralized back end, you're still centralizing mining power because miners have to register themselves on *your* pool.  If I mine on pool A, then move to pool B, I'd have to re-register and effectively start again from scratch as a new miner on pool B.

Now, if the entire thing was distributed (i.e. register on one pool, and mine on any of them) that would be a different story, since every pool would have knowledge of every miner, just like current p2pool.
Ahh, ok I see what you mean.  I would suppose though that it should be doable to keep track of that info as well, especially if there's a database backend that could be utilized to keep track of that info which could be replicated across the nodes when the user is initially setup.  But then again, it does appear you can mine anonymously on the nodes by using your miner address, so I could assume that doing it that way would remove that dependency, right?
newbuntu
Member
**
Offline Offline

Activity: 61
Merit: 10


View Profile
September 23, 2014, 08:19:42 PM
 #10712

Is there a graceful method of shutting down the p2pool terminal? I haven't been able to find anything for it so I'm simply using Control C ... is there another / better option?
IYFTech
Hero Member
*****
Offline Offline

Activity: 686
Merit: 500


WANTED: Active dev to fix & re-write p2pool in C


View Profile
September 23, 2014, 08:26:01 PM
 #10713

Is there a graceful method of shutting down the p2pool terminal? I haven't been able to find anything for it so I'm simply using Control C ... is there another / better option?

That's as graceful as it gets........you could sing a lullaby  Wink

You don't really want to be turning it off - let it run, & run, & run........

-- Smiley  Thank you for smoking  Smiley --  If you paid VAT to dogie for items you should read this thread:  https://bitcointalk.org/index.php?topic=1018906.0
newbuntu
Member
**
Offline Offline

Activity: 61
Merit: 10


View Profile
September 23, 2014, 08:36:20 PM
 #10714

Is there a graceful method of shutting down the p2pool terminal? I haven't been able to find anything for it so I'm simply using Control C ... is there another / better option?

That's as graceful as it gets........you could sing a lullaby  Wink

You don't really want to be turning it off - let it run, & run, & run........
Thanks for the answer.
I'm still experimenting so it's on and off at the moment.
Next step is set it up for merged.
Ordered new dual xeon server to be dedicated to pools, once it's ready to go then it will run & run & run ...
jonnybravo0311
Legendary
*
Offline Offline

Activity: 1344
Merit: 1023


Mine at Jonny's Pool


View Profile WWW
September 23, 2014, 08:49:18 PM
Last edit: September 23, 2014, 11:32:31 PM by jonnybravo0311
 #10715

Is there a graceful method of shutting down the p2pool terminal? I haven't been able to find anything for it so I'm simply using Control C ... is there another / better option?

That's as graceful as it gets........you could sing a lullaby  Wink

You don't really want to be turning it off - let it run, & run, & run........
Thanks for the answer.
I'm still experimenting so it's on and off at the moment.
Next step is set it up for merged.
Ordered new dual xeon server to be dedicated to pools, once it's ready to go then it will run & run & run ...
Instead of using Control-C, you can issue the kill command:
Code:
kill -KILLARG pid
For example
Code:
kill -15 1234
To get a listing of all available on your system, just do:
Code:
kill -l
That will return a list something like this:
Code:
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL
 5) SIGTRAP 6) SIGABRT 7) SIGEMT 8) SIGFPE
 9) SIGKILL 10) SIGBUS 11) SIGSEGV 12) SIGSYS
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGURG
17) SIGSTOP 18) SIGTSTP 19) SIGCONT 20) SIGCHLD
21) SIGTTIN 22) SIGTTOU 23) SIGIO 24) SIGXCPU
25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH
29) SIGINFO 30) SIGUSR1 31) SIGUSR2
By default, if you don't specify the name/number, kill will use 15 (SIGTERM).  It's basically a nice way of telling the process to terminate.  If you're feeling particularly uncaring, you can use 9 (SIGKILL), which effectively bypasses the process altogether and tells the kernel to force the process to die.  Control C is effectively sending 2 (SIGINT) to the process.  It's a bit more complex, as Control C sends the SIGINT to all of the processes in the process group controlled by the program; however, for p2pool, it's effectively the same since there's only a single process.

Jonny's Pool - Mine with us and help us grow!  Support a pool that supports Bitcoin, not a hardware manufacturer's pockets!  No SPV cheats.  No empty blocks.
hamburgerhelper
Member
**
Offline Offline

Activity: 83
Merit: 10


View Profile
September 23, 2014, 11:28:19 PM
 #10716

Is there a graceful method of shutting down the p2pool terminal? I haven't been able to find anything for it so I'm simply using Control C ... is there another / better option?

That's as graceful as it gets........you could sing a lullaby  Wink

You don't really want to be turning it off - let it run, & run, & run........
Thanks for the answer.
I'm still experimenting so it's on and off at the moment.
Next step is set it up for merged.
Ordered new dual xeon server to be dedicated to pools, once it's ready to go then it will run & run & run ...

I wouldn't buy hardware to run p2pool. My miners and my p2pool node are not in the same place and my efficiency is currently 108%. Pay $20 a month for a Linode near your miners and stop paying when you stop mining (which for most of us is any minute now).

You'll get incredible network connectivity and the flexibility to turn things off without being stuck with equipment you don't need (like thousands of dollars of ASICs Smiley
newbuntu
Member
**
Offline Offline

Activity: 61
Merit: 10


View Profile
September 24, 2014, 12:01:53 AM
 #10717

Is there a graceful method of shutting down the p2pool terminal? I haven't been able to find anything for it so I'm simply using Control C ... is there another / better option?

That's as graceful as it gets........you could sing a lullaby  Wink

You don't really want to be turning it off - let it run, & run, & run........
Thanks for the answer.
I'm still experimenting so it's on and off at the moment.
Next step is set it up for merged.
Ordered new dual xeon server to be dedicated to pools, once it's ready to go then it will run & run & run ...

I wouldn't buy hardware to run p2pool. My miners and my p2pool node are not in the same place and my efficiency is currently 108%. Pay $20 a month for a Linode near your miners and stop paying when you stop mining (which for most of us is any minute now).

You'll get incredible network connectivity and the flexibility to turn things off without being stuck with equipment you don't need (like thousands of dollars of ASICs Smiley
I appreciate the suggestion, but I currently have just shy of 60 computers including 12 proliant blades ... so, I'm not really concerned with being stuck with hardware, they make a great obstacle course for the kitties.
It was $2,500 for all the parts, so it's pretty reasonable for a server. The funds came from mining so it's not out-of-pocket funds.
I plan on running numerous pools from it at the same time.
I have a 50mb/s (down) fibre connection.
Running it will help to reduce the winter gas bill.
My electricity costs are fairly low where I live.
You make some good points regarding rental and about self-mining no longer being sustainable for most. I agree, it won't be long until it can no longer provide a positive ROI.
Thanks for the feedback.
newbuntu
Member
**
Offline Offline

Activity: 61
Merit: 10


View Profile
September 24, 2014, 12:26:27 AM
 #10718

Instead of using Control-C, you can issue the kill command:
Code:
kill -KILLARG pid
For example
Code:
kill -15 1234
To get a listing of all available on your system, just do:
Code:
kill -l
That will return a list something like this:
Code:
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL
 5) SIGTRAP 6) SIGABRT 7) SIGEMT 8) SIGFPE
 9) SIGKILL 10) SIGBUS 11) SIGSEGV 12) SIGSYS
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGURG
17) SIGSTOP 18) SIGTSTP 19) SIGCONT 20) SIGCHLD
21) SIGTTIN 22) SIGTTOU 23) SIGIO 24) SIGXCPU
25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH
29) SIGINFO 30) SIGUSR1 31) SIGUSR2
By default, if you don't specify the name/number, kill will use 15 (SIGTERM).  It's basically a nice way of telling the process to terminate.  If you're feeling particularly uncaring, you can use 9 (SIGKILL), which effectively bypasses the process altogether and tells the kernel to force the process to die.  Control C is effectively sending 2 (SIGINT) to the process.  It's a bit more complex, as Control C sends the SIGINT to all of the processes in the process group controlled by the program; however, for p2pool, it's effectively the same since there's only a single process.
Thank you very much, jonnybravo0311. Intelligent, pointed, and useful verbosity at it's best. I'll spend some time going over the man for kill, now that you've pointed me in that direction.
mahrens917
Member
**
Offline Offline

Activity: 78
Merit: 10


View Profile WWW
September 24, 2014, 03:22:59 AM
 #10719

Does anyone know of any good bitcoin p2pool scanners besides these two:
http://p2pool-nodes.info
http://p2pool.hostv.pl

Thanks!

Find the pool with the best payout!
nodes.p2pool.co
windpath
Legendary
*
Offline Offline

Activity: 1258
Merit: 1027


View Profile WWW
September 24, 2014, 01:09:39 PM
 #10720

Does anyone know of any good bitcoin p2pool scanners besides these two:
http://p2pool-nodes.info
http://p2pool.hostv.pl

Thanks!

https://github.com/litecoin-project/p2pool-scanner
Pages: « 1 ... 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 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 ... 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!