Почему появляется эта ошибка? TypeError: Object не является допустимым аргументом для instanceof (вычисляется по адресу instanceof - REACT-NATIVE - PullRequest
0 голосов
/ 29 октября 2018

Способ получения UTXO

getUtoxs(address){    var options;
 if(Global.btc.network === "testnet"){
     options = {
         url: testnet.apiBaseUrl + "/api/addr/" + address + "/utxo"
 };   }else{
    options = {
        url: livenet.apiBaseUrl + "/addr/" + address + "/utxo"
  };
} 
   return  fetch(options.url)
    .then((res) => res.json())
    .then((data) =>data)
    .catch((error) =>{
        console.error(error);
    });  
}

Способ отправки BTC

sendingBTC(utxos, tx) {
    try {
        var options;         

        var transaction = new bitcore.Transaction()
            .from(utxos)  //this line gets error
            .to(tx.to,tx.value*100000000)
            .change(tx.from)
            .sign(tx.password)
            .serialize();   
       /*.......................*/
    } catch (e) {
        console.error(e); 
    }
}

эти методы получают ошибку. Что не так в этих методах?

1 Ответ

0 голосов
/ 05 ноября 2018

Попробуйте использовать bitcore-insight, чтобы заставить getUtxos работать.

Предпочтительный способ сделать это - вернуть обещание в функции getUtxos (), которое вы затем можете использовать, предпочтительно используя async-await в функции sendBtc ().

Вот выдержка из кода, чтобы помочь вам.

var bitcore = require('node_modules/bitcore-explorers/node_modules/bitcore-lib');
var Insight = require("node_modules/bitcore-explorers").Insight;
var insight = new Insight("testnet");

function getUtxos(address){
    return new Promise((resolve, reject)=>{
        insight.getUnspentUtxos(address, (err, utxos)=>{
            if(err) reject(err)
            else{
                resolve(utxos);
            }
        })
    })
}

async function sendingBtc() {
    console.log(req.body)
    let utxos = await getUtxos(address);
    // Another function to derive your private key 
    let privateKey = await generatePrivKey 
    bitcore.Transaction()
        .from(utxos)
        .to(req.body.txSendAddress,amount*100000000 - 3000)
        .change(changeAddress)
        .sign(privateKey);
    insight.broadcast(tx, (err, returnedTxId)=>{
        if(!err) console.log(returnedTxId)
    })

Надеюсь, этот фрагмент кода поможет вам, помните, что вам также нужно получить свой закрытый ключ для подписания транзакции и установить адрес изменения (необязательно, но рекомендуется)!

...