Неверный статус при отправке транзакции на пилообразный гиперледжер - PullRequest
0 голосов
/ 23 марта 2020

Я использую "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()
...