Bitcoinj: Múltiples billeteras

En mi aplicación Java, ahora debo manejar múltiples billeteras bitcoin (¿carteras HD?). Esto significa enviar y recibir BTC. Lamentablemente, bitcoin es bastante nuevo para mí, por lo que hay algunas preguntas:

¿Sería posible usar BitcoinJ para hacer esto? ¿Funciona bien con cientos de carteras (o más)? Si no, ¿cuál sería la alternativa?

Con respecto al flujo de trabajo: por supuesto, la clave privada permanecerá en el lado del usuario y, por lo tanto, la aplicación en sí no puede leerla. ¿Seguiría siendo posible generar eventos como "dinero recibido" sin tener la clave privada de la billetera?

Con respecto a la segunda pregunta, lo hice usando direcciones de vigilancia.

Respuestas (2)

yo tenia la misma duda. Investigué un poco en la biblioteca bitcoinj y creo que es posible usar varias billeteras al mismo tiempo. Te recomiendo que primero trabajes con una sola billetera para que puedas entender un poco cómo funciona la biblioteca. les dejo un ejemplo:

public class MainClass {
    private static final File BLOCKCHAIN_FILE = new File("block.dat");
    private static final NetworkParameters NET_PARAMS = MainNetParams.get();

    public static void main(String[] args) throws Exception {

        List<Wallet> wallets = getWallets();
        BlockStore blockStore = new SPVBlockStore(NET_PARAMS, BLOCKCHAIN_FILE);
        BlockChain blockChain = new BlockChain(NET_PARAMS, wallets, blockStore);
        PeerGroup peerGroup = new PeerGroup(NET_PARAMS, blockChain);

        for (Wallet w : wallets) {
            peerGroup.addWallet(w);
        }

        //Starting peerGroup;
        peerGroup.startAsync();

        //Start download blockchain
        peerGroup.downloadBlockChain();
    }

    public static List<Wallet> getWallets() throws UnreadableWalletException {

        List<Wallet> wallets = new ArrayList<>();
        for (int i = 0; i < 5; i++) {
            Wallet w = Wallet.loadFromFile(new File("wallet_" + i + ".dat"), null);
            wallets.add(w);
        }

        return wallets;
    }
}

Puede usar bitcoinj con múltiples billeteras (solo úselo peerGroup.addWallet(wallet)varias veces), pero no está diseñado para escalar bien en tal escenario. Dependiendo de sus recursos y la actividad en las carteras, dos, tres o cinco carteras pueden funcionar bien. Pero es casi seguro que cientos no funcionarán.