No, listreceivedbyaddress sólo me va a dar las direcciones que solicité para recibir monedas, (cuando le doy click a 'Recibir' y 'Solicitar pago', el equivalente por interfaz a getnewaddress supongo), ni con false ni con true me va a dar todas las direcciones en la wallet (con true incluye direcciones que pedí pero que no han recibido nada, con false sólo las que han recibido algo).
Ajá, correcto. Acabo de comprobarlo con un wallet nuevo:
$ bitcoin-cli listreceivedbyaddress 0 true
[
{
"address" : "1KJsef128RAdj7wJLh4nV2CnUgoVScciH1",
"account" : "",
"amount" : 0.00000000,
"confirmations" : 0,
"txids" : [
]
}
]
$ bitcoin-cli getnewaddress
17VjbSo4gJv4KA8oWgnKQMrYb9ByEn49J2
$ bitcoin-cli listreceivedbyaddress 0 true
[
{
"address" : "17VjbSo4gJv4KA8oWgnKQMrYb9ByEn49J2",
"account" : "",
"amount" : 0.00000000,
"confirmations" : 0,
"txids" : [
]
},
{
"address" : "1KJsef128RAdj7wJLh4nV2CnUgoVScciH1",
"account" : "",
"amount" : 0.00000000,
"confirmations" : 0,
"txids" : [
]
}
]
$ bitcoin-cli listreceivedbyaddress 0 false |grep -cw address
297
parece que te faltó borrar el "w", el comando entonces quedaría algo así:
./bitcoind listreceivedbyaddress 0 true | grep -c "\"address\" :"
(Agregué comillas y " :" por si alguien tiene la palabra "address" en el nombre de una de sus cuentas xD )
El -w es para evitar que en el futuro pongan por ejemplo "fromaddress"/"toaddress" o cualquier cosa, con eso buscamos solo la palabra entera. Pero lo tuyo ahora con los ":" ya es a prueba de bombas
. Usa comillas simples en la shell (o en el script) para no tener que escapar las dobles:
$ bitcoin-cli listreceivedbyaddress 0 true |grep -c '"address" : '
2
De todas formas todavía es vulnerable a que estos cambien el formato del JSON, por ejemplo, quitando el primer espacio. Lo suyo sería parsear el JSON pero ya nos vamos un poco off topic
.
./bitcoind listtransactions | grep -o "{" | wc -l
No entiendo por qué necesitas esto.
Dado que listreceivedbyaddress sólo me da las direcciones que pedí por 'Solicitar pago', necesito incluir las direcciones de cambio creadas automáticamente cuando hago una transacción de salida.
Ah, es que eso a mí no me ocurre. Debido a la forma en que hago mis transacciones, con un
programita propio y tal, siempre llamo a getnewaddress y todas mis direcciones aparecen en listreceivedbyaddress. Por eso no lo entendía. ¿Las del cambio entonces no aparecen ahí? Menuda caca… y además ahora no puedo comprobarlo porque lo último que he hecho con el wallet ha sido mezclarlo y no tengo ninguna transacción con cambio
.
(que nadie se flipe al ver esa cantidad enorme de coins… aquello fue antes de lo de gox :/)Encontré que sí hay un impacto en la importación de una private key... se demora bastante (unos 12 minutos para mi), supongo que tiene que cifrar de nuevo todo (?), menos mal no tenía yo que importar muchas... así que no lo recomendaría si quieres después importar un montón de llaves.
No, al importar una privkey se hace un rescan para encontrar las transacciones que han enviado coins "a esa key" y actualizar el saldo. El último parámetro de importprivkey controla esto. Para importar varias, se hace con ese parámetro a "false" y en la última, se omite y bitcoin core toma el valor por defecto, que es "true", y procede a hacer el rescan:
$ bitcoin-cli importprivkey Kfoo '' false
$ bitcoin-cli importprivkey Kbar '' false
$ bitcoin-cli importprivkey Kbaz '' false
$ bitcoin-cli importprivkey Kqux '' false
$ bitcoin-cli importprivkey Kquux # <-- rescan aquí, y ya las coge todas
Y por cierto, cambia 'bitcoind' por 'bitcoin-cli'
.