Update notebook

This commit is contained in:
Prathamesh Musale 2025-08-12 19:17:32 +05:30
parent 5a5c4508c6
commit 9943339fbd

View File

@ -12,12 +12,13 @@
"**Features:**\n",
"- Adjust star and galaxy participation numbers by lock duration\n",
"- Real-time calculation of allocations and bonus pools\n",
"- Preset scenarios available in dropdown (balanced, five-year focused, short-term focused, low participation)\n",
"- Visualization of results"
]
},
{
"cell_type": "code",
"execution_count": 1,
"execution_count": null,
"id": "setup-imports",
"metadata": {},
"outputs": [],
@ -27,7 +28,8 @@
" configure_matplotlib, print_constants_summary, calculate_dynamic_allocations,\n",
" calculate_bonus_pools, calculate_final_allocations, generate_test_output,\n",
" print_analysis_tables, create_visualization, PENALTY_RATES, NUM_STARS, NUM_GALAXIES,\n",
" create_experiment_widgets, create_calculate_function, create_scenario_loader, create_export_function\n",
" create_experiment_widgets, create_calculate_function, create_scenario_loader, create_export_function,\n",
" SCENARIOS\n",
")\n",
"import json\n",
"from decimal import Decimal\n",
@ -40,59 +42,10 @@
},
{
"cell_type": "code",
"execution_count": 2,
"execution_count": null,
"id": "show-constants",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"================================================================================\n",
"📊 $Z LOCKDROP DISTRIBUTION - CORE CONSTANTS\n",
"================================================================================\n",
"\n",
"🔒 LOCKDROP ALLOCATION\n",
"+----------------------------------+-----------------+\n",
"| Parameter | Value |\n",
"+==================================+=================+\n",
"| Total Supply (1 $Z per Urbit ID) | 4,294,967,296 |\n",
"+----------------------------------+-----------------+\n",
"| Lockdrop Allocation % | 30.0% |\n",
"+----------------------------------+-----------------+\n",
"| Lockdrop Allocation ($Z) | 1,288,490,188.8 |\n",
"+----------------------------------+-----------------+\n",
"\n",
"⭐ URBIT POINTS DISTRIBUTION\n",
"+--------------+---------------+----------------+\n",
"| Point Type | Count | Allocation % |\n",
"+==============+===============+================+\n",
"| Galaxies | 256 | 0.39% |\n",
"+--------------+---------------+----------------+\n",
"| Stars | 65,280 | 99.61% |\n",
"+--------------+---------------+----------------+\n",
"| Planets | 4,294,901,760 | 0% |\n",
"+--------------+---------------+----------------+\n",
"\n",
"⏱️ LOCKDROP PARAMETERS\n",
"+---------------------------------+---------------------+\n",
"| Parameter | Value |\n",
"+=================================+=====================+\n",
"| Block Duration | 2 seconds |\n",
"+---------------------------------+---------------------+\n",
"| Max Point Lock Duration (5 yrs) | 157,788,000 seconds |\n",
"+---------------------------------+---------------------+\n",
"| Total Blocks | 78,894,000 |\n",
"+---------------------------------+---------------------+\n",
"| Star Allocation % | 99.609375% |\n",
"+---------------------------------+---------------------+\n",
"| Galaxy Allocation % | 0.390625% |\n",
"+---------------------------------+---------------------+\n",
"\n",
"================================================================================\n"
]
}
],
"outputs": [],
"source": [
"# Display core constants\n",
"print_constants_summary()"
@ -105,95 +58,25 @@
"source": [
"## 🎛️ Experimental Parameters\n",
"\n",
"Adjust the participation numbers below to experiment with different scenarios. The default values represent a balanced distribution scenario."
"Adjust the participation numbers below to experiment with different scenarios. Use the preset dropdown to quickly load common scenarios, or manually adjust the values for custom experiments."
]
},
{
"cell_type": "code",
"execution_count": 3,
"execution_count": null,
"id": "input-parameters",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"==================================================\n",
"🎯 PARTICIPATION INPUT CONTROLS\n",
"==================================================\n",
"\n",
"⭐ STAR PARTICIPATION\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "75120f519bd64aeb88163fdfb2f9aaed",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"VBox(children=(IntText(value=8000, description='1 Year:', style=DescriptionStyle(description_width='80px')), I…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"🌌 GALAXY PARTICIPATION\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "83e348a914854ce0a4b3e75c58ecc94e",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"VBox(children=(IntText(value=40, description='1 Year:', style=DescriptionStyle(description_width='80px')), Int…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "d851d648f30247e2b98b4bd57a101562",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Button(button_style='success', description='🔄 Calculate Allocations', layout=Layout(margin='20px 0', width='20…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "39b0b853b4bb4971b0ebbaa2fcd2e8e0",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Output()"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"outputs": [],
"source": [
"# Create experiment widgets using refactored function\n",
"widget_dict = create_experiment_widgets()\n",
"\n",
"# Create calculation function using refactored approach\n",
"calculate_and_display = create_calculate_function(widget_dict)\n",
"\n",
"# Connect button to calculation function\n",
"widget_dict['calculate_button'].on_click(calculate_and_display)\n",
"\n",
"# Display widgets\n",
"print(\"🎯 PARTICIPATION INPUT CONTROLS\")\n",
"print(\"=\"*50)\n",
@ -204,8 +87,13 @@
"print(\"\\n🌌 GALAXY PARTICIPATION\")\n",
"display(widget_dict['galaxy_controls'])\n",
"\n",
"# Calculate button\n",
"display(widget_dict['calculate_button'])\n",
"print(\"\\n🎮 PRESET SCENARIOS\")\n",
"display(widget_dict['scenario_dropdown'])\n",
"\n",
"# Action buttons\n",
"import ipywidgets as widgets\n",
"buttons_box = widgets.HBox([widget_dict['calculate_button'], widget_dict['export_button']])\n",
"display(buttons_box)\n",
"\n",
"# Output area\n",
"display(widget_dict['output_area'])"
@ -213,140 +101,11 @@
},
{
"cell_type": "code",
"execution_count": 4,
"id": "calculation-function",
"execution_count": null,
"id": "17264a50-2d4b-4c83-aa08-c3d2e1d90fdd",
"metadata": {},
"outputs": [],
"source": [
"# Create calculation function using refactored approach\n",
"calculate_and_display = create_calculate_function(widget_dict)\n",
"\n",
"# Connect button to calculation function\n",
"widget_dict['calculate_button'].on_click(calculate_and_display)"
]
},
{
"cell_type": "markdown",
"id": "preset-scenarios-header",
"metadata": {},
"source": [
"## 🎮 Preset Scenarios\n",
"\n",
"Try these interesting scenarios by running the code below:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "preset-scenarios",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"📋 AVAILABLE PRESET SCENARIOS:\n",
"==================================================\n",
"\n",
"• balanced: Balanced distribution across all lock periods\n",
"\n",
"• five_year_focused: Most participants choose 5-year lock (maximum bonus scenario)\n",
"\n",
"• short_term_focused: Most participants choose shorter locks (high penalty scenario)\n",
"\n",
"• polarized: Split between 1-year and 5-year locks (maximum bonus per 5Y participant)\n",
"\n",
"• low_participation: Low overall participation scenario\n",
"\n",
"🎯 To load a scenario, call: load_scenario('scenario_name')\n",
"\n",
"Example: load_scenario('five_year_focused')\n"
]
}
],
"source": [
"# Create scenario loader using refactored function\n",
"load_scenario = create_scenario_loader(widget_dict)\n",
"\n",
"# Display available scenarios\n",
"print(\"📋 AVAILABLE PRESET SCENARIOS:\")\n",
"print(\"=\"*50)\n",
"\n",
"scenarios = {\n",
" 'balanced': 'Balanced distribution across all lock periods',\n",
" 'five_year_focused': 'Most participants choose 5-year lock (maximum bonus scenario)',\n",
" 'short_term_focused': 'Most participants choose shorter locks (high penalty scenario)',\n",
" 'polarized': 'Split between 1-year and 5-year locks (maximum bonus per 5Y participant)',\n",
" 'low_participation': 'Low overall participation scenario'\n",
"}\n",
"\n",
"for name, description in scenarios.items():\n",
" print(f\"\\n• {name}: {description}\")\n",
"\n",
"print(\"\\n🎯 To load a scenario, call: load_scenario('scenario_name')\")\n",
"print(\"\\nExample: load_scenario('five_year_focused')\")"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "load-scenario-example",
"metadata": {},
"outputs": [],
"source": [
"# Load the balanced scenario as default\n",
"# load_scenario('short_term_focused')"
]
},
{
"cell_type": "markdown",
"id": "export-section",
"metadata": {},
"source": [
"## 💾 Export Results\n",
"\n",
"Export your experimental results."
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "export-results",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"💾 Export your current scenario results:\n",
" export_current_scenario('my_experiment.json')\n",
"\n",
"📋 Or use default filename:\n",
" export_current_scenario()\n"
]
}
],
"source": [
"# Create export function using refactored approach\n",
"export_current_scenario = create_export_function(widget_dict)\n",
"\n",
"# Usage example\n",
"print(\"💾 Export your current scenario results:\")\n",
"print(\" export_current_scenario('my_experiment.json')\")\n",
"print(\"\\n📋 Or use default filename:\")\n",
"print(\" export_current_scenario()\")"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "3c93c9c2-9cec-4d2b-a2db-065602a3871c",
"metadata": {},
"outputs": [],
"source": [
"# Export allocation results from the experiment\n",
"# export_current_scenario(\"lockdrop_allocations_experiment.json\")"
]
"source": []
}
],
"metadata": {