使用Node-RED离线签署以太坊交易

时间:2018-11-19 15:15:38

标签: ethereum node-red web3js

我正在尝试在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;

0 个答案:

没有答案