Bitcoin Forum

Local => Кодеры => Topic started by: develnk on July 07, 2018, 01:34:38 PM



Title: Алгоритм работы кошелька Jaxx или ему подобно
Post by: develnk on July 07, 2018, 01:34:38 PM
Приветствую.
Планирую проект кошелька по обмену монет. Но пока не могут понять важной идеи. Вот есть работающий кошелёк jaxx и кажется есть ещё похожие мультивалютные кошельки. Они генерируют и хранят ключи у себя с возможностью их забекапить. На сколько я понимаю нигде больше эти ключи не хранятся. Соответственно кошелёк генерирует адрес, на который можно получать/отправлять монеты. Но технология блокчейн построена таким образом, что для того чтобы узнать свой баланс нужно выполнить полную синхронизацию с нодой. На сколько я понимаю Jaxx этого не делает. Ну ладно, допустим для отслеживания баланса в открытых блокчейнах таких как bitcoin достаточно просто написать сервер который будет сканировать блокчейн и сохранять балансы отдельно, это вполне можно показывать в программе. Но как быть в таком случае с анонимными криптовалютами, например с Zcash или Монеро? Либо есть ещё какой-то алгоритм по которому они без синхронизации с блокчейном могут показывать балансы и транзакции, либо они полностью отвергают возможности анонимных криптовалют, и работают только с публично доступными данными?
Кстати в таком случае ещё один интересующий меня вопрос: Как они проводят транзакции из кошелька, раз нет полной ноды конкретной криптовалюты, то и cli клиента тоже нет, т.к. от него нет никакого толку без полной ноды? Получается они забирают твой приватный ключ, проводят у себя на сервере транзацию, и потом ключ уничтожат. Так что-ли?


Title: Re: Алгоритм работы кошелька Jaxx
Post by: develnk on July 11, 2018, 11:32:17 AM
Частично сам отвечу, на сколько разобрался.
Оказывается чтобы сгенерировать транзакцию не нужно иметь в наличии запущенной ноды. Достаточно только знать алгоритм. Он может отличатся в зависимости от монеты. Можно сгененировать транзакцию, подписать её и отправить тому кто может отправить транзакцию в пулл(либо самому на прямую отправить в пулл, но врятли такое можно сделать т.к. перед отправкой в пулл транзация проходит кучу валидаций, нужно быть уверенным что транзация полностью валидная), откуда она уже может попасть в блок. Соответствено нет никакой необходимости передавать приватные ключи только чтобы кто-то за тебя сгенерировал транзакцию. Вопрос с балансом почти наверняка разрешается с использованием API блок-эксплореров, либо своё решение. Едиственный минус, заключается в том что таким образом можно только иметь в кошельке полностью публичные монетки, т.к. приватные не позволят отследить баланс и получить список транзакций без доступа к приватному ключу.