Complete economics service implementation with: - Price Oracle with TWAP (Time-Weighted Average Price) - Multi-source price aggregation - Configurable staleness thresholds - Exponential, SMA, and standard TWAP strategies - Metering Service for L2 usage tracking - Storage: GB-months, retrieval bandwidth - Hosting: bandwidth, custom domains - Database: queries, vector searches - Compute: CPU core-hours, GPU hours, memory - Network: bandwidth, requests - Billing Engine - Invoice generation with line items - Payment processing (crypto/fiat) - Credit management with expiration - Auto-pay from prepaid balance - Pricing Tiers: Free, Standard, Premium, Enterprise - 0%, 10%, 20%, 30% usage discounts - SLA guarantees: 95%, 99%, 99.9%, 99.99% - Cost Calculator & Estimator - Usage projections - Tier comparison recommendations - ROI analysis - Docker deployment with PostgreSQL schema All 61 tests passing.
128 lines
2.6 KiB
TOML
128 lines
2.6 KiB
TOML
# Synor Economics Service Configuration
|
|
|
|
[server]
|
|
# HTTP API port
|
|
http_port = 4010
|
|
# Metrics port (Prometheus)
|
|
metrics_port = 4011
|
|
# Bind address
|
|
bind_address = "0.0.0.0"
|
|
|
|
[oracle]
|
|
# Maximum price age before considered stale (seconds)
|
|
max_price_age_secs = 300
|
|
# TWAP window duration (seconds)
|
|
twap_window_secs = 3600
|
|
# Minimum number of price sources required
|
|
min_sources = 2
|
|
# Maximum deviation between sources (percentage)
|
|
max_deviation_percent = 5.0
|
|
# Update interval (seconds)
|
|
update_interval_secs = 30
|
|
|
|
[oracle.sources]
|
|
# Enable internal DEX price feed
|
|
synor_dex = true
|
|
# Enable CoinGecko (requires API key for higher rate limits)
|
|
coingecko = true
|
|
coingecko_api_key = ""
|
|
|
|
[metering]
|
|
# Aggregation interval (seconds)
|
|
aggregation_interval_secs = 3600
|
|
# Maximum events to buffer before flush
|
|
buffer_size = 10000
|
|
# Enable real-time usage tracking
|
|
real_time_tracking = true
|
|
# Event retention period (days)
|
|
retention_days = 90
|
|
|
|
[billing]
|
|
# Billing cycle in days
|
|
billing_cycle_days = 30
|
|
# Grace period for late payments (days)
|
|
grace_period_days = 7
|
|
# Minimum invoice amount (SYNOR)
|
|
minimum_invoice_amount = 0.01
|
|
# Enable auto-pay from prepaid balance
|
|
auto_pay_enabled = true
|
|
# Enable invoice reminders
|
|
reminders_enabled = true
|
|
# Days before due date to send reminder
|
|
reminder_days_before = 3
|
|
|
|
[pricing]
|
|
# Default tier for new accounts
|
|
default_tier = "free"
|
|
|
|
# Storage L2 pricing (SYNOR)
|
|
[pricing.storage]
|
|
gb_month = 0.02
|
|
retrieval_gb = 0.01
|
|
deal_creation = 0.001
|
|
|
|
# Hosting pricing (SYNOR)
|
|
[pricing.hosting]
|
|
bandwidth_gb = 0.05
|
|
custom_domain_month = 0.50
|
|
ssl_certificate = 0.00
|
|
|
|
# Database L2 pricing (SYNOR)
|
|
[pricing.database]
|
|
storage_gb_month = 0.10
|
|
queries_per_million = 0.01
|
|
vector_searches_per_million = 0.05
|
|
|
|
# Compute L2 pricing (SYNOR)
|
|
[pricing.compute]
|
|
cpu_core_hour = 0.02
|
|
gpu_hour_rtx4090 = 0.50
|
|
memory_gb_hour = 0.005
|
|
invocations_per_million = 0.20
|
|
|
|
# Free tier allocations
|
|
[pricing.free_tier]
|
|
storage_gb = 0.5
|
|
hosting_bandwidth_gb = 1.0
|
|
database_queries = 1000000
|
|
compute_cpu_hours = 100
|
|
compute_memory_gb_hours = 200
|
|
compute_invocations = 1000000
|
|
network_bandwidth_gb = 10
|
|
|
|
# Tier discounts
|
|
[pricing.tiers.free]
|
|
monthly_fee = 0.0
|
|
discount_percent = 0
|
|
|
|
[pricing.tiers.standard]
|
|
monthly_fee = 10.0
|
|
discount_percent = 10
|
|
|
|
[pricing.tiers.premium]
|
|
monthly_fee = 50.0
|
|
discount_percent = 20
|
|
|
|
[pricing.tiers.enterprise]
|
|
monthly_fee = 500.0
|
|
discount_percent = 30
|
|
|
|
# Fee distribution
|
|
[distribution]
|
|
# L1 transaction fees
|
|
[distribution.l1]
|
|
burn_percent = 10
|
|
staker_percent = 60
|
|
treasury_percent = 20
|
|
validator_percent = 10
|
|
|
|
# L2 service fees
|
|
[distribution.l2]
|
|
burn_percent = 10
|
|
operator_percent = 70
|
|
treasury_percent = 20
|
|
|
|
[logging]
|
|
level = "info"
|
|
format = "json"
|
|
output = "stdout"
|