Перейти к публикации
PindosoBritHunter

Bitcoin протокол - вопросы

Рекомендованные сообщения

1. Каким образом биткойн кошелек и/или протокол биткойн рассчитывает сколько у меня денег/достаточно ли денег: каждый раз он вынужден пробегать по цепочке blockchain и считать сумму всех транзакцией моего кошелька?

 

2. сообщение о моей транзакции, как я понимаю, сопровождается моим публичным ключем для подтверждения идентичности. Значит в пакете каждой транзакции биткойнов содержится еще и публичный ключ?

 

3. проверка получателем, действительно ли отправитель имеет деньги:

Боб не просто идет вперед и принимает сделку. Вместо этого, он передает сообщение Алисы всей сети. Другие члены сети проверяют, имеет ли Алиса этот инфокоин. Если это так, они передают сообщение «Да, Алиса владеет инфокоином 1234567, теперь он может быть передан Бобу».Как только достаточное количество людей распространят этот послание в сети, все обновят свои цепочки блоков, которые будут показывать, что инфокоин 1234567 теперь принадлежит Бобу, и сделка завершена

 

а) Т.е. если у нас в сети 100тыс человек, то все они проверяют мою транзакцию?

б) что значит "достаточное кол-во людей"? Сколько это?

в) В какой момент эти остальные люди меняют цепочку блоков у себя? : вот кто-то получает запрос на проверку, ок, проверил - совпало и что сразу обновлять? А что если у нескольких других не совпадет?

г) Что случится если в сети появятся ну например 50тыс ботов на 100 тыс реальных пользователей, у которых будет совершенно своя история транзакций?

д) если предположить, что в сети появился миллион или даже 10 миллионов ботов, которые бессмысленно посылают друг-другу минимальную сумму биткойнов, то получим аналог Dos атаки и сеть просто встанет?

 

4

"Существует способ избежать этой проблемы, используя идею, известную как доказательство правильности работы (proof-of-work). Идея парадоксальна и включает в себя сочетание двух других идей: (1) (искусственно) сделать подтверждение транзакций затратными для пользователей сети в виде компьютерных вычислений; и (2), вознаградить их за помощь проверки транзакций.

...

Дэвид проверяет свою копию цепочки блоков, и видит, что каждая сделка годна. Он хотел бы помочь, отправив новость о годности сделок для всей сети.

 

Тем не менее, прежде чем сделать это, как часть протокола проверки, Дэвиду требуется решить непростую вычислительную задачу — доказательство правильности работы. Без решения этой задачи, остальная часть сети не будет принимать его проверку сделок."

 

Таким образом схематично мы имеем некую коробку в которой есть неподтвержденные транзакции и эта коробка закрыта неким шифром, который надо подобрать, прежде чем подтвердить транзакции. Соответственно возникают следующие вопросы:

 

а) Как я понимаю, подтверждение - это и есть майнинг. А если это так, то в случае, если у нас в сети всего(упростим задачу) 10 пользователей и никто из них не хочет заниматься майнингом, то транзакции там и будут висеть необработанные?

б) Получается что если подтверждает только майнер, то если у нас есть свои 2 бота которые подтвердят сфальсифицированную транзакцию то все ее примут?

в) Если в сети работают 2 майнера, и первый нашел ключ быстрее второго, то второй никакого вознаграждения не получает? т.е. его компьютер продолжает работать в холостую? или там если получит сообщение о том, что кто-то уже нашел ключ, но он прекратит работу, начнет работать над другой задачей и так далее пока не бросит эту затею тк у других компьютеры мощнее?

г) откуда берется вознаграждение за поиск ключа? Получается что в программе майнера стоит простое условие: если результат == ключу то баланс+=25 монет?? Если это так, то ведь ничего не мешает хакнуть такую программу. 

 

д) Кто "создает" и "запечатывает" в коробку транзакции пользователей и "выдумывает" для них ключ?

 

е) Где вообще хранится эта "коробка" с транзакциями? Если сеть одноранговая, то у нас нет какого-то отдельного места где мы могли бы держать очередь и тп. Или каждый кошелек автоматом создает на каждой машине свою очередь и автоматом инкременирует ее номер после того как она заполнена? В таком случае как они синхронизируют номера для "коробок"? 

 

 

 

 

5) если в цепочке "коробок" появляется разветвление, то берется то, которое длиннее и оно считается правильным.

Как строится цепочка? - пакет имеет id на предыдущий пакет и тд. 

В таком случае если злоумышленник сгенерирует более длинную цепочку, то его цепочка и будет считаться правильной, разве нет?

 

 

 

 

 

6) Предположим Алиса имеет 1 биткойн с номером серийным 123456

Боб имеет 0.5 биткойна с серийным номером 98765

Алиса пересылает Бобу 0.5 биткойна.

Таким образом, если я прав, в заключении у Алисы:

0.5 биткойна с серийником 123456

А у Боба:

0.5 биткойна с серийником 123456 и 0.5 биткойна с серийником 98765

Это так? Если да, то получается что при большом кол-ве малых транзакций мы будем иметь целую кучу до 8 знака деленных частей с разными серийными номерами и будет тот еще гемор отслеживать их?

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Мне интересно, вы зачем дали ссылку если ее, очевидно, сами не читали? Указанная ссылка не отвечает ни на 1 из вопросов заданных мной!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1. Каждый раз при синхронизации пробегается по цепочке

2. Да

3. Майнинг обеспечивает защиту транзакций от подделки путём сложности вычислений хеша нового блока, который состоит из хеша предыдущего блока и хеша входящих и исходящих транзакций. При нахождении нескольких блоков(обычно 6и) после этого будет доказательством правильности данного блока(который принимается сетью). То есть не все пользователи проверяют транзакции, а только те кто занимаются майнингом - поддержкой сети

4. Дальше у вас какая-то каша.., даже вникать не стал. Вознаграждение даётся за майнинг - нахождение хеша блока транзакций соответствующего определённой сложности

 

Стесняюсь спросить, с какой целью пытаетесь вникнуть в протокол Bitcoin?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Стесняюсь спросить, с какой целью пытаетесь вникнуть в протокол Bitcoin?

 

Пытаюсь разобраться в деталях работы протокола. Буду признателен если сможете ответить детально на все вопросы

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1. Каждый раз при синхронизации пробегается по цепочке

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

 

2. Да

Не совсем. Если очень упрощенно, то там особым образом сформированный хэш от открытого ключа, коим является адрес Bitcoin.

 

3. Клиент по своему блокчейну может сам проверить транзакцию. Если транзакция кривая, то она и по сети даже не разойдется. Там куча проверок при каждом получении. И если транзакция совсем кривая - то у нее нет шансов распространиться. Если не совсем кривая, то все равно есть шанс дабл-спенда, поэтому требуются подтверждения от всей сети. Это означает, что эти узлы не примут потом альтернативную версию траты этих же монет. Количество подтверждений может выбирать продавец, как ему удобнее. По-умолчанию GUI кошелек ждет 6 подтверждений при получении транзакции. Насчет миллионов ботов - их количество не важно, для атаки нужно быстрее честной сети строить блокчейн. То есть злоумышленник должен обладать огромными вычислительными мощностями. Для гарантированно успешного исхода атаки - больше, чем у всей честной сети. Так как принимается не просто более длинная цепочка, но наиболее сложная цепочка, т.е. на которую затрачено больше ресурсов. И то там есть нюансы, чужими монетами все равно не воспользуешься, да и в кошельке захардкожены некоторые чекпоинты блокчейна. Стоимость атаки не сможет быть покрыта профитом от нее.

 

Дальше объяснять в -цатый раз уже несколько утомительно, рекомендую к ознакомлению:

Bitcoin F.A.Q

Биткоин изнутри для непонимающих

Адреса Bitcoin. Часть I, теория.

Адреса Bitcoin. Часть II, практика.

Транзакции Bitcoin

F.A.Q по майнингу

 

Да, поверьте. что эти вопросы задаются постоянно. И много людей уже разобрались. Если найдете моменты. которые не разобраны нигде еще - пишите, я с удовольствием напишу материал. Может у меня глаз замылен, но я нее знаю. что еще не разжевано.

Если хочется совсем глубоко влезть в логику, то рекомендую курить еще англоязычные источники, начать можно отсюда:

https://bitcoin.org/bitcoin.pdf

https://bitcoin.org/en/developer-documentation

https://en.bitcoin.it/wiki/Protocol_specification

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×