По моему оптимальный вариант когда ключи хранятся у пользователя
еще раз, если ты генеришь транзакцию через web3js а подписывает ее нода, то ключ должен быть на ноде, если подписываешь в браузере а отправляешь на ноду подписанной, то ключ только в браузере