Где я написал, что внешний софт должен иметь доступ к сиду? Внешний софт отправляет путь деривации и по результату вычислений кошелька получает адрес. Никакого доступа ни к сиду ни к приватным ключам он иметь не может.
Насчет хранения адресов сдачи в памяти кошелька. Почему тогда Trezor не хранит адреса получения если это так просто реализовать? Кроме того Trezor допускает создание до 10 акаунтов
https://wiki.trezor.io/Account умножте это на количество поддерживаемых монет (за исключением таких как эфир и эфир класик) и получите количество адресов сдачи которые нужно хранить.
Кстати при востановлении резервной сид фразы на новый кошелек вы получите все балансы в том числе и с адресов сдачи, а уж новый кошелек точно не знает что и на каких адресах лежит. Так что хранить в флэшпамяти адреса или идексы абсурдная идея.
Главная проблема, это не понимание основ создания любой архитектуры. Зачем прегенерировать сотни адресов сдачи для тысяч доступных криптовалют, если можно иметь только алгоритм деривации (откуда и появляются адреса сдачи) и делать это по нужде? Сделал перевод - получил остаток на адрес сдачи. Сделал с него перевод - еще новый. И так далее. Во флешпамяти поместятся десятки тысяч адресов сдачи, если не больше.
Притом, что алгоритм деривации практически у всех криптовалют одинаков, и даже путь часто похож, отличаясь только индексом криптовалюты:
m/44/0 ... - это биткоин. А если было бы 60, то был бы Эфир и так далее.
ничего сложного
Алгоритм работы выяснения адресов с балансами был описан в обсуждаемой
статье.
What’s really happening under the hood during the recovery process is that the wallet is guessing the key indices — and it can guess very accurately, for two reasons. First, when you originally generated your addresses, the wallet generated them from sequential key indices: when you clicked “New Address” three times, you got addresses 0, 1, and 2. Second, the wallet assumes that you used those addresses in sequential order, i.e. address 0 will appear in the blockchain before address 1. So during the recovery process, the wallet begins by using your seed to generate address 0, and looks for that address in the blockchain. If it finds address 0, it starts looking for address 1 (as well as address 0, since it could appear multiple times). If it finds address 1, it starts looking for addresses 0, 1, and 2. At the end of this process, the wallet will have found all of your address that appear in the blockchain, and will know which key indices were used to generate them.
Суть в том , что кошелек каждый раз при новом подключении к серверам выясняет на каких адресах у него имеются положительные балансы, выясняет это ВНЕШНИЙ софт, который может быть взломан. Никакой флэш памяти для хранения адесов или индексов кошелек не использует, иначе было бы не возможно восстановить свой старый сид на новом кошельке, так как на нем никаких сохраненных адресов нет.