Как я могу создать новую учетную запись JSON-RPC?

Я хочу сделать новую учетную запись JSON-RPC. Я проверил вики Ethereum , однако я не мог узнать, как это сделать.

Я нашел вызов существующих учетных записей, но это не то, что я хочу. eth_accounts

Не могли бы вы рассказать мне, как это сделать?

18 голосов | спросил lalala 16 FebruaryEurope/MoscowbTue, 16 Feb 2016 11:13:37 +0300000000amTue, 16 Feb 2016 11:13:37 +030016 2016, 11:13:37

2 ответа


23

Во-первых, примечание о безопасности:

Вы не должны использовать API personal для RPC

Если вы находитесь на локальной, доверенной машине, вы должны использовать 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, но, скорее всего, это не лучший способ сделать то, что вы пытаетесь достичь. Гораздо безопаснее и более модульно использовать подключенный веб-провайдер с клиентским интерфейсом light wallet или просто использовать туманный браузер , который обрабатывает все учетные записи для вас.

Теперь для техники (не делайте этого)

Вам необходимо включить API personal через RPC. Сделайте это, запустив geth с помощью

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

Затем вы можете использовать метод personal_newAccount через RPC. Он не реализован в web3.js, поэтому вам нужно вручную отправить запрос RPC. Например, с curl:

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

  • это позволяет использовать API personal, admin и miner через стандартный интерфейс web3.js.
ответил Tjaden Hess 16 FebruaryEurope/MoscowbTue, 16 Feb 2016 11:34:02 +0300000000amTue, 16 Feb 2016 11:34:02 +030016 2016, 11:34:02
1

В ethereum-php /ethereum.php добавьте

function personal_newAccount($passphase) { return $this->ether_request(__FUNCTION__, array($passphase)); }

и вызвать его для создания новой учетной записи

ответил TJTech 18 +03002017-10-18T15:21:15+03:00312017bEurope/MoscowWed, 18 Oct 2017 15:21:15 +0300 2017, 15:21:15

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132