Bitcoin Forum
December 03, 2023, 10:48:42 AM
 Home Help Search Login Register More
 Show Posts Pages: [1] 2 3 4 5
 1 Bitcoin / Development & Technical Discussion / ECDSA adaptor signing and decryption on: April 02, 2022, 08:32:48 AM HiI am trying to understand this article. Can someone explain to me how the ECDSA adaptor signing is work? From the article:1.ECDSA adaptor signings' = (H(m) + R t p)r-1As I understand this is standard formula where x = t p - is a private key for the signature s'. So public key is P = t p G2.Decryption ECDSA adaptor signature:s = s' t-1 =  (H(m) + R t p)(rt)-1I can't understand this. Because it follows that: s = s' t-1 =  (H(m) + R t p)(rt)-1 = (H(m) t-1 + R p)r-1But this is not standart formula for ECDSA signature ((It should bes = (H(m) + R p)r-1I don't think the article is wrong. Most likely I'm missing something. Can anyone help with understanding these formulas?
 2 Other / Meta / Who is online graph on: April 03, 2021, 06:54:17 PM Hi allI am practicing with open source diagram libraries. Bitcointalk.org's visit statistics struck me as a fun source of data.Perhaps my experiments will seem funny to someone else.https://bttstat.multicoins.org/
 3 Other / Meta / [Rules] Clarification required on: March 04, 2020, 07:27:16 PM I have a question for the administrationQuote from: Quickseller on March 04, 2020, 06:11:01 PMIt appears that a lot of people have trouble telling the difference between the words personal and private. Should personal messages (on this forum) be treated as private by default?I am really confused in this terms. Because english is not my native language. In my native language (in Russian) words "personal" and "private" are synonymshttps://kartaslov.ru/%D1%81%D0%B8%D0%BD%D0%BE%D0%BD%D0%B8%D0%BC%D1%8B-%D0%BA-%D1%81%D0%BB%D0%BE%D0%B2%D1%83/%D0%BF%D1%80%D0%B8%D0%B2%D0%B0%D1%82%D0%BD%D1%8B%D0%B9Cинoнимы - synonymпpивaтный - privateпepcoнaльный - personal
 4 Local / Идеи / P2P биржа обмена битков на услуги on: March 03, 2020, 04:31:55 PM Как известно, у любого гражданина России могут запросто блокировать все банковские счета в досудебном порядке, после чего человек даже элементарно не сможет за ЖКУ заплатить если доход получает в рублях.Однако даже если человек получает доход в биткоинах, то блокировка счетов все равно сделает невозможным обмен на фиат (а значит и оплату тех же ЖКУ) например на локалбиткоинс, где с некоторых пор обмен крипты на наличные под запретом. То есть получив доход в крипте, если банки показывают фигу, единственный на сегодня вариант - искать где-то на стороне пацанов которые пообещают поменять битки на наличку и не убить тебя при этом... Как по мне - вариант не очень  Возникла идея.Что если создать биржу - аналог локалбиткоинса, где обмен битков будет не на электронные кошельки и не на банковский счет и даже не на фиат... Битки будут меняться на услуги по оплате фиатных счетов!То есть по сути это доска объявлений такого типа:Оплачу ЖКУ в городе Москва за биткоиныИЛИДам биткоины тому, кто купит мне пылесос в Эльдорадо.Биржа точно так же будет доверенным арбитром. Электронные услуги легко проверяются документально.В принципе подобный сервис на этом форуме уже рекламировался в далеком 2015 году но потом автор его забросил. Думаю потому что сервис был автоматический и завязан на АПИ яндекс кошелька. Яндекс это по сути тот же банк, поэтому криптовалютный сервис связанный с Яндексом обречен на провал. Поэтому я думаю может быть будет востребован сервис где будут взаимодействовать только человек с человеком.
 5 Local / Oбcyждeниe Bitcoin / Биткоин и анонимность on: February 25, 2020, 12:05:31 PM Навеяно вот этим постомQuote from: taikuri13 on February 24, 2020, 09:22:24 PMЛично я не хочу, чтобы государственные органы знали о том, что у меня есть аккаунт на бирже и то, что на карту выводятся средства от обмена криптовалют. Итак задача. Держатели биткоина не хотят чтобы государство узнало, что у них есть биткоин. У государства руки длинные и если не хочешь, чтобы тебя достали - надо оставаться анонимным для всех когда меняешь биткоин на что-либо.Вопрос: как можно остаться анонимным при обмене биткоина?Вариант ответа 1: не менять биткоины ни на что, сидеть на них и чего-нибудь ждать. Ждать как можно дольше, лучше всю жизнь, а биткоины завещать потомкам.Вариант ответа 2: не менять биткоины ни на что материальное, что требует доставки на домашний адрес. Менять например на цифровой контент: софт, видео, музыка, другая криптовалюта.Вариант ответа 3: менять биткоины переводом на ворованные кредитки и сразу обналичивать в банкомате.Вариант ответа 4: надеть на себя маску и идти менять биткоины на наличку у случайных менял в безлюдных местах.Не знаю, как кому, а мне кажется, что единственный тут реальный вариант это номер 2. Есть у кого-то может еще варианты?
 6 Other / Archival / test on: February 15, 2020, 01:54:40 PM kzv test
 7 Local / Кодеры / Что такое Taproot ? on: January 29, 2020, 09:26:28 AM Тема сэлфмодерейт чтобы залетных набивателей копипасты отсеивать. Посты пользователя investgroup будут удаляться не глядя на содержание.Теперь по теме.Буквально недавно, на днях, в код биткоина был сделан интересный pull request. Он добавляет в код функциональность которая описана в ставших теперь официальными бипах: BIP340, BIP341, BIP342. Предлагаю тем, кто понял о чем это все, поделиться своими знаниями в данной теме. Просьба писать своими словами или, если переводы, то с вашими комментариями. В английской ветке сабж обсуждают с прошлого года, а в нашей локали я ничего подобного не видел.Вот что пишут те кто все это придумал:ОригиналQuote* Taproot to make all outputs and cooperative spends indistinguishablefrom eachother.Перевод:* Taproot делает все выходы и общие траты неотлечимыми друг от друга.Комментарий:Что они черт возьми имеют в виду Я понимаю, что речь идет об выходах транзакции, а "общие траты" это наверное что-то про лайтинг нетворк. Про лайтинг я мало что знаю, но на примере обычных транзакций - что именно они собираются сделать?Идем дальше.Оригинал:Quote* Merkle branches to hide the unexecuted branches in scripts.Перевод:Использовать дерево меркла чтобы скрыть неиспозьзованные части скриптов.Комментарий:Ну тут более или менее понятно, что речь видимо идет о тратящем скрипте. Тратящий скрипт может быть большим со многими ветвлениями, а реально для подтверждения транзакции нужно только одно условие. Видимо придумали способ скрыть ненужные условия в дерево меркла с целью уменьшить размер транзакции в блокчейне.Оригинал:Quote* Schnorr signatures enable wallet software to use key aggregation/thresholds within one input.Перевод:Использование в мультисиг транзакциях для подписи вместо ECDSA другого алгоритма: подпись Шнора.Комментарий:Это видимо как раз для первого пункта. Я так понимаю, что эта вундервафля позволяет в тратящем скрипте мультисиг транзакции использовать всего одну общую подпись вместо кучи подписей от всех контрагентов. То есть например есть транзакция с условием "потратить битки можно только если тратящий скрипт подпишет Алиса и Боб"... То есть чтобы потратить такой выход сейчас, в транзакцию по любому надо записывать две подписи. А новый подход позволяет эти две подписи объединить в одну. Вот тут более или менее нормально объясняют https://bitcoin.stackexchange.com/questions/77234/schnorr-vs-ecdsaОригинал:Quote* Improvements to the signature hashing algorithm (including signing all input amounts).Перевод:Улучшение алгоритма хэширования подписи (добавление возможности подписать все входы)Комментарий:Судя по всему, это на случай когда в транзакции есть несколько входов каждый из которых требует свою подпись. Сейчас стандартным клиентом такую транзакцию видимо невозможно потратить за один раз. Тут я не в курсе дел. Если так, то понятно, что давно пора такое сделать.Оригинал:Quote* Replacing OP_CHECKMULTISIG(VERIFY) with OP_CHECKSIGADD, to support batch validation.Перевод:Замена одного опкода OP_CHECKMULTISIG(VERIFY) на другой OP_CHECKSIGADD чтобы обеспечить возможность групповой проверки.Комментарий:Сейчас OP_CHECKMULTISIG работает для проверки всех подписей. я так понимаю, что если сделают подпись Шнора, то OP_CHECKSIGADD будет уметь проверять ее.Оригинал:Quote* Tagged hashing for domain separation (avoiding issues like CVE-2012-2459 in Merkle trees).Перевод:Использование тэгов в разделении доменов при хэшировании (чтобы избежать инцидентов подобных CVE-2012-2459 для дерева Меркла)Комментарий:Тут ничего не могу сказать. Это что-то про безопасность алгоритмов хэширования при формировании дерева Меркла. Думаю не профессиональным криптоаналитикам это не особо интересно.Оригинал:Quote* Extensibility through leaf versions, OP_SUCCESS opcodes, and upgradable pubkey types.Перевод:Добавление новых возможностей таких как новый опкод OP_SUCCESS и обновляемые типы публичных ключей.Комментарий:Тут надо читать бипы, что они там добавляют. Я пока по диагонали прочитал и понял, что там хотят объединить p2sh и segwit адреса чтобы они не отличались друг от друга.
 8 Local / Новички / Из темы "Биткоинтолк умирает?" on: January 26, 2020, 07:57:04 PM Quote from: taikuri13 on January 26, 2020, 06:29:20 PMQuote from: madnessteat on January 26, 2020, 05:54:05 PM~Полностью согласен. Даже те пользователи, которые не использовали VPN изначально рано или поздно приходят к этому, т.к. криптовалюты и анонимность очень близки. VPN нельзя считать 100-% гарантом при целенаправленной атаке на пользователя, но в случае утечки базы IP адресов пользователей форума он может сыграть важную роль.Если будет утекать подобная база, то скорее всего в ней будет и первоначальный адрес регистрации аккаунта на этом форуме. А в этом случае - в огромном большинстве это будет настоящий IP-адрес, потому что для новичка регистрация чаще всего с него, и очень немногие смогли скрыть свой настоящий адрес именно на самом первом этапе. А какую полезную информацию можно извлечь из IP адреса моего провайдера у которого есть пара сотен таких адресов для пары миллионов абонентов на территории площадью с Францию?
 9 Economy / Reputation / Red trust removing. Conditions. on: December 23, 2019, 07:08:17 PM This topic is my question about: is it ethical to set conditions for tag removing?For example, if I have tagged user as a merit abuser or as a bot farmer and this user PM me with "Sorry, I won’t do that anymore."...Is it ethical to put a condition to the user like: "I will remove the tag if you will earn 10 merit from at least 5 users"?Or I should always ignore such PMs ?What do you do in such cases?
 10 Local / Идеи / Одноранговая сеть на базе WebRTC on: December 22, 2019, 03:13:47 PM Первое: тема самомодерируемая, все сообщения от investgroup буду удалять не читая.Теперь по теме. Коротко о технологии WebRTC, если кто-то не знает или чтобы просто освежить в памяти.WebRTC это технология, которая позволяет соединяться напрямую двум браузерамм (и другим приложениям которые поддерживают эту технологию). После соединения, иожно обмениваться любыми данными: стриминговые видео, просто файлы, текстовые сообщения... в общем любыми которые поддерживает браузер или приложение.Отличие WebRTC в том, что связь идет напрямую, а не через сервер мордокниги, вконтакта, ютуба и т.п. То есть это в чистом виде p2p соединение.Недостаток (один из...) в том, что для начала соединения нужно обменяться некими "сигнальными" данными. Обмен можно произвести хоть голубинной почтой, но обычно для этого используют промежуточные "сигнальные сервера". Эти сигнальные сервера являются уязвимым местом для возможных атак из вне или для всяких роскомпозоров.Есть идея: создать децентрализованную WebRTC сеть в которой сигнальными серверами, будут сами клиенты (браузеры, приложения).То есть совсем от настоящих сигнальных серверов отказаться не получится, но попытаться минимизировать их роль в поддержке сети.Сейчас идея на стадии идеи. Концепция более или менее уже понятна. Совсем нет времени на реализацию. Если кто-то захочет реализовать, то буду рад помочь и поучаствовать в разработке.
 11 Economy / Reputation / Should participants by tagged if BM tagged? on: December 19, 2019, 07:12:15 AM My question for DT1 and DT2: what do you think about participants who join the campaign if they see that the BM is tagged?My opinion: the red trust is synonym: "seems this user is a scammer".So if a person joins to a scammer knowing that the employer is a scammer, may by the person is scammer as well?
 12 Local / Кодеры / Новая биржа с исходным кодом on: November 29, 2019, 03:18:28 AM Несколько дней назад в открытый доступ выложили еще одну криптовалютную биржу https://github.com/uozef/nydaxСудя по описанию и скриншотам - довольно интересный проект. Реализованные фичиQuote        User registration    User KYC - "know your customer"    Dashboard    Drag and Drop on the UI commponents for trading platform    NodeJS / React JS based application    MySQL as database    RabbitMQ for messaging    API Layer for real-time trading    Supports long decimals    Multi-layout    Multi-theme (white, dark or black all right out of the box)    Supports SMS notifications (via Twillio)    Supports Email notifications    Supports Fiat payments (via Stripe)    Perfect for Crypto Currency Trading Platforms and ExchangesСудя по исходникам - написано на node.js, что тоже не может не радовать. Мне дали инвайт разработчика, но я пока просто послежу за проектом, коммиты или аудит делать - нет времени.
 13 Local / Русский (Russian) / Самые проницательные и смешные посты за 10 л& on: November 19, 2019, 12:01:24 PM В честь 10-летия форума, администратор собрал администратор призвал всех собрать для голосования самые интересные посты сделанные за это время. Ссылки на эти посты появляются теперь вместо рекламы под каждым верхним сообщением в обсуждениях.Ссылка для голосования здесь https://bitcointalk.org/captions.phpХотел сделать топик в разделе для новичков, но потом перенес сюда потому что для новичков ссылка закрыта.UPDT: ссылку на голосование теймос теперь убрал, но в английском топике нашлись добрые люди, которые собрали таки наиболее знаменитые посты в одном месте. Оставлю ее здесь, чтобы не утонула там https://bitcointalk.org/index.php?topic=4322078.0
 14 Bitcoin / Bitcoin Technical Support / How to sign raw transaction with openssl? on: November 06, 2019, 10:11:12 PM HelloI know that transactions with non standard script is can not be signed with bitcoin-core. So I am looking for the way to sign transaction with other methods that not required any programming. For example openssl.Look at this standard, but not signed transaction02000000018d5379c5460adf4a83e75b8c14c9832268aa4539b3ce3f102dd59f4fc154b0ea00000 00021029501ef2a97b855ab35898a6f5901c6538bab08d8244cd88b213e777095a17c6ffeffffff 01105522000000000017a914e4b3d47cc59f2c895a4c09107c98f8acc476c9688700000000when I signed it withCode:signrawtransactionwithwallet 02000000018d5379c5460adf4a83e75b8c14c9832268aa4539b3ce3f102dd59f4fc154b0ea0000000021029501ef2a97b855ab35898a6f5901c6538bab08d8244cd88b213e777095a17c6ffeffffff01105522000000000017a914e4b3d47cc59f2c895a4c09107c98f8acc476c9688700000000 I got this outputQuote020000000001018d5379c5460adf4a83e75b8c14c9832268aa4539b3ce3f102dd59f4fc154b0ea0 0000000171600142fcfe0ee792965d852f392c5fe53e2be71274ca8feffffff0110552200000000 0017a914e4b3d47cc59f2c895a4c09107c98f8acc476c968870247304402206a59b9212efdacc2e6367c4a45b4e26b3a73a64d564c983cb82edcd2ae545647022 04a5ec3e3e729009cfc855b0c23bf2468e423344993847a37394d3810a1c7f1bb0121029501ef2a 97b855ab35898a6f5901c6538bab08d8244cd88b213e777095a17c6f00000000So I guess that this is a signature partQuote0247304402206a59b9212efdacc2e6367c4a45b4e26b3a73a64d564c983cb82edcd2ae54564702204a5 ec3e3e729009cfc855b0c23bf2468e423344993847a37394d3810a1c7f1bb0121029501ef2a97b855ab35898a6f5901c6538bab08d8244cd88b213e777095a17c6fWhere this is my public key029501ef2a97b855ab35898a6f5901c6538bab08d8244cd88b213e777095a17c6fAnd this is my signature304402206a59b9212efdacc2e6367c4a45b4e26b3a73a64d564c983cb82edcd2ae54564702204a5 ec3e3e729009cfc855b0c23bf2468e423344993847a37394d3810a1c7f1bb01I do not known: what is 02And got main question: can I obtain this part with openssl or other well-known utilities?
16  Local / Кодеры / Создаем RAW транзакцию Биткоин с нуля on: November 02, 2019, 03:58:38 PM
Что-то я не встречал пошаговой инструкции на русском языке о том, как создать Биткоин транзакцию без программирования.
То есть понятно, что для создания стандартной транзакции отправки монет, можно пользоваться GUI кошельком или командой консоли типа sendtoaddress, но что если хочется создать стандартную транзакцию с нестандартным запирающим скриптом..?  Попробую тут описать весь процесс.

Пост получаяется длинным, поэтому буду дополнять постепенно.

Используемые источники
1. https://medium.com/coinmonks/how-to-create-a-raw-bitcoin-transaction-step-by-step-239b888e87f2
2. https://en.bitcoin.it/wiki/Protocol_documentation#tx
3. https://bitcoin.org/en/developer-reference#raw-transaction-format

Предисловие
Сам я кодер, поэтому и тему разместил в разделе "Кодеры", но надеюсь, что инструкция будет доступна для понимания именно "не кодерам". То есть попробую описать инструкцию для обычного человека у которого кроме блокнота и клиента bitcoin-qt ничего специального на компьютере не установлено.

Итак начнем.
Как я уже выше упомянул, из инструментов нам понадобятся следующие приложения:
1. Блокнот
2. bitcoin-qt
Это все.

Продолжаем.
Если вы не сын/дочь миллионера, то наверняка не захотите экспериментировать с настоящими биткоинами которые стоят денег. Поэтому запустите bitcoin-qt в тестовом режиме. Для этого

ИЛИ Сделайте ярлык на рабочий стол и в свойствах ярлыка (вкладка общие) после bitcoin-qt.exe допишите через пробел параметр
-testnet
ИЛИ Вместо свойства ярлыка можете создать файл bitcoin.conf в директории %APPDATA%/Bitcoin
В этом файле напишите текст
testnet=1

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

Когда кошелек пополнен
Ну вот с этого момента и начинается самое интересное. Зайдите в меню Помощь - Окно отладки - Консоль. Введите туда самую главную команду:
Code:
help
В консоли отобразятся все доступные команды вашего кошелька bitcoin-qt. Если хотите получить хелп по конкретной команде (с примерами использования), то введите в консоль например
Code:

Напомню, что наша цель создать транзакцию вручную. Чтобы посмотреть, что примерно у нас должно получиться в итоге, можете посмотреть какую-нибудь транзакцию из своего кошелька. Введите в консоли
Code:
listunspent

Увидите список непотраченных транзакций в вашем кошельке. Возьмите из списка txid любой транзакции и введите в консоль например
Code:
getrawtransaction 2e4308716eaaf6d27d2b91bfe2a78fc7819176966b619b6d8dc675f5373aa3d9

На выходе получите
Quote
0200000000010218f739a82336bfec14c75a55ef28260b493ea89711319ba799368380328ddbe0000000001716001408a8ba315488b40811b9886ff4396e0c94ce183efeffffff
02450f000000000017a9148536bef594948115aa8ea99ce415767df30f8a3a87a06f2200000000001976a9140bb5f9fffd2c0f7bbb9dd4116341f3fba10d041888ac02

Давайте на этом примере разберем: кто тут есть ху?

Заголовок транзакции
 Версия 02000000 первые 4 байта. Всегда одно и то же число Флаг 0001 показывает - есть ли в транзакции данные SegWit Число входов в транзакцию 02

Вход 1
 ИД входящей транзакции 18f739a82336bfec14c75a55ef28260b493ea89711319ba799368380328ddbe0 Номер выхода у входящей транзакции 00000000 Размер тратящего скрипта 17 длина scriptSig скрипта = 0x17 = 23 байта Тратящий скрипт 16001408a8ba315488b40811b9886ff4396e0c94ce183e sequence feffffff думаю лучше это название оставить на английском

Вход 2
 ИД входящей транзакции 6cc66a094304e399a9678dfbf1f88a8f2223c67d38ad0c69f5a8426d54ab479a Номер выхода у входящей транзакции 00000000 Размер тратящего скрипта 6a длина scriptSig скрипта = 0x6a = 106 байт
 sequence feffffff

Число выходов транзакции: 02

Выход 1
Количество сатошей в выходе 02450f0000000000 (0x00000000000f4502 = 1000706 = 0,01000706 BTC)
Длина запирающего скрипта 17 (0x17 = 23 байта)
Запирающий скрипт a9148536bef594948115aa8ea99ce415767df30f8a3a87

Выход 2
Количество сатошей в выходе a06f220000000000
Длина запирающего скрипта 19
Запирающий скрипт 76a9140bb5f9fffd2c0f7bbb9dd4116341f3fba10d041888ac

Число SegWit данных в первом входе: 02

SegWit блок 1
Длина данных: 47 (71 байт)

SegWit блок 2
Длина данных: 21 (33 байта)
Данные: 026f627029af8b372f3c81c5ae5cb4ce0971fb6d059e22351bc7191d9841a4156e

Число SegWit данных во втором входе: 00

Locktime: ac1f1800 (0x00181fac = 1580972)

Вот собственно и вся транзакция txid = 2e4308716eaaf6d27d2b91bfe2a78fc7819176966b619b6d8dc675f5373aa3d9. Далее я попробую описать по шагам процесс создания новой транзакции, которая будет тратить какой-нибудь из выходов.

Кстати говоря, декодировать RAW транзакцию конечно удобней не вручную, а в консоли:

Code:

Даст красивый результат:
Code:
{
"txid": "2e4308716eaaf6d27d2b91bfe2a78fc7819176966b619b6d8dc675f5373aa3d9",
"hash": "3dc884c4d56e4d940ce3d52c7e41956e26c5393ace11f594baaac7699938d79a",
"version": 2,
"size": 397,
"vsize": 315,
"weight": 1258,
"locktime": 1580972,
"vin": [
{
"txid": "e0db8d3280833699a79b311197a83e490b2628ef555ac714ecbf3623a839f718",
"vout": 0,
"scriptSig": {
"asm": "001408a8ba315488b40811b9886ff4396e0c94ce183e",
"hex": "16001408a8ba315488b40811b9886ff4396e0c94ce183e"
},
"txinwitness": [
"026f627029af8b372f3c81c5ae5cb4ce0971fb6d059e22351bc7191d9841a4156e"
],
"sequence": 4294967294
},
{
"vout": 0,
"scriptSig": {
},
"sequence": 4294967294
}
],
"vout": [
{
"value": 0.01000706,
"n": 0,
"scriptPubKey": {
"asm": "OP_HASH160 8536bef594948115aa8ea99ce415767df30f8a3a OP_EQUAL",
"hex": "a9148536bef594948115aa8ea99ce415767df30f8a3a87",
"reqSigs": 1,
"type": "scripthash",
"2N5PbScRn7p7m2HEs1Bh8tshbN7TpgtRvxM"
]
}
},
{
"value": 0.02256800,
"n": 1,
"scriptPubKey": {
"asm": "OP_DUP OP_HASH160 0bb5f9fffd2c0f7bbb9dd4116341f3fba10d0418 OP_EQUALVERIFY OP_CHECKSIG",
"hex": "76a9140bb5f9fffd2c0f7bbb9dd4116341f3fba10d041888ac",
"reqSigs": 1,
"type": "pubkeyhash",
"mgasj7m5vQWp4zixtHjiEgpGxex6ZCvhX8"
]
}
}
]
}

Создаем транзакцию

Итак, давайте создадим RAW транзакцию в блокноте!
Сначала определимся, какой выход мы будем тратить? Давайте рассмотрим по отдельности оба выхода.

Выход 1.

Code:
{
"value": 0.01000706,
"n": 0,
"scriptPubKey": {
"asm": "OP_HASH160 8536bef594948115aa8ea99ce415767df30f8a3a OP_EQUAL",
"hex": "a9148536bef594948115aa8ea99ce415767df30f8a3a87",
"reqSigs": 1,
"type": "scripthash",
"2N5PbScRn7p7m2HEs1Bh8tshbN7TpgtRvxM"
]
}
},

В этом выходе запирающий скрипт имеет вид
Code:
OP_HASH160 8536bef594948115aa8ea99ce415767df30f8a3a OP_EQUAL

В переводе на русский это означает:
Quote
биткоины с этого выхода сможет потратить тот, кто напишет в транзакции отпирающий скрипт хэш которого равен 8536bef594948115aa8ea99ce415767df30f8a3a. Отпирающий скрипт в добавок должен вернуть значение OP_TRUE.

Такие запирающие скрипты являются стандартными и называются P2SH (плачу за правильный хэша скрипта).

Выход 2.

Code:
{
"value": 0.02256800,
"n": 1,
"scriptPubKey": {
"asm": "OP_DUP OP_HASH160 0bb5f9fffd2c0f7bbb9dd4116341f3fba10d0418 OP_EQUALVERIFY OP_CHECKSIG",
"hex": "76a9140bb5f9fffd2c0f7bbb9dd4116341f3fba10d041888ac",
"reqSigs": 1,
"type": "pubkeyhash",
"mgasj7m5vQWp4zixtHjiEgpGxex6ZCvhX8"
]
}

тут запирающий скрипт другой
Code:
OP_DUP OP_HASH160 0bb5f9fffd2c0f7bbb9dd4116341f3fba10d0418 OP_EQUALVERIFY OP_CHECKSIG

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

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

Для более простого объяснения давайте потратим второй выход.

Первым делом, надо взять txid = 2e4308716eaaf6d27d2b91bfe2a78fc7819176966b619b6d8dc675f5373aa3d9
и перевернуть его с ног на голову! То есть
ИД входящей транзакции: d9a33a37f575c68d6d9b616b96769181c78fa7e2bf912b7dd2f6aa6e7108432e

На втором выходе транзакции имеется 0.022568 BTC, давайте потратим 0.02256 BTC (остальное оставим майнерам как комиссию)

Надо пересчитать сумму в сатоши, потом перевести в шестнадцатиричный вид, потом перевернуть с ног на голову 0.02256 BTC = 2256000 sat = 0x0000000000226C80 = 806С220000000000

Таким образом, на текущий момент, мы имеем следующие данные для транзакции:

Версия: 02000000
Флаг: не будет флага, шлем обычную транзакцию без SegWit
Число входов: 01

Вход 1
ИД входящей транзакции: 2e4308716eaaf6d27d2b91bfe2a78fc7819176966b619b6d8dc675f5373aa3d9
Номер выхода у входящей транзакции: 01000000 (второй выход имеет номер 1 потому что нумерация начинается с нуля)
Размер тратящего скрипта: (пока нет, см. далее)
Тратящий скрипт: (пока нет, см. далее)
sequence: feffffff (это для простоты пусть будет такая постоянная величина)

Число выходов транзакции: 01

Выход 1
Количество сатошей в выходе: 806С220000000000
Длина запирающего скрипта: (пока нет, см. далее)
Запирающий скрипт: (пока нет, см. далее)

Как видим, для транзакции не зватает скриптов.

Тратящий скрипт

Тратящим скриптом для второго выхода служит просто публичный ключ от адреса mgasj7m5vQWp4zixtHjiEgpGxex6ZCvhX8

Получим публичный ключ командой консоли
Code:

Quote
{
"scriptPubKey": "76a9140bb5f9fffd2c0f7bbb9dd4116341f3fba10d041888ac",
"ismine": true,
"iswatchonly": false,
"isscript": false,
"iswitness": false,
"iscompressed": true,
"label": "wallet",
"timestamp": 1566751726,
"hdkeypath": "m/0'/0'/132'",
"hdseedid": "40a447c698b59ef21f858f0b7362d0fc96a7bfae",
"hdmasterkeyid": "40a447c698b59ef21f858f0b7362d0fc96a7bfae",
"labels": [
{
"name": "wallet",
}
]
}

Получаем для входа нашей новой транзакции:

Размер тратящего скрипта: 21 (это в шестнадцатиричном виде, а в десятичном 33 байта)

Осталось написать запирающий скрипт

Я хочу послать биткоины на адрес 2MvAAds6k4M5Z6EvfyGJXfGrTP12hhT2TMc.
Получить скрипт для этого адреса можно командой консоли
Code:

Quote
{
"isvalid": true,
"scriptPubKey": "a9141ff37fd7b7cb61c95ca8e98ae3349661d4a95b0487",
"isscript": true,
"iswitness": false
}

Получаем для выхода нашей новой транзакции:

Длина запирающего скрипта: 17 (или 23 байта)
Запирающий скрипт: a9141ff37fd7b7cb61c95ca8e98ae3349661d4a95b0487

Почти конечный итог

Версия: 02000000
Флаг: не будет флага, шлем обычную транзакцию без SegWit
Число входов: 01

Вход 1
ИД входящей транзакции: d9a33a37f575c68d6d9b616b96769181c78fa7e2bf912b7dd2f6aa6e7108432e
Номер выхода у входящей транзакции: 01000000
Размер тратящего скрипта: 21
sequence: feffffff

Число выходов транзакции: 01

Выход 1
Количество сатошей в выходе: 806С220000000000
Длина запирающего скрипта: 17
Запирающий скрипт: a9141ff37fd7b7cb61c95ca8e98ae3349661d4a95b0487

Locktime: 00000000 (этот параметр можно делать любым, он игнорируется если sequence=feffffff или sequence=ffffffff )

Теперь открываем блокнот и пишем все в одну строчку
Quote

Наконец-то...

Наша транзакция почти готова, теперь ее надо подписать. Делается это опять в консоли
Code:

На выходе получим подписанную транзакцию!

Quote
{
"complete": true
}

УРА!

Ну вот и все. Теперь можно отправить подписанную транзакцию в сеть командой консоли
Code:

Ответом получим txid
Quote

 17 Local / Идеи / Обмен шифрованными сообщениями в Биткоин on: October 14, 2019, 07:16:15 AM КороткоВ сети биткоин можно отправлять и получать зашифрованные сообщения используя для этого общедоступные данные об открытых ключах. Зашифрованные данные можно записывать в любое общедоступное хранилище, в том числе и непосредственно в блокчейн. ВведениеВ сети биткоин когда вы отправляете стандартную транзакцию со своего адреса, то засвечиваете всему миру свой "публичный ключ". Это не баг и не фича, это так задумано изначально. С помощью публичного ключа весь мир может удостовериться в том, что вы тратите свои биткоины, а не чужие...Имея в руках ваш публичный ключ, любой человек в мире может отправить вам зашифрованное сообщение, расшифровать которое сможет только тот, у кого есть приватные ключи, то есть отправитель и получатель. Алгоритм1. Алиса хочет получить сообщение от Боба и для этого дает Бобу (через форум или голубиной почтой) свой биткоин адрес, с которого когда-либо были проведены исходящие транзакции.2. Боб получает по адресу любую исходящую транзакцию Алисы и извлекает от туда публичный ключ.3. Боб считает общий приватный ключ по формуле:Code:общий_ключ_для_шифрования = публичный_ключ_Алисы * приватный_ключ_Боба4. Боб шифрует сообщение общим ключем и записывает это сообщение в гуглдок или в любое другое облако или даже в тот же блокчейн. Туда же записывается публичный ключ Боба. 5. Боб дает Алисе ссылку на сообщение (через форум или голубиной почтой)6. Алиса рассчитывает общий приватный ключ по формуле:Code:общий_ключ_для_шифрования = публичный_ключ_Боба * приватный_ключ_АлисыМатематика биткоина такова, что общие приватные ключи получаются одинаковыми и поэтому Алиса сможет расшифровать сообщение.РеализацияМожно хранить данные в централизованном хранилище, тогда сервис можно сделать бесплатным. Программирования тут на неделю, главное - маркетинг. Думаю такой сервис должен понравиться массовой аудитории, ведь конфиденциальность сообщений обеспечена строгой математикой. Даже владелец сервиса, тот же гугол, не смогут эти данные прочитать и каким-либо образом возбудиться чтобы слить их "куданадо"...Если хранить данные в блокчейне, то отправка таких писем будет стоить денег и размер писем будет ограничен. Зато данные будут полностью защищены от потери и удаления. Тут не знаю - будет ли это пользоваться спросом?
 18 Local / Идеи / [идея] Как избавить форум от шитпостеров on: October 12, 2019, 02:11:34 AM Создаем подписную баунти с оплатой 0.001 дог = 1 пост.Правила: 1. нубы принимаются.2. писать только в одной специально выделенной ветке в "Разном".3. все посты строго на русском4. писать можно любую абракадабру5. любое количество постов в день6. не более 70 символов в сообщенииИзюминки:7. Оплата только за уникальный текст. Уникальность оценивается среди постов участников.8. Обязательна носить подпись: "Я сраный спамер и шитпостер".Готов быть инвестором. Кто возьмется быть менеджером?
 19 Bitcoin / Project Development / [ANN] BlockchainData Browser extension on: October 04, 2019, 01:34:32 PM I have make the Firefox extension that for save and browse data in Bitcoin blockchainhttps://yadi.sk/d/a3xM9BCepP4nBwSource code herehttps://github.com/3s3s/blockchaindataThe extension is working with RPC. It require access to full synchronized Bitcoin (or any other Bitcoin-fork) node.This is recommended bitcoin.conf settingsCode:testnet=1server=1rpcbind=127.0.0.1rpcallowip=127.0.0.1rpcuser=rpc_btc_testrpcpassword=rpc_btc_password_testtxindex=1[test]rpcport=18332limitancestorcount=1000limitdescedantcount=1000walletrejectlongchains=0After installation extension will appear as small icon. It needed click to the icon and will appear the window with intuitive interfaceYou can choose file (html or small picture) and click "Send Request" button. After some time you will see the result or error message.The extension is working with addresses like http://tbtc/For example, if extension is installed then link will clickablehttp://tbtc/8af6633160b982a0b0b4d4962ad28e0d5b3dd97e05e27cc2dd64ec0c56820df5
 20 Local / Идеи / Убийцу миксеров может сделать? on: September 15, 2019, 06:28:00 PM Если будет сайт где вводишь два адреса, нажимаешь кнопку - в результате показывается связаны эти адреса или нет? Если связаны, то выводится вся цепочка транзакций. Такой сайт сделает бесполезными сразу все миксеры. Как думаете - нужен такой?Потом до кучи, можно объединить этот сайт с сервисами которые собирают адреса скаммеров, прикрутить АПИ, тогда любая биржа и любой сервис сможет отследить перевод скаммера в реальном времени... Потом запилить еще туда систему траста к адресам...[бредовая фантазия]Потом глядишь, в далеком будущем, может майнеры договорятся не включать в блоки связанные со скаммерами транзакции, а потом и разрабы битка включат в код проверку транзакций на скамность...[/бредовая фантазия]Как вам идея?
 Pages: [1] 2 3 4 5