Создание приложения безопасного кошелька для Android с использованием web3 js

Я новичок в ethereum и geth. Я просто хочу знать, что моя текущая архитектура или решение для безопасного создания нового кошелька Android.

Мобильный кошелек -> отправляет закрытые ключи через https -> REST API (Node js) -> Web3.js -> Geth JSON RPC (доступен локально).

это безопасный способ разработки кошелька? или же, пожалуйста, предложите мне несколько идей.введите описание изображения здесь

Ответы (4)

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

В идеале открытые/закрытые ключи будут доступны только на стороне клиента. То, что вы отправляете через свое соединение, является подписанными запросами на транзакцию.

По сути, основываясь на вашем графике, я бы:

  • Переместите web3 в размер клиента.
  • В зависимости от того, как это строится... создайте мост от нативного к web3js (если нет уже созданной нативной сборки)... это будет ваш REST API > to > мост web3.
  • Попросите web3 подключиться > к > RPC напрямую.
JSON RPC — это канал связи HTTP.
@Sathish Никогда не говорил не использовать HTTP.
@Sathish Вы можете опубликовать свой geth rpc в Интернете через свой сервер и подключиться к нему напрямую или использовать такой сервис, как Rinkeby, который является более надежным вариантом на данном этапе вашего этапа разработки.
пожалуйста, проверьте мой ответ. пожалуйста, дайте мне ваши предложения!
Имелся в виду сервис типа infura.io, а не Rinkeby.

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

Чтобы сделать его на один градус безопасным. Не отправляйте свой закрытый ключ в открытом виде. Вы должны зашифровать его.

Вы также можете взглянуть на реализацию кошелька Android Ethereum под названием WallETH. Вы можете получить полный рабочий исходный код @ https://github.com/walleth/walleth

Надеюсь, это поможет вам.

Согласно предложениям @YANG Lei и @Haynes. Я придумал свое решение. Достаточно ли это безопасно или предложите мне несколько способов. Спасибо!

Android-приложение -> Подписывает автономную транзакцию с помощью Web3j -> Отправляет на узел ETH через обратный прокси-сервер NGINX (HTTPS-связь) -> Nginx пересылает на localhost JSON RPC-клиент.

введите описание изображения здесь

Это решение выглядит лучше. Но вы должны отредактировать свой вопрос, а не отвечать так
Выглядит лучше. Как я уже упоминал. Вы также можете использовать такой сервис, как Infura ( infura.io ), для обработки второй и третьей частей вашего приложения, подключающегося к сети Ethereum. Это сэкономит вам кучу времени на прототипирование.