Files
xo-stack/examples/node/txBuilderTest.js

73 lines
1.7 KiB
JavaScript

import { Transaction } from '@xo/primitives';
import { BlockchainLocal, WalletP2PKH } from '@xo/wallet';
const blockchainLocal = new BlockchainLocal();
await blockchainLocal.start();
const services = {
blockchain: blockchainLocal,
};
const walletP2PKH = WalletP2PKH.generateRandom(services);
const walletP2PKHReceive = WalletP2PKH.generateRandom(services);
const coinbaseTransaction = new Transaction({
version: 2,
locktime: 0,
inputs: [
{
outpointIndex: 0,
outpointTransactionHash: new Uint8Array(),
unlockingBytecode: new Uint8Array(),
sequenceNumber: 0,
},
],
outputs: [
{
lockingBytecode: (
await walletP2PKH.getReceivingAddress()
).toLockscriptBytes(),
valueSatoshis: 100_000n,
},
{
lockingBytecode: (
await walletP2PKH.getReceivingAddress()
).toLockscriptBytes(),
valueSatoshis: 150_000n,
},
],
});
await blockchainLocal.broadcastTransaction(coinbaseTransaction, {
skipValidation: true,
});
console.log('walletP2PKH unspents', await walletP2PKH.fetchUnspentDirectives());
console.log(
'walletP2PKHReceive unspents',
await walletP2PKHReceive.fetchUnspentDirectives(),
);
const sendTx = await walletP2PKH.send({
outputs: [
{
lockingBytecode: (
await walletP2PKHReceive.getReceivingAddress()
).toLockscriptBytes(),
valueSatoshis: 150_000n,
},
],
});
console.log(sendTx);
// await blockchainLocal.broadcastTransaction(new Transaction(sendTx));
console.log('walletP2PKH unspents', await walletP2PKH.fetchUnspentDirectives());
console.log(
'walletP2PKHReceive unspents',
await walletP2PKHReceive.fetchUnspentDirectives(),
);
console.log(blockchainLocal.deriveUtxoSet());