3
0
mirror of https://github.com/Qortal/altcoinj.git synced 2025-02-12 18:25:51 +00:00

Remove the concept of 'from address'.

Segwit is another nail on the coffin, because for each pubkey there is now also a segwit address.
A number of wallets will not recognize returned payments if sent to the wrong address type.
This commit is contained in:
Andreas Schildbach 2018-02-23 19:00:16 +01:00
parent dedeb01dac
commit 55f2a60fb6
3 changed files with 2 additions and 29 deletions

View File

@ -18,7 +18,6 @@
package org.bitcoinj.core; package org.bitcoinj.core;
import org.bitcoinj.script.Script; import org.bitcoinj.script.Script;
import org.bitcoinj.script.ScriptError;
import org.bitcoinj.script.ScriptException; import org.bitcoinj.script.ScriptException;
import org.bitcoinj.wallet.DefaultRiskAnalysis; import org.bitcoinj.wallet.DefaultRiskAnalysis;
import org.bitcoinj.wallet.KeyBag; import org.bitcoinj.wallet.KeyBag;
@ -194,21 +193,6 @@ public class TransactionInput extends ChildMessage {
setScriptBytes(scriptSig.getProgram()); setScriptBytes(scriptSig.getProgram());
} }
/**
* Convenience method that returns the from address of this input by parsing the scriptSig. The concept of a
* "from address" is not well defined in Bitcoin and you should not assume that senders of a transaction can
* actually receive coins on the same address they used to sign (e.g. this is not true for shared wallets).
*/
@Deprecated
public Address getFromAddress() throws ScriptException {
if (isCoinBase()) {
throw new ScriptException(
ScriptError.SCRIPT_ERR_UNKNOWN_ERROR,
"This is a coinbase transaction which generates new coins. It does not have a from address.");
}
return getScriptSig().getFromAddress(params);
}
/** /**
* Sequence numbers allow participants in a multi-party transaction signing protocol to create new versions of the * Sequence numbers allow participants in a multi-party transaction signing protocol to create new versions of the
* transaction independently of each other. Newer versions of a transaction can replace an existing version that's * transaction independently of each other. Newer versions of a transaction can replace an existing version that's

View File

@ -315,16 +315,6 @@ public class Script {
return castToBigInteger(chunks.get(4).data, 5, false); return castToBigInteger(chunks.get(4).data, 5, false);
} }
/**
* For 2-element [input] scripts assumes that the paid-to-address can be derived from the public key.
* The concept of a "from address" isn't well defined in Bitcoin and you should not assume the sender of a
* transaction can actually receive coins on it. This method may be removed in future.
*/
@Deprecated
public Address getFromAddress(NetworkParameters params) throws ScriptException {
return new Address(params, Utils.sha256hash160(getPubKey()));
}
/** /**
* Gets the destination address from this script, if it's in the required form (see getPubKey). * Gets the destination address from this script, if it's in the required form (see getPubKey).
*/ */

View File

@ -460,8 +460,6 @@ public class WalletTest extends TestWithWallet {
} }
@Test @Test
@SuppressWarnings("deprecation")
// Having a test for deprecated method getFromAddress() is no evil so we suppress the warning here.
public void customTransactionSpending() throws Exception { public void customTransactionSpending() throws Exception {
// We'll set up a wallet that receives a coin, then sends a coin of lesser value and keeps the change. // We'll set up a wallet that receives a coin, then sends a coin of lesser value and keeps the change.
Coin v1 = valueOf(3, 0); Coin v1 = valueOf(3, 0);
@ -483,7 +481,8 @@ public class WalletTest extends TestWithWallet {
// Do some basic sanity checks. // Do some basic sanity checks.
assertEquals(1, t2.getInputs().size()); assertEquals(1, t2.getInputs().size());
assertEquals(myAddress, t2.getInput(0).getScriptSig().getFromAddress(PARAMS)); // check 'from address' -- in a unit test this is fine
assertEquals(myAddress, new Address(PARAMS, Utils.sha256hash160(t2.getInput(0).getScriptSig().getPubKey())));
assertEquals(TransactionConfidence.ConfidenceType.UNKNOWN, t2.getConfidence().getConfidenceType()); assertEquals(TransactionConfidence.ConfidenceType.UNKNOWN, t2.getConfidence().getConfidenceType());
// We have NOT proven that the signature is correct! // We have NOT proven that the signature is correct!