Jump to content
niorix

Кошелек, приватны и публичный ключи, транзакции. Помогите разобраться!

Recommended Posts

Доброго времени суток, почитал матчать, но все равно остались вопросы.

Я попытаюсь рассказать, что и как я понял, попутно задавая вопросы, а вас попрошу поправить там где я не прав.

 

Маленькая оговорка, пробу пера я делал на fathercoin'ах, так как биты дорогие чтото). Но так как Это все форки принци должен быть один.

 

Итак начнем с малого - кошелек:

Как я понял в нем просто храняться пары приватный/открытый ключ. При этом из приватного легко можно вычислить открытый ключ (поправте). К консоле командой dumpprivkey мы можем посмотреть приватный ключ, соответсвующий открытому. Ну мы можем импорировать приватный ключ сгенерированный, например, сторонним сервисом и программа вычислит из него открытый ключ, и добави нам его в адреса. Открытый же ключ (или же все таки его хеш HASH(PUB1), так и не понял), мы видем в разделе "принять деньги".

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

В любой момент я могу сгенерировать еще сколько угодно пар ключей.

 

Баланс кошелька:

Когда кто то отправляет на мой адрес денюжку, он создает транзакцию, в которой говорить что такая то сумма теперь принаднежит человеу, у которого HASH(PUB1) такой то.

При этом никто не может понять, кому же всетаки отправили. Но мой клиент знает адрес PUB1 и спокойно может вычислить HASH(PUB1) и понять, денюжка отправлялась мне. Таких транзакций много, и клиент все их запоминает и складывает все полученные деньги в баланс. Точнее он это делает со всеми адресами PUB, которые у меня есть. Получается баланс.

 

Транзакции

А вот тут больше всего вопросов.

Итак, условимся для простоты что адрес у меня один и на него было 3 поступления по 1 BTC (да, это много по нынешнему курсу, просто для примера).

Я хочу отправить кому то 2.5 BTC.

Я говорю:
"Все помнят что бало 3 транзакции на HASH(PUB1)? Ну так вот мой PUB1 такой то и HASH(PUB1) вы можете легко вычислить, так что поступления были мне. Теперь я хочу что бы 2.5 BTC от этих транзакций (входы, в нашем случае 3), принадлежали человеку HASH(PUB2). Мой приватный ключ, PRIV1, из него вы легко можете получть PUB1 так что деньги, которые поступали, мои. А сдачу прошу вернуть..."

 

А вот тут я совсем запутался. Я не просто так упомянал про 100 заранее созданых, согласно статьи, адресах, и думал что поле отправки, один из этих адресов должен был отобраться как новый адрес в разделе "Получить деньги". Но нет, адрес остался оди и не поменялся.

 

А теперь основной в этом разделе вопрос. Мой адрес остался и не изменился, многие люди или, допустим, сервисы майнинга на него оправляют деньги. А я уже запалил приватный ключ. И что теперь любой может воспользоваться оставшимися и вновь поступившими на этот адрес деньгами, ведь я отправляя деньги и PUB1 и PRIV1 от него публично огласил?

Мне что теперь забить на остаток (а он может быть большим) создать новый адрес и сообшить 1000 человек, которые за что то платят мне, что "на старый не отправляйте, отправляйте на новый". И оббежать десяток пулов и сменить там реквизиты?

Понимаю что это нереально и я просто гдето не догнал... Прошу пояснить!

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

Edited by niorix

Share this post


Link to post
Share on other sites

.... А я уже запалил приватный ключ. 

...

- с чего ты взял, что спалил свой приватный ключ от первого адреса? Когда клиент (bitcoin-qt.exe) подписывает транзакцию приватным ключом, он его не светит.

Edited by Geo_log

Share this post


Link to post
Share on other sites

Выдержка из статьи:
"Но так задумано, что секретный ключ используется только один раз, а часть своих монет пересылается на свой же новый, не засвеченный адрес." Вроде как речь о приватном ключе.

Быть может я не совсем понимаю процесс подписи конечно. Но как тогда понимать отправку сдачи на "незасвеченный адрес"?

Share this post


Link to post
Share on other sites

 

 

Но как тогда понимать отправку сдачи на "незасвеченный адрес"?

В кошельке изначально есть 100 публичных адресов. Сдача отправляется на любой из них, ранее не использовавшийся. Приватный ключ при этом нигде не светится.

Share this post


Link to post
Share on other sites

 

Но как тогда понимать отправку сдачи на "незасвеченный адрес"?

В кошельке изначально есть 100 публичных адресов. Сдача отправляется на любой из них, ранее не использовавшийся. Приватный ключ при этом нигде не светится.

 

- хуже. Если изначально клиента не запустить с ключом -keypool=<n>, то в кошельке окажется 100 пар публичный+приватный ключ. Это важно знать новичку, т.к. если он потеряет свой изначальный как бы пустой кошелёк, но продолжит пользоваться его копией, то вновь полученных монет он лишится, если враг завладеет старым (как бы пустым) кошельком и паролем к нему.

 

А отправка сдачи каждый раз на незасвеченный адрес специально сделана только лишь для затруднения стороннего анализа перемещения монет.

Share this post


Link to post
Share on other sites

 

Но как тогда понимать отправку сдачи на "незасвеченный адрес"?

В кошельке изначально есть 100 публичных адресов. Сдача отправляется на любой из них, ранее не использовавшийся. Приватный ключ при этом нигде не светится.

 

Возьмем пару ключей. PUB 18DKKX5kXSYEzvCpG5y9dR9PTDCzx7pCV8, PRIV 5JyJw51hiwH1SyVyno69a5dPjLFvQubPjAbCCZfchFx87Eksjdn (сгенерил на bitadress.org). Я так понял зная PRIV мы можем вычислить PUB. Так?

Адрес получения 18DKKX5kXSYEzvCpG5y9dR9PTDCzx7pCV8 - это и есть публичный адрес?

В кошельке их 100, а вижу я один, и для каждого публичного есть свой приватный? Или же одному приватному может соответствовать много публичных (я всегда думал что берется PRIV, хешируется и получается PUB, а значит он только один)?

Тогда я не понимаю почему бы не вернуть сдачу прямо на адрес 18DKKX5kXSYEzvCpG5y9dR9PTDCzx7pCV8

Edited by niorix

Share this post


Link to post
Share on other sites

 

 

Адрес получения 18DKKX5kXSYEzvCpG5y9dR9PTDCzx7pCV8 - это и есть публичный адрес?

Да

 

 

 

В кошельке их 100, а вижу я один, и для каждого публичного есть свой приватный? Тогда я не понимаю почему бы не вернуть сдачу прямо на адрес 18DKKX5kXSYEzvCpG5y9dR9PTDCzx7pCV8

Читаем пост выше и пытаемся понять, там дан ответ проще некуда.

Share this post


Link to post
Share on other sites

По поводу сдачи и засвечивания приватного ключа разобрался более мение. Остается один момент: можно ли как то посмотреть эти сгенерированные 100 пар ключей?

Share this post


Link to post
Share on other sites

Адрес - это не PUB, адрес - это HASH из PUB и вычислить PUB из HASH невозможно.

Share this post


Link to post
Share on other sites

 

 

Но как тогда понимать отправку сдачи на "незасвеченный адрес"?

В кошельке изначально есть 100 публичных адресов. Сдача отправляется на любой из них, ранее не использовавшийся. Приватный ключ при этом нигде не светится.

 

- хуже. Если изначально клиента не запустить с ключом -keypool=<n>, то в кошельке окажется 100 пар публичный+приватный ключ. Это важно знать новичку, т.к. если он потеряет свой изначальный как бы пустой кошелёк, но продолжит пользоваться его копией, то вновь полученных монет он лишится, если враг завладеет старым (как бы пустым) кошельком и паролем к нему.

 

А отправка сдачи каждый раз на незасвеченный адрес специально сделана только лишь для затруднения стороннего анализа перемещения монет.

 

а как можно продолжить пользоваться копией?

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...