const transactionHeaderBytes = protobuf.TransactionHeader.encode({
familyName: req.query.family || 'intkey', //can these be arrays? this could be a goverenace limitation
familyVersion: req.query.version || '1.0',
signerPublicKey: signer.getPublicKey().asHex(),//public keys for signers
batcherPublicKey: signer.getPublicKey().asHex(),//'signer' is batch processor key
payloadSha512: createHash('sha512').update(payloadBytes).digest('hex')
const signature = signer.sign(transactionHeaderBytes)//sign header bytes
const transaction = protobuf.Transaction.create({
header: transactionHeaderBytes,
headerSignature: signature,
const transactions = [transaction] //can include multiple in batch
const batchHeaderBytes = protobuf.BatchHeader.encode({
signerPublicKey: signer.getPublicKey().asHex(),
transactionIds: transactions.map((txn) => txn.headerSignature),
const bsignature = signer.sign(batchHeaderBytes)
const batch = protobuf.Batch.create({
header: batchHeaderBytes,
headerSignature: bsignature,
transactions: transactions
const batchListBytes = protobuf.BatchList.encode({