1. listAccounts
方法返回密鑰庫中所有密鑰對應的以太坊賬戶地址。
personal.listAccounts
效果如下:
2. newAccount
方法生成一個新的私鑰並直接存入密鑰庫目錄。密鑰文件使用指定的密鑰 加密。newAccount
方法返回新賬號的以太坊地址。
personal.newAccount("123456")
效果如下:
3. lockAccount
方法從內存中移除指定地址對應的私鑰,該賬戶將不能 再發送交易。
personal.lockAccount(eth.accounts[1])
效果如下:
4. unlockAccount
方法對密碼庫中指定地址對應的密鑰進行解密。當使用Geth的JavaScript 控制檯時,密碼和解鎖時長都是可選的。如果未提供密碼,控制檯將提示交互輸密碼。解密的密鑰將保存在內存中直到解鎖週期超時。默認的解鎖週期爲300秒。顯示 地將解鎖週期設置爲0秒將解鎖該密鑰直到退出geth程序。
personal.unlockAccount(eth.accounts[1], "123456", 30)
效果如下:
5. sendTransaction
方法驗證指定的密碼並提交交易,該方法的交易參數 與eth_sendTransaction一樣,同時包含from賬戶地址。如果密碼可以成功解密交易中from地址對應的私鑰,那麼該方法將驗證交易、 簽名並廣播到以太坊網絡中。
首先創建交易信息:
var tx = {from: eth.accounts[0], to: eth.accounts[1], value: web3.toWei(1.23, "ether")}
發送交易:
personal.sendTransaction(tx, "123456")
效果如下:
6. sign
方法計算指定消息的以太坊特定的簽名,計算方法如下:
sign(keccack256("\x19Ethereum Signed Message:\n" + len(message) + message))).
通過添加消息前綴,從而讓結果可以被識別以太坊特定的簽名格式。這避免了一個惡意的 DApp對任意數據(例如交易)進行簽名並使用簽名冒充受攻擊者。使用ecRecover方法來驗證簽名。
personal.sign("0xdeadbeaf000123", eth.accounts[0], "123456")
效果如下:
7. ecRecover
方法從簽名中提取簽名私鑰對應的以太坊地址。
personal.ecRecover("0xdeadbeaf000123","0x9186ce184067b205de718d309a3270a205403346889a2dd8f74c76637f96b9c950c3b2f93ffde3aac5f813ebd38644e099e476c8406eea307357f7b094de6dd81c")
效果如下: