Записи

Что такое протокол GHOST для Ethereum?

Протокол Ghost в Ethereum (Greedy Heaviest Observed Subtree) был введен в 2013 году как способ борьбы с тем, что блокирующие блоки с быстрым блочным временем страдают от большого количества устаревших блоков — то есть блоков, которые были распространены в сети и проверены некоторыми узлами. Они конечно правильные, но в конечном итоге отбрасываются, как более длинная цепочка. Протокол также борется с проблемой смещения централизации — чем больше пул, тем меньше затрачивается времени, тем чаще они получают преимущество перед другими блоками, производя сам блок и немедленно запуская программу для создания следующего блока.

Устаревший блок создается, когда два узла находят блок одновременно. Тогда оба узла сообщают о том, что они нашли решение для этого блока и отправили свой блок для проверки и включения его в другие блок-цепи. В Bitcoin вероятность найти блок относительно низка, так как время блокировки составляет десять минут, а распространение блока на 50% сети занимает примерно двенадцать секунд.

Если вы хотите, чтобы время блокировки было короче, а так же хотите уменьшить скорость для объединения добычи, как это делает Ethereum — тогда вам нужно сделать это с помощью GHOST.

GHOST включает в себя устаревшие блоки — или Uncles, как их называет Ethereum — они включены в расчет, какая из цепочек длинная или имеет наивысшую кумулятивную сложность. Централизация решается путем предоставления блоковых вознаграждений 87,5%, a nephew (предок блока Uncles) также получает вознаграждение в 12,5% от блока.

В версии Ethereum Ghost только понижается на семь уровней или поднимает на семь уровней цепочки блоков.

  • В блоке должны указываться его предки и количество Uncles.
  • Uncles, включенный в блок, должен быть прямым потомком нового блока, а так же потомком блоков , которые на семь блоков ниже его по высоте
  • Он не может быть прямым предком формируемого блока.
  • Uncles должен иметь действующий заголовок блока.
  • Uncles должен отличаться от всех других блоков типа Uncles и формироваться по новому.
  • За каждого Uncles, включенного в блок, майнер получает дополнительно 3,125%, а майнер Uncles получает 93,75% от стандартной награды блока.

Что такое Gas в Ethereum?

Gas — это внутренняя валюта для заключения сделки или контрактов в Ethereum. На момент написания и до запуска Frontier он был установлен на 10 Szabo, что составляет около 1/100000 от Ether. Это отделило блок Ether (ETH) и его рыночную стоимость от единицы измерения (Gas). Таким образом, майнер может принять решение об увеличении или уменьшении использования Gas в соответствии с его потребностями, а в случае необходимости цена Gas может быть соответственно увеличена или уменьшена, избегая ситуации, в которой повышение цены ETH вызовет необходимость изменить всю цену на Gas. Это также является своеобразным ответом на обсуждение в Bitcoin о структуре сборов.

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

В Ethereum существует также предел блокировки — так что вы платите за премиум-пространство в следующем блоке так же, как в Bitcoin.

Майнеры Bitcoin расставляют приоритеты на сделки с самыми высокими сборами за добычу. То же самое можно сказать о Ethereum, где добытчики могут свободно игнорировать сделки, чей предел цены на Gas слишком низок.

Цена Gas за транзакцию или контракт устанавливается для того, чтобы иметь дело с Turing Complete и ее EVM (Ethereum Virtual Machine Code) — идея заключается в ограничении бесконечных циклов. Так, например, 10 Szabo или 0,00001 Ether или 1 Gas могут выполнять строку кода или некоторую команду. Если в учетной записи недостаточно Ether для выполнения транзакции или сообщения, то действие автоматически считается недействительным. Идея состоит в том, чтобы прекратить атаки на отказ в обслуживании из-за бесконечных циклов, повысив эффективность кода, а также заставить злоумышленников платить за ресурсы, которые они используют, от использования полосы пропускания до процессорных вычислений.

Чем сложнее команды, которые вы хотите выполнить, тем больше Gas (и Ether) вам придется заплатить. Например, если Aнна хочет отправить Bиктору 1 Ether — то общая стоимость 1.00001 Ether будет выплачена Aнной. Однако, если бы Анна хотела заключить контракт с Bиктором в зависимости от будущей цены Ether, было бы больше линий исполняемого кода и больше ответственности или потребления энергии, размещаемых в распределенной сети Ether — и, следовательно, Aнне пришлось бы заплатить больше, чем 1 Gas за сделанную транзакцию.

Некоторые вычислительные операции стоят дороже других, потому что они более ресурсозатраные на вычислительном уровне и потому, что у них больший объем данных, который должны храниться в состоянии. Вот список операций в виртуальном коде Ethereum и их стоимость в Gas (который является Ether).

Наименование функций стоимости Gas:

 

step1 Значение по умолчанию для Gas, подлежащего оплате за цикл выполнения.
stop 0 Ничего не заплатили за операцию SUICIDE.
sha3 20 Выплачено за операцию SHA3.
sload 20 Заплачено для операции SLOAD.
sstore 100 Выплачивается за обычную операцию SSTORE (иногда удваивается или отменяется).
balance 20 Оплачено для операции BALANCE
create   100 Оплачено для операции CREATE
call 20 Оплачено для операции CALL.
memory 1 Оплачивается за каждое дополнительное слово при расширении памяти
txdata 5 Оплачивается за каждый байт данных или код для транзакции
transaction 500 Плата за каждую транзакцию

 

Предел цены на Gas в настоящее время установлен для обеспечения стабильного запуска Ethereum, но ему будет разрешено свободно плавать в соответствии с потребностью, и количество общего Gas на блок будет постепенно увеличиваться, чтобы способствовать стабильности сети Ethereum.