montana/Русский/Экономика/банк_времени/код/halving.py

62 lines
1.8 KiB
Python

"""
halving.py — Халвинг эмиссии каждые τ₄ (4 года)
Montana Protocol
Деление эмиссии на 2 каждые 4 года (как Bitcoin)
"""
def halving_coefficient(tau4_count: int) -> float:
"""
Коэффициент халвинга — деление на 2 каждые τ₄ (4 года)
Эмиссия уменьшается в 2 раза каждую эпоху τ₄
Args:
tau4_count: Количество пройденных τ₄ эпох (0, 1, 2, ...)
Returns:
Коэффициент эмиссии (1.0, 0.5, 0.25, 0.125, ...)
Формула:
emission_per_second = 1.0 / (2 ** tau4_count)
Примеры:
>>> halving_coefficient(0) # τ₄ #0 (первые 4 года)
1.0
>>> halving_coefficient(1) # τ₄ #1 (4-8 лет)
0.5
>>> halving_coefficient(2) # τ₄ #2 (8-12 лет)
0.25
>>> halving_coefficient(3) # τ₄ #3 (12-16 лет)
0.125
>>> halving_coefficient(10) # τ₄ #10 (40-44 года)
0.0009765625
График эмиссии:
τ₄ = 0: 1 сек = 1.0 Ɉ
τ₄ = 1: 1 сек = 0.5 Ɉ (÷2)
τ₄ = 2: 1 сек = 0.25 Ɉ (÷2)
τ₄ = 3: 1 сек = 0.125 Ɉ (÷2)
...
τ₄ → ∞: эмиссия → 0
"""
return 1.0 / (2 ** tau4_count)
# Экспорт
__all__ = ['halving_coefficient']
if __name__ == "__main__":
# Тесты
print("Halving Coefficient Table:")
print("=" * 50)
print(f"{'τ₄':<5} {'Years':<12} {'Coefficient':<15} {'Ɉ per second'}")
print("-" * 50)
for tau4 in range(11):
years = f"{tau4*4}-{(tau4+1)*4}"
coef = halving_coefficient(tau4)
print(f"{tau4:<5} {years:<12} {coef:<15.10f} {coef:.10f}")