Bitcoin Forum

Local => Кодеры => Topic started by: kaznachey on December 30, 2016, 05:17:03 PM



Title: Как выглядит блок?
Post by: kaznachey on December 30, 2016, 05:17:03 PM
А где можно посмотреть как выглядет тот самый блок который получается когда майнеры майнят биткоины и как в него записывается информация? Где можно посмотреть пример реального блока который используется в цепочке блоков биткоина? Какой объем памяти занимает блок и все ли блоки одинакового размера?


Title: Re: Как выглядит блок?
Post by: Rashid Ahmed on December 31, 2016, 01:27:37 AM
А где можно посмотреть как выглядет тот самый блок который получается когда майнеры майнят биткоины и как в него записывается информация? Где можно посмотреть пример реального блока который используется в цепочке блоков биткоина? Какой объем памяти занимает блок и все ли блоки одинакового размера?

Тут хоть речь идёт о сегвите, но про блок всё разжаловано очень годно. Рекомендую посмотреть.

https://www.youtube.com/watch?v=1-1qJ91aBH4&t


Title: Re: Как выглядит блок?
Post by: bitaps on January 02, 2017, 12:30:34 PM
Вот здесь описана структура блока

https://en.bitcoin.it/wiki/Block


Title: Re: Как выглядит блок?
Post by: AndreyBelts on January 20, 2018, 02:01:31 PM
А где можно посмотреть как выглядет тот самый блок который получается когда майнеры майнят биткоины и как в него записывается информация? Где можно посмотреть пример реального блока который используется в цепочке блоков биткоина? Какой объем памяти занимает блок и все ли блоки одинакового размера?
Да. Так же заинтересовался этим вопросом.
:(


Title: Re: Как выглядит блок?
Post by: NAgain on January 20, 2018, 08:09:08 PM
Дабы не создавать новую тему, спрошу тут.

Не могу понять, как и где в блоке хранятся адреса кошельков?


Title: Re: Как выглядит блок?
Post by: kzv on January 20, 2018, 09:40:06 PM
Дабы не создавать новую тему, спрошу тут.

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


Title: Re: Как выглядит блок?
Post by: NAgain on January 20, 2018, 10:07:24 PM
Дабы не создавать новую тему, спрошу тут.

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

Вроде бы я так и понял из спеки, но не был уверен в этом до конца. Хорошо, а как тогда блок-эксплореры показывают статистику по адресам с их балансом?

Заранее извиняюсь за, вероятно, нубские вопросы - просто хочу до конца разобраться.


Title: Re: Как выглядит блок?
Post by: kzv on January 20, 2018, 10:25:58 PM
Дабы не создавать новую тему, спрошу тут.

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

Вроде бы я так и понял из спеки, но не был уверен в этом до конца. Хорошо, а как тогда блок-эксплореры показывают статистику по адресам с их балансом?

Заранее извиняюсь за, вероятно, нубские вопросы - просто хочу до конца разобраться.
99% транзакций - стандартные. Расшифровать скрипт стандартной транзакции проблем нет.

https://en.bitcoin.it/wiki/Script

Code:
OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG


Title: Re: Как выглядит блок?
Post by: NAgain on January 21, 2018, 12:18:38 AM
99% транзакций - стандартные. Расшифровать скрипт стандартной транзакции проблем нет.

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


Title: Re: Как выглядит блок?
Post by: Coin-1 on January 21, 2018, 06:41:12 PM
99% транзакций - стандартные. Расшифровать скрипт стандартной транзакции проблем нет.

А можно на пальцах объяснить как именно? Что-то никак не могу вкурить по описанию на вики как это сделать.
Лучше посмотрите, как реализовано декодирование блоков в исходниках Bitcoin Core:
https://github.com/bitcoin/bitcoin


Title: Re: Как выглядит блок?
Post by: kzv on January 21, 2018, 07:17:06 PM
99% транзакций - стандартные. Расшифровать скрипт стандартной транзакции проблем нет.

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

А зачем вам двоичный файл руками парсить? У битка есть RPC API, которые специально для таких целей предназначены.
Я могу конечно выложить сюда дамп блока и жирным выделить где там адреса, но нафига? Кроме родной RPC API, есть 100500 сторонних либ, которые умеют все это дело парсить.


Title: Re: Как выглядит блок?
Post by: NAgain on January 21, 2018, 07:19:45 PM
А зачем вам двоичный файл руками парсить? У битка есть RPC API, которые специально для таких целей предназначены.
Я могу конечно выложить сюда дамп блока и жирным выделить где там адреса, но нафига? Кроме родной RPC API, есть 100500 сторонних либ, которые умеют все это дело парсить.

Ключевая фраза - "разобраться для себя". В тупую юзать сторонние либы ума много не надо, а хочется въехать самому. По той же причине и RPC не использую. Так что если не сложно - выложите пжлст.


Title: Re: Как выглядит блок?
Post by: kzv on January 22, 2018, 08:19:09 AM
Формат файлов с блоками
тут https://bitcointalk.org/index.php?topic=101514.msg1111214#msg1111214
или тут https://en.bitcoin.it/wiki/Protocol_documentation

Quote
Magic Bytes (4 bytes)
BlockSize w/ header (4 bytes)
Raw Header (80 bytes)
Number of Tx, N (VAR_INT)
Raw Tx1
Raw Tx2
...
Raw TxN
Magic Bytes (4 bytes)
BlockSize w/ header (4 bytes)
Raw Header (80 bytes)
Number of Tx, N (VAR_INT)
Raw Tx1
Raw Tx2
...
Raw TxN
Magic Bytes (4 bytes)
BlockSize w/ header (4 bytes)
Raw Header (80 bytes)
Number of Tx, N (VAR_INT)
Raw Tx1
Raw Tx2
...
Raw TxN
...
Формат рав транзакций тут https://www.siliconian.com/blog/16-bitcoin-blockchain/22-deconstructing-bitcoin-transactions

Вот ваш адрес в биг-ендиан формате. 0207c9ece04a9b5ef3ff441f3aad6bb63e323c05047a820ab45ebbe61385aa7446
Если в таком формате не нравится, вот тут написано, как из биг-ендиан получить базе58-чек https://github.com/bitcoin/bitcoin/blob/master/src/base58.cpp#L124

Разбирайтесь на здоровье ))


Title: Re: Как выглядит блок?
Post by: A-Bolt on January 22, 2018, 03:13:32 PM
Quote
Хорошо, а как тогда блок-эксплореры показывают статистику по адресам с их балансом?

Чтобы определить баланс для конкретного адреса А нужно просканировать все блоки и найти транзакции с выходами, позволяющими обладателю приватного ключа от адреса А потратить эти выходы. Среди этих выходов необходимо найти непотраченные на текущий момент выходы (UTXO). Сумма непотраченных выходов и будет составлять баланс.


Title: Re: Как выглядит блок?
Post by: NAgain on January 22, 2018, 04:56:41 PM
kzv - Благодарю. Большинство видел, но есть пара упущенных моментов.

Quote
Хорошо, а как тогда блок-эксплореры показывают статистику по адресам с их балансом?

Чтобы определить баланс для конкретного адреса А нужно просканировать все блоки и найти транзакции с выходами, позволяющими обладателю приватного ключа от адреса А потратить эти выходы. Среди этих выходов необходимо найти непотраченные на текущий момент выходы (UTXO). Сумма непотраченных выходов и будет составлять баланс.

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

*Всем спасибо за помощь


Title: Re: Как выглядит блок?
Post by: DDL on January 24, 2018, 08:30:41 PM
Откройте эксплорер любой монеты и посмотрите как он выглядит.


Title: Re: Как выглядит блок?
Post by: readonly on January 27, 2018, 05:36:08 PM
А зачем вам двоичный файл руками парсить? У битка есть RPC API, которые специально для таких целей предназначены.
Я могу конечно выложить сюда дамп блока и жирным выделить где там адреса, но нафига? Кроме родной RPC API, есть 100500 сторонних либ, которые умеют все это дело парсить.

Ключевая фраза - "разобраться для себя". В тупую юзать сторонние либы ума много не надо, а хочется въехать самому. По той же причине и RPC не использую. Так что если не сложно - выложите пжлст.

вам же дали исходники выше. кто мешает разобраться для себя?