Go-Ethereum

如何通過 JSON-RPC 創建新帳戶?

  • August 10, 2018

我想通過 JSON-RPC 創建新帳戶。我檢查了 Ethereum 的 wiki 但是我不知道如何做到這一點。

我找到了呼叫存在的帳戶,但這不是我想要的。 eth_accounts

你能告訴我怎麼做嗎?

首先,關於安全的說明:

personal您不應該通過 RPC使API 可用

如果您在本地受信任的電腦上,則應使用 IPC 而不是 RPC。否則,任何可以通過 RPC 連接到您的節點的人都可以嘗試暴力破解您的密碼並竊取您的乙太幣。

預設情況下,所有管理 API 都可通過 IPC 使用,因此無需在 geth 中使用任何標誌

通過 IPC 連接:

安裝我的庫: npm install web3_extended

var web3_extended = require('web3_extended');

var options = {
 host: '/home/user/.ethereum/geth.ipc',
 ipc:true,
 personal: true, 
 admin: false,
 debug: false
};

var web3 = web3_extended.create(options);

web3.personal.newAccount("password",function(error,result){
   if(!error){
       console.log(result);
   }
});

host變數替換為系統的正確路徑。

注意:所有通過 IPC 的請求必須是非同步的。


一些替代方案:

我不知道您為什麼要通過 web3 創建新帳戶,但這可能不是實現您想要實現的目標的最佳方式。使用帶有客戶端輕錢包的hooked web3 提供程序或簡單地使用為您處理所有帳戶的Mist 瀏覽器會更加安全和模組化。

現在是技術(不要這樣做)

您需要personal通過 RPC 啟用 API。通過開始 geth 來做到這一點

geth --rpc --rpcapi "db,eth,net,web3,personal"

然後您可以personal_newAccount通過 RPC 使用該方法。web3.js 中沒有實現,所以需要手動發出 RPC 請求。例如捲曲:

curl -X POST --data '{"jsonrpc":"2.0","method":"personal_newAccount","params":["password"],"id":1}' localhost:8545

使用密碼創建一個新帳戶password並返回地址:

{"id":1,"jsonrpc":"2.0","result":"0x05ca0ddf7e7506672f745b2b567f1d33b7b55f4f"} 有一些基本的文件

或者: 使用非官方擴展的 web3.js

  • 這允許您通過標準 web3.js 介面使用personal,admin和API。miner

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