Contract-Deployment
在 blockapps 中哪裡可以找到我的合約的私鑰?
我正在嘗試使用 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)
欄位加密,然後用鹽欄位加鹽。您需要先解密私鑰,然後才能使用它。;)