mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-08-15 18:00:24 -04:00
Change base networks from btc to xmr, e.g. BTC_REGTEST -> XMR_STAGENET (#55)
change base networks from btc to xmr, e.g. BTC_REGTEST -> XMR_STAGENET add xmr seed node files
This commit is contained in:
parent
de5bbf4a85
commit
9903821b18
62 changed files with 353 additions and 181 deletions
|
@ -22,6 +22,7 @@ import bisq.core.api.model.BalancesInfo;
|
|||
import bisq.core.api.model.BsqBalanceInfo;
|
||||
import bisq.core.api.model.BtcBalanceInfo;
|
||||
import bisq.core.api.model.TxFeeRateInfo;
|
||||
import bisq.core.api.model.XmrBalanceInfo;
|
||||
import bisq.core.app.AppStartupState;
|
||||
import bisq.core.btc.Balances;
|
||||
import bisq.core.btc.exceptions.AddressEntryException;
|
||||
|
@ -160,11 +161,13 @@ class CoreWalletsService {
|
|||
|
||||
switch (currencyCode.trim().toUpperCase()) {
|
||||
case "BSQ":
|
||||
return new BalancesInfo(getBsqBalances(), BtcBalanceInfo.EMPTY);
|
||||
return new BalancesInfo(getBsqBalances(), BtcBalanceInfo.EMPTY, XmrBalanceInfo.EMPTY);
|
||||
case "BTC":
|
||||
return new BalancesInfo(BsqBalanceInfo.EMPTY, getBtcBalances());
|
||||
return new BalancesInfo(BsqBalanceInfo.EMPTY, getBtcBalances(), XmrBalanceInfo.EMPTY);
|
||||
case "XMR":
|
||||
return new BalancesInfo(BsqBalanceInfo.EMPTY, BtcBalanceInfo.EMPTY, getXmrBalances());
|
||||
default:
|
||||
return new BalancesInfo(getBsqBalances(), getBtcBalances());
|
||||
return new BalancesInfo(getBsqBalances(), getBtcBalances(), getXmrBalances());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -602,6 +605,7 @@ class CoreWalletsService {
|
|||
unlockingBondsBalance.value);
|
||||
}
|
||||
|
||||
// TODO (woodser): delete this since it's serving XMR balances
|
||||
private BtcBalanceInfo getBtcBalances() {
|
||||
verifyWalletsAreAvailable();
|
||||
verifyEncryptedWalletIsUnlocked();
|
||||
|
@ -624,6 +628,29 @@ class CoreWalletsService {
|
|||
lockedBalance.value);
|
||||
}
|
||||
|
||||
private XmrBalanceInfo getXmrBalances() {
|
||||
verifyWalletsAreAvailable();
|
||||
verifyEncryptedWalletIsUnlocked();
|
||||
|
||||
var availableBalance = balances.getAvailableBalance().get();
|
||||
if (availableBalance == null)
|
||||
throw new IllegalStateException("available balance is not yet available");
|
||||
|
||||
var reservedBalance = balances.getReservedBalance().get();
|
||||
if (reservedBalance == null)
|
||||
throw new IllegalStateException("reserved balance is not yet available");
|
||||
|
||||
var lockedBalance = balances.getLockedBalance().get();
|
||||
if (lockedBalance == null)
|
||||
throw new IllegalStateException("locked balance is not yet available");
|
||||
|
||||
return new XmrBalanceInfo(availableBalance.add(lockedBalance).value,
|
||||
availableBalance.value,
|
||||
lockedBalance.value,
|
||||
reservedBalance.value,
|
||||
availableBalance.add(lockedBalance).add(reservedBalance).value);
|
||||
}
|
||||
|
||||
// Returns a Coin for the transfer amount string, or a RuntimeException if invalid.
|
||||
private Coin getValidTransferAmount(String amount, CoinFormatter coinFormatter) {
|
||||
Coin amountAsCoin = parseToCoin(amount, coinFormatter);
|
||||
|
|
|
@ -12,10 +12,12 @@ public class BalancesInfo implements Payload {
|
|||
// balancesInfo.getBtcBalanceInfo().getAvailableBalance().
|
||||
private final BsqBalanceInfo bsq;
|
||||
private final BtcBalanceInfo btc;
|
||||
private final XmrBalanceInfo xmr;
|
||||
|
||||
public BalancesInfo(BsqBalanceInfo bsq, BtcBalanceInfo btc) {
|
||||
public BalancesInfo(BsqBalanceInfo bsq, BtcBalanceInfo btc, XmrBalanceInfo xmr) {
|
||||
this.bsq = bsq;
|
||||
this.btc = btc;
|
||||
this.xmr = xmr;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -27,12 +29,14 @@ public class BalancesInfo implements Payload {
|
|||
return bisq.proto.grpc.BalancesInfo.newBuilder()
|
||||
.setBsq(bsq.toProtoMessage())
|
||||
.setBtc(btc.toProtoMessage())
|
||||
.setXmr(xmr.toProtoMessage())
|
||||
.build();
|
||||
}
|
||||
|
||||
public static BalancesInfo fromProto(bisq.proto.grpc.BalancesInfo proto) {
|
||||
return new BalancesInfo(BsqBalanceInfo.fromProto(proto.getBsq()),
|
||||
BtcBalanceInfo.fromProto(proto.getBtc()));
|
||||
BtcBalanceInfo.fromProto(proto.getBtc()),
|
||||
XmrBalanceInfo.fromProto(proto.getXmr()));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -40,6 +44,7 @@ public class BalancesInfo implements Payload {
|
|||
return "BalancesInfo{" + "\n" +
|
||||
" " + bsq.toString() + "\n" +
|
||||
", " + btc.toString() + "\n" +
|
||||
", " + xmr.toString() + "\n" +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
|
84
core/src/main/java/bisq/core/api/model/XmrBalanceInfo.java
Normal file
84
core/src/main/java/bisq/core/api/model/XmrBalanceInfo.java
Normal file
|
@ -0,0 +1,84 @@
|
|||
package bisq.core.api.model;
|
||||
|
||||
import bisq.common.Payload;
|
||||
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
public class XmrBalanceInfo implements Payload {
|
||||
|
||||
public static final XmrBalanceInfo EMPTY = new XmrBalanceInfo(-1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1);
|
||||
|
||||
// All balances are in XMR centineros: https://www.getmonero.org/resources/moneropedia/denominations.html
|
||||
private final long balance;
|
||||
private final long availableBalance;
|
||||
private final long lockedBalance;
|
||||
private final long reservedBalance;
|
||||
private final long totalBalance; // balance + reserved
|
||||
|
||||
public XmrBalanceInfo(long balance,
|
||||
long availableBalance,
|
||||
long lockedBalance,
|
||||
long reservedBalance,
|
||||
long totalBalance) {
|
||||
this.balance = balance;
|
||||
this.availableBalance = availableBalance;
|
||||
this.lockedBalance = lockedBalance;
|
||||
this.reservedBalance = reservedBalance;
|
||||
this.totalBalance = totalBalance;
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
public static XmrBalanceInfo valueOf(long balance,
|
||||
long availableBalance,
|
||||
long lockedBalance,
|
||||
long reservedBalance,
|
||||
long totalBalance) {
|
||||
// Convenience for creating a model instance instead of a proto.
|
||||
return new XmrBalanceInfo(balance,
|
||||
availableBalance,
|
||||
lockedBalance,
|
||||
reservedBalance,
|
||||
totalBalance);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// PROTO BUFFER
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@Override
|
||||
public bisq.proto.grpc.XmrBalanceInfo toProtoMessage() {
|
||||
return bisq.proto.grpc.XmrBalanceInfo.newBuilder()
|
||||
.setBalance(balance)
|
||||
.setAvailableBalance(availableBalance)
|
||||
.setLockedBalance(lockedBalance)
|
||||
.setReservedBalance(reservedBalance)
|
||||
.setTotalBalance(totalBalance)
|
||||
.build();
|
||||
}
|
||||
|
||||
public static XmrBalanceInfo fromProto(bisq.proto.grpc.XmrBalanceInfo proto) {
|
||||
return new XmrBalanceInfo(proto.getBalance(),
|
||||
proto.getAvailableBalance(),
|
||||
proto.getLockedBalance(),
|
||||
proto.getReservedBalance(),
|
||||
proto.getTotalBalance());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "BtcBalanceInfo{" +
|
||||
"balance=" + balance +
|
||||
", availableBalance=" + availableBalance +
|
||||
", lockedBalance=" + lockedBalance +
|
||||
", reservedBalance=" + reservedBalance +
|
||||
", totalBalance=" + totalBalance +
|
||||
'}';
|
||||
}
|
||||
}
|
|
@ -88,6 +88,7 @@ public abstract class BisqExecutable implements GracefulShutDownHandler, BisqSet
|
|||
System.exit(EXIT_SUCCESS);
|
||||
}
|
||||
} catch (ConfigException ex) {
|
||||
ex.printStackTrace();
|
||||
System.err.println("error: " + ex.getMessage());
|
||||
System.exit(EXIT_FAILURE);
|
||||
} catch (Throwable ex) {
|
||||
|
@ -205,6 +206,7 @@ public abstract class BisqExecutable implements GracefulShutDownHandler, BisqSet
|
|||
bisqSetup.start();
|
||||
}
|
||||
|
||||
@Override
|
||||
public abstract void onSetupComplete();
|
||||
|
||||
|
||||
|
|
|
@ -290,7 +290,7 @@ public class BisqSetup {
|
|||
|
||||
public void start() {
|
||||
// If user tried to downgrade we require a shutdown
|
||||
if (Config.baseCurrencyNetwork() == BaseCurrencyNetwork.BTC_MAINNET &&
|
||||
if (Config.baseCurrencyNetwork() == BaseCurrencyNetwork.XMR_MAINNET &&
|
||||
hasDowngraded(downGradePreventionHandler)) {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -374,7 +374,7 @@ public class MyBlindVoteListService implements PersistedDataHost, DaoStateListen
|
|||
// Only payloads received from seed nodes would ignore that date check.
|
||||
int minPeers = Config.baseCurrencyNetwork().isMainnet() ? 4 : 1;
|
||||
if ((p2PService.getNumConnectedPeers().get() >= minPeers && p2PService.isBootstrapped()) ||
|
||||
Config.baseCurrencyNetwork().isRegtest()) {
|
||||
Config.baseCurrencyNetwork().isStagenet()) {
|
||||
myBlindVoteList.stream()
|
||||
.filter(blindVote -> periodService.isTxInPhaseAndCycle(blindVote.getTxId(),
|
||||
DaoPhase.Phase.BLIND_VOTE,
|
||||
|
|
|
@ -138,7 +138,7 @@ public enum Param {
|
|||
PHASE_UNDEFINED("0", ParamType.BLOCK),
|
||||
PHASE_PROPOSAL(Config.baseCurrencyNetwork().isMainnet() ?
|
||||
"3601" : // mainnet; 24 days
|
||||
Config.baseCurrencyNetwork().isRegtest() ?
|
||||
Config.baseCurrencyNetwork().isStagenet() ?
|
||||
"4" : // regtest
|
||||
Config.baseCurrencyNetwork().isDaoBetaNet() ?
|
||||
"144" : // daoBetaNet; 1 day
|
||||
|
@ -148,7 +148,7 @@ public enum Param {
|
|||
ParamType.BLOCK, 2, 2),
|
||||
PHASE_BREAK1(Config.baseCurrencyNetwork().isMainnet() ?
|
||||
"149" : // mainnet; 1 day
|
||||
Config.baseCurrencyNetwork().isRegtest() ?
|
||||
Config.baseCurrencyNetwork().isStagenet() ?
|
||||
"1" : // regtest
|
||||
Config.baseCurrencyNetwork().isDaoBetaNet() ?
|
||||
"10" : // daoBetaNet
|
||||
|
@ -158,7 +158,7 @@ public enum Param {
|
|||
ParamType.BLOCK, 2, 2),
|
||||
PHASE_BLIND_VOTE(Config.baseCurrencyNetwork().isMainnet() ?
|
||||
"451" : // mainnet; 3 days
|
||||
Config.baseCurrencyNetwork().isRegtest() ?
|
||||
Config.baseCurrencyNetwork().isStagenet() ?
|
||||
"2" : // regtest
|
||||
Config.baseCurrencyNetwork().isDaoBetaNet() ?
|
||||
"144" : // daoBetaNet; 1 day
|
||||
|
@ -168,7 +168,7 @@ public enum Param {
|
|||
ParamType.BLOCK, 2, 2),
|
||||
PHASE_BREAK2(Config.baseCurrencyNetwork().isMainnet() ?
|
||||
"9" : // mainnet
|
||||
Config.baseCurrencyNetwork().isRegtest() ?
|
||||
Config.baseCurrencyNetwork().isStagenet() ?
|
||||
"1" : // regtest
|
||||
Config.baseCurrencyNetwork().isDaoBetaNet() ?
|
||||
"10" : // daoBetaNet
|
||||
|
@ -178,7 +178,7 @@ public enum Param {
|
|||
ParamType.BLOCK, 2, 2),
|
||||
PHASE_VOTE_REVEAL(Config.baseCurrencyNetwork().isMainnet() ?
|
||||
"451" : // mainnet; 3 days
|
||||
Config.baseCurrencyNetwork().isRegtest() ?
|
||||
Config.baseCurrencyNetwork().isStagenet() ?
|
||||
"2" : // regtest
|
||||
Config.baseCurrencyNetwork().isDaoBetaNet() ?
|
||||
"144" : // daoBetaNet; 1 day
|
||||
|
@ -188,7 +188,7 @@ public enum Param {
|
|||
ParamType.BLOCK, 2, 2),
|
||||
PHASE_BREAK3(Config.baseCurrencyNetwork().isMainnet() ?
|
||||
"9" : // mainnet
|
||||
Config.baseCurrencyNetwork().isRegtest() ?
|
||||
Config.baseCurrencyNetwork().isStagenet() ?
|
||||
"1" : // regtest
|
||||
Config.baseCurrencyNetwork().isDaoBetaNet() ?
|
||||
"10" : // daoBetaNet
|
||||
|
@ -198,7 +198,7 @@ public enum Param {
|
|||
ParamType.BLOCK, 2, 2),
|
||||
PHASE_RESULT(Config.baseCurrencyNetwork().isMainnet() ?
|
||||
"10" : // mainnet
|
||||
Config.baseCurrencyNetwork().isRegtest() ?
|
||||
Config.baseCurrencyNetwork().isStagenet() ?
|
||||
"2" : // regtest
|
||||
Config.baseCurrencyNetwork().isDaoBetaNet() ?
|
||||
"10" : // daoBetaNet
|
||||
|
|
|
@ -226,7 +226,7 @@ public class MyProposalListService implements PersistedDataHost, DaoStateListene
|
|||
// of that cycle so it is 1 blind vote getting rebroadcast at each startup to my neighbors.
|
||||
int minPeers = Config.baseCurrencyNetwork().isMainnet() ? 4 : 1;
|
||||
if ((p2PService.getNumConnectedPeers().get() >= minPeers && p2PService.isBootstrapped()) ||
|
||||
Config.baseCurrencyNetwork().isRegtest()) {
|
||||
Config.baseCurrencyNetwork().isStagenet()) {
|
||||
myProposalList.stream()
|
||||
.filter(proposal -> periodService.isTxInPhaseAndCycle(proposal.getTxId(),
|
||||
DaoPhase.Phase.PROPOSAL,
|
||||
|
|
|
@ -112,7 +112,7 @@ public class GenesisTxInfo {
|
|||
boolean isDaoTestNet = baseCurrencyNetwork.isDaoTestNet();
|
||||
boolean isDaoBetaNet = baseCurrencyNetwork.isDaoBetaNet();
|
||||
boolean isDaoRegTest = baseCurrencyNetwork.isDaoRegTest();
|
||||
boolean isRegtest = baseCurrencyNetwork.isRegtest();
|
||||
boolean isRegtest = baseCurrencyNetwork.isStagenet();
|
||||
if (!genesisTxId.isEmpty()) {
|
||||
this.genesisTxId = genesisTxId;
|
||||
} else if (isMainnet) {
|
||||
|
|
|
@ -95,7 +95,7 @@ public enum BondedRoleType {
|
|||
this.requiredBondUnit = requiredBondUnit;
|
||||
this.unlockTimeInBlocks = Config.baseCurrencyNetwork().isMainnet() ?
|
||||
unlockTimeInDays * 144 : // mainnet (144 blocks per day)
|
||||
Config.baseCurrencyNetwork().isRegtest() ?
|
||||
Config.baseCurrencyNetwork().isStagenet() ?
|
||||
5 : // regtest (arbitrarily low value for dev testing)
|
||||
144; // testnet (relatively short time for testing purposes)
|
||||
this.link = link;
|
||||
|
|
|
@ -46,8 +46,8 @@ import org.jetbrains.annotations.NotNull;
|
|||
public class Res {
|
||||
public static void setup() {
|
||||
BaseCurrencyNetwork baseCurrencyNetwork = Config.baseCurrencyNetwork();
|
||||
setBaseCurrencyCode("XMR");
|
||||
setBaseCurrencyName("Monero");
|
||||
setBaseCurrencyCode(baseCurrencyNetwork.getCurrencyCode());
|
||||
setBaseCurrencyName(baseCurrencyNetwork.getCurrencyName());
|
||||
}
|
||||
|
||||
@SuppressWarnings("CanBeFinal")
|
||||
|
@ -78,20 +78,20 @@ public class Res {
|
|||
private static String baseCurrencyNameLowerCase;
|
||||
|
||||
public static void setBaseCurrencyCode(String baseCurrencyCode) {
|
||||
Res.baseCurrencyCode = "XMR";
|
||||
Res.baseCurrencyCode = baseCurrencyCode;
|
||||
}
|
||||
|
||||
public static void setBaseCurrencyName(String baseCurrencyName) {
|
||||
Res.baseCurrencyName = "Monero";
|
||||
Res.baseCurrencyName = baseCurrencyName;
|
||||
baseCurrencyNameLowerCase = baseCurrencyName.toLowerCase();
|
||||
}
|
||||
|
||||
public static String getBaseCurrencyCode() {
|
||||
return "XMR";
|
||||
return baseCurrencyCode;
|
||||
}
|
||||
|
||||
public static String getBaseCurrencyName() {
|
||||
return "Monero";
|
||||
return baseCurrencyName;
|
||||
}
|
||||
|
||||
// Capitalize first character
|
||||
|
|
|
@ -112,6 +112,7 @@ public class DefaultSeedNodeRepository implements SeedNodeRepository {
|
|||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<NodeAddress> getSeedNodeAddresses() {
|
||||
if (cache.isEmpty())
|
||||
reload();
|
||||
|
@ -119,6 +120,7 @@ public class DefaultSeedNodeRepository implements SeedNodeRepository {
|
|||
return cache;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSeedNode(NodeAddress nodeAddress) {
|
||||
if (cache.isEmpty())
|
||||
reload();
|
||||
|
|
|
@ -39,7 +39,7 @@ public class MakerSetsLockTime extends TradeTask {
|
|||
|
||||
// 10 days for altcoins, 20 days for other payment methods
|
||||
// For regtest dev environment we use 5 blocks
|
||||
int delay = Config.baseCurrencyNetwork().isRegtest() ?
|
||||
int delay = Config.baseCurrencyNetwork().isStagenet() ?
|
||||
5 :
|
||||
Restrictions.getLockTime(processModel.getOffer().getPaymentMethod().isAsset());
|
||||
|
||||
|
|
|
@ -120,6 +120,12 @@ public final class Preferences implements PersistedDataHost, BridgeAddressProvid
|
|||
new BlockChainExplorer("mempool.emzy.de (@emzy)", "https://mempool.emzy.de/bisq/tx/", "https://mempool.emzy.de/bisq/address/"),
|
||||
new BlockChainExplorer("mempool.bisq.services (@devinbileck)", "https://mempool.bisq.services/bisq/tx/", "https://mempool.bisq.services/bisq/address/")
|
||||
));
|
||||
private static final ArrayList<BlockChainExplorer> XMR_MAIN_NET_EXPLORERS = new ArrayList<>(Arrays.asList(
|
||||
new BlockChainExplorer("xmrchain.net", "https://xmrchain.net/tx/", "")
|
||||
));
|
||||
private static final ArrayList<BlockChainExplorer> XMR_TEST_NET_EXPLORERS = new ArrayList<>(Arrays.asList(
|
||||
new BlockChainExplorer("testnet.xmrchain.net", "https://testnet.xmrchain.net/tx/", "")
|
||||
));
|
||||
|
||||
private static final ArrayList<String> XMR_TX_PROOF_SERVICES_CLEAR_NET = new ArrayList<>(Arrays.asList(
|
||||
"xmrblocks.monero.emzy.de", // @emzy
|
||||
|
@ -284,9 +290,12 @@ public final class Preferences implements PersistedDataHost, BridgeAddressProvid
|
|||
setCryptoCurrencies(CurrencyUtil.getMainCryptoCurrencies());
|
||||
|
||||
BaseCurrencyNetwork baseCurrencyNetwork = Config.baseCurrencyNetwork();
|
||||
if ("BTC".equals(baseCurrencyNetwork.getCurrencyCode())) { // TODO (woodser): change to XMR when --baseCurrencyNetwork=XMR_REGTEST supported
|
||||
if ("BTC".equals(baseCurrencyNetwork.getCurrencyCode())) {
|
||||
setBlockChainExplorerMainNet(BTC_MAIN_NET_EXPLORERS.get(0));
|
||||
setBlockChainExplorerTestNet(BTC_TEST_NET_EXPLORERS.get(0));
|
||||
} else if ("XMR".equals(baseCurrencyNetwork.getCurrencyCode())) {
|
||||
setBlockChainExplorerMainNet(XMR_MAIN_NET_EXPLORERS.get(0));
|
||||
setBlockChainExplorerTestNet(XMR_TEST_NET_EXPLORERS.get(0));
|
||||
} else {
|
||||
throw new RuntimeException("BaseCurrencyNetwork not defined. BaseCurrencyNetwork=" + baseCurrencyNetwork);
|
||||
}
|
||||
|
@ -829,10 +838,10 @@ public final class Preferences implements PersistedDataHost, BridgeAddressProvid
|
|||
public BlockChainExplorer getBlockChainExplorer() {
|
||||
BaseCurrencyNetwork baseCurrencyNetwork = Config.baseCurrencyNetwork();
|
||||
switch (baseCurrencyNetwork) {
|
||||
case BTC_MAINNET:
|
||||
case XMR_MAINNET:
|
||||
return prefPayload.getBlockChainExplorerMainNet();
|
||||
case BTC_TESTNET:
|
||||
case BTC_REGTEST:
|
||||
case XMR_TESTNET:
|
||||
case XMR_STAGENET:
|
||||
return prefPayload.getBlockChainExplorerTestNet();
|
||||
case BTC_DAO_TESTNET:
|
||||
return BTC_DAO_TEST_NET_EXPLORERS.get(0);
|
||||
|
@ -848,10 +857,10 @@ public final class Preferences implements PersistedDataHost, BridgeAddressProvid
|
|||
public ArrayList<BlockChainExplorer> getBlockChainExplorers() {
|
||||
BaseCurrencyNetwork baseCurrencyNetwork = Config.baseCurrencyNetwork();
|
||||
switch (baseCurrencyNetwork) {
|
||||
case BTC_MAINNET:
|
||||
case XMR_MAINNET:
|
||||
return BTC_MAIN_NET_EXPLORERS;
|
||||
case BTC_TESTNET:
|
||||
case BTC_REGTEST:
|
||||
case XMR_TESTNET:
|
||||
case XMR_STAGENET:
|
||||
return BTC_TEST_NET_EXPLORERS;
|
||||
case BTC_DAO_TESTNET:
|
||||
return BTC_DAO_TEST_NET_EXPLORERS;
|
||||
|
|
|
@ -18,22 +18,22 @@ import lombok.extern.slf4j.Slf4j;
|
|||
public class ParsingUtils {
|
||||
|
||||
/**
|
||||
* Temporary multiplier to convert Coin satoshis to XMR atomic units.
|
||||
* Temporary multiplier to convert Coin satoshis (denominating XMR centineros) to XMR atomic units.
|
||||
*
|
||||
* TODO (woodser): replace bitcoinj/Coin entirely?
|
||||
*/
|
||||
private static BigInteger XMR_SATOSHI_MULTIPLIER = BigInteger.valueOf(10000); // TODO (woodser): make this private and expose satoshisToXmrAtomicUnits()
|
||||
|
||||
|
||||
/**
|
||||
* Converts Coin satoshis (the base unit throughout Bisq) to XMR atomic units.
|
||||
*
|
||||
*
|
||||
* @param satoshis represents an amount in XMR atomic units scaled to a long
|
||||
* @return BigInteger is the equivalent amount in XMR atomic units
|
||||
*/
|
||||
public static BigInteger satoshisToXmrAtomicUnits(long satoshis) {
|
||||
return BigInteger.valueOf(satoshis).multiply(ParsingUtils.XMR_SATOSHI_MULTIPLIER);
|
||||
}
|
||||
|
||||
|
||||
public static Coin parseToCoin(String input, CoinFormatter coinFormatter) {
|
||||
return parseToCoin(input, coinFormatter.getMonetaryFormat());
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue