Bitcoin Forum
April 30, 2024, 04:47:21 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 [48] 49 50 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 ... 143 »
  Print  
Author Topic: [ANN] [PPC] PPCoin Released! - First Long-Term Energy-Efficient Crypto-Currency  (Read 684414 times)
TheSeven
Hero Member
*****
Offline Offline

Activity: 504
Merit: 500


FPGA Mining LLC


View Profile WWW
April 07, 2013, 11:06:46 AM
 #941

From a technical point of view:
I understand that the private keys are required for proof of stake mining anyway. But why do you sign the block header with the first coinbase txout key? What's the point in doing that?

That might have been unnecessary, although I haven't put too much thought into it. But I don't think that would be changed now unless it's absolutely important.

I agree with that it can't be changed easily now. Just wondering what the original reason to do that was, because it requires unlocking the wallet even for proof of work mining.

My tip jar: 13kwqR7B4WcSAJCYJH1eXQcxG5vVUwKAqY
1714495641
Hero Member
*
Offline Offline

Posts: 1714495641

View Profile Personal Message (Offline)

Ignore
1714495641
Reply with quote  #2

1714495641
Report to moderator
1714495641
Hero Member
*
Offline Offline

Posts: 1714495641

View Profile Personal Message (Offline)

Ignore
1714495641
Reply with quote  #2

1714495641
Report to moderator
1714495641
Hero Member
*
Offline Offline

Posts: 1714495641

View Profile Personal Message (Offline)

Ignore
1714495641
Reply with quote  #2

1714495641
Report to moderator
Transactions must be included in a block to be properly completed. When you send a transaction, it is broadcast to miners. Miners can then optionally include it in their next blocks. Miners will be more inclined to include your transaction if it has a higher transaction fee.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1714495641
Hero Member
*
Offline Offline

Posts: 1714495641

View Profile Personal Message (Offline)

Ignore
1714495641
Reply with quote  #2

1714495641
Report to moderator
TheSeven
Hero Member
*****
Offline Offline

Activity: 504
Merit: 500


FPGA Mining LLC


View Profile WWW
April 07, 2013, 11:11:50 AM
 #942

A p2pool port is in the works (and hopefully mostly done), with one major issue remaining: The fact that the first txout in the coinbase needs to be a compressed pubkey one. Might make most sense to avoid that by always sending one satoshi to a hardwired donation address.

p2pool support requires coinbase protocol change and there might be other unforeseen impacts not known right now. I am currently against implementing it. So please consider suspending p2pool development for now.

Sure, it requires a lot of changes to p2pool, which is why it will require a lot of testing before we can be confident that the p2pool chain won't break all the time. The way I'm doing it shouldn't impact ppcoin though, I'm just changing the RPC API and adding auto-signing of blocks.

Is there a particular reason why you think this might be a bad idea? Are you planning to adapt to what p2pool requires on the ppcoin side, or just planning to do the same in the long run?

My tip jar: 13kwqR7B4WcSAJCYJH1eXQcxG5vVUwKAqY
TheSeven
Hero Member
*****
Offline Offline

Activity: 504
Merit: 500


FPGA Mining LLC


View Profile WWW
April 07, 2013, 11:12:26 AM
 #943

Sunny King, do you have any plans to introduce new stuff from bitcoin 0.8 i.e. getblocktemplate, getrawtransaction etc ?

Yes bitcoin 0.8 features are planned for next release.

You might want to have a look at my git forks:
https://github.com/TheSeven/ppcoin
https://github.com/TheSeven/stratum-mining

At the first glance they seem to be functional, however they aren't yet thoroughly tested. I've sucessfully mined testnet blocks using Stratum.
Intelftw is working on a pool frontend right now, so that we hopefully have a pool without insane fees again soon.

A p2pool port is in the works (and hopefully mostly done), with one major issue remaining: The fact that the first txout in the coinbase needs to be a compressed pubkey one. Might make most sense to avoid that by always sending one satoshi to a hardwired donation address.

I'm giving your git fork a try, except I'm getting this error when running stratum:

http://pastebin.com/CrZ1hXE4

Altho its still running I have not tried mining on it yet.

Due to the way ppcoin works, you have to provide a compressed public key (in hex notation) that is owned by the (unlocked) wallet of the same ppcoind as the funds collection address. You can get that by obtaining the private key from ppcoind using dumpprivkey, and then using the last tab on http://ppcoin.org/bitaddress (or http://ppcoin.org/bitaddress?testnet=1). It should start with 02 (or possibly 03).

My tip jar: 13kwqR7B4WcSAJCYJH1eXQcxG5vVUwKAqY
Keninishna
Hero Member
*****
Offline Offline

Activity: 556
Merit: 500



View Profile
April 07, 2013, 01:11:26 PM
 #944

Sunny King, do you have any plans to introduce new stuff from bitcoin 0.8 i.e. getblocktemplate, getrawtransaction etc ?

Yes bitcoin 0.8 features are planned for next release.

You might want to have a look at my git forks:
https://github.com/TheSeven/ppcoin
https://github.com/TheSeven/stratum-mining

At the first glance they seem to be functional, however they aren't yet thoroughly tested. I've sucessfully mined testnet blocks using Stratum.
Intelftw is working on a pool frontend right now, so that we hopefully have a pool without insane fees again soon.

A p2pool port is in the works (and hopefully mostly done), with one major issue remaining: The fact that the first txout in the coinbase needs to be a compressed pubkey one. Might make most sense to avoid that by always sending one satoshi to a hardwired donation address.

I'm giving your git fork a try, except I'm getting this error when running stratum:

http://pastebin.com/CrZ1hXE4

Altho its still running I have not tried mining on it yet.

Due to the way ppcoin works, you have to provide a compressed public key (in hex notation) that is owned by the (unlocked) wallet of the same ppcoind as the funds collection address. You can get that by obtaining the private key from ppcoind using dumpprivkey, and then using the last tab on http://ppcoin.org/bitaddress (or http://ppcoin.org/bitaddress?testnet=1). It should start with 02 (or possibly 03).

OK I have the compressed pub key but now how do I give it to stratum??

EDIT:
nevermind I just hacked the pubkey into coinbaser.py now I'm mining!! I will try to setup a pool front end and see if I can get a ppc pool going.
Neverest
Newbie
*
Offline Offline

Activity: 70
Merit: 0



View Profile
April 07, 2013, 01:47:45 PM
 #945

I assume multiple core, else it could not get over 12.5% (Intel I7 2600k, 4-core/8threads). It has been doing the same on every try. Not sure what it is doing as the blockchain is synched and I am not mining PPC?

Are you sure cpu mining wasn't turned on by accident? Like 'gen=1' set in ppcoin.conf?

You are correct, it was, thanks. I had forgotten about that and the instructions in the demo ppcoin.conf file are ambiguous anyway. I thought I needed to turn this on in order to be able to mine at all for this wallet (or it might add a mining tab on the wallet as with the Litecoin wallet).

This and your previous post above brings to light a very important limitation which will prevent grand-scale acceptance of Crypto currency and PPC:
It is too difficult. I am definitely not a noob, I worked for DigiCash back in the day (15 years ago), inventors of the first crypto cash. We had long fights with the developers and always the answer was "but they can just type in -command -X  %% shsgat getcash 15x ff" and they will send a coin?

No.

Command line -> No userbase
No one-click install -> no userbase
"Adding flags to GUI clients" -> no userbase.
Manually finding and editing .conf files (whether they are clear or not) -> no userbase.
etc etc.

Currently the new crypocurrencies (not just the mining, but also the basic usage, exchanges etc) are limited to techies, coders and scriptkiddies and if we don't take care, more alternative currencies will pop up than actual users. How many systems have done user-testing?

Any system should be tested on
- Your mother and grandmother if you have them
- The guy across the street that just started his first hotmail and facebook account
- etc. tell them to "uncomment the line in the configuration file" (which most coders consider a user-friendly phrase) and they will look at you as if it was ancient Greek and rightfully so.

If they can't figure it out (and with all current instructions they will give up after the first difficult step), then it won't happen. Then the systems will be the playground of a few smart investors, a lot of wannabees and scriptkiddies. And this will reflect bad on all of us and all of the system.

As everybody with a bit of marketing knowledge knows: it is not the best system that wins and stays afloat: it is the system that's gets spread the best, fastest and easiest that wins, even if it is inferior.
Phillips almost went belly-up twice a few decades ago: first they stuck to making things that were very useful, but the japanese started making things that the people knew they wanted (subtle difference). Then Philips came up with the best Video system (V2000), superior to Betamax and VHS. Guess which one became standard and which one died out?

Here ends the lesson/rant. Nothing personal, but I have seen one crypto cash going down from up close and would like to prevent another as the basic ideas are still wonderful.
VforVictory
Sr. Member
****
Offline Offline

Activity: 280
Merit: 250

V for Victory or Rather JustV8


View Profile
April 07, 2013, 02:07:46 PM
 #946

I assume multiple core, else it could not get over 12.5% (Intel I7 2600k, 4-core/8threads). It has been doing the same on every try. Not sure what it is doing as the blockchain is synched and I am not mining PPC?

Are you sure cpu mining wasn't turned on by accident? Like 'gen=1' set in ppcoin.conf?

You are correct, it was, thanks. I had forgotten about that and the instructions in the demo ppcoin.conf file are ambiguous anyway. I thought I needed to turn this on in order to be able to mine at all for this wallet (or it might add a mining tab on the wallet as with the Litecoin wallet).

This and your previous post above brings to light a very important limitation which will prevent grand-scale acceptance of Crypto currency and PPC:
It is too difficult. I am definitely not a noob, I worked for DigiCash back in the day (15 years ago), inventors of the first crypto cash. We had long fights with the developers and always the answer was "but they can just type in -command -X  %% shsgat getcash 15x ff" and they will send a coin?

No.

Command line -> No userbase
No one-click install -> no userbase
"Adding flags to GUI clients" -> no userbase.
Manually finding and editing .conf files (whether they are clear or not) -> no userbase.
etc etc.

Currently the new crypocurrencies (not just the mining, but also the basic usage, exchanges etc) are limited to techies, coders and scriptkiddies and if we don't take care, more alternative currencies will pop up than actual users. How many systems have done user-testing?

Any system should be tested on
- Your mother and grandmother if you have them
- The guy across the street that just started his first hotmail and facebook account
- etc. tell them to "uncomment the line in the configuration file" (which most coders consider a user-friendly phrase) and they will look at you as if it was ancient Greek and rightfully so.

If they can't figure it out (and with all current instructions they will give up after the first difficult step), then it won't happen. Then the systems will be the playground of a few smart investors, a lot of wannabees and scriptkiddies. And this will reflect bad on all of us and all of the system.

As everybody with a bit of marketing knowledge knows: it is not the best system that wins and stays afloat: it is the system that's gets spread the best, fastest and easiest that wins, even if it is inferior.
Phillips almost went belly-up twice a few decades ago: first they stuck to making things that were very useful, but the japanese started making things that the people knew they wanted (subtle difference). Then Philips came up with the best Video system (V2000), superior to Betamax and VHS. Guess which one became standard and which one died out?

Here ends the lesson/rant. Nothing personal, but I have seen one crypto cash going down from up close and would like to prevent another as the basic ideas are still wonderful.

I never knew they uncommented lines in ancient greece.  Cheesy The more you know... Anyhow, setting flags in a gui isn't that difficult, assuming it's documentation doesn't suck ass. Editing conf files and running command lines is far, far trickier. Even with the most up to date read-mes it can feel daunting to the types you listed. Also, how are the exchanges limited to techies/coders/scriptkiddies? I mean, an exchange is an exchange is an exchange...it works just like a stock market, no?
Neverest
Newbie
*
Offline Offline

Activity: 70
Merit: 0



View Profile
April 07, 2013, 02:34:07 PM
 #947

I never knew they uncommented lines in ancient greece.  Cheesy The more you know... Anyhow, setting flags in a gui isn't that difficult, assuming it's documentation doesn't suck ass.

98% won't read the manual or will give up if it is unclear, not in their language (either on a national or semantic level) 'hidden' in docs folders or readme files etc. Setting flags in a gui? Ask this to your mom. After you explained what a GUI is ('a graphical what? Sounds like porn' she might very likely say), you can tell her to set a flag. If she is from Canada, she will look for the Maple leaf button to click on..

Editing conf files and running command lines is far, far trickier. Even with the most up to date read-mes it can feel daunting to the types you listed.

Yep, that's what I mean. But instead of 'newbie' questions (free user testing!) being used to improve the products and services, they are just being sent into a deeper maze with little clue about which exits are damaging to them.

Also, how are the exchanges limited to techies/coders/scriptkiddies? I mean, an exchange is an exchange is an exchange...it works just like a stock market, no?

Yes. When was the last time your mother/neighbour (or anybody else that makes daily decisions about how and where to spend cash and money) made a killing on the stock market? What would happen if they stepped into the trading hall at Wall street? Yes, Crypto-cash is just like the stock market: limited to insiders and script kiddies, and the regular users have no idea what is really going on and often lose their life savings everytime someone controlling the systems decides to get some pay-out.

It's very simple: show your mum your computer screen (note that I use mom as a role model for the not technically savvy user, could be dad, baby-brother or neighbour). Give them 3 open wallets: BTC, LTC and PPC. Tell them to trade between them. See how far they get. Anything that needs more than one Google search won't be accepted. The most important aspect of any consumer-oriented system, is to view it through the eyes of the consumer.
TheSeven
Hero Member
*****
Offline Offline

Activity: 504
Merit: 500


FPGA Mining LLC


View Profile WWW
April 07, 2013, 03:14:16 PM
 #948

Sunny King, do you have any plans to introduce new stuff from bitcoin 0.8 i.e. getblocktemplate, getrawtransaction etc ?

Yes bitcoin 0.8 features are planned for next release.

You might want to have a look at my git forks:
https://github.com/TheSeven/ppcoin
https://github.com/TheSeven/stratum-mining

At the first glance they seem to be functional, however they aren't yet thoroughly tested. I've sucessfully mined testnet blocks using Stratum.
Intelftw is working on a pool frontend right now, so that we hopefully have a pool without insane fees again soon.

A p2pool port is in the works (and hopefully mostly done), with one major issue remaining: The fact that the first txout in the coinbase needs to be a compressed pubkey one. Might make most sense to avoid that by always sending one satoshi to a hardwired donation address.

I'm giving your git fork a try, except I'm getting this error when running stratum:

http://pastebin.com/CrZ1hXE4

Altho its still running I have not tried mining on it yet.

Due to the way ppcoin works, you have to provide a compressed public key (in hex notation) that is owned by the (unlocked) wallet of the same ppcoind as the funds collection address. You can get that by obtaining the private key from ppcoind using dumpprivkey, and then using the last tab on http://ppcoin.org/bitaddress (or http://ppcoin.org/bitaddress?testnet=1). It should start with 02 (or possibly 03).

OK I have the compressed pub key but now how do I give it to stratum??

EDIT:
nevermind I just hacked the pubkey into coinbaser.py now I'm mining!! I will try to setup a pool front end and see if I can get a ppc pool going.

Just provide it as the funds collection address in config.py

My tip jar: 13kwqR7B4WcSAJCYJH1eXQcxG5vVUwKAqY
Balthazar
Legendary
*
Offline Offline

Activity: 3108
Merit: 1358



View Profile
April 08, 2013, 12:16:28 PM
Last edit: April 08, 2013, 02:51:13 PM by Balthazar
 #949

I've spent some time to work on p2pool support for PPC/NVC and now it works fine with NVC. I will add PPC to networks list soon.  Smiley

http://p2pool.novaco.in/

But there is a small problem which should be solved before it will be usable with PPC.

  • SignBlock rules should allow signing by any coinbase owner, not only the first one;
  • EntropyBit source should be switched from signature hash to something another (block hash or merkle root, for example)

P2Pool allows any user to submit found block, it's one of the main scalability factors. Without this there will be too high risk of invalid blocks generation.

I assume that this changes could be applied by adding 95% supermajority protocol switch rule like bitcoin v1-->v2 migration, for example.

P.S. The actual list of requirements for a valid p2pool implementation:

  • All outpoints should use pubkey, and all miners should be able to sign found block using their own keys and outputs
  • It must calculate and apply fee for coinbase transaction
  • It must ignore feeless transactions
  • It must use the diff-based reward calculation function
  • It must prevent generation of blocks with coinbase outputs less than 0.01
  • It must prevent generation of blocks, which are invalid in the terms of header and txns timestamp rules

 Roll Eyes
Jutarul
Donator
Legendary
*
Offline Offline

Activity: 994
Merit: 1000



View Profile
April 08, 2013, 12:38:57 PM
 #950

I agree with that it can't be changed easily now. Just wondering what the original reason to do that was, because it requires unlocking the wallet even for proof of work mining.
https://bitcointalk.org/index.php?topic=115608.msg1258910#msg1258910

It's a way to make the block tamperproof, i.e. nodes who don't own the stake key cannot change the contents of the merkel tree (i.e. the transactions) without invalidating the proof of stake.

The ASICMINER Project https://bitcointalk.org/index.php?topic=99497.0
"The way you solve things is by making it politically profitable for the wrong people to do the right thing.", Milton Friedman
TheSeven
Hero Member
*****
Offline Offline

Activity: 504
Merit: 500


FPGA Mining LLC


View Profile WWW
April 08, 2013, 10:35:35 PM
 #951

I've spent some time to work on p2pool support for PPC/NVC and now it works fine with NVC. I will add PPC to networks list soon.  Smiley

http://p2pool.novaco.in/

But there is a small problem which should be solved before it will be usable with PPC.

  • SignBlock rules should allow signing by any coinbase owner, not only the first one;
  • EntropyBit source should be switched from signature hash to something another (block hash or merkle root, for example)

Practical temporary solution: send one satoshi (or even zero, if that is possible) from every block to a publicly known keypair (which everyone can install in his wallet) as the first txout of the coinbase txn.

My tip jar: 13kwqR7B4WcSAJCYJH1eXQcxG5vVUwKAqY
TheSeven
Hero Member
*****
Offline Offline

Activity: 504
Merit: 500


FPGA Mining LLC


View Profile WWW
April 08, 2013, 10:38:25 PM
Last edit: April 08, 2013, 10:49:05 PM by TheSeven
 #952

I agree with that it can't be changed easily now. Just wondering what the original reason to do that was, because it requires unlocking the wallet even for proof of work mining.
https://bitcointalk.org/index.php?topic=115608.msg1258910#msg1258910

It's a way to make the block tamperproof, i.e. nodes who don't own the stake key cannot change the contents of the merkel tree (i.e. the transactions) without invalidating the proof of stake.

Then why does it apply to proof-of-work blocks?

For proof of stake blocks you need the private key anyway to generate the kernel txn, so you can use it for signing the header as well, it doesn't hurt there any more than the other requirements do already.

My tip jar: 13kwqR7B4WcSAJCYJH1eXQcxG5vVUwKAqY
Sunny King (OP)
Legendary
*
Offline Offline

Activity: 1205
Merit: 1010



View Profile WWW
April 09, 2013, 09:41:49 PM
 #953

Practical temporary solution: send one satoshi (or even zero, if that is possible) from every block to a publicly known keypair (which everyone can install in his wallet) as the first txout of the coinbase txn.

Maybe, try it on testnet to see if it's a good workaround for p2pool.
Balthazar
Legendary
*
Offline Offline

Activity: 3108
Merit: 1358



View Profile
April 09, 2013, 10:52:50 PM
Last edit: April 09, 2013, 11:19:37 PM by Balthazar
 #954

Practical temporary solution: send one satoshi (or even zero, if that is possible) from every block to a publicly known keypair (which everyone can install in his wallet) as the first txout of the coinbase txn.
You can't send less than 0.01 coin. But anyway, it can be used as temporary solution and should work well, if you agree to pay this "fee" for each block. Wink
TheSeven
Hero Member
*****
Offline Offline

Activity: 504
Merit: 500


FPGA Mining LLC


View Profile WWW
April 10, 2013, 12:39:39 AM
 #955

Practical temporary solution: send one satoshi (or even zero, if that is possible) from every block to a publicly known keypair (which everyone can install in his wallet) as the first txout of the coinbase txn.
You can't send less than 0.01 coin. But anyway, it can be used as temporary solution and should work well, if you agree to pay this "fee" for each block. Wink

After some discussion with some bitcoin developers, it should be possible to just pay zero PPC to a dummy TxOut that serves as the key source.
And even if that shouldn't work for some reason, 0.000001 PPC is definitely possible.

My tip jar: 13kwqR7B4WcSAJCYJH1eXQcxG5vVUwKAqY
Sunny King (OP)
Legendary
*
Offline Offline

Activity: 1205
Merit: 1010



View Profile WWW
April 10, 2013, 05:07:07 AM
 #956

It looks like there is interest in improving a community wiki on ppcoin.

I have registered one at wikia: http://ppcoin.wikia.com

Give it a try to see if you guys can start editing it.
Balthazar
Legendary
*
Offline Offline

Activity: 3108
Merit: 1358



View Profile
April 10, 2013, 05:21:55 AM
Last edit: April 10, 2013, 05:53:33 AM by Balthazar
 #957

Practical temporary solution: send one satoshi (or even zero, if that is possible) from every block to a publicly known keypair (which everyone can install in his wallet) as the first txout of the coinbase txn.
You can't send less than 0.01 coin. But anyway, it can be used as temporary solution and should work well, if you agree to pay this "fee" for each block. Wink

After some discussion with some bitcoin developers, it should be possible to just pay zero PPC to a dummy TxOut that serves as the key source.
And even if that shouldn't work for some reason, 0.000001 PPC is definitely possible.
PPCoin is not Bitcoin. Bitcoin has no limitations for output size. PPCoin has enforcement rules, and there is no way to override this behavior without chain fork. But with chain fork there will be no sense to use this workaround. Roll Eyes
Vuxil
Newbie
*
Offline Offline

Activity: 28
Merit: 0



View Profile
April 10, 2013, 05:44:19 AM
Last edit: April 10, 2013, 06:23:22 AM by Vuxil
 #958

For those of you needing a new pool now, I have mine up and running over at VuxilsPool.com vpool.me (different pool than vpool.us, which has been around for a while). My pool is PPLNS based and can help some of you who are having no luck with coinotron. This pool should serve pretty well until we get some more advanced stratum pools in the future based off of Seven's work.
ar9
Sr. Member
****
Offline Offline

Activity: 352
Merit: 250



View Profile
April 10, 2013, 05:46:15 AM
 #959

Thanks for that, will definitely join that pool.  Smiley
TheSeven
Hero Member
*****
Offline Offline

Activity: 504
Merit: 500


FPGA Mining LLC


View Profile WWW
April 10, 2013, 09:15:44 AM
 #960

Practical temporary solution: send one satoshi (or even zero, if that is possible) from every block to a publicly known keypair (which everyone can install in his wallet) as the first txout of the coinbase txn.
You can't send less than 0.01 coin. But anyway, it can be used as temporary solution and should work well, if you agree to pay this "fee" for each block. Wink

After some discussion with some bitcoin developers, it should be possible to just pay zero PPC to a dummy TxOut that serves as the key source.
And even if that shouldn't work for some reason, 0.000001 PPC is definitely possible.
PPCoin is not Bitcoin. Bitcoin has no limitations for output size. PPCoin has enforcement rules, and there is no way to override this behavior without chain fork. But with chain fork there will be no sense to use this workaround. Roll Eyes

Ah, damn, you're right, CTxOut::IsEmpty() also checks if the script is empty.

My tip jar: 13kwqR7B4WcSAJCYJH1eXQcxG5vVUwKAqY
Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 [48] 49 50 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 ... 143 »
  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!