mirror of
https://github.com/bitcoinj/bitcoinj.git
synced 2025-01-19 05:33:44 +01:00
Transaction: make network
in toString()
an optional parameter
If it isn't provided, standard output scripts cannot be converted to addresses.
This commit is contained in:
parent
44b0ddeb59
commit
efdef581ee
@ -21,6 +21,7 @@ import com.google.common.base.MoreObjects;
|
|||||||
import com.google.common.math.IntMath;
|
import com.google.common.math.IntMath;
|
||||||
import org.bitcoinj.base.Address;
|
import org.bitcoinj.base.Address;
|
||||||
import org.bitcoinj.base.Coin;
|
import org.bitcoinj.base.Coin;
|
||||||
|
import org.bitcoinj.base.Network;
|
||||||
import org.bitcoinj.base.Sha256Hash;
|
import org.bitcoinj.base.Sha256Hash;
|
||||||
import org.bitcoinj.base.VarInt;
|
import org.bitcoinj.base.VarInt;
|
||||||
import org.bitcoinj.base.internal.Buffers;
|
import org.bitcoinj.base.internal.Buffers;
|
||||||
@ -771,16 +772,27 @@ public class Transaction extends Message {
|
|||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
MoreObjects.ToStringHelper helper = MoreObjects.toStringHelper(this);
|
MoreObjects.ToStringHelper helper = MoreObjects.toStringHelper(this);
|
||||||
helper.addValue(toString(null, null));
|
helper.addValue(toString(null, params.network()));
|
||||||
return helper.toString();
|
return helper.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A human-readable version of the transaction useful for debugging. The format is not guaranteed to be stable.
|
* A human-readable version of the transaction useful for debugging. The format is not guaranteed to be stable.
|
||||||
* @param chain If provided, will be used to estimate lock times (if set). Can be null.
|
* @param chain if provided, will be used to estimate lock times (if set)
|
||||||
|
* @param network if provided, network for output scripts converted to addresses
|
||||||
*/
|
*/
|
||||||
public String toString(@Nullable AbstractBlockChain chain, @Nullable CharSequence nullableIndent) {
|
public String toString(@Nullable AbstractBlockChain chain, @Nullable Network network) {
|
||||||
final CharSequence indent = nullableIndent != null ? nullableIndent : "";
|
return toString(chain, network, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A human-readable version of the transaction useful for debugging. The format is not guaranteed to be stable.
|
||||||
|
* @param chain if provided, will be used to estimate lock times (if set)
|
||||||
|
* @param network if provided, network for output scripts converted to addresses
|
||||||
|
* @param indent characters that will be prepended to each line of the output
|
||||||
|
*/
|
||||||
|
public String toString(@Nullable AbstractBlockChain chain, @Nullable Network network, CharSequence indent) {
|
||||||
|
Objects.requireNonNull(indent);
|
||||||
StringBuilder s = new StringBuilder();
|
StringBuilder s = new StringBuilder();
|
||||||
Sha256Hash txId = getTxId(), wTxId = getWTxId();
|
Sha256Hash txId = getTxId(), wTxId = getWTxId();
|
||||||
s.append(indent).append(txId);
|
s.append(indent).append(txId);
|
||||||
@ -845,10 +857,13 @@ public class Transaction extends Message {
|
|||||||
if (connectedOutput != null) {
|
if (connectedOutput != null) {
|
||||||
Script scriptPubKey = connectedOutput.getScriptPubKey();
|
Script scriptPubKey = connectedOutput.getScriptPubKey();
|
||||||
ScriptType scriptType = scriptPubKey.getScriptType();
|
ScriptType scriptType = scriptPubKey.getScriptType();
|
||||||
if (scriptType != null)
|
if (scriptType != null) {
|
||||||
s.append(scriptType).append(" addr:").append(scriptPubKey.getToAddress(params.network()));
|
s.append(scriptType);
|
||||||
else
|
if (network != null)
|
||||||
|
s.append(" addr:").append(scriptPubKey.getToAddress(network));
|
||||||
|
} else {
|
||||||
s.append("unknown script type");
|
s.append("unknown script type");
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
s.append("unconnected");
|
s.append("unconnected");
|
||||||
}
|
}
|
||||||
@ -881,10 +896,13 @@ public class Transaction extends Message {
|
|||||||
s.append('\n');
|
s.append('\n');
|
||||||
s.append(indent).append(" ");
|
s.append(indent).append(" ");
|
||||||
ScriptType scriptType = scriptPubKey.getScriptType();
|
ScriptType scriptType = scriptPubKey.getScriptType();
|
||||||
if (scriptType != null)
|
if (scriptType != null) {
|
||||||
s.append(scriptType).append(" addr:").append(scriptPubKey.getToAddress(params.network()));
|
s.append(scriptType);
|
||||||
else
|
if (network != null)
|
||||||
|
s.append(" addr:").append(scriptPubKey.getToAddress(network));
|
||||||
|
} else {
|
||||||
s.append("unknown script type");
|
s.append("unknown script type");
|
||||||
|
}
|
||||||
if (!out.isAvailableForSpending()) {
|
if (!out.isAvailableForSpending()) {
|
||||||
s.append(" spent");
|
s.append(" spent");
|
||||||
final TransactionInput spentBy = out.getSpentBy();
|
final TransactionInput spentBy = out.getSpentBy();
|
||||||
|
@ -3607,7 +3607,7 @@ public class Wallet extends BaseTaggableObject
|
|||||||
}
|
}
|
||||||
if (tx.hasConfidence())
|
if (tx.hasConfidence())
|
||||||
builder.append(" confidence: ").append(tx.getConfidence()).append('\n');
|
builder.append(" confidence: ").append(tx.getConfidence()).append('\n');
|
||||||
builder.append(tx.toString(chain, " "));
|
builder.append(tx.toString(chain, network(), " "));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -462,6 +462,13 @@ public class TransactionTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testToString() {
|
||||||
|
int lengthWithAddresses = tx.toString(null, BitcoinNetwork.TESTNET).length();
|
||||||
|
int lengthWithoutAddresses = tx.toString(null, null).length();
|
||||||
|
assertTrue(lengthWithAddresses > lengthWithoutAddresses);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testToStringWhenLockTimeIsSpecifiedInBlockHeight() {
|
public void testToStringWhenLockTimeIsSpecifiedInBlockHeight() {
|
||||||
Transaction tx = FakeTxBuilder.createFakeTx(TESTNET);
|
Transaction tx = FakeTxBuilder.createFakeTx(TESTNET);
|
||||||
@ -480,7 +487,7 @@ public class TransactionTest {
|
|||||||
|
|
||||||
replay(mockBlockChain);
|
replay(mockBlockChain);
|
||||||
|
|
||||||
String str = tx.toString(mockBlockChain, null);
|
String str = tx.toString(mockBlockChain, BitcoinNetwork.TESTNET);
|
||||||
|
|
||||||
assertEquals(str.contains("block " + TEST_LOCK_TIME), true);
|
assertEquals(str.contains("block " + TEST_LOCK_TIME), true);
|
||||||
assertEquals(str.contains("estimated to be reached at"), true);
|
assertEquals(str.contains("estimated to be reached at"), true);
|
||||||
|
Loading…
Reference in New Issue
Block a user