mirror of
https://github.com/Qortal/qortal.git
synced 2025-06-06 00:07:00 +00:00
Adding for later use.
This commit is contained in:
parent
1cd5dccbd6
commit
661827f92a
151
src/main/java/org/qortal/crosschain/BitcoinyTBD.java
Normal file
151
src/main/java/org/qortal/crosschain/BitcoinyTBD.java
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
package org.qortal.crosschain;
|
||||||
|
|
||||||
|
import org.bitcoinj.core.Coin;
|
||||||
|
import org.bitcoinj.core.Context;
|
||||||
|
import org.bitcoinj.core.NetworkParameters;
|
||||||
|
import org.qortal.api.model.crosschain.BitcoinyTBDRequest;
|
||||||
|
import org.qortal.crosschain.ChainableServer.ConnectionType;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.EnumMap;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
public class BitcoinyTBD extends Bitcoiny {
|
||||||
|
|
||||||
|
private static HashMap<String, BitcoinyTBDRequest> requestsById = new HashMap<>();
|
||||||
|
|
||||||
|
private long minimumOrderAmount;
|
||||||
|
|
||||||
|
private static Map<String, BitcoinyTBD> instanceByCode = new HashMap<>();
|
||||||
|
|
||||||
|
private final NetTBD netTBD;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default ElectrumX Ports
|
||||||
|
*
|
||||||
|
* These are the defualts for all Bitcoin forks.
|
||||||
|
*/
|
||||||
|
private static final Map<ConnectionType, Integer> DEFAULT_ELECTRUMX_PORTS = new EnumMap<>(ConnectionType.class);
|
||||||
|
static {
|
||||||
|
DEFAULT_ELECTRUMX_PORTS.put(ConnectionType.TCP, 50001);
|
||||||
|
DEFAULT_ELECTRUMX_PORTS.put(ConnectionType.SSL, 50002);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*
|
||||||
|
* @param netTBD network access to the blockchain provider
|
||||||
|
* @param blockchain blockchain provider
|
||||||
|
* @param bitcoinjContext
|
||||||
|
* @param currencyCode the trading symbol, ie LTC
|
||||||
|
* @param minimumOrderAmount web search, LTC minimumOrderAmount = 1000000, 0.01 LTC minimum order to avoid dust errors
|
||||||
|
* @param feePerKb web search, LTC feePerKb = 10000, 0.0001 LTC per 1000 bytes
|
||||||
|
*/
|
||||||
|
private BitcoinyTBD(
|
||||||
|
NetTBD netTBD,
|
||||||
|
BitcoinyBlockchainProvider blockchain,
|
||||||
|
Context bitcoinjContext,
|
||||||
|
String currencyCode,
|
||||||
|
long minimumOrderAmount,
|
||||||
|
long feePerKb) {
|
||||||
|
|
||||||
|
super(blockchain, bitcoinjContext, currencyCode, Coin.valueOf( feePerKb));
|
||||||
|
|
||||||
|
this.netTBD = netTBD;
|
||||||
|
this.minimumOrderAmount = minimumOrderAmount;
|
||||||
|
|
||||||
|
LOGGER.info(() -> String.format("Starting BitcoinyTBD support using %s", this.netTBD.getName()));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Instance
|
||||||
|
*
|
||||||
|
* @param currencyCode the trading symbol, ie LTC
|
||||||
|
*
|
||||||
|
* @return the instance
|
||||||
|
*/
|
||||||
|
public static synchronized Optional<BitcoinyTBD> getInstance(String currencyCode) {
|
||||||
|
|
||||||
|
return Optional.ofNullable(instanceByCode.get(currencyCode));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Build Instance
|
||||||
|
*
|
||||||
|
* @param bitcoinyTBDRequest
|
||||||
|
* @param networkParams
|
||||||
|
* @return the instance
|
||||||
|
*/
|
||||||
|
public static synchronized BitcoinyTBD buildInstance(
|
||||||
|
BitcoinyTBDRequest bitcoinyTBDRequest,
|
||||||
|
NetworkParameters networkParams
|
||||||
|
) {
|
||||||
|
|
||||||
|
NetTBD netTBD
|
||||||
|
= new NetTBD(
|
||||||
|
bitcoinyTBDRequest.getNetworkName(),
|
||||||
|
bitcoinyTBDRequest.getFeeCeiling(),
|
||||||
|
networkParams,
|
||||||
|
Collections.emptyList(),
|
||||||
|
bitcoinyTBDRequest.getExpectedGenesisHash()
|
||||||
|
);
|
||||||
|
|
||||||
|
BitcoinyBlockchainProvider electrumX = new ElectrumX(netTBD.getName(), netTBD.getGenesisHash(), netTBD.getServers(), DEFAULT_ELECTRUMX_PORTS);
|
||||||
|
Context bitcoinjContext = new Context(netTBD.getParams());
|
||||||
|
|
||||||
|
BitcoinyTBD instance
|
||||||
|
= new BitcoinyTBD(
|
||||||
|
netTBD,
|
||||||
|
electrumX,
|
||||||
|
bitcoinjContext,
|
||||||
|
bitcoinyTBDRequest.getCurrencyCode(),
|
||||||
|
bitcoinyTBDRequest.getMinimumOrderAmount(),
|
||||||
|
bitcoinyTBDRequest.getFeePerKb());
|
||||||
|
electrumX.setBlockchain(instance);
|
||||||
|
|
||||||
|
instanceByCode.put(bitcoinyTBDRequest.getCurrencyCode(), instance);
|
||||||
|
requestsById.put(bitcoinyTBDRequest.getId(), bitcoinyTBDRequest);
|
||||||
|
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<BitcoinyTBDRequest> getRequests() {
|
||||||
|
|
||||||
|
Collection<BitcoinyTBDRequest> requests = requestsById.values();
|
||||||
|
|
||||||
|
List<BitcoinyTBDRequest> list = new ArrayList<>( requests.size() );
|
||||||
|
|
||||||
|
list.addAll( requests );
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getMinimumOrderAmount() {
|
||||||
|
|
||||||
|
return minimumOrderAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getP2shFee(Long timestamp) throws ForeignBlockchainException {
|
||||||
|
|
||||||
|
return this.netTBD.getFeeCeiling();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getFeeCeiling() {
|
||||||
|
|
||||||
|
return this.netTBD.getFeeCeiling();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setFeeCeiling(long fee) {
|
||||||
|
|
||||||
|
this.netTBD.setFeeCeiling( fee );
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user