Halving
Trong lĩnh vực tiền mã hóa, thuật ngữ halving đề cập đến một quá trình làm giảm tỷ lệ phát hành tiền mới. Chính xác hơn, halving là việc giảm định kỳ trợ cấp khối được cung cấp cho các thợ đào. Việc halving giúp đảm bảo rằng tài sản tiền mã hóa sẽ tuân theo tỷ lệ phát hành ổn định cho đến khi đạt được
nguồn cung tối đa.
Với Bitcoin, các coin mới đang được tạo ra liên tục như một phần của
phần thưởng khối (được tạo thành từ trợ cấp khối cộng với phí giao dịch). Vì vậy, mỗi khi một thợ đào “phát hiện” thành công và xác thực một
khốimới, họ sẽ kiếm được những đồng coin mới được tạo ra để đền bù cho
công việc của họ.
Vì vậy, quá trình
đào là thứ đưa
Bitcoin mới vào hệ thống và quá trình này được thực hiện với tốc độ có thể dự đoán và kiểm soát. Các khối Bitcoin mới được đào trung bình cứ sau 10 phút và trợ cấp khối tuân theo tốc độ phân rã được kiểm soát. Theo đó, việc halving là điều đảm bảo rằng khoản trợ cấp khối sẽ giảm 50% sau mỗi 210.000 khối (khoảng bốn năm một lần).
Bắt đầu từ
khối nguyên thủy, trợ cấp khối của Bitcoin ban đầu được đặt là 50 BTC. Sau đó, nó đã giảm xuống còn 25 BTC vào năm 2012 và 12,5 BTC vào năm 2016. Đợt giảm một nửa tiếp theo dự kiến sẽ xảy ra vào khoảng tháng 5 năm 2020, trợ cấp khối giảm xuống còn 6,25 BTC. Sau khi 32 lần halving xảy ra, quá trình này sẽ dừng lại và sẽ không có thêm Bitcoin nào được tạo ra. Tại thời điểm này, Bitcoin sẽ đạt được nguồn cung tối đa là 21 triệu BTC.
Theo dõi Bitcoin Halving
Halving là một phần quan trọng của giao thức Bitcoin và vì mã nguồn mở nên bất kỳ ai cũng có thể xem được. Ví dụ: triển khai
Bitcoin Core có trên
GitHub và một trong
các phần code xác định trợ cấp khối trông như thế này:
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;
}