求助!!! help!!!
P2SH地址如何进行离线交易。How to signrawtransaction for p2sh address;
- org.bitcoinj.core.Transaction
public TransactionInput addSignedInput(TransactionOutPoint prevOut, Script scriptPubKey, ECKey sigKey, Transaction.SigHash sigHash, boolean anyoneCanPay) throws ScriptException {
Preconditions.checkState(!this.outputs.isEmpty(), "Attempting to sign tx without outputs.");
TransactionInput input = new TransactionInput(this.params, this, new byte[0], prevOut);
this.addInput(input);
int inputIndex = this.inputs.size() - 1;
TransactionSignature signature;
if (ScriptPattern.isP2PK(scriptPubKey)) {
signature = this.calculateSignature(inputIndex, sigKey, scriptPubKey, sigHash, anyoneCanPay);
input.setScriptSig(ScriptBuilder.createInputScript(signature));
input.setWitness((TransactionWitness)null);
} else if (ScriptPattern.isP2PKH(scriptPubKey)) {
signature = this.calculateSignature(inputIndex, sigKey, scriptPubKey, sigHash, anyoneCanPay);
input.setScriptSig(ScriptBuilder.createInputScript(signature, sigKey));
input.setWitness((TransactionWitness)null);
} else {
if (!ScriptPattern.isP2WPKH(scriptPubKey)) {
throw new ScriptException(ScriptError.SCRIPT_ERR_UNKNOWN_ERROR, "Don't know how to sign for this kind of scriptPubKey: " + scriptPubKey);
}
Script scriptCode = ScriptBuilder.createP2PKHOutputScript(sigKey);
TransactionSignature signature = this.calculateWitnessSignature(inputIndex, sigKey, scriptCode, input.getValue(), sigHash, anyoneCanPay);
input.setScriptSig(ScriptBuilder.createEmpty());
input.setWitness(TransactionWitness.redeemP2WPKH(signature, sigKey));
}
return input;
}
没有看到p2sh地址处理的代码。针对该类型地址,如何进行签名。