Перейти к содержанию

polym0rph

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

,

У меня все открывается. Какой браузер, какая ошибка возникает?

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

  • 2 года спустя...

Такой вопрос по статье - где именно исполняется описанный в конце скрипт биткоин?
 

Отправитель получает открытый ключ получателя (pubKey) общаясь с ним. Когда сумма монет была отправлена на IP-адрес, получатель должен предоставить только подпись (sig). Подпись сверяется с открытым ключом в scriptPubKey.

Например, кто может объяснить чем именно выполняются действия "получатель должен предоставить только подпись" и какой именно софт производит "сверку с открытым ключем в scriptPubKey"?

Изменено пользователем uncleandy
Ссылка на комментарий
Поделиться на другие сайты

 

 

где именно исполняется описанный в конце скрипт биткоин?

Тот тип транзакций, про который вы цитируете, используется крайне редко, так как отправка по IP - штука ненадежная. В over 99.999...% случаев транзакции отправляются на адреса Bitcoin.

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

 

 

 

какой именно софт производит "сверку с открытым ключем в scriptPubKey"?

Это может быть любой софт, поддерживающий общепринятую реализацию протокола Bitcoin. В идеале официальный кошелек, но вы можете на коленке написать свой собственный клиент сети.

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

валидность транзакции проверяется всей цепочкой узлов, через которую она проходит.

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

 

Да и какой смысл делать такую проверку на промежуточных узлах? По идее, существенным является только проверка транзакции при формировании блока, т.к. именно включение транзакции в блок является ее подтверждением. Соответственно, тогда и второй вопрос - а как такие внешние условия в транзакции можно проверить при ее подтверждении у майнера? Откуда он будет брать для этого данные?

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

 

 

Т.е. валидность транзакции проверяется не только при ее подтверждении (при формировании блока в процессе майнинга), но и при распространении?

Да, конечно, проверяется валидность с точки зрения соответствия протоколу. Для банальной защиты от спама и кривых транзакций.

 

 

 

Но как на этих промежуточных узлах можно проверить какие-то внешние условия?

Что за внешние условия?

 

 

 

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

Сеть одноранговая, все узлы равноправны. Официальный клиент и все более-менее приличные такую проверку делать обязаны, чтобы по сети не гуляла всякая хрень. Естественно, вы можете не включать проверки в собственную реализацию клиента.

 

 

 

Соответственно, тогда и второй вопрос - а как такие внешние условия в транзакции можно проверить при ее подтверждении у майнера?

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

 

Возможно мы друг друга не поняли. Проверку подписи для использования монет можно сделать только при наличии закрытого ключа, который теоретически должен быть только у получателя транзакции. Но попытаться предъявить ключ может кто угодно.

Все остальные узлы проверяют только ее техническое соответствие протоколу (то есть, например, что в качестве хэшей не вбит какой-то левый набор символов).

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

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

Возможно я не очень хорошо понимаю суть скриптовых возможностей транзакций биткоина.

 

Скриптовый язык в транзакции может работать только с данными которые уже включены в транзакцию? Или он может использовать какие-то внешние по отношению к своей транзакции данные?

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

В транзакциях нет никакого скриптового языка, там только адреса, хэши и сумма. У самого клиента есть набор команд API, с помощью которых можно более гибко создавать транзакции.

http://bits.media/raw_transactions/

 

Статья немного устарела, сейчас набор команд расширился, но в целом соответствует.

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

В транзакциях нет никакого скриптового языка, там только адреса, хэши и сумма. У самого клиента есть набор команд API, с помощью которых можно более гибко создавать транзакции.

http://bits.media/raw_transactions/

А вот это что такое - https://en.bitcoin.it/wiki/Script?

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

 

 

А вот это что такое

Это сложно назвать языком, просто список обязательных и не совсем параметров транзакции для обработки клиентом, часть спецификации протокола. Собственно, при получении транзакции клиент их и обрабатывает - если видит свой адрес, то расшифровывает, если не свой но все правильно - распинывает дальше по сети, если считает что неправильно - дропает.

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

Если вы программист, там вроде бы ничего сложного нет :rolleyes: А гуевые инструменты не видел.

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

Собственно, при получении транзакции клиент их и обрабатывает - если видит свой адрес, то расшифровывает, если не свой но все правильно - распинывает дальше по сети, если считает что неправильно - дропает.

Смутно вроде начинаю понимать. А есть где-нибудь описание данного процесса на реальном примере?

 

 

Если вы программист, там вроде бы ничего сложного нет

Да - программист. Поэтому и хочу досконально разобраться.

Изменено пользователем uncleandy
Ссылка на комментарий
Поделиться на другие сайты

.

 

А есть где-нибудь описание данного процесса на реальном примере?

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

На всякий случай гляньте в ветке разработки

https://forum.bits.media/index.php?/forum/55-razrabotka/

А так и в той же вики должно быть описание процесса.

 

 

 

Да - программист.

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

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

По скрипту вроде-бы понял. Script может работать только с данными текущей транзакции. Другие дело что транзакция может предварительно подготавливаться множеством участников, которые могут размещать в ней свои подписи и публичные ключи. А скрипт будет указывать что и в каком порядке проверять для того, что-бы проверить что транзакция правильная.

Еще один вопрос всплыл. Вроде-бы по теме...
 

В тех случаях когда на выходах транзакции обрабатывается не вся сумма BTC указанная на входе, любой необработанный остаток BTC признаётся комиссией за транзакцию: майнер, сгенерировавший блок в который включена запись о данной транзакции — получит эти BTC.

 

Что-то я не совсем понимаю. Ведь подтверждений транзакции будет множество - т.е. ее в свой блок включит не один майнер (в моем кошельке для некоторых транзакций есть более 100000 подтверждений). Тогда кто из майнеров и в каком количестве получит комиссию? Только тот, который сделает первое подтверждение транзакции?

Изменено пользователем uncleandy
Ссылка на комментарий
Поделиться на другие сайты

 

 

Что-то я не совсем понимаю. Ведь подтверждений транзакции будет множество - т.е. ее в свой блок включит не один майнер (в моем кошельке для некоторых транзакций есть более 100000 подтверждений). Тогда кто из майнеров и в каком количестве получит комиссию? Только тот, который сделает первое подтверждение транзакции?

 

Тут предельно понятно, что тот майнер(или пул) который и вставил(нашел) блок в цепь, тот и получит комиссию, которая и образовалась от разности выходных и входных транзакций  + награду за блок. И не тот получает этот остаток кто первым подтвердил транзакцию, а только тот кто нашел блок

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

И не тот получает этот остаток кто первым подтвердил транзакцию, а только тот кто нашел блок

Стоп-стоп-стоп! А разве подтверждением транзакции является не факт майнинга блока с этой транзакцией в нем?

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

 

 

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

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

 

 

 

Ведь подтверждений транзакции будет множество - т.е. ее в свой блок включит не один майнер (в моем кошельке для некоторых транзакций есть более 100000 подтверждений).

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

 

 

 

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

Да, только первый и один раз.

 

 

 

тот и получит комиссию, которая и образовалась от разности выходных и входных транзакций + награду за блок.

Комиссия это не "остаток", а фиксированная величина, которая явно указывается в каждой транзакции при ее создании. Можно указать любую величину, от нуля до баланса кошелька минус сумма транзакции. Майнер, собравший блок, получает сумму комиссий за все транзакции в этом блоке. Сумма входов всегда равна сумме выходов. "Сдача" же с не полностью потраченных входов отправляется обратно владельцу входов.

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

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

А можете об этом рассказать подробнее? Насколько я понимаю "подтверждение транзакции" подразумевает ее проверку на корректность всех входов и подписей. Как-же тогда второй блок может "подтверждать" эту транзакцию если при его майнинге не происходит ее проверки?

 

Хотя, у меня есть вариант ответа... Когда майнер получает очередной блок из сети, он его проверяет на корректность, в том числе, проверяет на корректность все транзакции в нем. И сохраняет у себя с пометкой "проверен". Таким образом получается, что майнер в конечном итоге, производит проверку всех предыдущих транзакций до того, как приступит к майнингу очередного блока. Я правильно понял?

Изменено пользователем uncleandy
Ссылка на комментарий
Поделиться на другие сайты

 

 

А можете об этом рассказать подробнее? Насколько я понимаю "подтверждение транзакции" подразумевает ее проверку на корректность всех входов и подписей. Как-же тогда второй блок может "подтверждать" эту транзакцию если при его майнинге не происходит ее проверки?

 

Вы задаете совсем уж очевидные вопросы, которые расписаны в большинстве теоретических статей, если их читать вминательно. Количество блоков в цепочке после блока с транзакцией (подтверждений) - это основа надежности блокчейна.

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

 

 

 

Когда майнер получает очередной блок из сети, он его проверяет на корректность, в том числе, проверяет на корректность все транзакции в нем. И сохраняет у себя с пометкой "проверен". Таким образом получается, что майнер в конечном итоге, производит проверку всех предыдущих транзакций до того, как приступит к майнингу очередного блока.

Примерно так. Не только майнер, а любой "полный" клиент сети, возможности у них одинаковые. Майнер может набирать транзакции в блок произвольно, по умолчанию - с приоритетом по комиссии, но можно настроить и другие параметры отбора. Например, некоторые пулы были неоднократно замечены в приоритетном пропихивании "своих" транзакций.

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

  • 2 недели спустя...

Всем спасибо за пояснения!

Теперь возник вопрос, ответ на который очевиден, если не разбираться в сути...

Во входах и выходах транзакции используются скрипты bitcoin (scriptSig и scriptPubKey). Насколько я понимаю, они могут быть произвольными. Но тогда я не понимаю каким образом можно определить на какой именно адрес производиться вывод биткоинов? В статье еще описан перевод на IP-адрес. Вот это вообще не понятно. Кто может пояснить каким образом по script в транзакции можно понять куда именно переводятся биткоины?

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

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

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

 

 

откуда взять адрес назначения выхода

В классическом случае товарищ пользователь вводит его руками. Про API сами ищите:)

В чем вообще вопрос?

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

В классическом случае товарищ пользователь вводит его руками. Про API сами ищите :)

В чем вообще вопрос?

Еще раз. Есть адрес, на который переводяться биткоины. Как из цепочки транзакций понять на какой адрес переводились биткоины в конкретной транзакции по конкретному выходу? Там-же есть только количество биткоинов и Script, который может быть любым, по идее.

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

Еще раз. Есть адрес, на который переводяться биткоины. Как из цепочки транзакций понять на какой адрес переводились биткоины в конкретной транзакции по конкретному выходу? Там-же есть только количество биткоинов и Script, который может быть любым, по идее.

 

Давай разбираться. Начнем с простого. У транзакции есть один вход и один выход. Здесь все просто, видно с какого адреса на какой идут средства. Далее имеет два адреса входом и два выходом.  Возьмем круглые цифры на вход 1+1, выход 1.5+0.5 (комиссию не трогаем, допустим мы ее не платим). Чуток сложнее, но тоже понятно. А теперь возьмем пять входов 1+1+1+1+1, и пять выходов 2+0.5+0.5+1.5+0.5. Вот тут уже проблема... С каких адресов(входов) пошла сумма в 2 биткойна на этот первый выход? Да, с любых  двух, берем два любых входа, складываем, и вот они и могут быть этой суммой. О других выходах, с более мелкими значениями еще сложнее судить. Здесь главное, чтоб адреса участвующие в транзакциях использовались единожды. Тогда невозможно, при наличии большого количества входов и выходов, связать что либо. Или, точнее, 100% утверждать, что, вот с этого адреса, биткойн пошел на этот.

Изменено пользователем Sorr0s
Ссылка на комментарий
Поделиться на другие сайты

Существует способ формирования транзакции на основе коллективного объединения. Называется это Coinjoin. Суть способа в том, чтобы создать транзакцию из данных предоставленных  группой людей. Каждый участник формирует свою часть транзакции. Берет свои выход(ы), из них создает вход(ы), подписывает приватным ключем(или ключами, если входов несколько) и формирует выходные данные( адрес получателя и скрипт с условиями, что сделать чтоб потратить). И так делает каждый участник, скидывает в общую кучу, которая формируется в транзакцию и отправляется в сеть. Понять кто, куда, сколько отправляет нереально. Выше пост об этом. В транзакции нет каких то особых идентификаторов, которые бы показывали, что вот этот вход связан с этим выходом. Остается лишь догадываться, прикидывая что куда, пытаясь разглядеть хоть какие то признаки связи, то ли в суммах, то ли в адресах. И чем их больше в транзакции, тем невозможнее.

Изменено пользователем Sorr0s
Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Similar Topics

    • Обсуждение происходящего в Украине

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

      в Флейм

    • Сложные инвестиционные продукты на криптобиржах — обсуждение

      Пока (и если) эта тема не наполнится контентом в существенной степени, я сперва хотел вести ее во флейме. Иначе мои претензии объять необъятное показались бы особенно смешными. Чем если бы это было в разделе Стейкинг, Фарминг.   Но передумал. Ибо потом, после переноса, читателям надо было бы снова заново привыкать, к новому расположению — зачем это?  Итак, не судите строго, если заброшу, я и так много чего забросил.   Немного терминологии, про APR и APY (что еще добавить?).

      в Стейкинг, Фарминг

    • Юрист Билл Морган: «Транзакции Ripple ODL — не инвестиционные контракты»

      Австралийский юрист, защищающий интересы владельцев криптовалюты XRP, заявил, что транзакции с этой монетой через решение Ripple On-Demand Liquidity (ODL) не могут нарушать законы о ценных бумагах, как настаивают чиновники. Будучи активным сторонником криптовалюты Ripple, Билл Морган (Bill Morgan) считает, что если XRP используется для платежей в сервисе Ripple ODL, то эти транзакции не имеют ничего общего с инвестиционными контрактами. Клиентами ODL являются не инвесторы, а частные лица, к

      в Новости криптовалют

    • Национальное бюро расследований Финляндии отследило анонимные транзакции Monero

      Финский новостной канал MTV Uutiset сообщил, что Национальному бюро расследований Финляндии (KRP) удалось отследить транзакции с использованием конфиденциальной криптовалюты Monero (XMR). Журналисты рубрики MTV Crime Reporters канала MTV Uutiset сообщили со ссылкой на заявление регионального прокурора Паси Вайнио (Pasi Vainio), что экспертам KRP удалось отследить транзакции с использованием XMR, а также идентифицировать ее конечного получателя. До этого Monero считалась «неотслеживаемой кри

      в Новости криптовалют

    • BitPay: Платежные транзакции с криптовалютой XRP увеличились на 42%

      Оператор криптовалютных платежей BitPay объявил, что XRP стала одним из самых часто используемых для совершения платежей криптоактивом — количество платежных транзакций выросло на 42%. В прошлом году с XRP было проведено 7310 платежей на счет юрлиц в 113 отраслях мировой экономики.    Топ-10 наиболее часто используемых монет, по данным BitPay, возглавил биткоин — 296 689 платежей. Лайткоин на втором месте с 213 647 транзакций, а эфир на третьем с всего 81 619 операциями (почти в три

      в Новости криптовалют

×
×
  • Создать...