Ответ в топик:
smart-lab.ru/blog/440722.php
Не знаю за что, но у этого товарища я в бане… не мог там ответить, а ведь интересуется народ.
Electrum на самом деле гениально устроен:
Есть seed(семя), из 12 слов, он задает
начальную точку генератора приватных ключей, из которых получаем публичные, из публичных генерируется хэш-адреса.(те самые, куда мы перечи) Смысл запоминания/записывания seed в том, что при полном уничтожении всей информации о кошельке, включая бэкапы, с помощью него можно будет восстановить приватные ключи, просто введя seed.
Потому, ответ нет, приватные ключи не хранятся на харде ни на серверах разработчиков. У разработчиков вообще ничего не хранится.
Хранится
у вас только сид, причем зашифрованный входным паролем, и из сида генерируются по мере необходимости новые адреса.
Т.е. потерялся допустим кошелек, сломался хард или украли. Остался где-то распечатанный seed.
Введя seed при восстановлении кошелька, мы опять задаем ту же
начальную точку для генератора приватных/публичных ключей и адресов. Получаем потерянные приватные/публичные ключи и адреса.
И вуаля, опросив публичные сервера по этим адресам у нас отображаются лимиты в кошельке по адресам.
Гениально, просто и безопасно.
Дополнительно есть опция мультиподписи транзакций через 2FA подтверждение.
В этом и отличие реальной банковской и платежной системы, что хотябы какой-то контроль есть над транзакциями, от этих виртуальных игрушек )
а если еще и 2FA подключено, надо будет кроме пароля еще украсть и смартфон, украсть пароль от смартфона или одолжить палец, в случае iphone x фейс жертвы)
проще паяльником орудовать))
Опять же возьмите в противовес реальный финансовый сектор )
паяльником ведь не только криптокошельки открываются)
Если криптокошелек открылся с помощью паяльника, это уже законченная транзакция, никакого возврата и отслеживания движения средств в природе не существует.
Сравните это хотя бы с обычным банковским вкладом или брокерским счетом, цепочка на много усложняется.
Это все, разумеется, зашифровано.
качнул сырцы, навскидку пробежался по коду:
если такая функция convert_wallet_type()
seed = self.get('seed')
xpubs = self.get('master_public_keys')
xprvs = self.get('master_private_keys', {})
mpk = self.get('master_public_key')
keypairs = self.get('keypairs')
key_type = self.get('key_type')
...
elif wallet_type in ['xpub', 'standard']:
xpub = xpubs[«x/»]
xprv = xprvs.get(«x/»)
d = {
'type': 'bip32',
'xpub': xpub,
'xprv': xprv,
'seed': seed,
}
self.put('wallet_type', 'standard')
self.put('keystore', d)
class Simple_Wallet(Abstract_Wallet):
def save_keystore(self):
self.storage.put('keystore', self.keystore.dump())
чтобы понять как и что там работает, нужно дебажить, без этого однозначные мнения, что никто ничего не хранит не работают.
основательный у вас подход