Bitcoin Forum
May 09, 2024, 10:57:05 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 3 4 »  All
  Print  
Author Topic: Bitcoin-QT Core Problem - Keypool 100 transactions limi - Reward for help: 2 BTC  (Read 5190 times)
BitcoinNewsBR (OP)
Newbie
*
Offline Offline

Activity: 29
Merit: 0


View Profile
December 25, 2016, 12:09:05 PM
 #1

Hello, guys.

Disclaimer:
I'm working for companies related with Bitcoin since 2013, I create a new account only for no exposure my name for everybody now. I will pay the 2 BTC if we find a solution.

Problem:

Using OS/X, my HD stopped work. I tried to recover, without success. Had to format the computer. As I have my Bitcoin-QT Backup from January/2016 I was okay and didn't worried.

After formatting the computer and wait to syncronize the Bitcoin-QT it takes too long on OSX, and I had to make a transaction, and my Ledger was not with me.

First important point: I did a transaction without the wallet totally syncronized.

After it, I keep waiting the wallet syncronized. When it finished, I notice that few coins were missing.

Second important point:  After discussing on Bitcoin Core Slack channel with few friends and inclusive GMaxwell, I discovered that this transaction I generate without the full blockchain downloaded didn't return the "change" to my backup from January/2016. So, I lost the change of this transactions, because the QT backup I was using had only 100 Key pool limit (address for change address)  and as I already did more than 100 transactions from the last backup, the change is inside a address that I'm not sure if I have the private key.



Third important point: I tried to recover the wallet.dat from the date that I made the transaction, maybe the private key is there. I hired a professional recover HD company but they were not able to find the wallet.dat from between July/Sep 2016 (probably with the private key for this address)


I appreciate any help and would be happy to answer any question that maybe helps solve this problem.  Just for make sure you are not spending your time, send me a private message if you believe you can find a solution, and I will give more details about myself, so you have sure you will get paid the 2 BTC if helps recover the coins.

Thanks for your attention.
"In a nutshell, the network works like a distributed timestamp server, stamping the first transaction to spend a coin. It takes advantage of the nature of information being easy to spread but hard to stifle." -- Satoshi
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1715295425
Hero Member
*
Offline Offline

Posts: 1715295425

View Profile Personal Message (Offline)

Ignore
1715295425
Reply with quote  #2

1715295425
Report to moderator
1715295425
Hero Member
*
Offline Offline

Posts: 1715295425

View Profile Personal Message (Offline)

Ignore
1715295425
Reply with quote  #2

1715295425
Report to moderator
1715295425
Hero Member
*
Offline Offline

Posts: 1715295425

View Profile Personal Message (Offline)

Ignore
1715295425
Reply with quote  #2

1715295425
Report to moderator
mr.bitcoinerf11
Full Member
***
Offline Offline

Activity: 196
Merit: 100


View Profile
December 25, 2016, 01:43:51 PM
 #2

Hello, guys.

Disclaimer:
I'm working for companies related with Bitcoin since 2013, I create a new account only for no exposure my name for everybody now. I will pay the 2 BTC if we find a solution.

Problem:

Using OS/X, my HD stopped work. I tried to recover, without success. Had to format the computer. As I have my Bitcoin-QT Backup from January/2016 I was okay and didn't worried.

After formatting the computer and wait to syncronize the Bitcoin-QT it takes too long on OSX, and I had to make a transaction, and my Ledger was not with me.

First important point: I did a transaction without the wallet totally syncronized.

After it, I keep waiting the wallet syncronized. When it finished, I notice that few coins were missing.

Second important point:  After discussing on Bitcoin Core Slack channel with few friends and inclusive GMaxwell, I discovered that this transaction I generate without the full blockchain downloaded didn't return the "change" to my backup from January/2016. So, I lost the change of this transactions, because the QT backup I was using had only 100 Key pool limit (address for change address)  and as I already did more than 100 transactions from the last backup, the change is inside a address that I'm not sure if I have the private key.



Third important point: I tried to recover the wallet.dat from the date that I made the transaction, maybe the private key is there. I hired a professional recover HD company but they were not able to find the wallet.dat from between July/Sep 2016 (probably with the private key for this address)


I appreciate any help and would be happy to answer any question that maybe helps solve this problem.  Just for make sure you are not spending your time, send me a private message if you believe you can find a solution, and I will give more details about myself, so you have sure you will get paid the 2 BTC if helps recover the coins.

Thanks for your attention.
about the few coins you said  they will be sent to the address you sent
if you cant recover your  wallet.dat you can recover it using
http://www.recovering-deleted-files.net/recovery-software/mac-data-recovery
http://www.macworld.com/article/3101345/macs/how-to-restore-deleted-files-in-os-x.html
i will pm you now

▬▬▬▬▬▬ BeOne ICO  ■ Blockchain revolutionizes education ■ BeOne ICO ▬▬▬▬▬▬
ANN Thread Facebook Telegram Twitter
■ ICO on September 7 ■ Bonus up to 50%
achow101
Moderator
Legendary
*
Offline Offline

Activity: 3388
Merit: 6631


Just writing some code


View Profile WWW
December 25, 2016, 03:32:24 PM
 #3

Your post is a little hard to understand.

So, just to be sure, what happened was you formatted your drive, reinstalled Bitcoin Core, restored your Jan 2016 backup, and then sent Bitcoin without being synchronized.

So what did you do after that? If you still have the wallet file from when you sent the Bitcoin, the private key to the change address should still be there and you should still be able to access the Bitcoin.

BitcoinNewsBR (OP)
Newbie
*
Offline Offline

Activity: 29
Merit: 0


View Profile
December 25, 2016, 06:57:35 PM
 #4

Hello, guys.

Disclaimer:
I'm working for companies related with Bitcoin since 2013, I create a new account only for no exposure my name for everybody now. I will pay the 2 BTC if we find a solution.

Problem:

Using OS/X, my HD stopped work. I tried to recover, without success. Had to format the computer. As I have my Bitcoin-QT Backup from January/2016 I was okay and didn't worried.

After formatting the computer and wait to syncronize the Bitcoin-QT it takes too long on OSX, and I had to make a transaction, and my Ledger was not with me.

First important point: I did a transaction without the wallet totally syncronized.

After it, I keep waiting the wallet syncronized. When it finished, I notice that few coins were missing.

Second important point:  After discussing on Bitcoin Core Slack channel with few friends and inclusive GMaxwell, I discovered that this transaction I generate without the full blockchain downloaded didn't return the "change" to my backup from January/2016. So, I lost the change of this transactions, because the QT backup I was using had only 100 Key pool limit (address for change address)  and as I already did more than 100 transactions from the last backup, the change is inside a address that I'm not sure if I have the private key.



Third important point: I tried to recover the wallet.dat from the date that I made the transaction, maybe the private key is there. I hired a professional recover HD company but they were not able to find the wallet.dat from between July/Sep 2016 (probably with the private key for this address)


I appreciate any help and would be happy to answer any question that maybe helps solve this problem.  Just for make sure you are not spending your time, send me a private message if you believe you can find a solution, and I will give more details about myself, so you have sure you will get paid the 2 BTC if helps recover the coins.

Thanks for your attention.
about the few coins you said  they will be sent to the address you sent
if you cant recover your  wallet.dat you can recover it using
http://www.recovering-deleted-files.net/recovery-software/mac-data-recovery
http://www.macworld.com/article/3101345/macs/how-to-restore-deleted-files-in-os-x.html
i will pm you now

Thanks for the reply.

I didn't add this on the text above, but this was the first thing I did. Even before send the HD for the recover HD service.

The problem is: The file was not "created" between July/Sep, it was created on January and then used normal. So each day, it was re-saved on the same file. So these softwares only find the files the day I created it, not the days it was auto-resaved because I was using the wallet.

Anyway, thanks for your reply!
BitcoinNewsBR (OP)
Newbie
*
Offline Offline

Activity: 29
Merit: 0


View Profile
December 25, 2016, 09:27:52 PM
 #5

Your post is a little hard to understand.

So, just to be sure, what happened was you formatted your drive, reinstalled Bitcoin Core, restored your Jan 2016 backup, and then sent Bitcoin without being synchronized.

So what did you do after that? If you still have the wallet file from when you sent the Bitcoin, the private key to the change address should still be there and you should still be able to access the Bitcoin.

Sorry any misunderstanding. The situation is little hard to understand also.

1) Yes, I sent Bitcoin without the QT being syncronized.

2) I still have the file, however, the priv key is not there. I tried dumpprivkey and it don't return any result on the Bitcoin-QT console.

It is strange, how the wallet generate a public key that I do not have the priv key? It is because the address generated is not on the keypool=100 limit. So, on the January/2016 backup, the address is not there, and after the wallet had synchronized it only showed the 100 address, not the change address that have this transaction.

Thanks for your reply and your help.
achow101
Moderator
Legendary
*
Offline Offline

Activity: 3388
Merit: 6631


Just writing some code


View Profile WWW
December 25, 2016, 10:26:12 PM
 #6

2) I still have the file,
So right now Bitcoin Core is using the wallet.dat file you put in the data directory prior to spending? You did not touch the file at all?

however, the priv key is not there. I tried dumpprivkey and it don't return any result on the Bitcoin-QT console.
Exactly what command did you use? What is the output from the console?

BitcoinNewsBR (OP)
Newbie
*
Offline Offline

Activity: 29
Merit: 0


View Profile
December 25, 2016, 10:40:47 PM
 #7

2) I still have the file,
So right now Bitcoin Core is using the wallet.dat file you put in the data directory prior to spending? You did not touch the file at all?

however, the priv key is not there. I tried dumpprivkey and it don't return any result on the Bitcoin-QT console.
Exactly what command did you use? What is the output from the console?


1) Yes. The wallet still using the January/2016 backup.

I tried to put another backups and -rescan the wallet but without success, then put again the same January/2016 file.

2) I do not remember the exact return message. But I did try it and didn't returned the expected priv key.

If you want dive in deep with me and try get this 2 BTC reward, please, send me a private message. I will also introduce me and my LinkedIn profile, so you know you are not wasting your time, and I'm a real person with good connections and will pay the 2 BTC reward for your time if I recover the coins.


Thanks for your attention, achow101.
shorena
Copper Member
Legendary
*
Offline Offline

Activity: 1498
Merit: 1520


No I dont escrow anymore.


View Profile WWW
December 25, 2016, 10:46:46 PM
 #8

-snip-
It is strange, how the wallet generate a public key that I do not have the priv key?

It cant.

It is because the address generated is not on the keypool=100 limit.

No, these are two seperate issues. Your backup might have not contained some private keys for addresses you generated recently, because you used more than 100 since the last backup. As soon as you spend coins the keypool is refilled though. The change address must have been one that was among the 100 pregenerated as of january.

So, on the January/2016 backup, the address is not there, and after the wallet had synchronized it only showed the 100 address, not the change address that have this transaction.

Thanks for your reply and your help.

Wana share a transaction ID? We sometimes have people offering ridiculous high rewards for made up problems, where the wallet did something that is not part of its code. Feel free to send it to someone you deem worthy via a PM if you want to keep private. Considering what you wrote in your first post it sounds like you are responsible for others coins as well.

Im not really here, its just your imagination.
achow101
Moderator
Legendary
*
Offline Offline

Activity: 3388
Merit: 6631


Just writing some code


View Profile WWW
December 25, 2016, 10:54:14 PM
 #9

1) Yes. The wallet still using the January/2016 backup.

I tried to put another backups and -rescan the wallet but without success, then put again the same January/2016 file.
So you put the backup file, spent, then put the backup file in there again and now you don't see the Bitcoin? Did you at any point backup the current wallet.dat file after you had spent the Bitcoin?

I think you may have lost your Bitcoin. If, after you had spent, you had replaced the wallet file already there with a backup, then you will not have the private keys to any of the addresses from your spending onwards (assuming that the keypool of the backup was actually exhausted).

2) I do not remember the exact return message. But I did try it and didn't returned the expected priv key.
Please run the command again and post both the command and its output.

BitcoinNewsBR (OP)
Newbie
*
Offline Offline

Activity: 29
Merit: 0


View Profile
December 25, 2016, 10:57:16 PM
 #10

-snip-
It is strange, how the wallet generate a public key that I do not have the priv key?

It cant.

It is because the address generated is not on the keypool=100 limit.

No, these are two seperate issues. Your backup might have not contained some private keys for addresses you generated recently, because you used more than 100 since the last backup. As soon as you spend coins the keypool is refilled though. The change address must have been one that was among the 100 pregenerated as of january.

So, on the January/2016 backup, the address is not there, and after the wallet had synchronized it only showed the 100 address, not the change address that have this transaction.

Thanks for your reply and your help.

Wana share a transaction ID? We sometimes have people offering ridiculous high rewards for made up problems, where the wallet did something that is not part of its code. Feel free to send it to someone you deem worthy via a PM if you want to keep private. Considering what you wrote in your first post it sounds like you are responsible for others coins as well.


1) I spent the coins without the wallet syncronized. After the wallet finish synchronizes, the funds were not there. So, I believe the priv key is not there.

2) Here is the transactions: https://blockchain.info/pt/tx/cccfd568f5a5d6f168d335c700c0cbc07e179356f4ab8bddd3210ded2d91deb0

The transaction is this 0.08 BTC. The change is this 13 BTC.

If you believe you can help, feel free to send me a priv message so I share my identity, LinkedIn profile and Skype ID.

Thanks for your attention and your time answering this thread.
shorena
Copper Member
Legendary
*
Offline Offline

Activity: 1498
Merit: 1520


No I dont escrow anymore.


View Profile WWW
December 25, 2016, 11:04:21 PM
 #11

1) Yes. The wallet still using the January/2016 backup.

I tried to put another backups and -rescan the wallet but without success, then put again the same January/2016 file.
So you put the backup file, spent, then put the backup file in there again and now you don't see the Bitcoin? Did you at any point backup the current wallet.dat file after you had spent the Bitcoin?

I think you may have lost your Bitcoin. If, after you had spent, you had replaced the wallet file already there with a backup, then you will not have the private keys to any of the addresses from your spending onwards (assuming that the keypool of the backup was actually exhausted).
-snip-

Shouldnt the TX be unbroadcasted since the wallet wasnt synced? Nevermind, sounds like OP waited for a sync.



-snip-
1) I spent the coins without the wallet syncronized. After the wallet finish synchronizes, the funds were not there. So, I believe the priv key is not there.

Synced or not has nothing to do with how the wallet handles private keys.

2) Here is the transactions: https://blockchain.info/pt/tx/cccfd568f5a5d6f168d335c700c0cbc07e179356f4ab8bddd3210ded2d91deb0

The transaction is this 0.08 BTC. The change is this 13 BTC.

Its 3 months old.

If you believe you can help, feel free to send me a priv message so I share my identity, LinkedIn profile and Skype ID.

Thanks for your attention and your time answering this thread.

No need.

Im not really here, its just your imagination.
BitcoinNewsBR (OP)
Newbie
*
Offline Offline

Activity: 29
Merit: 0


View Profile
December 25, 2016, 11:04:42 PM
 #12

1) Yes. The wallet still using the January/2016 backup.

I tried to put another backups and -rescan the wallet but without success, then put again the same January/2016 file.
So you put the backup file, spent, then put the backup file in there again and now you don't see the Bitcoin? Did you at any point backup the current wallet.dat file after you had spent the Bitcoin?

I think you may have lost your Bitcoin. If, after you had spent, you had replaced the wallet file already there with a backup, then you will not have the private keys to any of the addresses from your spending onwards (assuming that the keypool of the backup was actually exhausted).

2) I do not remember the exact return message. But I did try it and didn't returned the expected priv key.
Please run the command again and post both the command and its output.


1) Hd was formatted. Installed Bitcoin-qt with the January/2016 backup -> Spent -> Wait to finish the synchronized -> Notice the coins was not there -> Tried to restore other backups, coins still not there -> Restored the wallet.dat that I was using after finish syncronized. However, I'm not 100% sure if this file is the one that I did the transaction. I would say 80% sure that I have this file.

2) May you, please, tell me the commands again? Once a friend who was trying to help told it on Bitcoin-Core Slack, but now the message is not there (10,000 limit messages)

I remember that is necessary two code. The one with my wallet password to unlock the wallet and the second want is the privkeydump.

Thanks for your attention! I really appreciate it!
shorena
Copper Member
Legendary
*
Offline Offline

Activity: 1498
Merit: 1520


No I dont escrow anymore.


View Profile WWW
December 25, 2016, 11:07:13 PM
 #13

-snip-
2) May you, please, tell me the commands again?
-snip-

Code:
walletpassphrase yourpasswordhere 120

to unlock for 120 seconds

Code:
dumpprivkey 1HxeCXGT11wVwy78gsVrzFfkfdijQE9rct

to get the private key for 1HxeCXGT11wVwy78gsVrzFfkfdijQE9rct.

Im not really here, its just your imagination.
BitcoinNewsBR (OP)
Newbie
*
Offline Offline

Activity: 29
Merit: 0


View Profile
December 25, 2016, 11:17:01 PM
 #14

-snip-
2) May you, please, tell me the commands again?
-snip-

Code:
walletpassphrase yourpasswordhere 120

to unlock for 120 seconds

Code:
dumpprivkey 1HxeCXGT11wVwy78gsVrzFfkfdijQE9rct

to get the private key for 1HxeCXGT11wVwy78gsVrzFfkfdijQE9rct.


The return of the message on the Bitcoin Core Console:

Private key for address 1HxeCXGT11wVwy78gsVrzFfkfdijQE9rct is not known (code -4)

Proof: https://puu.sh/t0ZxE/6e005a3d9c.png

Also, not sure if this can help, here are the transactions on the Bitcoin-Core:
https://puu.sh/t0ZzM/67d3b8a63d.png

See how the transactions are at the same time. Usually the change transaction would not appear on this transactions list. So very strange! Any idea why?

Also, the transaction is showing as "Output index: 1" not sure what is this, but the other transactions appear as "Output index: 0"
Proof transaction: https://puu.sh/t0ZF8/112ee88917.png

Thanks for your time guys! I really appreciate it! Hope I can compensate it!
szafa
Hero Member
*****
Offline Offline

Activity: 812
Merit: 500


View Profile
December 26, 2016, 07:08:00 PM
 #15

Default is generating 100 adres when 101 backup again.
shorena
Copper Member
Legendary
*
Offline Offline

Activity: 1498
Merit: 1520


No I dont escrow anymore.


View Profile WWW
December 26, 2016, 07:28:15 PM
 #16

-snip-
The return of the message on the Bitcoin Core Console:

Private key for address 1HxeCXGT11wVwy78gsVrzFfkfdijQE9rct is not known (code -4)

Proof: https://puu.sh/t0ZxE/6e005a3d9c.png

Also, not sure if this can help, here are the transactions on the Bitcoin-Core:
https://puu.sh/t0ZzM/67d3b8a63d.png

See how the transactions are at the same time. Usually the change transaction would not appear on this transactions list. So very strange! Any idea why?

True, this is what a send to two addresses unknown to the wallet (no private key) would look like. Considering the time the transaction took place its likely that the change key was one 100+ ofter the january backup. I assume you have used the machine since you formatted it? Maybe data recovery experts can help restoring the pre format wallet file.

Also, the transaction is showing as "Output index: 1" not sure what is this, but the other transactions appear as "Output index: 0"
Proof transaction: https://puu.sh/t0ZF8/112ee88917.png

Thanks for your time guys! I really appreciate it! Hope I can compensate it!

Just that its the 1st (ID 0) or 2nd (ID 1) output of the transaction.



Default is generating 100 adres when 101 backup again.

The milk is already spilled.

Im not really here, its just your imagination.
jackjack
Legendary
*
Offline Offline

Activity: 1176
Merit: 1233


May Bitcoin be touched by his Noodly Appendage


View Profile
January 04, 2017, 11:47:16 PM
 #17

What did the professional recovery company look for? Old .dat files or something more specific?
Pywallet looks for headers of unique keys so keys can be recovered even from a corrupted wallet

You can try this
Quote
sudo python ./pywallet.py --recover --recov_device /dev/sda --recov_size 500Go --recov_outputdir /home/username
Replace /dev/sda with the device your wallet was on, and 500Go with the size of the disk

Own address: 19QkqAza7BHFTuoz9N8UQkryP4E9jHo4N3 - Pywallet support: 1AQDfx22pKGgXnUZFL1e4UKos3QqvRzNh5 - Bitcointalk++ script support: 1Pxeccscj1ygseTdSV1qUqQCanp2B2NMM2
Pywallet: instructions. Encrypted wallet support, export/import keys/addresses, backup wallets, export/import CSV data from/into wallet, merge wallets, delete/import addresses and transactions, recover altcoins sent to bitcoin addresses, sign/verify messages and files with Bitcoin addresses, recover deleted wallets, etc.
BitcoinNewsBR (OP)
Newbie
*
Offline Offline

Activity: 29
Merit: 0


View Profile
January 05, 2017, 11:36:21 AM
 #18

What did the professional recovery company look for? Old .dat files or something more specific?
Pywallet looks for headers of unique keys so keys can be recovered even from a corrupted wallet

You can try this
Quote
sudo python ./pywallet.py --recover --recov_device /dev/sda --recov_size 500Go --recov_outputdir /home/username
Replace /dev/sda with the device your wallet was on, and 500Go with the size of the disk

The Recovery HD service tried to find a latest version of the file, so we can have there the transactions between the 100 keypool limit.

They can't find any file from between January and November, so it didn't helped.

Still no success to recover the coins.
jackjack
Legendary
*
Offline Offline

Activity: 1176
Merit: 1233


May Bitcoin be touched by his Noodly Appendage


View Profile
January 06, 2017, 10:02:30 AM
 #19

The Recovery HD service tried to find a latest version of the file, so we can have there the transactions between the 100 keypool limit.

They can't find any file from between January and November, so it didn't helped.

Still no success to recover the coins.

That's what I said, if they specifically looked for .dat files they had less chance to find the file because it may have been broken (partially rewritten)
OTOH pywallet looks for remaining keys, not for file so it may better work

"No success" is for their service or for the pywallet command I wrote?

Own address: 19QkqAza7BHFTuoz9N8UQkryP4E9jHo4N3 - Pywallet support: 1AQDfx22pKGgXnUZFL1e4UKos3QqvRzNh5 - Bitcointalk++ script support: 1Pxeccscj1ygseTdSV1qUqQCanp2B2NMM2
Pywallet: instructions. Encrypted wallet support, export/import keys/addresses, backup wallets, export/import CSV data from/into wallet, merge wallets, delete/import addresses and transactions, recover altcoins sent to bitcoin addresses, sign/verify messages and files with Bitcoin addresses, recover deleted wallets, etc.
Borisz
Sr. Member
****
Offline Offline

Activity: 476
Merit: 251



View Profile
January 07, 2017, 12:30:19 PM
 #20

More of a question here for learning purposes

Quote from: shorena
True, this is what a send to two addresses unknown to the wallet (no private key) would look like. Considering the time the transaction took place its likely that the change key was one 100+ ofter the january backup.

I am not getting how the return could go to an address about which your wallet does not know. I only see 2 options:

A: If the client knows that all keys in the old keypool have been used up (sync is recent enough), it will simply re-generate new private-public keys. This happens if you unlock the wallet to make a transaction. Hence return should go to a newly (at the time of transaction) generated address.

B: If the client does not know that all keys have been used up (sync not completed up to the point where the last address has been used), then it will send the return coins to an old address in the old keypool (say 99/100), which has already been used before (!), but for which you also ought to have the private key in the old wallet.dat. In this case the return address would have 2 transactions in it.

Please correct me if this is wrong, after all, I am here to learn.

Based on this and the transaction ID, the 13 BTC change was the only input to the return address, so I would say it is a new address generated when you sent the transaction. (Had 13 BTC been sent to a return address that was used sometime after your January backup (I do not see how that would be possible), that address would likely have another transaction in it as well. Being also old, it is quite probably that it was already used.)

BitcoinNewsBR
1. The transaction in the UI does look like if it was sent to an unknown address(mentioned by shorena), as generally return addresses are not shown in the UI. Are you perhaps using an extension/script to show these as well?
2. I think a "Private key for address X is unknown" also appears when you try to dumpprivkey with the wallet locked. I assume this is not the case.
3. Have you tried to sign a message with the return address? I saw this recommended somewhere as to double-check if you don't have the private key for an address.
4. If you haven't already, you could look at the commands listaddressgroupings and listreceivedbyaddress, they might tell you some additional info.
Pages: [1] 2 3 4 »  All
  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!