Как использовать personal_sendTransaction в RSK?
Я использую узел RSK и пытаюсь отправить транзакцию, используя
personal_sendTransaction
но я получаю эту ошибку:
The local wallet feature is disabled
Как я могу это исправить? заранее спасибо
2 ответа
Вы пытаетесь использовать модуль, и эта функция подразумевает импорт вашей учетной записи на узел. В другом ответе учетная запись импортируется в узел путем добавления открытого ключа и закрытого ключа в виде простого текста в конфигурационный файл RSKj, и это небезопасно, поскольку получения доступа к файловой системе достаточно, чтобы скомпрометировать ваш закрытый ключ. Таким образом, этот подход, вероятно, следует использовать только для удобства и только в Testnet или Regtest, а не для каких-либо учетных записей в Mainnet.
Альтернативный подход — при включенном модуле использовать RPC для добавления новых учетных записей. Этот способ немного более безопасен, поскольку парольная фраза не сохраняется в файловой системе.
Даже если машина, на которой работает узел, скомпрометирована, и злоумышленник может прочитать файл конфигурации, в результате ваши закрытые ключи не будут скомпрометированы.
Полные шаги подробно описаны ниже:
(1) Включите
personal
модуль (по умолчанию включен):
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/
Вы пытаетесь использовать модуль, и эта функция подразумевает импорт вашей учетной записи на узел
ПРИМЕЧАНИЕ. Из соображений безопасности этот подход не рекомендуется , однако это возможно.
Для этого вам необходимо настроить свой узел для этого в конфигурационном файле RSKj. Это должно быть
main.conf
для основной сети RSK:
(1) Включите
personal
модуль (по умолчанию включен):
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