Transaction format and fee rate
The current standard fee rate which applies to all transactions submitted to any of the TAAL transaction processing APIs is: 1 sat/kb
The minimum fee for any transaction is 1 sat.
The fee required is rounded depending on size of the transaction. The following list exemplifies the logic:
- Transactions with 1.4999... kb > size > 0.0 kb => min absolute fee required = 1 sat.
- Transactions with 2.4999... kb > size > 1.5 kb => min absolute fee required = 2 sat
- Transactions with 3.4999... kb > size > 2.5 kb => min absolute fee required = 3 sat
- ...
There is a number of libraries which allow to build BSV transactions. Here is a short list:
- 1.Create a new Node.js project:mkdir examplecd examplenpm init -ynpm install bsv@1npm install request
- 2.Save the following code to a main.js in your example folder:const fs = require('fs')const bsv = require('bsv')// Random key produced each time...const newKey = bsv.PrivateKey()console.log(`Private key: ${newKey.toString()}`)console.log(`Mainnet address: ${newKey.toAddress('mainnet').toString()}`)console.log(`1. Create a funding transaction by sending 1000 satoshis (0.00001 BSV) to ${newKey.toAddress('mainnet').toString()}.2. Add your Taal apiKey, and funding transaction txid and vout to 'generated.js'.3. Execute the generated code:node generated.js`)fs.writeFileSync('generated.js', `const bsv = require('bsv')var request = require('request')const privKey = bsv.PrivateKey('${newKey}')const apiKey = "" // Add Taal mainnet API Keyconst fundingTxid = "" // Add the funding transaction txidconst fundingVout = -1 // Replace with funding transaction voutconst returnAddress = "" // The address to return the 1000 satoshis (less fees)if (apiKey === "" || fundingTxid === "" || fundingVout === -1 || returnAddress === "") {console.log('This generated file needs an apiKey, a fundingTxid, a fundingVout and a returnAddress')process.exit(1)}const utxo1 = {txId: fundingTxid,outputIndex: fundingVout,address: privKey.toAddress('mainnet').toString(),script: bsv.Script.buildPublicKeyHashOut(privKey.publicKey).toHex(),satoshis: 1000}const tx1 = bsv.Transaction().from(utxo1).to(privKey.toAddress('mainnet').toString(), 800).change(returnAddress).sign(privKey)const utxo2 = {txId: tx1.hash,outputIndex: 0,address: privKey.toAddress('mainnet').toString(),script: bsv.Script.buildPublicKeyHashOut(privKey.publicKey).toHex(),satoshis: 800}const tx2 = bsv.Transaction().from(utxo2).change(returnAddress).sign(privKey)const txBuffer = Buffer.concat([tx1.toBuffer(),tx2.toBuffer()])// Send the transaction to Taal API...request.post({url: 'https://api.taal.com/api/v1/batchBroadcast',headers: {'Authorization': apiKey,'Content-Type': 'application/octet-stream'},body: txBuffer}, function(error, response, body) {console.log(error, response.statusCode, body)})`)
- 3.Execute the code and follow the onscreen instructions:node main.js
Last modified 3mo ago