So by allowing addresses with no private key lets the bitcoind do everything except spend.
I tried to do something useful with bitcoind without private key, but failed:
$ ./bitcoind setaccount 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa satoshi
$ ./bitcoind getaddressesbyaccount satoshi
[
"1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa"
]
$ ./bitcoind listtransactions satoshi
[
]
$ ./bitcoind listsinceblock |grep satoshi
$
$ ./bitcoind getblockhash 0
000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
$ ./bitcoind getblock 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
{
"hash" : "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f",
"confirmations" : 203112,
"size" : 285,
"height" : 0,
"version" : 1,
"merkleroot" : "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b",
"tx" : [
"4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"
],
"time" : 1231006505,
"nonce" : 2083236893,
"bits" : "1d00ffff",
"difficulty" : 1.00000000,
"nextblockhash" : "00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048"
}
$ ./bitcoind gettransaction 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b
error: {"code":-5,"message":"Invalid or non-wallet transaction id"}
$ ./bitcoind getreceivedbyaccount satoshi
0.00000000
So it doesn't seem like adding address without a private key is useful. Or am I doing it wrong?