mirror of
https://github.com/sparrowwallet/drongo.git
synced 2024-12-26 18:16:45 +00:00
wallet auto bitcoin unit
This commit is contained in:
parent
4e7f0611c4
commit
49a4b548b4
2 changed files with 32 additions and 1 deletions
|
@ -3,12 +3,24 @@ package com.sparrowwallet.drongo;
|
|||
import com.sparrowwallet.drongo.protocol.Transaction;
|
||||
|
||||
public enum BitcoinUnit {
|
||||
AUTO("Auto") {
|
||||
@Override
|
||||
public long getSatsValue(double unitValue) {
|
||||
throw new UnsupportedOperationException("Auto unit cannot convert bitcoin values");
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getValue(long satsValue) {
|
||||
throw new UnsupportedOperationException("Auto unit cannot convert bitcoin values");
|
||||
}
|
||||
},
|
||||
BTC("BTC") {
|
||||
@Override
|
||||
public long getSatsValue(double unitValue) {
|
||||
return (long)(unitValue * Transaction.SATOSHIS_PER_BITCOIN);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getValue(long satsValue) {
|
||||
return (double)satsValue / Transaction.SATOSHIS_PER_BITCOIN;
|
||||
}
|
||||
|
@ -19,6 +31,7 @@ public enum BitcoinUnit {
|
|||
return (long)unitValue;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getValue(long satsValue) {
|
||||
return (double)satsValue;
|
||||
}
|
||||
|
@ -43,6 +56,10 @@ public enum BitcoinUnit {
|
|||
return getValue(satsValue);
|
||||
}
|
||||
|
||||
public static long getAutoThreshold() {
|
||||
return 100000000L;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return label;
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
package com.sparrowwallet.drongo.wallet;
|
||||
|
||||
import com.sparrowwallet.drongo.BitcoinUnit;
|
||||
import com.sparrowwallet.drongo.KeyPurpose;
|
||||
import com.sparrowwallet.drongo.address.Address;
|
||||
import com.sparrowwallet.drongo.crypto.DeterministicKey;
|
||||
import com.sparrowwallet.drongo.crypto.ECKey;
|
||||
import com.sparrowwallet.drongo.crypto.Key;
|
||||
import com.sparrowwallet.drongo.policy.Policy;
|
||||
|
@ -340,6 +340,20 @@ public class Wallet {
|
|||
throw new InsufficientFundsException("Not enough combined value in UTXOs for output value " + targetValue);
|
||||
}
|
||||
|
||||
public BitcoinUnit getAutoUnit() {
|
||||
for(KeyPurpose keyPurpose : KeyPurpose.values()) {
|
||||
for(WalletNode addressNode : getNode(keyPurpose).getChildren()) {
|
||||
for(BlockTransactionHashIndex output : addressNode.getTransactionOutputs()) {
|
||||
if(output.getValue() >= BitcoinUnit.getAutoThreshold()) {
|
||||
return BitcoinUnit.BTC;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return BitcoinUnit.SATOSHIS;
|
||||
}
|
||||
|
||||
public void clearNodes() {
|
||||
purposeNodes.clear();
|
||||
transactions.clear();
|
||||
|
|
Loading…
Reference in a new issue