package com.msgilligan.bitcoinj.daemon.config; import com.googlecode.jsonrpc4j.spring.JsonServiceExporter; import com.msgilligan.bitcoinj.rpcserver.BitcoinJsonRpc; import com.msgilligan.bitcoinj.json.conversion.RpcServerModule; import com.msgilligan.bitcoinj.spring.service.PeerGroupService; import org.bitcoinj.core.NetworkParameters; import org.bitcoinj.net.discovery.DnsDiscovery; import org.bitcoinj.net.discovery.PeerDiscovery; import org.bitcoinj.params.MainNetParams; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.fasterxml.jackson.databind.Module; import java.io.FileNotFoundException; /** * Spring configuration for bitcoinj, Bitcoin services, and JSON-RPC server */ @Configuration public class BitcoinConfig { @Bean public NetworkParameters networkParameters() { return MainNetParams.get(); } @Bean public PeerDiscovery peerDiscovery(NetworkParameters params) throws FileNotFoundException { PeerDiscovery pd; pd = new DnsDiscovery(params); // pd = new SeedPeers(params); return pd; } @Bean public Module bitcoinJMapper() { return new RpcServerModule(); } @Bean public PeerGroupService peerGroupService(NetworkParameters params, PeerDiscovery peerDiscovery) { return new PeerGroupService(params, peerDiscovery); } @Bean(name="/") public JsonServiceExporter bitcoinServiceExporter(PeerGroupService peerGroupService) { JsonServiceExporter exporter = new JsonServiceExporter(); exporter.setService(peerGroupService); exporter.setServiceInterface(BitcoinJsonRpc.class); exporter.setBackwardsComaptible(true); return exporter; } }