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

386 lines
17 KiB
Python
Raw Permalink Normal View History

#!/usr/bin/env python3
"""
beeple_benchmark.py Генезис цены времени Montana
Источник: Christie's Auction, 12 марта 2021
Работа: Beeple "Everydays: The First 5000 Days"
Цена: $69,346,250
Время работы: 5000 дней
Формула: $69,346,250 ÷ 5000 дней ÷ 86400 секунд = $0.160523726(851)̅
Это GENESIS цены времени первая публичная фиксация стоимости секунды.
"""
from decimal import Decimal, getcontext
from datetime import datetime, timezone
from typing import Dict
# Высокая точность для бесконечной дроби
getcontext().prec = 50
# ═══════════════════════════════════════════════════════════════════════════════
# GENESIS CONSTANTS
# ═══════════════════════════════════════════════════════════════════════════════
# Аукцион Christie's
BEEPLE_SALE_USD = Decimal("69346250") # $69,346,250
BEEPLE_DAYS = Decimal("5000") # 5000 дней работы
SECONDS_PER_DAY = Decimal("86400") # 24 * 60 * 60
# ═══════════════════════════════════════════════════════════════════════════════
# GENESIS TRANSACTION (ФИНАЛЬНАЯ)
# ═══════════════════════════════════════════════════════════════════════════════
#
# Хронология:
# 1. 2021-02-16 05:58:01 UTC — Минт NFT (Token ID #40913)
# 2. 2021-03-11 15:00:00 UTC — Закрытие аукциона Christie's
# 3. 2021-03-13 03:58:XX UTC — Передача в escrow MakersPlace
# 4. 2021-03-13 05:16:XX UTC — ФИНАЛЬНАЯ передача к MetaKovan ← GENESIS
#
# Книга Монтана: "12.03.2021 05:16:XX UTC — генезис цены времени"
# (формат DD.MM.YYYY, но фактически 13 марта по UTC)
# GENESIS = финальная транзакция передачи NFT к покупателю MetaKovan
# Etherscan: Mar-13-2021 04:16:33 AM UTC
GENESIS_TIMESTAMP = "2021-03-13T04:16:33+00:00"
GENESIS_DATE = "2021-03-13"
GENESIS_TIME_UTC = "04:16:33"
# Ethereum transaction data
ETHEREUM_TX_MINT = "0x84760768c527794ede901f97973385bfc1bf2e297f7ed16f523f75412ae772b3"
ETHEREUM_TX_ESCROW = "0xa342e9de61c34900883218fe52bc9931daa1a10b6f48c506f2253c279b15e5bf"
ETHEREUM_TX_FINAL = "0x01d0967faaaf95f3e19164803a1cf1a2f96644ebfababb2b810d41a72f502d49" # GENESIS
TOKEN_ID = 40913
BEEPLE_WALLET = "0xc6b0562605D35eE710138402B878ffe6F2E23807"
MAKERSPLACE_CONTRACT = "0x2a46f2ffd99e19a89476e2f62270e0a35bbf0756"
MAKERSPLACE_ESCROW = "0x58bf1fbeac9596fc20d87d346423d7d108c5361a"
METAKOVAN_WALLET = "0x8bb37fb0f0462bb3fc8995cf17721f8e4a399629"
# Хронология
# 1. 2021-02-16 05:58:01 UTC — Минт NFT
# 2. 2021-02-25 — Открытие аукциона Christie's
# 3. 2021-03-11 15:00 EST — Закрытие аукциона ($69,346,250)
# 4. 2021-03-13 03:58:XX UTC — Beeple → MakersPlace escrow
# 5. 2021-03-13 04:16:33 UTC — MakersPlace → MetaKovan (GENESIS)
NFT_MINTED_DATE = "2021-02-16"
NFT_MINTED_TIMESTAMP = "2021-02-16T05:58:01+00:00"
AUCTION_OPEN_DATE = "2021-02-25"
AUCTION_CLOSE_DATE = "2021-03-11"
FINAL_TRANSFER_DATE = "2021-03-13"
FINAL_TRANSFER_TIMESTAMP = "2021-03-13T04:16:33+00:00" # GENESIS
# Покупатель
BUYER_PSEUDONYM = "MetaKovan"
BUYER_NAME = "Vignesh Sundaresan"
BUYER_PROJECT = "Metapurse"
BUYER_COUNTRY = "Singapore"
# Характеристики NFT
NFT_DIMENSIONS = "21,069 x 21,069 pixels"
NFT_SIZE_BYTES = 319_168_313 # ~319 MB
NFT_TITLE = "Everydays: The First 5000 Days"
NFT_ARTIST = "Beeple (Mike Winkelmann)"
# Расчёт цены секунды
PRICE_PER_DAY = BEEPLE_SALE_USD / BEEPLE_DAYS
PRICE_PER_SECOND = BEEPLE_SALE_USD / (BEEPLE_DAYS * SECONDS_PER_DAY)
# Округлённое значение для UI
PRICE_PER_SECOND_ROUNDED = Decimal("0.16")
# ═══════════════════════════════════════════════════════════════════════════════
# GENESIS EXCHANGE RATES (12.03.2021)
# ═══════════════════════════════════════════════════════════════════════════════
# Курсы валют на момент GENESIS транзакции (13.03.2021 04:16:33 UTC)
# Формат: 1 USD = X валюты (для фиата), или 1 крипто = X USD (для крипто)
GENESIS_RATES_FIAT = {
# Основные мировые валюты
"USD": ("$", "US Dollar", Decimal("1.0")),
"EUR": ("", "Euro", Decimal("0.84")),
"GBP": ("£", "British Pound", Decimal("0.72")),
"JPY": ("¥", "Japanese Yen", Decimal("108.50")),
"CHF": ("Fr", "Swiss Franc", Decimal("0.93")),
# СНГ
"RUB": ("", "Russian Ruble", Decimal("73.50")),
"UAH": ("", "Ukrainian Hryvnia", Decimal("27.80")),
"KZT": ("", "Kazakh Tenge", Decimal("420.00")),
"BYN": ("Br", "Belarusian Ruble", Decimal("2.60")),
"AMD": ("֏", "Armenian Dram", Decimal("522.00")),
"GEL": ("", "Georgian Lari", Decimal("3.30")),
"AZN": ("", "Azerbaijani Manat", Decimal("1.70")),
"UZS": ("сўм", "Uzbek Som", Decimal("10500.00")),
# Азия
"CNY": ("¥", "Chinese Yuan", Decimal("6.50")),
"HKD": ("HK$", "Hong Kong Dollar", Decimal("7.76")),
"TWD": ("NT$", "Taiwan Dollar", Decimal("28.50")),
"KRW": ("", "South Korean Won", Decimal("1130.00")),
"SGD": ("S$", "Singapore Dollar", Decimal("1.34")),
"INR": ("", "Indian Rupee", Decimal("72.50")),
"THB": ("฿", "Thai Baht", Decimal("30.50")),
"VND": ("", "Vietnamese Dong", Decimal("23000.00")),
"IDR": ("Rp", "Indonesian Rupiah", Decimal("14400.00")),
"MYR": ("RM", "Malaysian Ringgit", Decimal("4.10")),
"PHP": ("", "Philippine Peso", Decimal("48.50")),
# Ближний Восток
"AED": ("د.إ", "UAE Dirham", Decimal("3.67")),
"SAR": ("", "Saudi Riyal", Decimal("3.75")),
"ILS": ("", "Israeli Shekel", Decimal("3.30")),
"TRY": ("", "Turkish Lira", Decimal("7.50")),
# Америка
"CAD": ("C$", "Canadian Dollar", Decimal("1.26")),
"MXN": ("$", "Mexican Peso", Decimal("20.90")),
"BRL": ("R$", "Brazilian Real", Decimal("5.60")),
"ARS": ("$", "Argentine Peso", Decimal("90.50")),
"CLP": ("$", "Chilean Peso", Decimal("720.00")),
"COP": ("$", "Colombian Peso", Decimal("3650.00")),
"PEN": ("S/", "Peruvian Sol", Decimal("3.65")),
# Океания
"AUD": ("A$", "Australian Dollar", Decimal("1.30")),
"NZD": ("NZ$", "New Zealand Dollar", Decimal("1.40")),
# Африка
"ZAR": ("R", "South African Rand", Decimal("15.10")),
"NGN": ("", "Nigerian Naira", Decimal("380.00")),
"EGP": ("", "Egyptian Pound", Decimal("15.70")),
# Европа (не EUR)
"PLN": ("", "Polish Zloty", Decimal("3.85")),
"CZK": ("", "Czech Koruna", Decimal("22.00")),
"SEK": ("kr", "Swedish Krona", Decimal("8.50")),
"NOK": ("kr", "Norwegian Krone", Decimal("8.55")),
"DKK": ("kr", "Danish Krone", Decimal("6.25")),
"HUF": ("Ft", "Hungarian Forint", Decimal("305.00")),
"RON": ("lei", "Romanian Leu", Decimal("4.10")),
}
GENESIS_RATES_CRYPTO = {
# Цена в USD на 12.03.2021
"BTC": ("", "Bitcoin", Decimal("57500")),
"ETH": ("Ξ", "Ethereum", Decimal("1820")),
"SOL": ("", "Solana", Decimal("14.50")),
"BNB": ("BNB", "Binance Coin", Decimal("265")),
"ADA": ("", "Cardano", Decimal("1.15")),
"DOT": ("DOT", "Polkadot", Decimal("36.50")),
"XRP": ("XRP", "Ripple", Decimal("0.45")),
"DOGE": ("Ð", "Dogecoin", Decimal("0.055")),
"LTC": ("Ł", "Litecoin", Decimal("195")),
"LINK": ("LINK", "Chainlink", Decimal("28.50")),
}
# Расчёт цены секунды во всех валютах
SECOND_PRICE_ALL = {}
# Фиат: price_per_second * exchange_rate
for code, (symbol, name, rate) in GENESIS_RATES_FIAT.items():
SECOND_PRICE_ALL[code] = {
"symbol": symbol,
"name": name,
"price": PRICE_PER_SECOND * rate,
"rate": rate,
"type": "fiat"
}
# Крипто: price_per_second / crypto_price_usd
for code, (symbol, name, price_usd) in GENESIS_RATES_CRYPTO.items():
SECOND_PRICE_ALL[code] = {
"symbol": symbol,
"name": name,
"price": PRICE_PER_SECOND / price_usd,
"rate": price_usd,
"type": "crypto"
}
# ═══════════════════════════════════════════════════════════════════════════════
# BEEPLE BENCHMARK
# ═══════════════════════════════════════════════════════════════════════════════
class BeepleBenchmark:
"""
Генезис цены времени из аукциона Beeple.
Книга Монтана, Глава 03:
> "$0.16 за секунду было установлено публично.
> На глазах у всех. Никто не заметил."
"""
def __init__(self):
self.sale_usd = BEEPLE_SALE_USD
self.days = BEEPLE_DAYS
self.genesis_time = datetime.fromisoformat(GENESIS_TIMESTAMP)
def get_price_per_second(self, precision: int = 20) -> Decimal:
"""
Цена секунды с заданной точностью.
Returns:
Decimal: $0.160523726851851851851...
"""
getcontext().prec = precision + 10
return self.sale_usd / (self.days * SECONDS_PER_DAY)
def get_price_per_day(self) -> Decimal:
"""Цена дня работы."""
return self.sale_usd / self.days # $13,869.25
def get_price_per_hour(self) -> Decimal:
"""Цена часа работы."""
return self.get_price_per_day() / Decimal("24") # $577.89
def get_price_per_minute(self) -> Decimal:
"""Цена минуты работы."""
return self.get_price_per_hour() / Decimal("60") # $9.63
def seconds_since_genesis(self) -> int:
"""Секунды с момента генезиса."""
now = datetime.now(timezone.utc)
delta = now - self.genesis_time
return int(delta.total_seconds())
def value_of_time(self, seconds: int) -> Dict[str, Decimal]:
"""
Стоимость времени во ВСЕХ валютах (genesis rates 12.03.2021).
Args:
seconds: Количество секунд
Returns:
Dict с ценами в USD, RUB, EUR, CNY, BTC, ETH и др.
"""
result = {"seconds": Decimal(seconds)}
for currency, price_per_sec in SECOND_PRICE_ALL.items():
result[currency] = price_per_sec * Decimal(seconds)
return result
def get_all_second_prices(self) -> Dict[str, Decimal]:
"""Цена 1 секунды во всех валютах на момент genesis."""
return SECOND_PRICE_ALL.copy()
def get_btc_price_per_second(self) -> Decimal:
"""Цена секунды в Bitcoin (genesis rate)."""
return SECOND_PRICE_ALL["BTC"]
def get_eth_price_per_second(self) -> Decimal:
"""Цена секунды в Ethereum (genesis rate)."""
return SECOND_PRICE_ALL["ETH"]
def format_price(self) -> str:
"""Человекочитаемый формат цены."""
price = self.get_price_per_second(precision=15)
return f"${price:.12f}/sec (repeating 851)"
def get_genesis_info(self) -> Dict:
"""Полная информация о генезисе цены времени."""
return {
"event": "Christie's Auction - Beeple Everydays: The First 5000 Days",
"genesis_timestamp": GENESIS_TIMESTAMP,
"genesis_date": GENESIS_DATE,
"genesis_time_utc": GENESIS_TIME_UTC,
"sale_usd": float(self.sale_usd),
"sale_eth": 42329.453,
"days_of_work": int(self.days),
"price_per_second_usd": float(self.get_price_per_second()),
"price_per_second_rounded": 0.16,
"formula": "$69,346,250 ÷ 5000 days ÷ 86400 sec = $0.160523726(851)̅",
# Ethereum data
"ethereum_tx_final": ETHEREUM_TX_FINAL,
"token_id": TOKEN_ID,
"from_wallet": MAKERSPLACE_ESCROW,
"to_wallet": METAKOVAN_WALLET,
# Участники
"artist": NFT_ARTIST,
"buyer": f"{BUYER_NAME} ({BUYER_PSEUDONYM})",
"buyer_project": BUYER_PROJECT,
"auction_house": "Christie's",
"book_reference": "Книга Монтана, Глава 03. Поток"
}
# ═══════════════════════════════════════════════════════════════════════════════
# CONVENIENCE FUNCTIONS
# ═══════════════════════════════════════════════════════════════════════════════
def get_second_price() -> Decimal:
"""Быстрый доступ к цене секунды."""
return PRICE_PER_SECOND
def get_second_price_rounded() -> Decimal:
"""Округлённая цена для UI."""
return PRICE_PER_SECOND_ROUNDED
def calculate_time_value(seconds: int) -> Decimal:
"""Стоимость N секунд в USD."""
return PRICE_PER_SECOND * Decimal(seconds)
# ═══════════════════════════════════════════════════════════════════════════════
# DEMO
# ═══════════════════════════════════════════════════════════════════════════════
if __name__ == "__main__":
benchmark = BeepleBenchmark()
print("=" * 60)
print("BEEPLE BENCHMARK — Genesis цены времени")
print("=" * 60)
info = benchmark.get_genesis_info()
print(f"\nСобытие: {info['event']}")
print(f"Дата: {info['date']}")
print(f"Сумма: ${info['sale_usd']:,.0f}")
print(f"Дней работы: {info['days_of_work']}")
print(f"\n--- ЦЕНА 1 СЕКУНДЫ (Genesis 12.03.2021) ---")
prices = benchmark.get_all_second_prices()
print("\nФиат:")
print(f" USD: ${float(prices['USD']):.12f}")
print(f" RUB: ₽{float(prices['RUB']):.6f}")
print(f" EUR: €{float(prices['EUR']):.6f}")
print(f" GBP: £{float(prices['GBP']):.6f}")
print(f" CNY: ¥{float(prices['CNY']):.6f}")
print(f" JPY: ¥{float(prices['JPY']):.4f}")
print("\nКрипто:")
print(f" BTC: ₿{float(prices['BTC']):.10f} (при BTC=$57,500)")
print(f" ETH: Ξ{float(prices['ETH']):.8f} (при ETH=$1,820)")
print(f" SOL: ◎{float(prices['SOL']):.6f} (при SOL=$14.50)")
print(f"\n--- ЦЕНА ВРЕМЕНИ USD ---")
print(f"За секунду: {benchmark.format_price()}")
print(f"За минуту: ${benchmark.get_price_per_minute():.2f}")
print(f"За час: ${benchmark.get_price_per_hour():.2f}")
print(f"За день: ${benchmark.get_price_per_day():.2f}")
print(f"\n--- ПРИМЕР: 1 час твоего времени ---")
hour_value = benchmark.value_of_time(3600)
print(f" USD: ${float(hour_value['USD']):.2f}")
print(f" RUB: ₽{float(hour_value['RUB']):.2f}")
print(f" BTC: ₿{float(hour_value['BTC']):.8f}")
print(f" ETH: Ξ{float(hour_value['ETH']):.6f}")
print(f"\n--- СЕКУНД С ГЕНЕЗИСА ---")
print(f"{benchmark.seconds_since_genesis():,} секунд")
print("\n" + "=" * 60)
print("Книга Монтана: 'Никто не заметил. Ты заметил.'")
print("=" * 60)