发送P2SH脚本赎回资金时sendrawtransaction返回错误

时间:2019-08-06 20:33:45

标签: bitcoin cryptocurrency bitcoin-testnet

当我尝试发送交易时:

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;

import java.util.ArrayList;
import java.util.List;

public class LineChart2 extends View {

List<items> items = new ArrayList<>();
Paint paintThinBlackLine;
Paint paintThinGrayLines;
Paint paintText;
float padding = 50;
float padding_left = padding * 3;
float padding_text = padding_left/2;

public LineChart2(Context context, List<com.example.viewtest.items> items) {
    super(context);
    this.items = items;
    initPaints();
}

public LineChart2(Context context, AttributeSet attrs) {
    super(context, attrs);
    initPaints();
}

public LineChart2(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    initPaints();
}

public LineChart2(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
    super(context, attrs, defStyleAttr, defStyleRes);
    initPaints();
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    int width = MeasureSpec.getSize(widthMeasureSpec);
    int height = MeasureSpec.getSize(heightMeasureSpec);
    setMeasuredDimension(width,width/2);
}

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    // thin lines
    for(int i = 1; i < 7; i++){
        float paddingbetween = (getHeight()-padding-padding)/6;
        canvas.drawLine(padding_left,paddingbetween*i,getWidth()-padding,paddingbetween*i,paintThinGrayLines);
        Log.d("HALLO",""+items.size());
            //canvas.drawText(String.valueOf(items.get(i).value),padding_text,paddingbetween*i,paintText);

    }
}

public void initPaints(){
    paintThinBlackLine = new Paint();
    paintThinBlackLine.setColor(Color.parseColor("#6FB4B3B3"));
    paintThinBlackLine.setStyle(Paint.Style.STROKE);
    paintThinBlackLine.setStrokeCap(Paint.Cap.ROUND);
    paintThinBlackLine.setStrokeWidth(3);

    paintThinGrayLines = new Paint();
    paintThinGrayLines.setColor(Color.parseColor("#6FB4B3B3"));
    paintThinGrayLines.setStyle(Paint.Style.STROKE);
    paintThinGrayLines.setStrokeCap(Paint.Cap.ROUND);
    paintThinGrayLines.setStrokeWidth(2);

    paintText = new Paint();
    paintText.setTextSize(20);
    paintText.setColor(Color.parseColor("#FF696969"));
    paintText.setTextAlign(Paint.Align.CENTER);

}

我收到以下错误:

0200000001359a74bdcfa7aea6f9f4e4cca17bc870d46269c0f0a6eaa6b5247b8c24f10ba200000000fdfd0047304402203c12558ab599bcbf7dca30b470dd3dd80cca2168f53d8a031818423a612f08b402201c6734b0fa540cc3957be654e00c9c810d7efa01efb3910d99d70dcfafaeebf9014cb3762103a0a6cc874c5f5d0726db4cf2662b99cc67944bde42ea857ce66a3024d233f638ac6300675368210227291539143aa8fb680298371d696fb79b7ce3100ee0e9c8a166e89ce361c4392102eadb538360917f81e7213db80232243c8132a13abea6c2c88ee878cc6008f3f02102502c4c66c19d5b864b529d80798158a7b5d8e9990c8724d7c517e3ecc4ddc7482102d7ba62e857e15ff3110345d815555952148b3cd3c7e141cd446935776a4cba6d54aeffffffff02e8030000000000001976a914f7418c7b078c301f13f6b68ea510d6a1ff419e3388ac282300000000000017a91443f661d060dab7f8fae42434f4165ea24c491c548700000000

我正在用4个字节的SIGNHASH_ALL签名原始事务的hash_256摘要:

mandatory-script-verify-flag-failed (Signature must be zero for failed CHECK(MULTI)SIG operation) (code 16) (code -26)

为什么会这样?我的交易/签名过程中缺少什么?

1 个答案:

答案 0 :(得分:0)

对于P2SH来说,redeemScript十六进制进入要签名的交易数据的scriptSig。示例:

0200000001359a74bdcfa7aea6f9f4e4cca17bc870d46269c0f0a6eaa6b5247b8c24f10ba2<# of bytes in Redeemscript><RedeemScript>0000000000ffffffff02e8030000000000001976a914f7418c7b078c301f13f6b68ea510d6a1ff419e3388ac282300000000000017a91443f661d060dab7f8fae42434f4165ea24c491c54870000000001000000