Не удается подписать транзакцию и отправить ее с помощью 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;
}

Итак, как мне добиться этой транзакции?

0 ответов

Другие вопросы по тегам