Skip to content

How to signrawtransaction for p2sh address. #19767

@haorenlin

Description

@haorenlin

求助!!! 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地址处理的代码。针对该类型地址,如何进行签名。

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions