Не удается подписать транзакцию и отправить ее с помощью BlockCypher
Здравствуйте, я пытаюсь создать и отправить транзакцию, используя Blockcypher
Судя по всему, их документация действительно актуальна.
Чего я пытаюсь добиться здесь, так это.
Создать 2 адреса (успех)
Добавьте satechis, используя faucet к первому (успех)
Перенос сатечиса с первого на второй (полный провал)
Вот функция, с которой я пытаюсь добиться передачи.
async transaction(from, to, amount) {
const newTransaction = {
inputs: [ { addresses: [ from.address ] } ]
outputs: [ { addresses: [ to.address ], value: amount } ]
};
const { data: newTx } = await post(`${ this.url }/txs/new`, newTransaction, { query: { token: this.token } });
if(checkError(newTx)) {
return false;
}
// This is where things split from official documentation
// Official docs say but this throws not-a-constructor error
// new bitcoin.ECPair(bigi.fromHex(my_hex_private_key));
const keys = new bitcoin.ECPair.fromPrivateKey(Buffer.from(from.private, 'hex'));
newTx.pubkeys = [];
newTx.signatures = newTx.tosign.map((tosign) => {
newTx.pubkeys.push(keys.publicKey.toString('hex'));
// here is the point of failure
// error says toDER is not a function.
return keys.sign(new Buffer(tosign, 'hex')).toDER().toString('hex');
});
// If I remove .toDER() call this will fail with 400 error indicating that transaction is not signed properly
await post(`${ this.url }/txs/send`, newTx, { query: { token: this.token } });
return true;
}
Итак, как мне добиться этой транзакции?