首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bitcoinjs lib节点js原始事务

bitcoinjs lib节点js原始事务
EN

Stack Overflow用户
提问于 2020-11-11 01:56:57
回答 1查看 656关注 0票数 1

代码语言:javascript
复制
var bitcoin = require('bitcoinjs-lib');
var rp = require('request-promise');

var data = Buffer.from('Hello World', 'utf8');
var testnet = bitcoin.networks.testnet;
var privateKey = 'p2pkh';
var SourceAddress = "myaddress";

var url = "https://chain.so/api/v2/get_tx_unspent/BTCTEST/"+SourceAddress;
var DestionationAddress = '2MsHsi4CHXsaNZSq5krnrpP4WShNgtuRa9U';
var options = 
{
    uri: url,
    json: true
};

rp(options).then(function (response) {
    var index = response.data.txs.length - 1;
    console.log(response.data.txs[index]);
    var UtxoId = response.data.txs[index].txid;
    var vout = response.data.txs[index].output_no;
    var amount = Number(response.data.txs[index].value*100000000);
    var fee = 0.0005*100000000;
}).catch(function (err) { console.error(err);});

const RawTransaction = new bitcoin.TransactionBuilder(testnet);
RawTransaction.addInput(UtxoId, vout);
RawTransaction.addOutput(DestionationAddress, parseInt(amount-fee));
scrypt = bitcoin.script.compile([bitcoin.opcodes.OP_RETURN,data]);
RawTransaction.addOutput(scrypt, 0);

var keyPair = bitcoin.ECPair.fromWIF(privateKeyWIF, testnet);
tx.sign(0, keyPair);

const p2wpkh = bitcoin.payments.p2wpkh({ 
    pubkey: keyPair.publicKey, 
    network: bitcoin.networks.testnet 
});
const p2sh = bitcoin.payments.p2sh({ 
    redeem: p2wpkh, 
    network: bitcoin.networks.testnet
});
RawTransaction.sign(0, keyPair, p2sh.redeem.output, null, parseInt(amount));

var Transaction=RawTransaction.build().toHex();
var Sendingoptions = { method: 'POST', url: 'https://chain.so/api/v2/send_tx/BTCTEST',
body: {tx_hex: Transaction}, json: true};

rp(Sendingoptions).then(function (response) {
    var Jresponse = JSON.stringify(response);
    console.log("Transaction ID:\n"+Jresponse);

}).catch(function (err) { console.error(err); });

我试图创建一个原始事务,但不知道为什么它会显示UtoxId未定义的错误。

代码语言:javascript
复制
RawTransaction.addInput(UtxoId, vout);
                        ^

ReferenceError: UtxoId is not defined
    at Object.<anonymous> (/home/ubuntu/Documents/blockchain/hello.js:27:25)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)

我认为这可能包含更多的错误,因为它停止在UtoxId。但是我想知道如何解决这个问题,并给出事务id、脚本十六进制、值、时间等输出。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-26 09:13:16

变量UtxoId是request-promise块的一部分。

尝试:

代码语言:javascript
复制
let UtxoId
rp(options).then(function (response) {
    var index = response.data.txs.length - 1;
    console.log(response.data.txs[index]);
    UtxoId = response.data.txs[index].txid;
    var vout = response.data.txs[index].output_no;
    var amount = Number(response.data.txs[index].value*100000000);
    var fee = 0.0005*100000000;
}).catch(function (err) { console.error(err);});

const RawTransaction = new bitcoin.TransactionBuilder(testnet);
RawTransaction.addInput(UtxoId, vout);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64774241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档