Как использовать personal_sendTransaction в RSK?

Я запускаю узел RSK и пытаюсь отправить транзакцию с помощью personal_sendTransaction, но получаю следующую ошибку:

The local wallet feature is disabled

Как я могу это исправить? заранее спасибо


person Dul    schedule 25.02.2021    source источник


Ответы (2)


Вы пытаетесь использовать модуль personal, и эта функция подразумевает импорт вашей учетной записи на узел. В другом ответе учетная запись импортируется в узел путем добавления открытого ключа и закрытого ключа в виде обычного текста в конфигурацию RSKj. файл, а это небезопасно, так как получения доступа к файловой системе достаточно, чтобы скомпрометировать ваш закрытый ключ. Таким образом, этот подход, вероятно, следует использовать только для удобства и только в Testnet или Regtest, а не для каких-либо учетных записей в Mainnet.

Альтернативный подход — при включенном модуле personal использовать personal_importRawKey RPC для добавления новых учетных записей. Этот способ немного более безопасен, поскольку парольная фраза не сохраняется в файловой системе.

Даже если машина, на которой работает узел, скомпрометирована, и злоумышленник может прочитать файл конфигурации, в результате ваши закрытые ключи не будут скомпрометированы.

Полные шаги подробно описаны ниже:

(1) Включите модуль thepersonal (включен по умолчанию):

rpc {
    modules = [
        ...,
        {
            name: "personal",
            version: "1.0",
            enabled: "true"
        },
        ...
    ]
}

(2) Вызовите personal_importRawKey RPC, чтобы добавить новые учетные записи:

curl \
  -X POST \
  --data '{"jsonrpc":"2.0","method":"personal_importRawKey","params":["YOUR_RAW_KEY", "YOUR_PASSPHRASE"],"id":1}' \
  --header "Content-Type:application/json" \
  http://localhost:4444/

(3) Прежде чем подписывать транзакции с использованием этой учетной записи, вам нужно будет позвонить по номеру personal_unlockAccount для только что созданной учетной записи. Обратите внимание, что DURATION является необязательным и по умолчанию равно 300 (5 минут).

curl \
  -X POST \
  --data '{"jsonrpc":"2.0","method":"personal_unlockAccount","params":["YOUR_ACCOUNT_ADDRESS", "YOUR_PASSPHRASE", DURATION],"id":1}' \
  --header "Content-Type:application/json" \
  http://localhost:4444/
person ajlopez    schedule 03.03.2021

Вы пытаетесь использовать модуль personal, и эта функция подразумевает импорт вашей учетной записи на узел

ПРИМЕЧАНИЕ. Из соображений безопасности этот подход не рекомендуется, однако его можно использовать.

Для этого вам необходимо настроить свой узел для этого в конфигурационном файле RSKj. Это должно быть main.conf для основной сети RSK:

(1) Включите модуль thepersonal (включен по умолчанию):

rpc {
    modules = [
        ...,
        {
            name: "personal",
            version: "1.0",
            enabled: "true"
        },
        ...
    ]
}

(2) Включите wallet и добавьте свою учетную запись:

wallet {
    enabled = true
    accounts = [
        {
            "publicKey" : "<PUBLIC_KEY>"
            "privateKey" : "<PRIVATE_KEY>"
        }
    ]
}

После этого вы сможете использовать все следующие методы RPC:

  • personal_sendTransaction
  • personal_importRawKey
  • personal_listAccounts
  • personal_lockAccount
  • personal_newAccount
  • personal_unlockAccount

Пример:

curl \
  -X POST \
  --data '{"jsonrpc":"2.0","method":"personal_newAccount","params":["password"],"id":1}' \
  --header "Content-Type:application/json" \
  http://localhost:4444
person Jesse Clark    schedule 01.03.2021