在bitconj中对Segwit事务的输入进行签名的文件

我想从一个segwit地址花费,它有一个P2WPH脚本,我创建了这个事务就像创建一个普通的P2PKH事务一样,但是只是把输入的地址改成了segwit地址,我不知道这是否正确,并用下面的方法签名这个事务,但是它说脚本没有被成功验证。。。
事务signedtx=signInput(rawtx.getHashAsString(),privkey,rawtx);
公共静态事务signInput(字符串哈希、字符串prvKey、事务spendTx){
ECKey ECKey=ECKey.fromPrivate(Utils.HEX.decode(prvKey));
ECKey.ECDSASignature signature=ECKey.sign(Sha256Hash.wrap(hash));
TransactionSignature TransactionSignature=新事务签名(signature,Transaction.SigHash.ALL,true);
TransactionWitness=TransactionWitness.wpkh(transactionSignature,ecKey);
TransactionInput=spendTx.getInput(0);
input.setWitness(见证);
返回spendTx;
}
我对bitcoinj不是很熟悉,目前关于segwit的技术指导也很少,希望有人能帮我
隔离证人
比特币
java
分享
改进这个问题
跟随
3月27日9点56分问
哎呀
3122青铜徽章
添加评论
1个答案
0
一般来说,应该是这样的:
//输入要签名的索引
int指数=0;
//要签名的金额(必须等于实际输入值)
Coin value=Coin.valueOf(123456);
TransactionSignature signature=tx.calculateWitnessSignature(
索引,
PRV键,
脚本生成器()
.data(ScriptBuilder.createP2PKHOutputScript(prvKey).program)
.build(),
硬币,
事务处理.sigash.ALL,

);
tx.getInput(index).setScriptSig(ScriptBuilder.createEmpty());
tx.getInput(索引).setWitness(
TransactionWitness.wpkh(签名,prvKey)
);
分享
改进这个答案
跟随

时光素材-香车美女  (257)blockchainBTC比特币区块链www.qkl91.com

发表评论

邮箱地址不会被公开。 必填项已用*标注