Архив рубрики: bitcoin

Газ

Вот мы тут общались, еще в прошлом году, по поводу газа в сети эфириум. Типа, почему вообще так все сделано, почему есть цена газа которую ты сам выбираешь при проведении транзакции, это все казалось запутанным, казалось что разработчики перемудрили. Но сейчас мне так не кажется — ведь это единственный способ протолкнуть транзакцию быстрее и вообще способ запустить рыночный механизм конкуренции, в финансовом смысле. В сети эфириум первичны смартконтракты и те из них, которые реализуют интерфейс erc20 называются токенами и являются платежным средством, в большей мере чем все остальное. Сам эфир он вторичен, он просто топливо. Для работы всей этой системы нужны майнеры которые будут получать эфир — валюту всей сети, она универсальна и является вознаграждением за работу и ее рыночная стоимость отделена от стоимости какого-либо токена. Смартконтракт написанный однажды не может быть изменен и вычислительная сложность у него постоянна, майнеру все равно какую из транзакций взять и включить в блок, а отправитель не может ускорить выполнение. Тут мы вводим понятие газа — мы считаем что газ, это то количество эфира которое получит майнер включив транзакцию в блок и вводим понятие цены за газ. Это как раз то значение, которое каждый может регулировать и оно не зависит от рыночной цены газа на бирже/рынке. Без этого майнер бы всегда выполнял фиксированное количество работы и получал бы фиксированное вознаграждение, в таком случае простые и маленькие контракты могли бы проходить быстрее. Почему бы просто не сделать настройку вроде «вознаграждение за транзакцию в эфире»? Видимо потому, что в этом варианте нет никакой привязки к сложности выполнения контракта, все контракты разные и нельзя написать среднюю цифру чтобы клиенты на нее ориентировались, но цена за вычислительную сложность — это как раз то что нужно, газ как раз решает эту задачу.

О комиссиях биткойн

Транзакции стоят денег. Чем больше участников попадает в транзакцию тем больше её размер, конкретно: каждый источник (выходы других транзакций) добавляет 148 байт, каждый приемник (то что станет входом для нашей транзакции) добавит 34 байта, плюс всегда еще 10 байт технической информации. В итоге можно посчитать размер транзакции, где есть один источник и два выхода (известно что если потратить не все используемые выходы, то все что осталось пойдет в качестве комиссии майнеру добавившему блок, поэтому обычно всегда 2 выхода, один из них это получатель, остальное — сдача на свой адрес назад), выходит что транзакция будет занимать 148+34*2+10=226 байт. Сайт https://bitcoinfees.earn.com/ показывает нам сколько сейчас лучше выставлять комиссию за байт, потому что майнеры смотрят во сколько им обойдется байт и либо включают ее в блок, либо нет. Сейчас оптимально поставить 370 сатоши за байт, выходит 226+370=83620 сатоши или 836 рублей (если считать что биткойн стоит 1млн рублей). Не дешево надо сказать. Поэтому если сумма маленькая, например 500 рублей, ее вообще нет смысла отправлять при такой комиссии. Возможно лучше отдать приватный ключ чтобы получатель начал владеть деньгами и сам бы потратил их когда захочет, но тут встает вопрос доверия, как доказать что ты уничтожил ключ у себя? Вот если бы был доверенный посредник, тогда транзакции в сети с помощью передачи приватной части ключа стали бы бесплатными.
Вот тут кроется одно из отличий фиатных денег и крипто: если ты в пятерочке поставил коробку с прорезью и написал «подайте на *ПРИЧИНА*», то деньги из коробки ты можешь потратить в полном объеме, а если ты на сайте добавил адрес с просьбой поддержать проект и тебе накидали 100500 транзакций по копейке, ты запаришься их тратить, нужно будет пропихнуть в сеть транзакцию без комиссии которую никто не захочет обработать.

про биткойн

Откуда берутся нули в начале каждого хеша блока? Очень просто: задача состоит в том чтобы найти хеш значение которого меньше самого маленького хеша в блокчейне. Например:
>>> hexdec('00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048');
=> 1.3859490975361E+67
>>> hexdec('000000006a625f06636b8bb6ac7b960a8d03705d1ace08b1a19da3fdcc99ddbd');
=> 1.1203570477736E+67

видно что родительский хеш больше дочернего. Это и влияет на вычислительную сложность, она увеличивается потому что ограничение на результат ужесточается.
Сколько транзакций в блоке? Вот тут непонятно, пишут что более 500, хотя сейчас есть график в котором среднее значение от 1000 до 2000. Не знаю почему оно такое, почему нельзя использовать 2-3 транзакции. Но я догадываюсь что за включение транзакций в блок можно получить награду, потому что есть комиссия за это. Она может быть и нулевая, тогда твою транзакцию не возьмут из кучи неподтвержденных транзакций очень долгое время — это не выгодно. Единственный ли это способ майнинга? Похоже что нет, кажется система сама начисляет тебе биткойны когда ты собираешь блок. Т.е. в этот момент в экономику биткойна попадает актуальное на данный момент значение количества, оно было сначала 50 монет, затем 25 и так далее, каждые 210 тыс блоков. Сейчас уже блокчейн вроде как содержит около 0.5 млн блоков, т.е. уже за майнинг должны давать 12.5 (ну или скоро это случится).
Получается майнер получает этот крупный выигрыш, а что с комиссиями? Он их тоже получает? Выходит X биткойнов от системы + еще все комиссии со всех транзакций?
Отрывок из книги
А вот график количества транзакций в блоке на котором видно, что количество растет с годами, причем имеет очень большой разброс: иногда удается собрать блок с малым количеством, иногда с большим. Интересно почему? Их в целом больше стало, нужно больше обрабатывать, но может уже не удается собрать нужный хеш из малого количества транзакций? В итоге нужно брать больше?