Go-Ethereum
是否可以通過 JSON RPC 解鎖 geth 錢包?
我目前正在乙太坊的 JSON RPC 之上開發一個應用程序。我希望能夠根據需要解鎖和鎖定錢包,類似於比特幣的做法。但是,目前似乎只能通過personal.unlockAccount使用控制台解鎖geth錢包。我想知道 - 這是解鎖 geth 錢包的唯一方法,還是有一些方法可以通過其他方式來完成,最好是使用 JSON RPC?
使用Go Ethereum - Management APIs - personal_sendTransaction API 解鎖您的帳戶並同時發送您的交易更安全:
個人發送交易
驗證給定的密碼並送出交易。
該事務與 eth_sendTransaction 的參數相同,並且包含發件人地址。如果密碼可用於解密登錄到 tx.from 的私鑰,則交易被驗證、簽名並發送到網路上。該賬戶在節點中未全域解鎖,不能用於其他RPC呼叫。
Client Method invocation Console personal.signAndSendTransaction(tx, passphrase) RPC {"method": "personal_sendTransaction", "params": [tx, string]}
請注意,在 Geth 1.5 之前,請使用 personal_signAndSendTransaction,因為這是最初的介紹性名稱,後來才重命名為目前的最終版本。
例子
var tx = {from: "0x391694e7e0b0cce554cb130d723a9d27458f9298", to: "0xafa3f8684e54059998bc3a7b0d2b0da075154d66", value: web3.toWei(1.23, "ether")} undefined personal.sendTransaction(tx, "passphrase") 0x8474441674cdd47b35b875fd1a530b800b51a5264b9975fb21129eeb8c18582f
您的帳戶僅針對指定的交易解鎖。
您必須使用
geth
API 選項通過 RPC 介面啟用個人 API:geth --rpc --rpcapi "eth,net,web3,personal" [other option] console
您可能需要閱讀以下連結,了解通過 RPC 允許個人 API 的安全性:
2016 年 7 月 21 日更新 - 回復下面的評論
我搜尋了
geth
github 儲存庫,personal_sendTransaction
但找不到文本。然而,我發現internal/web3ext/web3ext.go#L435-L440:new web3._extend.Method({ name: 'signAndSendTransaction', call: 'personal_signAndSendTransaction', params: 2, inputFormatter: [web3._extend.formatters.inputTransactionFormatter, null] })
就像你說的,文件似乎已經過時了。