Подписывать транзакции Ethereum в автономном режиме с помощью Node-RED - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь создать поток в 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;
...