Bei einigen ERC-735-Tests mit Trüffel+Ganache blieb ich beim Erstellen von Claim-Signaturen hängen. Sie müssen von meinem Ganache-Konto signiert werden, aber ich kenne ihren privaten Schlüssel nicht. Der zu verwendende Code ist dieser:
const messageToSign = "hello world";
const privateKey = "43f2ee33c522046e80b67e96ceb84a05b60b9434b0ee2e3ae4b1311b9f5dcc46";
var msgHash = EthUtil.hashPersonalMessage(new Buffer(messageToSign));
var sig = EthUtil.ecsign(msgHash, new Buffer(privateKey, 'hex'));
var signatureRPC = EthUtil.toRpcSig(sig.v, sig.r, sig.s)
console.log(signatureRPC);
Wie unter Daten mit privatem Schlüssel in einer Truffle-Testdatei signieren erklärt , gab es eine Methode zum Signieren von Nachrichten von Truffle mit:
let signedMessage = await web3.personal.sign("data", accounts[0])
aber es ist jetzt veraltet, es löst den Fehler „Method personal_sign not supported“ aus, sodass eine Lösung eine explizite Signatur mit privatem Schlüssel zu sein scheint (Code oben).
Wie bekomme ich den privaten Schlüssel von Ganache? oder noch besser, kann ich den privaten Schlüssel von Truffle bekommen?
Sie können ganache
mit einer Mnemonik als Parameter beginnen ( -m 'jar boss sister abuse equal ....'
). Dabei werden Sie:
in der Lage sein, die privaten Schlüssel von dieser Mnemonik abzuleiten
const bip39 = require('bip39');
const hdkey = require('ethereumjs-wallet/hdkey');
const wallet = require('ethereumjs-wallet');
const seed = bip39.mnemonicToSeed(mnemonic); // mnemonic is the string containing the words
const hdk = hdkey.fromMasterSeed(seed);
const addr_node = hdk.derivePath("m/44'/60'/0'/0/0"); //m/44'/60'/0'/0/0 is derivation path for the first account. m/44'/60'/0'/0/1 is the derivation path for the second account and so on
const addr = addr_node.getWallet().getAddressString(); //check that this is the same with the address that ganache list for the first account to make sure the derivation is correct
const private_key = addr_node.getWallet().getPrivateKey();
Kaki Meister der Zeit
js
wird also wirklich nicht passieren. Suchen Sie einfach nach der neuen Signaturmethode von web3, wenn diese veraltet ist.Nulik