Contract-Deployment

在 blockapps 中哪裡可以找到我的合約的私鑰?

  • April 17, 2016

我正在嘗試使用 blockapps-js 呼叫部署在 blockapps 中的智能合約上的函式。因為我需要它的私鑰,所以我正在查看 app/users/admin/.json 文件。問題是我無法弄清楚要使用哪些欄位。是 encPrivKeys.key 嗎?我的程式碼還沒有工作,我試圖弄清楚這是否是原因。

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

好的,不確定這是否是最好的方法,但我終於做到了。

方法如下:

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);

我使用了這篇文章的建議,但是,sdk-s 已經改變了。

我不熟悉塊應用程序,但 encprivkey 將成為您的加密私鑰。密鑰由iv (hash)欄位加密,然後用鹽欄位加鹽。

您需要先解密私鑰,然後才能使用它。;)

引用自:https://ethereum.stackexchange.com/questions/3094