Retargeting vs Halving
Блокчейн алгоритмите имат свойството да се адаптират към изчислителната мощ на участниците, така че времето за създаване на един блок да е сходно всеки път. Целта е по-ниска латентност и по-висока стабилност на транзакциите. Ще опиша как се случва това в биткойн блокчейна, но много от валутите работят аналогично, с тази разлика че параметрите и атрибутите, които използват са различни.
Какво е Retargeting
На всеки 10 минути майнърите създават блок. Всъщност 10 минути е приблизителното време, понякога създаването може да се случи за 5 мин след създаването на предишния, понякога за 15. Това число варира спрямо изчислителната мощ на мрежата в съответния период. 10 минути на всеки е "перфектното" време.
На всеки 2016-ти блок (приблизително на всеки две седмици) всеки Биткойн клиент съпоставя времето, за което са създадени последните 2015 блока със перфекното време и съответно ретаргетира, модифицира целта с процентната разлика. По този начин прави решаването на проблема (Proof of Work) за всеки блок по-труден или по-лесен за следващите 2016 блока, така че отклонението от 10 минути на блока да е колкото се може по-минимално.
Еднократно ретаргетиране не може да промени трудността на копане с повече от 4 пъти в която и да е посока.
Ето графика на трудността през годините.
Дали може някой да влезне за 1500 блока с много мощен хардуер, да вдигне трудността до небето, и да се изнесе след ретаргетирането, като остави мрежата в mining loop, с което да я погуби? С биткойн - не, но с някои shitcoins се е случвало и е смях общо взето.
Какво е Halving
Въпросът, който мъчи много хора е кой ги създава тези биткойни. Halving e процесът при който се създават биткойни. От количеството идеи, заложени в биткойн няколко са абсолютно непроменими. Една от тях е моделът на създаване на нови биткойни и тяхното разпределяне след създаването.
След като майнър създаде нов блок и обяви на всички участници, че има кандидат блок, всички трябва да го валидират. Веднага след успешна валидация, блокът се записва в блокчейна и всички започват копането на следващия. Понякога два майнъра могат да обявят създаването на нов кандидат блок в рамките на милисекунди, тогава блокчейнът се fork-ва временно, но това е тема за друг пост. Копачът, който е създал нов блок получава награда за свършената работа - тази награда се нарича Coinbase. Това са специален тип биткойни, временно, които нямат input и не могат да се харчат в следващите 100 блока. Целта на тази забрана е именно заради възможното fork-ване на мрежата, което на седмицата веднъж поне.
Halving процесът е свързан именно с тази награда. Тя се нарича Coinbase. Halving-ът е периодичното и прогресивно намаляне на награда за копачите - на всеки 4 години (210 000 блока) биткойните, включени в тази награда намаляват по 2. В началото бяха 50 биткойна на блок, след това бяха 25, в момента са по 12,5 след последния halving на юли месец миналата година. До 2140 стойността на награда прогресивно ще стигне 0, паралелно с това дефлационният характер на валутата неминуемо ще се усилва.
Според Bitcoin Core клиентът, main.cpp, първоначалният nSubsidy е бил 50 * coins, което е константа - 100 милиона satoshi.
В кода има ред, който казва:
Consensus.nSubsidyHalvingInterval = 210000;
С други думи на всеки 210 000 блока, количеството на биткойни, произведени за награда намалява наполовина. Мрежата работи и кодът следи колко блока са решени - в момента, в който стигне числото 210 000 се случва halving и намаляването на наградата наполовина.
На ред 1574 от кода е описано какво се случва, когато максималният брой на произведени биткойни достигне 21 милиона.
If (halvings >= 64) return 0;
След като мрежата достигне 64 halving-а, производството на nSubsidy (биткойн) спира. Казано простичко след като 50 се раздели 64 пъти през около 4 години период за всяка итерация на делене - и последните сатошита ще са произведени - ще имаме 21 милиона биткойна в обръщение.