Custom Parity signer — программная разблокировка учетных записей на определенное время

Подписывающая сторона по умолчанию

Как я могу реализовать пользовательское средство подписи транзакций (которое будет разблокировать учетные записи на лету) и указать паритетному клиенту использовать его?

Я не хочу разблокировать все учетные записи при запуске (и всегда держать их разблокированными. Вместо этого я хочу установить некоторую логику для разблокировки учетной записи при каждой транзакции, скажем:

if (isDay && accountAddress in [addr1, addr2, addr3])
    unlockAccount and signTransaction
else
    rejectTransaction

Я рассматриваю модуль подписи JSONRPC как возможный вариант, но не могу подключиться к пользовательскому интерфейсу Parity Signer с помощью веб-сокетов.

Connect Error: Error: Server responded with a non-101 status: 403
Response Headers Follow:
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
server: Parity/SignerUI
content-length: 524
content-type: text/html
connection: close

Ответы (2)

Parity использует параметр командной строки, чтобы разблокировать определенные учетные записи:

Пример:

   --unlock 0x001fc7d7e506866aeab82c11da515e9dd6d32c25 --password password.txt
Я не хочу разблокировать все учетные записи при запуске.
@EdwardRuchevits, тогда, пожалуйста, уточните, что вы ищете.
--unlockразблокирует только перечисленные аккаунты
@ 5chdn обновил мой вопрос.
@MikkoOhtamaa И держит их все время разблокированными. Я не хочу этого. Пожалуйста, смотрите мой обновленный вопрос.
@5chdn -> Использовать web3.personal.unlockAccount()с тайм-аутом. См. ethereum.stackexchange.com/a/12188/620, но @5chdn необходимо уточнить, может ли Parity разблокировать учетную запись без веб-интерфейса. Geth знает, но я не уверен в Parity.
Паритет может это сделать, да .
Похоже, для этого мне нужно использовать github.com/paritytech/parity/wiki/JSONRPC-signer-module . Ожидаемый поток: tx отправлен и ожидает подтверждения (можно получить с помощью signer_requestsToConfirm?) signer_confirmRequestили signer_rejectRequestвыполняется автоматически. Не уверен, как его использовать (снова обновил мой ответ).

Вы можете разблокировать учетную запись через RPC.

curl --data '{"method":"personal_unlockAccount","params":["0x8f0227d45853a50eefd48dd4fec25d5b3fd2295e","hunter2",null],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

Подробнее см. https://wiki.parity.io/JSONRPC-personal-module#personal_unlockaccount .