Al hacer algunas pruebas ERC-735 en trufa+ganache, me quedé atascado al crear firmas de reclamo. Deben estar firmados desde mi cuenta de ganache, pero no conozco su clave privada. El código a utilizar es este:
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);
Como se explicó en Firmar datos con clave privada dentro de un archivo de prueba de truffle, había un método para firmar mensajes de Truffle usando:
let signedMessage = await web3.personal.sign("data", accounts[0])
pero ahora está en desuso, arroja el error "Método personal_sign no compatible", por lo que una solución parece ser una firma explícita usando una clave privada (código anterior).
¿Cómo puedo obtener la clave privada de ganache? o mejor aún, ¿puedo obtener la clave privada de truffle?
Puede comenzar ganache
con un mnemotécnico como parámetro ( -m 'jar boss sister abuse equal ....'
). Al hacer esto, usted:
ser capaz de derivar las claves privadas de ese mnemotécnico
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 maestro del tiempo
js
realmente no va a suceder, solo busque el nuevo método de firma de web3 si está obsoleto.Nulik