2. Get Bitcoin address for the pool.
The pool should give you N addresses:
One for D=1 work, one for D=6 work, one for D=12 work. etc.
D=6 work pays 6 shares. Etc. The reason for this is because your scheme uses a lot more bandwidth to transmit shares, but this is trivially corrected by increasing difficulty. But that would increase variance to unacceptable levels for slow miners. By changing the address they pre-commit to a target difficulty and the shares will be credited accordingly.
The miner software can then bet setup so that it picks the diff that gets it close to 1 share per minute...which should end up being less bandwidth than currently used.
Also, while it would be possible to buffer shares while the pool was down and the pool could choose to pay for stales, I think thats actually a bad idea: it would allow you to get shares on network-offline hosts that aren't really contributing to the success of the pool... plus it would require more coding and storage for the shares. Instead, when the pool isn't reachable to accept shares you simply switch to using your own address for mining until it comes back.
Annnd... as we mentioned on IRC pools could still enforce sane behavior on miners (e.g. don't send 1MB blocks of crap transactions) by simply refusing to pay for shares that look like that. So the pool acts as a check on miner behavior, but it can't enforce secret rules since the miners will need to know them in order to conform. This somewhat invalidates nanotube's #2 re-fee rules, but I think thats a good thing. Pools don't get unilateral control but they get some influence and I think thats good.
Also from IRC, the logical place to put all this would be in bitcoind, not in a miner client. A simple modification to bitcoind would let you change the payout address... then you use normal miners against it.
All work is done locally ...
1) If you're doing all the work local then why bother sending it to a pool?
2) Why should the pool trust the number of shares you worked on? Hack the bitcoin program so that your Pentium III reports the same shares processed as the guy with 5 GH/s.
(1) in order to get pooled payments, silly.
(2) Because you still submit 'shares' (though now with more data) in order to prove that you're working for the pool, same as now.