Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js sendSignedTransaction:仲裁上的发件人错误无效_Node.js_Ethereum_Web3_Quorum - Fatal编程技术网

Node.js sendSignedTransaction:仲裁上的发件人错误无效

Node.js sendSignedTransaction:仲裁上的发件人错误无效,node.js,ethereum,web3,quorum,Node.js,Ethereum,Web3,Quorum,我正在尝试使用一个帐户调用节点应用程序上的智能合约上的方法,该帐户是我使用私有仲裁区块链上的web3从私钥创建的。我正在使用下面的代码,但我不断收到错误“错误:返回的错误:无效发件人”。代码如下: const Web3 = require("web3") const web3 = new Web3(RPC_NODE); var contract = new web3.eth.Contract(CONTRACT_ABI, CONTRACT_ADRESS); var myMet

我正在尝试使用一个帐户调用节点应用程序上的智能合约上的方法,该帐户是我使用私有仲裁区块链上的web3从私钥创建的。我正在使用下面的代码,但我不断收到错误“错误:返回的错误:无效发件人”。代码如下:

const Web3 = require("web3")
const web3 = new Web3(RPC_NODE);

var contract = new web3.eth.Contract(CONTRACT_ABI, CONTRACT_ADRESS);
var myMethod = contract.methods.myMethod(param1, param2);
var encodedABI = myMethod.encodeABI()

const account = web3.eth.accounts.privateKeyToAccount(PRIVATE_KEY);

var tx = {
  from: account.address,
  to: CONTRACT_ADRESS,
  gas: 2000000,
  data: encodedABI
};

console.log("Account Address:", account.address);

account.signTransaction(tx).then(signed => {
  var tran = web3.eth.sendSignedTransaction(signed.rawTransaction);
  console.log("Raw Signed Transaction:", signed.rawTransaction);
});
这个错误是有道理的,因为如果我看一下日志,我得到的是:

账户地址:0xBd55e32CB2559b06511D03E9B37a1c3bfF0f35Cd

原始签名交易:'0xF901050480831E84809473341607498EB0648DB01ED55C378C3EA227BF6980B8A47D8FEBAB000000000000000000000000000000000000000000000000000000000000000000000000000000000401E4008F33FA1479A536072F9B06E978689C47527593B9A29853853E2C708AB75293000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000401E4008F33D3639363936363636363636363636363535353535352D3393863636383862000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078A0700C0B30A6A58016A9621033FE71974EB0CC8721841353B7AA5E42F96D122A7AA023FA6BF21C3C83DE1C03674EDF90C5BF9AD55165AC10A4396518CDDE65E438'

如果我解码原始签名交易,我会看到:

{
  "nonce": 4,
  "gasPrice": null,
  "gasLimit": 2000000,
  "to": "0x73341607498eb0648db01ed55c378c3ea227bf69",
  "value": 0,
  "data": "7d8febab00000000000000000000000000000000000000000000000000000000000000401e4008f33fa1479a536072f9b06e978689c47527593b9a29853e2c708ab75293000000000000000000000000000000000000000000000000000000000000002463343866323863322d353932622d343930622d616663322d62323262366164303035653900000000000000000000000000000000000000000000000000000000",
  "from": "0xbd55e32cb2559b06511d03e9b37a1c3bff0f35cd",
  "r": "d423912021ff81d53c63da08374f9543df1fca3b1d76f085148310d51afb64f1",
  "v": "77",
  "s": "0a212017b256986ca24f151bd920817ae106624b54c04ea702ffd03ab288205c"
}

如您所见,已签名原始事务的“发件人”字段与我使用私钥创建的帐户的地址不匹配。有人能解释一下这种行为吗?

上次我遇到类似的问题时,我很难理解私钥的格式

根据您使用的web3版本,此格式可能会影响通过
privateKeyToAccount
创建的帐户


我猜您缺少
0x
前缀。请确保您的
私钥
前面有一个
“0x”
,然后再试一次。

我通过向tx对象添加正确的
链ID解决了这个问题