Jaga-Jaga (OP)
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 04, 2017, 10:17:20 PM |
|
Вот есть у меня кошелек на котором есть немного биткоинов, точнее сатоши, как мне самому их со своего кошелька отправить на другой без сторонних API или кошельков? Я хочу понять что происходит в момент совершения транзакции пока транзакция еще не подхватится майнером и не пойдут подтверждения.
|
|
|
|
kcaterpillar
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 06, 2017, 01:22:27 AM |
|
Вот есть у меня кошелек на котором есть немного биткоинов, точнее сатоши, как мне самому их со своего кошелька отправить на другой без сторонних API или кошельков? Я хочу понять что происходит в момент совершения транзакции пока транзакция еще не подхватится майнером и не пойдут подтверждения.
Если у вас есть кошелёк, в котором видны ваши монеты - с него и отправляйте, все стандартные кошельки имеют функцию отправки монет. Если у вас какой-то особый онлайн-кошелёк с ограничениями (вы не уточняете какой он) - то смотрите, изучайте, кто и почему вас ограничивает. В момент отправки биткойнов платёжные транзакции попадают в сеть, где их увидят все майнеры, пользователи перенаправляют друг другу эти данные, (т.н. рилэй), поэтому информация о новых транзакциях распространяется в сети очень быстро. А вот включить ваши транзакции в блок или нет - решают майнеры, в первую очередь смотрят, чтобы транзакция была корректная, чтобы была нужная коммисия и так далее, т.е. чтобы выполнялись требования спецификации. Если, например коммисия низкая - могут и не включить в блок вообще, это как раз решают именно майнеры.
|
|
|
|
Jaga-Jaga (OP)
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 06, 2017, 10:41:28 PM |
|
Вот есть у меня кошелек на котором есть немного биткоинов, точнее сатоши, как мне самому их со своего кошелька отправить на другой без сторонних API или кошельков? Я хочу понять что происходит в момент совершения транзакции пока транзакция еще не подхватится майнером и не пойдут подтверждения.
Если у вас есть кошелёк, в котором видны ваши монеты - с него и отправляйте, все стандартные кошельки имеют функцию отправки монет. Если у вас какой-то особый онлайн-кошелёк с ограничениями (вы не уточняете какой он) - то смотрите, изучайте, кто и почему вас ограничивает. В момент отправки биткойнов платёжные транзакции попадают в сеть, где их увидят все майнеры, пользователи перенаправляют друг другу эти данные, (т.н. рилэй), поэтому информация о новых транзакциях распространяется в сети очень быстро. А вот включить ваши транзакции в блок или нет - решают майнеры, в первую очередь смотрят, чтобы транзакция была корректная, чтобы была нужная коммисия и так далее, т.е. чтобы выполнялись требования спецификации. Если, например коммисия низкая - могут и не включить в блок вообще, это как раз решают именно майнеры. Я хочу понять что реально происходит в момент совершения транзакции. Т.е. мне надо связаться с любым из майнеров и передать информацию о транзакции и от него она уже разойдется по другим майнерам или что подразумевается под "В момент отправки биткойнов платёжные транзакции попадают в сеть, где их увидят все майнеры"?
|
|
|
|
ThisNameIsAlreadyInUse
Newbie
Offline
Activity: 54
Merit: 0
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 07, 2017, 01:47:56 AM |
|
Я хочу понять что реально происходит в момент совершения транзакции. Т.е. мне надо связаться с любым из майнеров и передать информацию о транзакции и от него она уже разойдется по другим майнерам или что подразумевается под "В момент отправки биткойнов платёжные транзакции попадают в сеть, где их увидят все майнеры"?
В двух словах так: Модуль "кошелек" (wallet.cpp) фомирует транзакцию, подписывает ее необходимыми ключами (соответсвующими использованным входам) и отправляет ее в мемпул. Мемпул вне зависимости от способа получения транзакции валидирует ее (для предотващения спама невалидными транзакциями) и, в случае успеха валидации, запоминает ее, а так же сообщает всем пирам по p2p протоколу, к которым узел подключен и которые могут еще не знать об этой транзкции, о том, что у него имеется новая инвентарная единица типа "транзакция" с хешем таким-то. Любой узел получив от пира сообщение об инвентарной единице, будь то транзакция или блок, проверяет, знает ли он уже о таковой(ом) и, если необходимо, запрашивает ее от источника сообщения. Получив саму транзакцию узел пытается поместить ее в собственный мемпул (см. предыдущий абзац). Процесс "повторяется" по сети до тех пор пока вся сеть не узнает о транзакции. Для предотвращения лавины сообщений, каждый узел для каждого соединения ведет список известных на другом конце соединения инвентарных единиц.
|
|
|
|
Jaga-Jaga (OP)
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 07, 2017, 10:27:58 PM |
|
Я хочу понять что реально происходит в момент совершения транзакции. Т.е. мне надо связаться с любым из майнеров и передать информацию о транзакции и от него она уже разойдется по другим майнерам или что подразумевается под "В момент отправки биткойнов платёжные транзакции попадают в сеть, где их увидят все майнеры"?
В двух словах так: Модуль "кошелек" (wallet.cpp) фомирует транзакцию, подписывает ее необходимыми ключами (соответсвующими использованным входам) и отправляет ее в мемпул. Мемпул вне зависимости от способа получения транзакции валидирует ее (для предотващения спама невалидными транзакциями) и, в случае успеха валидации, запоминает ее, а так же сообщает всем пирам по p2p протоколу, к которым узел подключен и которые могут еще не знать об этой транзкции, о том, что у него имеется новая инвентарная единица типа "транзакция" с хешем таким-то. Любой узел получив от пира сообщение об инвентарной единице, будь то транзакция или блок, проверяет, знает ли он уже о таковой(ом) и, если необходимо, запрашивает ее от источника сообщения. Получив саму транзакцию узел пытается поместить ее в собственный мемпул (см. предыдущий абзац). Процесс "повторяется" по сети до тех пор пока вся сеть не узнает о транзакции. Для предотвращения лавины сообщений, каждый узел для каждого соединения ведет список известных на другом конце соединения инвентарных единиц. Дак я не могу понять есть общий мемпул куда сначала попадают все транзакции и еще у каждого майнера есть свой мемпул? Тогда получается что биткоин сеть все-таки имеет централизацию и это слабое место сети.
|
|
|
|
kcaterpillar
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 07, 2017, 11:54:30 PM |
|
Дак я не могу понять есть общий мемпул куда сначала попадают все транзакции и еще у каждого майнера есть свой мемпул? Тогда получается что биткоин сеть все-таки имеет централизацию и это слабое место сети.
Нет, все пользователи системы Биткойн, включая майнеров, равнозначны, другое дело, что майнеры как правило имеют более надёжные и мощные подключения к сети, более мощное сетевое оборудование, обычно дублированное, поэтому в среднем они могут узнавать о новых транзакциях немного раньше всех остальных, но эта задержка не велика и не принципиальна для работы системы. У вас есть возможность также установить себе мощное и дорогое подключение, не хуже чем у майнеров. Для понимания работы сети при получении новых транзакций обратите внимание на слово "рилэй" - как я уже писал, это ключевой момент. Он означает буквально "получил и передай другому", переводится как эстафета, ретрансляция. Поэтому вся сеть узнаёт о новых транзакциях очень быстро, узнают все, включая майнеров. Ознакомьтесь с принципами работы протокола IRC - https://ru.wikipedia.org/wiki/IRC
|
|
|
|
ThisNameIsAlreadyInUse
Newbie
Offline
Activity: 54
Merit: 0
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 09, 2017, 02:21:26 AM |
|
Дак я не могу понять есть общий мемпул куда сначала попадают все транзакции и еще у каждого майнера есть свой мемпул? Тогда получается что биткоин сеть все-таки имеет централизацию и это слабое место сети.
нет никакого "общего" мемпула. Каждый полноценный (не SPV) узел имеет собственный мемпул, в котором (в идеале) есть все, еще неподтвержденные (не включенные ни в какой блок), транзакции.
|
|
|
|
Jaga-Jaga (OP)
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 13, 2017, 10:18:02 PM |
|
Получается что мне достаточно подписанную транзакцию поместить в любой из мемпулов и она скоро будет видна всем и любой майнер ее может подхватить, но а как происходят подтверждения? Кто подтверждает - наверное полная нода? И куда заносится информация о подтверждении транзакции?
|
|
|
|
vavan1974muz
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 14, 2017, 03:17:57 PM |
|
Вот есть у меня кошелек на котором есть немного биткоинов, точнее сатоши, как мне самому их со своего кошелька отправить на другой без сторонних API или кошельков? Я хочу понять что происходит в момент совершения транзакции пока транзакция еще не подхватится майнером и не пойдут подтверждения.
Ты сам у себя спросил то что ты хочешь сделать,куда это ты хочешь отправлять свои сатоши со своего кошелька в пространство что ли .ясно же что нужен адресат,а значит кошелек.
|
|
|
|
ThisNameIsAlreadyInUse
Newbie
Offline
Activity: 54
Merit: 0
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 14, 2017, 06:06:42 PM |
|
Получается что мне достаточно подписанную транзакцию поместить в любой из мемпулов и она скоро будет видна всем и любой майнер ее может подхватить, но а как происходят подтверждения? Кто подтверждает - наверное полная нода? И куда заносится информация о подтверждении транзакции?
"Поместить транзакцию в любой мемпул" нельзя. Можно послать ее любому узлу, подключенному к сети, а он уже решит, помещать ее в свой мемпул или нет. Получается следующее. Для того, чтобы отправить транзакцию "нестандартными" способами, т.е. непосредствонно с использованием р2р протокола, нужно знать C++, так как единственная нормальная документация на протокол - сырцы официального клиента. Транзакция должна быть полностью валидна, т.е. все входы должны существовать и быть непотраченными и т.д., т.е. нужен способ парсить блоки, строить базу данных потвержденных транзакций и т.д. ВСЁ это уже есть в официальном клиенте. Нафига городить огород? И да, информация о подтверждении заносится в блокчейн.
|
|
|
|
Jaga-Jaga (OP)
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 18, 2017, 10:28:28 PM |
|
И да, информация о подтверждении заносится в блокчейн.
А куда именно заносится информация о подтверждениях? Информация о транзакции заносится в тот блок который ее возьмет и майнеры нашедшие этот блок получат комиссию от этой транзакции с этим понятно, а где хранится информация о том кто подтверждает эту транзакцию, в этом же блоке или каждый майнер который подтверждает ее потом занесет информацию о подтверждении уже в свой блок?
|
|
|
|
A-Bolt
Legendary
Offline
Activity: 2324
Merit: 2353
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 19, 2017, 12:26:03 PM |
|
а где хранится информация о том кто подтверждает эту транзакцию, в этом же блоке или каждый майнер который подтверждает ее потом занесет информацию о подтверждении уже в свой блок?
Когда транзакция попадает в блок - считается, что она имеет 1 подтверждение. Когда находится следующий блок после того блока, в который включена транзакция, - считается что транзакция имеет 2 подтверждения. И т. д. http://cryptonyka.com/articles/53-andreas-antonopulos-ovladenie-bitkoinom.html
|
|
|
|
guy_wonderful
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 19, 2017, 01:32:40 PM |
|
а где хранится информация о том кто подтверждает эту транзакцию, в этом же блоке или каждый майнер который подтверждает ее потом занесет информацию о подтверждении уже в свой блок?
Когда транзакция попадает в блок - считается, что она имеет 1 подтверждение. Когда находится следующий блок после того блока, в который включена транзакция, - считается что транзакция имеет 2 подтверждения. И т. д. http://cryptonyka.com/articles/53-andreas-antonopulos-ovladenie-bitkoinom.htmlЭто предохронитель от так называемого "double-spending". Чем больше потверждений тем меньше шанс того что тебя "надули".
|
|
|
|
Jaga-Jaga (OP)
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 19, 2017, 10:26:20 PM |
|
а где хранится информация о том кто подтверждает эту транзакцию, в этом же блоке или каждый майнер который подтверждает ее потом занесет информацию о подтверждении уже в свой блок?
Когда транзакция попадает в блок - считается, что она имеет 1 подтверждение. Когда находится следующий блок после того блока, в который включена транзакция, - считается что транзакция имеет 2 подтверждения. И т. д. http://cryptonyka.com/articles/53-andreas-antonopulos-ovladenie-bitkoinom.htmlТо есть количество подтверждений это на самом деле количество блоков которое было найдено после совершения транзакции? Я то думал что все ноды проверяют каждую транзакцию заносимую в блок. За книжку особенное спасибо, надеюсь после ее прочтения глупых вопросов задавать не буду.
|
|
|
|
guy_wonderful
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 19, 2017, 10:47:27 PM |
|
Ну книженция, не рыба не мяса. Упущены многие интересные моменты, например. Не уточняется как алгоритм выпекает адрес из ключа.
|
|
|
|
ThisNameIsAlreadyInUse
Newbie
Offline
Activity: 54
Merit: 0
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 20, 2017, 12:35:14 AM |
|
То есть количество подтверждений это на самом деле количество блоков которое было найдено после совершения транзакции?
Именно. Я то думал что все ноды проверяют каждую транзакцию заносимую в блок.
Ты правильно думал. Каждый узел проверяет каждый полученный блок полностю (все транзакции) и если хоть что-то в блоке не соответствует текущему консенсусу - то узел выкидывает этот блок нафиг.
|
|
|
|
Jaga-Jaga (OP)
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 20, 2017, 10:29:59 PM |
|
Я то думал что все ноды проверяют каждую транзакцию заносимую в блок.
Ты правильно думал. Каждый узел проверяет каждый полученный блок полностю (все транзакции) и если хоть что-то в блоке не соответствует текущему консенсусу - то узел выкидывает этот блок нафиг. Я имел ввиду что я думал что узел проверяет свой блок и как только блок заполнится то и все остальные узлы тоже проверяют этот блок и так происходит со всеми блоками. А вот еще какой вопрос, если я делаю узел который создает транзакцию с двойной тратой и записывает ее в свой блок как будто она правильная, как другие узлы могут(если могут) просигнализировать об этом и чтобы все узлы не признали эту транзакцию или этот блок?
|
|
|
|
A-Bolt
Legendary
Offline
Activity: 2324
Merit: 2353
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 21, 2017, 08:13:56 AM |
|
А вот еще какой вопрос, если я делаю узел который создает транзакцию с двойной тратой и записывает ее в свой блок как будто она правильная, как другие узлы могут(если могут) просигнализировать об этом и чтобы все узлы не признали эту транзакцию или этот блок?
Принимать или не принимать блок - это личное дело отдельно взятой ноды. Всё, что может сделать нода в отношении других нод - просто не передавать этот неправильный, по её мнению, блок другим нодам. Вообще, очевидно, что ситуация, когда часть нод считают блок валидным, а часть - нет, является ненормальной для сети и может привести к сплиту (форку) блокчейна.
|
|
|
|
ThisNameIsAlreadyInUse
Newbie
Offline
Activity: 54
Merit: 0
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 22, 2017, 03:43:10 AM |
|
А вот еще какой вопрос, если я делаю узел который создает транзакцию с двойной тратой и записывает ее в свой блок как будто она правильная, как другие узлы могут(если могут) просигнализировать об этом и чтобы все узлы не признали эту транзакцию или этот блок?
Никто никому ни о чем не должен сигнализировать. Каждый узел после проверки информации полученной от какого либо пира, будь то блок или транзакция, начисляет этому пиру штрафные очки по результатам проверки. Если всё ОК - то начисляется 0 очков. если всё плохо - то вплоть до 100. при достижении 100 (по умолчанию, можно поменять из командной строки) пир (его IP) помечается как ненадежный, узел рвет с ним соединение, и нескоро решит принимать входящие подключения с этого IP или сам коннектится к этому IP. Так же, узел будет пересылать всем другим подключенным к нему узлам полученную информацию только в случае, если блок и транзакции в нем не содержали дабл-спендов и все параметры соответствовали правилам. Представь себе ситуацию: тебе сосед Вася говорит: "за углом раздают по $100". Ты идешь, проверяешь - ничего там не раздают. Ты возвращаешься и бъешь Васе рожу. Ты после этого пойдешь к соседу Пете сказать ему, что за углом раздают по $100?
|
|
|
|
|