ჰალვინგი

კრიპტოვალუტის სივრცეში, ტერმინი „ჰალვინგი“ აღნიშნავს პროცესს, რომლის მეშვეობითაც მცირდება ახალი მონეტების გამოშვების ტემპი. უფრო ზუსტად, ჰალვინგი წარმოადგენს მაინერებისთვის გაცემული ბლოკის სუბსიდიის პერიოდულ შემცირებას. ჰალვინგი უზრუნველყოფს კრიპტო აქტივების გამოშვების სტაბილური ტემპის შენარჩუნებას, სანამ მისი მარაგი მაქსიმალურ დონეს არ მიაღწევს.
Bitcoin-ის შემთხვევაში, ახალი მონეტების გენერირება უწყვეტად ხდება და გაიცემა, როგორც, ბლოკის ჯილდოს ნაწილი (რომელიც შედგება ბლოკის სუბსიდიისგან და ტრანზაქციის საკომისიოებისგან). ამგვარად, როდესაც მაინერი წარმატებით „მოძებნის“ ახალ ბლოკს და მოახდენს მის ვალიდაციას. შესრულებული სამუშაოს კომპენსაციის სახით მიიღებს ახლად დამზადებულ მონეტებს. 
სწორედ მაინინგის პროცესის დროს ხდება ახალი Bitcoin-ების ჩაშვება სისტემაში, რაც პროგნოზირებადი და კონტროლირებადი ტემპით ხორციელდება. ახალი Bitcoin-ის ბლოკის მაინინგი საშუალოდ 10 წუთში ერთხელ ხორციელდება, ხოლო ბლოკის სუბსიდია გაიცემა კონტროლირებადი, კლებადი ტემპით. შესაბამისად, ჰალვინგი უზრუნველყოფს ბლოკის სუბსიდიის 50%-ით შემცირებას ყოველი 210,000 ბლოკის შემდეგ (საშუალოდ ყოველ ოთხ წელიწადში ერთხელ).
დასაწყისში, გენეზისის ბლოკის შექმნის დროს, Bitcoin-ის ბლოკის სუბსიდია 50 BTC იყო. 2012 წელს ის შემცირდა 25 BTC-მდე, 2016 წელს კი - 12.5 BTC-მდე. შემდეგი ჰალვინგის სავარაუდო დროა 2020 წლის მაისი, რის შემდეგაც ბლოკის სუბსიდია შემცირდება 6.25 BTC-მდე. 32 ჰალვინგის შემდეგ, ეს პროცესი შეწყდება და მეტი Bitcoin-ის მონეტის შექმნა აღარ მოხდება. აღნიშნული მომენტისთვის, ამ მონეტის მაქსიმალური მარაგი მიაღწევს 21 მილიონ BTC-ს.

თვალი ადევნეთ Bitcoin-ის ჰალვინგს

ჰალვინგი Bitcoin პროტოკოლის მნიშვნელოვანი ნაწილია, და რადგან ის ღია კოდს ეფუძნება, ნებისმიერს შეუძლია მისი ნახვა. მაგალითად, Bitcoin Core-ის იმპლემენტაცია ხელმისაწვდომია GitHub-ზე, ხოლო კოდის სექცია, რომელიც განსაზღვრავს ბლოკის სუბსიდიას, ამგვარად გამოიყურება:
CAmount GetBlockSubsidy(int nHeight, const Consensus::Params& consensusParams)
{
int halvings = nHeight / consensusParams.nSubsidyHalvingInterval;
// Force block reward to zero when right shift is undefined.
if (halvings >= 64)
return 0;

CAmount nSubsidy = 50 * COIN;
// Subsidy is cut in half every 210,000 blocks which will occur approximately every 4 years.
nSubsidy >>= halvings;
return nSubsidy;
}