¿Dónde encontrar la clave privada de mi contrato en blockapps?

Estoy tratando de usar blockapps-js para invocar funciones en mi contrato inteligente implementado en blockapps. Como necesito la clave privada para ello, estoy mirando el archivo app/users/admin/.json. El problema es que no puedo averiguar cuál de estos campos usar. ¿Es encPrivKeys.key? Mi código aún no funciona y estoy tratando de averiguar si esa es la causa.

{
  "encSeed": {
    "encStr": "...",
    "iv": "...",
    "salt": "..."
  },
  "encHdRootPriv": {
    "encStr": "...",
    "iv": "",
    "salt": ""
  },
  "hdIndex": 1,
  "encPrivKeys": {
    "": {
    "key": "...",
    "iv": "",
    "salt": ""
  }
},
  "addresses": ["..."],
  "keyHash": "...",
  "salt": {
    "words": [, -,,],
    "sigBytes": 16
  }
} 

Respuestas (2)

No estoy familiarizado con blockapps, pero encprivkey será su clave privada cifrada. La clave está cifrada por el iv (hash)campo y luego salada con el campo de sal.

Deberá descifrar la clave privada antes de poder usarla. ;)

OK, no estoy seguro si es la mejor manera de hacerlo, pero finalmente lo hice posible.

Aquí es cómo:

npm install eth-lightwallet
node
>var lightwallet = require("eth-lightwallet")
>var upgrade = require("eth-lightwallet/lib/upgrade")
>var jsonStr='contents of ./app/users/admin/*.json file'
>var newJSON
>upgrade.upgradeOldSerialized(jsonStr, , function(err, tmpJSON) {newJSON=tmpJSON;console.log(newJSON);});
>keystore = lightwallet.keystore.deserialize(newJSON);
>var derivedKey;
>lightwallet.keystore.deriveKeyFromPassword('', function (err, pwDerivedKey) {derivedKey = pwDerivedKey;});
>var addresses = keystore.getAddresses();
>keystore.exportPrivateKey(addresses[0], derivedKey);

Utilicé los consejos de esta publicación , sin embargo, los sdk-s han cambiado desde entonces.

Si esta es la respuesta correcta, no dude en marcarla como correcta.
En la versión que instalé hoy, la función deriveKeyFromPassword no existe, y sí derivaKeyFromPasswordAndSalt. Sin embargo, el argumento de la sal es opcional.