Bitcoin Forum
December 08, 2019, 05:55:18 PM *
News: Latest Bitcoin Core release: 0.19.0.1 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Как работают транзакции Биткойн и их типы  (Read 142 times)
zasad@
Full Member
***
Offline Offline

Activity: 140
Merit: 441



View Profile
October 10, 2019, 10:57:17 AM
Merited by chimk (10), SS31337 (3), Xtc (1), johhnyUA (1), wwzsocki (1), xenon131 (1), wh1rlw1nd (1), taikuri13 (1), zStrog (1)
 #1

Это перевод, спасибо wwzsocki за полезную информацию

Чтобы понять, как работают биткойн-транзакции и каковы их типы, мы должны начать с самого начала и объяснить, что такое биткойн-адрес, транзакция и сценарии и как они работают?

Биткоин адрес - это строка буквенно-цифровых символов, которую пользователь может раздать всем, кто хочет отправить ему деньги. Адреса биткойнов могут быть разных форматов, причем наиболее распространенными являются: Pay-to-PubKeyHash (P2PKH) и Pay-to-ScriptHash (P2SH). Каждый может отправлять биткойны на любой указанный биткойн-адрес, эти средства можно потратить только в том случае, если они отвечают определенным требованиям, установленным системой скриптов Биткойн.

Скрипт -  фактически представляет собой список записанных инструкций, сопровождающих каждую выполненную транзакцию; скрипт управляет тем, как следующий человек, желающий потратить отправленные биткойны, может получить к ним доступ.
Скрипты, сопровождающие выходные данные в транзакциях, называются PubKey Scripts (они также известны как скрипты блокировки), которые в коде известны как scriptPubKey. Получатели отправленных биткойнов затем сгенерируют сценарий подписи (также известный как сценарий разблокировки), который представляет собой набор параметров данных, сгенерированных спонсором, который используется для удовлетворения сценария PubKey. Сценарии подписи называются scriptSig в коде.

Пример: когда Алиса решает инициировать транзакцию с Бобом, выходные данные содержат биткойны, которые можно потратить при условии выполнения инструкций, изложенных в прилагаемом скрипте PubKey. Как только эта транзакция будет передана и добавлена ​​в цепочку блоков, сеть будет классифицировать транзакцию как вывод неизрасходованных транзакций (UTXO), а программное обеспечение кошелька Боба распознает его как расходуемый баланс. Когда Боб решает потратить этот UTXO, он создаст вход, который включает сценарий подписи, который должен удовлетворять условиям, которые Алиса поместила в сценарий PubKey предыдущего вывода.


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

Какие бывают типы биткойн-транзакций?

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

Скрипты > P2PK, P2PKH, P2MS, P2SH, P2WPKH, NULL DATA, NON-STANDARD



Стандартные типы скриптов транзакций: pay-to-public-key-hash (P2PKH), public-key (P2PK), multi-signature (P2MS) ограничено 15 ключами, pay-to-script-hash (P2SH), pay-to-witness-public-key-hash (P2WPKH) - это была особенность Segwit, которая расшифровывается как Segregated Witness и нулевые данные вывода  (OP_RETURN), которые более подробно описаны в следующих разделах.
Последний тип является особенным, и мы называем его нестандартной транзакцией.

Упрощенное объяснение типов скриптов для новичков

P2PKH: "Pay To Public Key Hash" - Так совершается большой процент транзакций. Вы требуете, чтобы отправитель предоставил действительную подпись (из личного ключа) и открытый ключ. Сценарий вывода транзакции будет использовать сигнатуру и открытый ключ после проверки хеша предоставленного открытого ключа с предыдущим выводом, и с помощью некоторых криптографических функций проверит, действительна ли подпись, если она была, то средства будут потрачены. Этот метод скрывает ваш открытый ключ в форме хэша для дополнительной безопасности. Если условие расхода установлено для представления хэша открытого ключа, то это TX P2PKH, и у вас есть структура std Op_Dup, Op_Hash160, ....

P2PK: "Pay To Public Key" - В отличие от P2PKH, который содержит хэш открытого ключа; этот скрипт содержит сам открытый ключ. Любой, кто использует этот метод для отправки средств по сети P2P, показывает людям свой открытый ключ в деталях транзакции. Условие расходов требует от вас только предоставить свой открытый ключ и подпись. Открытый ключ будет распознаваться вашим кошельком (в соответствии с вышеупомянутой схемой кодирования) как адрес «типа 1».

P2SH: "Pay To Script Hash" - стал стандартным сценарием в апреле 2012 года. Результатом транзакции является просто хэш сценариев, известный как redeemscript, который, если он выполняется с конкретными параметрами, приведет к логическому значению true или false. Если майнер запускает выходной скрипт с предоставленными параметрами и в результате получает значение true, деньги будут отправлены на ваш желаемый результат. P2SH используется для кошельков с несколькими подписями, создавая логику выходных сценариев, которая проверяет наличие нескольких подписей перед принятием транзакции. P2SH также может использоваться, чтобы позволить кому-либо или никому тратить средства. Если выходной сценарий транзакции P2SH равен 1 для истины, то попытка потратить выходные данные без указания параметров приведет к тому, что 1 сделает деньги потраченными любым, кто попытается. Это также относится к сценариям, которые возвращают 0, что делает вывод нерациональным.

P2WPKH: "Pay To Witness Public Key Hash" - Это была особенность сегвита, что означает «Сегрегированный Свидетель». Вместо использования параметров scriptSig для проверки правильности транзакции существует новая часть транзакции, называемая свидетелем, где происходит валидация. В 2015 году Питер Уилль представил биткойну новую функцию под названием Segregated Witness, также известную под сокращенным названием Segwit. По сути, Segregated Witness перемещает подтверждение владения из части транзакции scriptSig в новую часть, называемую свидетелем ввода.

P2MS: "MultiSignature" -  Используется, когда нужно более чем одного ключа для авторизации транзакции Биткойн и впервые был применен к адресам Биткойн в 2013 году. Обычно используется для разделения ответственности за владение биткойнами. Стандартные транзакции в сети Биткойн могут называться «транзакциями с единой подписью», поскольку для передачи требуется только одна подпись - от владельца закрытого ключа, связанного с адресом Биткойна. Тем не менее, сеть Биткойн поддерживает гораздо более сложные транзакции, которые требуют подписи нескольких людей, прежде чем средства могут быть переведены. Их часто называют транзакциями M-of-N. Идея состоит в том, что биткойны становятся «обремененными», предоставляя адреса нескольких сторон, что требует сотрудничества этих сторон для того, чтобы что-то с ними сделать. Эти стороны могут быть людьми, учреждениями или запрограммированными сценариями. Стал стандартным сценарием в январе 2012 года.

NULL DATA: (OP_RETURN) - тип транзакции, ретранслируемый и добавленный по умолчанию в Bitcoin Core 0.9.0 и более поздних версиях, который добавляет произвольные данные в доказуемый ненадежный сценарий pubkey, которые полные узлы не должны хранить в своей базе данных UTXO. Любой может использовать сценарий NULL DATA для добавления произвольных данных в транзакцию, поэтому вы можете найти их разбросанными по блокчейну. Мы должны помнить, что не все майнеры принимают транзакции с нулевыми данными, и не все узлы передают их. (OP_RETURN) outputLook для пустых выходных данных при просмотре цепочки блоков, поскольку сценарии NULL DATA почти всегда размещаются на пустых выходных данных (поскольку выходные данные делаются блокируемыми).
Вот веб-страница со списком метаданных, недавно встроенных в цепочку биткойнов с использованием выходных данных OP_RETURN: http://coinsecrets.org/

Non-Standart - чтобы включить этот тип транзакции в цепочку биткойнов, необходимо достичь соглашения с майнером: нестандартная транзакция будет затем включена в цепочку блоков, когда майнер разрешит блок. Зависит от скорости хэширования от майнера, это может быть довольно долго, принимая во внимание очень высокую фактическую сложность, которая постоянно растет с момента старта биткойна. Конечно, майнер возьмет на себя соответствующую плату за нестандартную транзакцию.



Отличный ресурс для генерации адреса из hex pubkey:  http://gobittest.appspot.com/Address



Подробное описание типов транзакций в биткойнах для более опытных пользователей.

Pay-to-PubKey - (P2PK) - более простая форма оплаты биткойнами, чем pay-to-public-key-hash. В этой форме сценария сам открытый ключ хранится в скрипте блокировки, а не в хеше открытого ключа, как в случае с P2PKH, что намного короче. P2PK - это шаблон сценария, который блокирует вывод для открытого ключа. Несмотря на то, что P2PK является самым простым сценарием для привязки биткойнов к чьему-то открытому ключу, он используется не так часто, как аналогичный (но более сложный) сценарий P2PKH. Это связано с тем, что оригинальный майнер Bitcoin Core использовал P2PK для вознаграждения за блок при построении блока-кандидата. Вы чаще всего найдете P2PK в транзакциях на основе монет в более ранних блоках в блокчейне.



Pay-to-Public-Key-Hash - (P2PKH) Подавляющее большинство транзакций, обрабатываемых в сети биткойнов, были транзакциями P2PKH. Они содержат сценарий блокировки, который кодирует выходные данные с помощью хэша открытого ключа, более известного как адрес биткойна. Выход, заблокированный сценарием P2PKH, можно разблокировать (потратить), представив открытый ключ и цифровую подпись, созданную соответствующим закрытым ключом.
 



P2PKH - это скрипт по умолчанию, используемый кошельками, когда вы хотите «отправить» кому-то биткойны, так что вы можете найти его в большинстве блоков в блокчейне. Этот шаблон сценария используется для «отправки» кому-либо биткойнов. Это наиболее распространенный сценарий, используемый для блокировки вывода на чей-то открытый ключ. Он похож на P2PK, но вместо этого блокировка содержит хэш открытого ключа (а не сам открытый ключ). Каждый раз, когда вы отправляете биткойны на адрес, начинающийся с 1, вы создаете скрипт блокировки P2PKH.




1575827718
Hero Member
*
Offline Offline

Posts: 1575827718

View Profile Personal Message (Offline)

Ignore
1575827718
Reply with quote  #2

1575827718
Report to moderator
1575827718
Hero Member
*
Offline Offline

Posts: 1575827718

View Profile Personal Message (Offline)

Ignore
1575827718
Reply with quote  #2

1575827718
Report to moderator
1575827718
Hero Member
*
Offline Offline

Posts: 1575827718

View Profile Personal Message (Offline)

Ignore
1575827718
Reply with quote  #2

1575827718
Report to moderator
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
1575827718
Hero Member
*
Offline Offline

Posts: 1575827718

View Profile Personal Message (Offline)

Ignore
1575827718
Reply with quote  #2

1575827718
Report to moderator
zasad@
Full Member
***
Offline Offline

Activity: 140
Merit: 441



View Profile
October 10, 2019, 10:58:34 AM
 #2

Pay-to-ScriptHash - (P2SH) был представлен в предложении по улучшению биткойнов 16 (BIP 16) Гэвином Андресеном, и это привело к появлению нового «стандартного» типа транзакции для системы скриптов биткойнов. Цель P2SH, по словам Андресена: «Передать ответственность за предоставление условий для выкупа транзакции от отправителя средств к выкупателю».



В приведенном выше примере Боб генерирует сценарий погашения, хэширует сценарий погашения, чтобы создать хеш сценария погашения, и предоставляет хеш Алисе. Теперь Алиса может создать вывод в стиле P2SH, содержащий хэш сценария погашения Боба.

Тип транзакции P2SH дает ряд преимуществ, таких как:

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



Распространенной реализацией функции P2SH является адресный скрипт с несколькими сигнатурами. Этот сценарий требует, чтобы транзакция обладала более чем одной цифровой подписью, чтобы подтвердить право собственности, и, соответственно, тратить средства. В транзакциях P2SH сценарий блокировки заменяется хэшем сценария восстановления. Этот хэш получен из сценария восстановления, который функционирует аналогично сценарию PubKey в том, что он также содержит условия, которые должны быть выполнены, прежде чем выходные данные можно будет использовать. Когда транзакция, пытающаяся потратить UTXO, инициируется позднее, входные данные должны содержать сценарий PubKey (который содержит хэш сценария восстановления) и сценарий разблокировки. В транзакциях P2SH сценарий, содержащий условия для расходования выходных данных, то есть сценарий погашения, не представлен в сценарии блокировки. Вместо, в скрипт блокировки включается только хэш (хэш сценария восстановления), а сам сценарий восстановления представлен как часть сценария разблокировки при завершении вывода.



Преимущества pay-to-script-hash:

Функция pay-to-script-hash предлагает следующие преимущества по сравнению с прямым использованием сложных сценариев при блокировке выходных данных:
- Сложные сценарии заменяются более короткими отпечатками  в выводе транзакции, что делает транзакция меньше.
- Скрипты могут быть закодированы как адрес, поэтому отправителю и кошельку отправителя не требуется сложная разработка для реализации P2SH.
- P2SH переносит бремя создания скрипта на получателя, а не на отправителя.
- P2SH переносит нагрузку за хранение данных для длинного скрипта с выхода (который находится в наборе UTXO и, следовательно, влияет на память) на вход (только хранится в блокчейне).
- P2SH переносит нагрузку за хранение данных для длинного сценария с настоящего времени (оплата) на будущее время (когда оно израсходовано).
- P2SH переносит плату за транзакцию длинного сценария от отправителя к получателю, который должен включить сценарий долгосрочного погашения, чтобы потратить его.
- P2WSH похож на P2SH, но хэш сценария отличается, и само свидетельство переходит в качестве свидетеля.
- P2SH-P2WPKH - вложенный SegWit (обходные пути), где он похож на P2WPKH, но все это помещается в сценарий выкупа и хэшируется.
- P2SH-P2WSH такой же, как предыдущий, но для P2WSH.

Multi-Signature - Сценарии (P2MS) устанавливают условие, когда в сценарии записано N открытых ключей, и как минимум M из них должно предоставить подписи для снятия обременения. Это также известно как схема M-of-N, где N - общее количество ключей, а M - порог подписей, необходимых для проверки. Например, мульти-подпись 2 из 3 - это та, в которой три открытых ключа указаны в качестве потенциальных подписантов, и как минимум два из них необходимо использовать для создания подписей действительной транзакции для расходования средств.




В настоящее время стандартные сценарии с несколькими подписями ограничены не более чем 15 открытыми открытыми ключами, что означает, что вы можете делать что угодно, от 1 до 1, до 15 из 15, или любую комбинацию в этом диапазоне. К моменту написания статьи  ограничение в 15 перечисленных ключей может быть снято, поэтому проверьте функцию isStandard (), чтобы увидеть, что в настоящее время принято разработчиками.



Pay-to-Witness-Public-Key-Hash - имеет ту же семантику, что и P2PKH, за исключением того, что подпись не размещена в том же месте, что и раньше. Segregated Witness (SegWit) перемещает подтверждение владения из части транзакции scriptSig в новую часть, называемую свидетелем ввода. До SegWit подпись транзакции использовалась при расчете идентификатора транзакции. Подпись содержит ту же информацию, что и затраты P2PKH, но находится в свидетельстве вместо scriptSig.

Собственный адрес P2WPKH имеет префикс bc1q для сети Bitcoin. Он использует тот же формат открытого ключа, что и P2PKH, за очень важным исключением: открытый ключ, используемый в P2WPKH, ДОЛЖЕН быть сжат, то есть размером 33 байта, начиная с 0x02 или 0x03. P2WPKH scriptPubKey всегда 22 байта. Он начинается с OP_0, за которым следует обязательный хеш-код (т. Е. 0x0014 {20-байтовый хеш-код}).



P2WPKH адрес должен использоваться, когда для получения платежа используется только 1 открытый ключ (например, стандартный адрес P2PKH). Поскольку алгоритм генерации сигнатуры SegWit (описанный в BIP143) покрывает стоимость затраченного ввода, транзакция, тратящая SegWit utxo, может быть надежно подписана легким кошельком  или аппаратным кошельком. Адреса P2WPKH кодируются Bech32 в соответствии с BIP143: они начинаются с bc1q .. для основной сети Bitcoin и несколько длиннее, чем традиционные адреса P2PKH.

NULL DATA - (OP RETURN) это код операции сценария, который можно использовать для записи произвольных данных в цепочку блоков, а также для пометки вывода транзакции как недействительного. Поскольку любые выходы с OP_RETURN доказуемо недопустимы, выходы OP_RETURN могут использоваться для сжигания биткойнов. В версии 0.9 клиента Bitcoin Core был достигнут компромисс с введением оператора OP_RETURN.



OP_RETURN позволяет разработчикам добавлять 40 байтов данных о неплатежах к выводу транзакции. Однако, в отличие от использования «поддельного» UTXO, оператор OP_RETURN создает явно доказуемо недопустимый вывод, который не нужно хранить в наборе UTXO. Выходы OP_RETURN записываются в цепочку блоков, поэтому они занимают дисковое пространство и способствуют увеличению размера цепочки блоков, но они не сохраняются в наборе UTXO и, следовательно, не переполняют пул памяти UTXO и не нагружают полные узлы . Имейте в виду, что не существует «сценария разблокировки», соответствующего OP_RETURN, который можно было бы использовать для «расходования» вывода OP_RETURN.




Весь смысл OP_RETURN состоит в том, что вы не можете тратить деньги, заблокированные в этом выводе, и, следовательно, их не нужно удерживать в наборе UTXO как потенциально расходуемом - OP_RETURN доказуемо не расходуем. OP_RETURN обычно является выходом с нулевым количеством биткойнов, потому что любой биткойн, назначенный такому выходу, фактически теряется навсегда. Если программное обеспечение проверки подлинности обнаруживает OP_RETURN, это немедленно приводит к остановке выполнения сценария проверки и маркировке транзакции как недействительной. Таким образом, если вы случайно ссылаетесь на выход OP_RETURN как на вход в транзакции, эта транзакция недействительна. Стандартная транзакция (та, которая соответствует проверкам isStandard ()) может иметь только один выход OP_RETURN. Однако один выход OP_RETURN может быть объединен в транзакции с выходами любого другого типа. Скрытые адреса предлагают еще один пример OP_RETURN в действии. Эта схема позволяет получать платежи без публичного раскрытия открытого ключа или адреса получателя. Данные, необходимые для работы этой системы, кодируются в вызове OP_RETURN. По сути, Биткойн выполняет двойную функцию в качестве безопасного протокола обмена сообщениями.



Вы можете использовать NULL DATA для хранения данных, потому что стандартный скрипт допускает передачу данных в конце.
Так что если вы хотите добавить некоторые произвольные данные в транзакцию; включите дополнительный (пустой) вывод и поместите в него скрипт блокировки NULL DATA:



Non Standart - чтобы включить транзакции этого типа в цепочку биткойнов, необходимо достигнуть соглашения с майнером: тогда нестандартная транзакция будет включается в блокчейн, когда майнер разрешает блок. Зависит от скорости хэширования от майнера, это может быть довольно долго, принимая во внимание очень высокую фактическую сложность, которая постоянно растет с момента старта биткойна. Конечно, майнер возьмет на себя соответствующую плату за нестандартную транзакцию.

Типы биткойн-транзакций ::




https://learnmeabitcoin.com/glossary/p2pk
https://learnmeabitcoin.com/glossary/p2ms
https://learnmeabitcoin.com/glossary/p2sh
https://learnmeabitcoin.com/glossary/nulldata
https://learnmeabitcoin.com/glossary/p2pkh
https://www.mycryptopedia.com/p2sh-pay-to-script-hash-explained/
https://bitzuma.com/posts/op-return-and-the-future-of-bitcoin/
https://www.cryptocompare.com/wallets/guides/bitcoin-transactions-pay-to-address-pay-to-public-key-hash/
https://www.cryptocompare.com/coins/guides/bitcoin-transactions-pay-to-script-hash/
https://www.cryptocompare.com/coins/guides/what-happens-to-a-bitcoin-transaction/
https://www.cryptocompare.com/coins/guides/how-does-a-bitcoin-transaction-work/
https://www.cryptocompare.com/coins/guides/what-are-the-bitcoin-transaction-types/
https://bitcoin.stackexchange.com/questions/64733/what-is-p2pk-p2pkh-p2sh-p2wpkh-eli5
https://bitcoin.stackexchange.com/questions/72194/why-dont-p2pk-scripts-have-their-own-address
http://bitcoinscri.pt/pages/segwit_native_p2wpkh_address
https://programmingblockchain.gitbook.io/programmingblockchain/other_types_of_ownership/p2wpkh_pay_to_witness_public_key_hash
https://en.bitcoin.it/wiki/Multisignature
https://bitcoin.org/en/glossary/null-data-transaction

Это перевод, спасибо wwzsocki за полезную информацию

wwzsocki
Legendary
*
Offline Offline

Activity: 1134
Merit: 1072



View Profile WWW
October 10, 2019, 11:13:20 AM
 #3

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

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

zasad@
Full Member
***
Offline Offline

Activity: 140
Merit: 441



View Profile
October 10, 2019, 04:15:07 PM
 #4

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

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

xenon131
Hero Member
*****
Offline Offline

Activity: 910
Merit: 633


making something real from dark matter


View Profile
November 20, 2019, 05:48:33 PM
 #5

Добавлено в каталог, подраздел Разное Технологии раздела Обзоры.

Pages: [1]
  Print  
 
Jump to:  

Sponsored by , a Bitcoin-accepting VPN.
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!