How to signrawtransaction for p2sh address. #19767

issue haorenlin opened this issue on August 20, 2020
  1. haorenlin commented at 9:37 AM on August 20, 2020: none

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

  2. haorenlin added the label Bug on Aug 20, 2020
  3. haorenlin renamed this:
    P2SH raw transaction
    How to signrawtransaction for p2sh address.
    on Aug 20, 2020
  4. MarcoFalke commented at 3:54 PM on August 20, 2020: member

    Usually the issue tracker is used to track technical issues related to the Bitcoin Core code base. Keep in mind that general bitcoin questions and/or support requests are best directed to the Bitcoin StackExchange or the #bitcoin IRC channel on freenode.

  5. MarcoFalke closed this on Aug 20, 2020

  6. haorenlin commented at 5:02 PM on August 20, 2020: none

    ok thinks

  7. fanquake locked this on Aug 21, 2020
Labels

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-05-03 15:14 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me