Bitcoin Forum
December 03, 2023, 10:48:42 AM *
News: Mixers will no longer be allowed after Jan 1
 
  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
Hi

I am trying to understand this article. Can someone explain to me how the ECDSA adaptor signing is work?

From the article:

1.
ECDSA adaptor signing
s' = (H(m) + R t p)r-1

As 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 G

2.
Decryption ECDSA adaptor signature:
s = s' t-1 =  (H(m) + R t p)(rt)-1

I 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-1

But this is not standart formula for ECDSA signature ((
It should be
s = (H(m) + R p)r-1

I 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 all

I 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 administration

It 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 synonyms

https://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%B9



Cинoнимы - synonym
пpивaтный - private
пepcoнaльный - personal

4  Local / Идеи / P2P биржа обмена битков на услуги on: March 03, 2020, 04:31:55 PM
Как известно, у любого гражданина России могут запросто блокировать все банковские счета в досудебном порядке, после чего человек даже элементарно не сможет за ЖКУ заплатить если доход получает в рублях.
Однако даже если человек получает доход в биткоинах, то блокировка счетов все равно сделает невозможным обмен на фиат (а значит и оплату тех же ЖКУ) например на локалбиткоинс, где с некоторых пор обмен крипты на наличные под запретом. То есть получив доход в крипте, если банки показывают фигу, единственный на сегодня вариант - искать где-то на стороне пацанов которые пообещают поменять битки на наличку и не убить тебя при этом... Как по мне - вариант не очень  Sad

Возникла идея.
Что если создать биржу - аналог локалбиткоинса, где обмен битков будет не на электронные кошельки и не на банковский счет и даже не на фиат... Битки будут меняться на услуги по оплате фиатных счетов!
То есть по сути это доска объявлений такого типа:

Оплачу ЖКУ в городе Москва за биткоины

ИЛИ

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

Биржа точно так же будет доверенным арбитром. Электронные услуги легко проверяются документально.

В принципе подобный сервис на этом форуме уже рекламировался в далеком 2015 году но потом автор его забросил. Думаю потому что сервис был автоматический и завязан на АПИ яндекс кошелька. Яндекс это по сути тот же банк, поэтому криптовалютный сервис связанный с Яндексом обречен на провал.
Поэтому я думаю может быть будет востребован сервис где будут взаимодействовать только человек с человеком.
5  Local / Oбcyждeниe Bitcoin / Биткоин и анонимность on: February 25, 2020, 12:05:31 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 indistinguishable
from eachother.

Перевод:
* Taproot делает все выходы и общие траты неотлечимыми друг от друга.

Комментарий:
Что они черт возьми имеют в видуHuh
Я понимаю, что речь идет об выходах транзакции, а "общие траты" это наверное что-то про лайтинг нетворк. Про лайтинг я мало что знаю, но на примере обычных транзакций - что именно они собираются сделать?

Идем дальше.
Оригинал:
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
~
Полностью согласен. Даже те пользователи, которые не использовали 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
Hello

I 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 transaction
02000000018d5379c5460adf4a83e75b8c14c9832268aa4539b3ce3f102dd59f4fc154b0ea00000 00021029501ef2a97b855ab35898a6f5901c6538bab08d8244cd88b213e777095a17c6ffeffffff 01105522000000000017a914e4b3d47cc59f2c895a4c09107c98f8acc476c9688700000000

when I signed it with
Code:
signrawtransactionwithwallet 02000000018d5379c5460adf4a83e75b8c14c9832268aa4539b3ce3f102dd59f4fc154b0ea0000000021029501ef2a97b855ab35898a6f5901c6538bab08d8244cd88b213e777095a17c6ffeffffff01105522000000000017a914e4b3d47cc59f2c895a4c09107c98f8acc476c9688700000000

I got this output
Quote
020000000001018d5379c5460adf4a83e75b8c14c9832268aa4539b3ce3f102dd59f4fc154b0ea0 0000000171600142fcfe0ee792965d852f392c5fe53e2be71274ca8feffffff0110552200000000 0017a914e4b3d47cc59f2c895a4c09107c98f8acc476c968870247304402206a59b9212efdacc2e6367c4a45b4e26b3a73a64d564c983cb82edcd2ae545647022 04a5ec3e3e729009cfc855b0c23bf2468e423344993847a37394d3810a1c7f1bb0121029501ef2a 97b855ab35898a6f5901c6538bab08d8244cd88b213e777095a17c6f00000000

So I guess that this is a signature part
Quote
0247304402206a59b9212efdacc2e6367c4a45b4e26b3a73a64d564c983cb82edcd2ae54564702204a5 ec3e3e729009cfc855b0c23bf2468e423344993847a37394d3810a1c7f1bb0121029501ef2a97b855ab35898a6f5901c6538bab08d8244cd88b213e777095a17c6f

Where this is my public key
029501ef2a97b855ab35898a6f5901c6538bab08d8244cd88b213e777095a17c6f

And this is my signature
304402206a59b9212efdacc2e6367c4a45b4e26b3a73a64d564c983cb82edcd2ae54564702204a5 ec3e3e729009cfc855b0c23bf2468e423344993847a37394d3810a1c7f1bb01


I do not known: what is 02
And got main question: can I obtain this part with openssl or other well-known utilities?


15  Bitcoin / Bitcoin Technical Support / RAW transaction format - nead help on: November 02, 2019, 04:35:36 PM
Hello

I have read this
https://en.bitcoin.it/wiki/Protocol_documentation#tx
https://bitcoin.org/en/developer-reference#raw-transaction-format

and still can not understand one byte in my RAW transaction (testnet)
Code:
getrawtransaction 2e4308716eaaf6d27d2b91bfe2a78fc7819176966b619b6d8dc675f5373aa3d9
Quote
0200000000010218f739a82336bfec14c75a55ef28260b493ea89711319ba799368380328ddbe00 00000001716001408a8ba315488b40811b9886ff4396e0c94ce183efeffffff6cc66a094304e399 a9678dfbf1f88a8f2223c67d38ad0c69f5a8426d54ab479a000000006a473044022062e7ba2ec9a 4a26fba867624b7786f6e1cd11363186bcf73a5a163b2f32f1d1e02204 332986870d8e8d54545313deabab49586d851f7c74c185026b731b0e172d20b012103903c1d380a 2b05c96e8ad40cbc8a1b647cadef7a1deff8df6b8528a337465cdffeffffff0202450f000000000 017a9148536bef594948115aa8ea99ce415767df30f8a3a87a06f2200000000001976a9140bb5f9 fffd2c0f7bbb9dd4116341f3fba10d041888ac024730440220724686754b2c80564048cbafab84e07ab91f9e9a64c1baca8e726de70209e9cd02201f9 1ac61ce789e7032c2561dc24e26adca029d6449d82e96c252ace18d4dbba40121026f627029af8b 372f3c81c5ae5cb4ce0971fb6d059e22351bc7191d9841a4156e00ac1f1800

Last 4 bytes is a locktime, but what is the leading zero byte??

Code:
decoderawtransaction 0200000000010218f739a82336bfe...

Quote

{
  "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": [
        "30440220724686754b2c80564048cbafab84e07ab91f9e9a64c1baca8e726de70209e9cd02201f9 1ac61ce789e7032c2561dc24e26adca029d6449d82e96c252ace18d4dbba401",
        "026f627029af8b372f3c81c5ae5cb4ce0971fb6d059e22351bc7191d9841a4156e"

      ],
      "sequence": 4294967294
    },
    {
      "txid": "9a47ab546d42a8f5690cad387dc623228f8af8f1fb8d67a999e30443096ac66c",
      "vout": 0,
      "scriptSig": {
        "asm": "3044022062e7ba2ec9a4a26fba867624b7786f6e1cd11363186bcf73a5a163b2f32f1d1e0220433 2986870d8e8d54545313deabab49586d851f7c74c185026b731b0e172d20b[ALL] 03903c1d380a2b05c96e8ad40cbc8a1b647cadef7a1deff8df6b8528a337465cdf",
        "hex": "473044022062e7ba2ec9a4a26fba867624b7786f6e1cd11363186bcf73a5a163b2f32f1d1e02204 332986870d8e8d54545313deabab49586d851f7c74c185026b731b0e172d20b012103903c1d380a 2b05c96e8ad40cbc8a1b647cadef7a1deff8df6b8528a337465cdf"
      },
      "sequence": 4294967294
    }
  ],
  "vout": [
    {
      "value": 0.01000706,
      "n": 0,
      "scriptPubKey": {
        "asm": "OP_HASH160 8536bef594948115aa8ea99ce415767df30f8a3a OP_EQUAL",
        "hex": "a9148536bef594948115aa8ea99ce415767df30f8a3a87",
        "reqSigs": 1,
        "type": "scripthash",
        "addresses": [
          "2N5PbScRn7p7m2HEs1Bh8tshbN7TpgtRvxM"
        ]
      }
    },
    {
      "value": 0.02256800,
      "n": 1,
      "scriptPubKey": {
        "asm": "OP_DUP OP_HASH160 0bb5f9fffd2c0f7bbb9dd4116341f3fba10d0418 OP_EQUALVERIFY OP_CHECKSIG",
        "hex": "76a9140bb5f9fffd2c0f7bbb9dd4116341f3fba10d041888ac",
        "reqSigs": 1,
        "type": "pubkeyhash",
        "addresses": [
          "mgasj7m5vQWp4zixtHjiEgpGxex6ZCvhX8"
        ]
      }
    }
  ]
}





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:
help sendtoaddress

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

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

На выходе получите
Quote
0200000000010218f739a82336bfec14c75a55ef28260b493ea89711319ba799368380328ddbe0000000001716001408a8ba315488b40811b9886ff4396e0c94ce183efeffffff
6cc66a094304e399a9678dfbf1f88a8f2223c67d38ad0c69f5a8426d54ab479a000000006a473044022062e7ba2ec9a4a26fba867624b7786f6e1cd11363186bcf73a5a163b2f32f1d1e02204 332986870d8e8d54545313deabab49586d851f7c74c185026b731b0e172d20b012103903c1d380a 2b05c96e8ad40cbc8a1b647cadef7a1deff8df6b8528a337465cdffeffffff02
02450f000000000017a9148536bef594948115aa8ea99ce415767df30f8a3a87a06f2200000000001976a9140bb5f9fffd2c0f7bbb9dd4116341f3fba10d041888ac02
4730440220724686754b2c80564048cbafab84e07ab91f9e9a64c1baca8e726de70209e9cd02201f9 1ac61ce789e7032c2561dc24e26adca029d6449d82e96c252ace18d4dbba40121026f627029af8b372f3c81c5ae5cb4ce0971fb6d059e22351bc7191d9841a4156e00ac1f1800

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

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

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

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


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

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

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

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

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

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

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

Locktime: ac1f1800 (0x00181fac = 1580972)

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

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

Code:
decoderawtransaction 0200000000010218f739a82336bfec14c75a55ef28260b493ea89711319ba799368380328ddbe0000000001716001408a8ba315488b40811b9886ff4396e0c94ce183efeffffff6cc66a094304e399a9678dfbf1f88a8f2223c67d38ad0c69f5a8426d54ab479a000000006a473044022062e7ba2ec9a4a26fba867624b7786f6e1cd11363186bcf73a5a163b2f32f1d1e02204332986870d8e8d54545313deabab49586d851f7c74c185026b731b0e172d20b012103903c1d380a2b05c96e8ad40cbc8a1b647cadef7a1deff8df6b8528a337465cdffeffffff0202450f000000000017a9148536bef594948115aa8ea99ce415767df30f8a3a87a06f2200000000001976a9140bb5f9fffd2c0f7bbb9dd4116341f3fba10d041888ac024730440220724686754b2c80564048cbafab84e07ab91f9e9a64c1baca8e726de70209e9cd02201f91ac61ce789e7032c2561dc24e26adca029d6449d82e96c252ace18d4dbba40121026f627029af8b372f3c81c5ae5cb4ce0971fb6d059e22351bc7191d9841a4156e00ac1f1800 1

Даст красивый результат:
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": [
        "30440220724686754b2c80564048cbafab84e07ab91f9e9a64c1baca8e726de70209e9cd02201f9 1ac61ce789e7032c2561dc24e26adca029d6449d82e96c252ace18d4dbba401",
        "026f627029af8b372f3c81c5ae5cb4ce0971fb6d059e22351bc7191d9841a4156e"
      ],
      "sequence": 4294967294
    },
    {
      "txid": "9a47ab546d42a8f5690cad387dc623228f8af8f1fb8d67a999e30443096ac66c",
      "vout": 0,
      "scriptSig": {
        "asm": "3044022062e7ba2ec9a4a26fba867624b7786f6e1cd11363186bcf73a5a163b2f32f1d1e0220433 2986870d8e8d54545313deabab49586d851f7c74c185026b731b0e172d20b[ALL] 03903c1d380a2b05c96e8ad40cbc8a1b647cadef7a1deff8df6b8528a337465cdf",
        "hex": "473044022062e7ba2ec9a4a26fba867624b7786f6e1cd11363186bcf73a5a163b2f32f1d1e02204 332986870d8e8d54545313deabab49586d851f7c74c185026b731b0e172d20b012103903c1d380a 2b05c96e8ad40cbc8a1b647cadef7a1deff8df6b8528a337465cdf"
      },
      "sequence": 4294967294
    }
  ],
  "vout": [
    {
      "value": 0.01000706,
      "n": 0,
      "scriptPubKey": {
        "asm": "OP_HASH160 8536bef594948115aa8ea99ce415767df30f8a3a OP_EQUAL",
        "hex": "a9148536bef594948115aa8ea99ce415767df30f8a3a87",
        "reqSigs": 1,
        "type": "scripthash",
        "addresses": [
          "2N5PbScRn7p7m2HEs1Bh8tshbN7TpgtRvxM"
        ]
      }
    },
    {
      "value": 0.02256800,
      "n": 1,
      "scriptPubKey": {
        "asm": "OP_DUP OP_HASH160 0bb5f9fffd2c0f7bbb9dd4116341f3fba10d0418 OP_EQUALVERIFY OP_CHECKSIG",
        "hex": "76a9140bb5f9fffd2c0f7bbb9dd4116341f3fba10d041888ac",
        "reqSigs": 1,
        "type": "pubkeyhash",
        "addresses": [
          "mgasj7m5vQWp4zixtHjiEgpGxex6ZCvhX8"
        ]
      }
    }
  ]
}



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

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

Выход 1.

Code:
   {
      "value": 0.01000706,
      "n": 0,
      "scriptPubKey": {
        "asm": "OP_HASH160 8536bef594948115aa8ea99ce415767df30f8a3a OP_EQUAL",
        "hex": "a9148536bef594948115aa8ea99ce415767df30f8a3a87",
        "reqSigs": 1,
        "type": "scripthash",
        "addresses": [
          "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",
        "addresses": [
          "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:
getaddressinfo mgasj7m5vQWp4zixtHjiEgpGxex6ZCvhX8

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Quote
{
  "hex": "0200000001d9a33a37f575c68d6d9b616b96769181c78fa7e2bf912b7dd2f6aa6e7108432e01000 0006a47304402205fd610204bc40841382e299d0d326026ae3089eb4e570afb280967cfd271f1f4 0220701479b8fce69904d8d0d269b715c558954c30dddbaed369d4545fb257b1629c012103903c1 d380a2b05c96e8ad40cbc8a1b647cadef7a1deff8df6b8528a337465cdffeffffff01806c220000 00000017a9141ff37fd7b7cb61c95ca8e98ae3349661d4a95b048700000000",
  "complete": true
}


УРА!

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

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


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 blockchain
https://yadi.sk/d/a3xM9BCepP4nBw

Source code here
https://github.com/3s3s/blockchaindata


The extension is working with RPC. It require access to full synchronized Bitcoin (or any other Bitcoin-fork) node.
This is recommended bitcoin.conf settings

Code:
testnet=1
server=1
rpcbind=127.0.0.1
rpcallowip=127.0.0.1
rpcuser=rpc_btc_test
rpcpassword=rpc_btc_password_test
txindex=1

[test]
rpcport=18332
limitancestorcount=1000
limitdescedantcount=1000
walletrejectlongchains=0

After installation extension will appear as small icon. It needed click to the icon and will appear the window with intuitive interface



You 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/<txid>

For example, if extension is installed then link will clickable
http://tbtc/8af6633160b982a0b0b4d4962ad28e0d5b3dd97e05e27cc2dd64ec0c56820df5
20  Local / Идеи / Убийцу миксеров может сделать? on: September 15, 2019, 06:28:00 PM
Если будет сайт где вводишь два адреса, нажимаешь кнопку - в результате показывается связаны эти адреса или нет? Если связаны, то выводится вся цепочка транзакций. Такой сайт сделает бесполезными сразу все миксеры. Как думаете - нужен такой?
Потом до кучи, можно объединить этот сайт с сервисами которые собирают адреса скаммеров, прикрутить АПИ, тогда любая биржа и любой сервис сможет отследить перевод скаммера в реальном времени...
Потом запилить еще туда систему траста к адресам...

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

Как вам идея?
Pages: [1] 2 3 4 5 »
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!