Я использую "hyperledger / sawtooth-rest-api: 1.0" docker. Я попытался создать простую транзакцию и отправить ее, но когда я проверяю статус этой транзакции, он дает мне следующий ответ:
"message": "Невозможно десериализовать полезную нагрузку"
" status ":" INVALID "
Моя полезная нагрузка
const payload = {
Verb: 'set',
Name: 'Fqa',
Value: 31
}
, а заголовок моей транзакции
const transactionHeaderBytes = protobuf.TransactionHeader.encode({
familyName: 'supply_chain',
familyVersion: '1.1',
// inputs: ['3400de'],
// outputs: ['3400de'],
nonce: (Math.random() * 10 ** 18).toString(36),
signerPublicKey: signer.getPublicKey().asHex(),
batcherPublicKey: signer.getPublicKey().asHex(),
dependencies: [],
payloadSha512: createHash('sha512').update(payloadBytes).digest('hex')
}).finish()
Я пытался использовать тот же заголовок транзакции, не комментируя входные и выходные данные. Но оба раза я получал одну и ту же ошибку, говоря, что статус недействителен
Остальная часть моего кода приведена ниже
const signature = signer.sign(transactionHeaderBytes)
const transaction = protobuf.Transaction.create({
header: transactionHeaderBytes,
headerSignature: signature,
payload: payloadBytes
})
const transactions = [transaction]
const batchHeaderBytes = protobuf.BatchHeader.encode({
signerPublicKey: signer.getPublicKey().asHex(),
transactionIds: transactions.map((txn) => txn.headerSignature),
}).finish()
const signatureHeader = signer.sign(batchHeaderBytes)
const batch = protobuf.Batch.create({
header: batchHeaderBytes,
headerSignature: signatureHeader,
transactions: transactions
})
const batchListBytes = protobuf.BatchList.encode({
batches: [batch]
}).finish()