[英]Encode to hex string: argument must be a string node.js
I am trying to implement a simple transaction flow in hyper ledger sawtooth, for creating transaction it must through some steps 我正在尝试在超级账本锯齿中实现简单的交易流程,因此创建交易必须通过一些步骤
/*
* Create the transactions
*/
const createTransaction = function createTransaction(transactionHeaderBytes, payloadBytes) {
const signature = signer.sign(transactionHeaderBytes)
console.log(signature);
return transaction = protobuf.Transaction.create({
header: transactionHeaderBytes,
headerSignature:Buffer.from(signature, "hex"),
payload: payloadBytes
});
}
I need to encode headerSignature
to a hex string ,but i am getting the following error 我需要将
headerSignature
编码为十六进制字符串,但出现以下错误
Argument must be a string
But the console.log(signature);
但是
console.log(signature);
gives the following result a51d254f0c27f15abb016030eeb9e38b5ee06ee13d28d88ac5f5cc13a2520b42088090a1d1d19d321098996dc980b3f94cfc84ba0399a73ba7cd9ddc9b2a453d
提供以下结果
a51d254f0c27f15abb016030eeb9e38b5ee06ee13d28d88ac5f5cc13a2520b42088090a1d1d19d321098996dc980b3f94cfc84ba0399a73ba7cd9ddc9b2a453d
UPDATE UPDATE
Error log 错误日志
TypeError: Argument must be a string
at Op.writeStringBuffer [as fn] (/var/accubits-workspace/hypeerledger-sawtooth/tuts/node_modules/protobufjs/src/writer_buffer.js:61:13)
at BufferWriter.finish (/var/accubits-workspace/hypeerledger-sawtooth/tuts/node_modules/protobufjs/src/writer.js:449:14)
at Object.createBatchHeader (/var/accubits-workspace/hypeerledger-sawtooth/tuts/helpers/private-key.js:82:8)
at app.get (/var/accubits-workspace/hypeerledger-sawtooth/tuts/index.js:24:32)
at Layer.handle [as handle_request] (/var/accubits-workspace/hypeerledger-sawtooth/tuts/node_modules/express/lib/router/layer.js:95:5)
at next (/var/accubits-workspace/hypeerledger-sawtooth/tuts/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/var/accubits-workspace/hypeerledger-sawtooth/tuts/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/var/accubits-workspace/hypeerledger-sawtooth/tuts/node_modules/express/lib/router/layer.js:95:5)
at /var/accubits-workspace/hypeerledger-sawtooth/tuts/node_modules/express/lib/router/index.js:281:22
at Function.process_params (/var/accubits-workspace/hypeerledger-sawtooth/tuts/node_modules/express/lib/router/index.js:335:12)
The error is not in Buffer.from
but in protobuf.Transaction.create
错误不在
Buffer.from
而是在protobuf.Transaction.create
headerSignature
needs to be a string
, and you're passing a Buffer
headerSignature
需要为string
,并且您正在传递Buffer
According to the documentation it should be like this: 根据文档,它应该是这样的:
const signature = signer.sign(transactionHeaderBytes)
const transaction = protobuf.Transaction.create({
header: transactionHeaderBytes,
headerSignature: signature,
payload: payloadBytes
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.