我正在尝试在Node-RED中创建一个流程以脱机签名Etherem事务(在这种情况下,主要是消息),并且很麻烦。
我有一个运行良好的Python代码(意味着可以很好地完成此脱机签名)并通过API进行发布,但是Node-RED不愿意执行我想要的操作(它返回的签名与我获得的签名不同) Web3.py,因此EVM还原了交易。)
有人可以帮忙吗?我尝试了几种方法,包括注释掉的方法,但是没有一种方法可以匹配在Python代码中生成的签名...
PS-Python代码使用signed_hash = self.web3.eth.account.signHash(hash, self._fetch_signer_key())
谢谢!
var Web3 = global.get('web3');
var web3 = new Web3();
var account = "0x9EfEe29e8fDf2cXXXXXXXde5502ABDf3f13ADac9a";
var privateKey = "0xbde16f62dadb43dad898e182e4e798baXXXXae46458d4939361d2494e11ce9e4";
var password = "12XXX8";
var message = "SMX1 10 1527596375";
var _hash = web3.utils.sha3(message);
//var signedObject = web3.eth.accounts.sign(_hash, privateKey);
var signedObject = web3.eth.accounts.sign(message, account);
//var signedObject = web3.eth.personal.sign(message, account, password);
//const signature = web3.eth.sign(message,account);
var msg = {};
msg.payload = {
//"message": message,
"message": signedObject.message,
"hash": _hash,
//"hash": signedObject.messageHash,
"signature": web3.utils.toHex(signedObject.signature),
//"signature": web3.eth.personal.sign(message, account, password),
"identity": identity,
};
/*
//msg.payload = signedObject.message;
msg.payload.message = signedObject.message;
msg.payload.hash = signedObject.messageHash;
msg.payload.signature = signedObject.signature;
msg.payload.identity = identity;
*/
//return signedObject.messageHash;
//return msg;
return signedObject;