Error de argumento no válido al transmitir una transacción con Bitcore

Cuando intento transmitir una transacción, tengo este error:

/home/aziz/node_modules/bitcore-explorers/node_modules/bitcore-lib/lib/util/preconditions.js:14       
throw new errors.InvalidArgument(argumentName, message, docsPath);       
^ 
Invalid Argument Error
at NodeError (/home/aziz/node_modules/bitcore-explorers/node_modules/bitcore-lib/lib/errors/index.js:20:41)
at Object.checkArgument (/home/aziz/node_modules/bitcore-explorers/node_modules/bitcore-lib/lib/util/preconditions.js:14:13)
at Insight.broadcast (/home/aziz/node_modules/bitcore-explorers/lib/insight.js:96:5)
at /home/aziz/node_modules/megachain-bitcoin.js:39:12
at Request._callback (/home/aziz/node_modules/bitcore-explorers/lib/insight.js:80:12)
at Request.self.callback (/home/aziz/node_modules/bitcore-explorers/node_modules/request/request.js:188:22)
at emitTwo (events.js:106:13)
at Request.emit (events.js:194:7)
at Request.<anonymous> (/home/aziz/node_modules/bitcore-explorers/node_modules/request/request.js:1171:10)
at emitOne (events.js:96:13)
at Request.emit (events.js:191:7)
at IncomingMessage.<anonymous> (/home/aziz/node_modules/bitcore-explorers/node_modules/request/request.js:1091:12)
at Object.onceWrapper (events.js:293:19)
at emitNone (events.js:91:20)
at IncomingMessage.emit (events.js:188:7)
at endReadableNT (_stream_readable.js:975:12)
at _combinedTickCallback (internal/process/next_tick.js:80:11)
at process._tickCallback (internal/process/next_tick.js:104:9)

Y este es mi código:

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

    var sendBTC = function (SenderPrivateKey, SenderAddress, ReceiverAddress, Amount) //adresses in string format
    { 
        SenderPrivateKey = new bitcore.PrivateKey(SenderPrivateKey,'testnet');
        ReceiverAddress = new bitcore.Address(ReceiverAddress,'testnet');
        SenderAddress = SenderPrivateKey.toAddress();
        console.log(SenderPrivateKey);
        console.log(SenderAddress);
        console.log(ReceiverAddress);

        insight.getUnspentUtxos(SenderAddress, function(err, utxos) {
            if (err) {
                console.log(err);
            } else {
                var tx = bitcore.Transaction();
                tx.from(utxos);
                tx.to(ReceiverAddress, 500000);
                tx.change(SenderAddress);
                tx.sign(SenderPrivateKey);
                tx.serialize();

                insight.broadcast(tx, function(err, txId) {
                    if (err) {
                        console.log('Error!:'+err);
                    } else {
                        console.log('Successfully sent: '+txId);
                    }
                });

            }
        });
    }

¿Alguien me puede ayudar? ¡gracias!

elimine insight.getUnspentUtxos y verifique si obtiene un registro para su console.log (SenderPrivateKey);
@Everblack lo solucionaste?
@Everblack: Si tiene alguna solución, hágamelo saber, porque también estoy enfrentando el mismo problema, pero en mi caso, si estoy enviando btc a la dirección generada por bitcore, entonces funciona, si estoy enviando otra dirección de red de prueba, entonces dará error de serialización

Respuestas (1)

Crea la transacción usando el constructor:

var transaction = new Transaction();

o pase la transacción serializada al método de transmisión:

insight.broadcast(tx.serialize(), ......
La segunda sugerencia funcionó para mí. Gracias.